How to localize a program in Scol » History » Version 2
iri, 09/25/2012 01:08 AM
1 | 1 | iri | h1. How to localize a program in Scol ? |
---|---|---|---|
2 | |||
3 | Allow the translation of your application is often a good thing. Several ways exist, we will see one. |
||
4 | |||
5 | For an given application, we have a subdirectory with all language files : |
||
6 | myapp.english.lang |
||
7 | myapp.spanish.lang |
||
8 | myapp.italian.lang |
||
9 | myapp.french.lang |
||
10 | ... |
||
11 | |||
12 | In a file language, we put a reference and its translation for each line : |
||
13 | <pre> |
||
14 | REFERENCE_1 word_translated |
||
15 | REFERENCE_2 string translated |
||
16 | REFERENCE_3 substring_1 ## substring_2 ## substring_3 |
||
17 | ... |
||
18 | </pre> |
||
19 | |||
20 | Each ## will be replaced by a provided parameter, if needed |
||
21 | |||
22 | 2 | iri | Next, go to *locked/lib* directory et open *loc.pkg* in your favorite text editor. |
23 | 1 | iri | |
24 | - *startloc* is the function to load the language file for a given user. |
||
25 | - *loc* is the function for a simple translation. |
||
26 | - *strloc* loc are the functions for a translation with parameters |
||
27 | |||
28 | h2. Example : |
||
29 | |||
30 | h3. The package |
||
31 | |||
32 | First, we create our application "mylocapp". The file is named "mylocapp.pkg" in the "tutorials" directory : |
||
33 | |||
34 | <pre> |
||
35 | fun main ()= |
||
36 | _showconsole; |
||
37 | |||
38 | /* |
||
39 | load the language file to the given user |
||
40 | |||
41 | 2 | iri | startloc defines automatically the user language. |
42 | If no translation exist, english version will be used. |
||
43 | 1 | iri | */ |
44 | startloc "tutorials/lang/mylocapp"; |
||
45 | |||
46 | /* |
||
47 | loc returns the content from a key, without parameter |
||
48 | 2 | iri | strloc loc returns the content from a key with parameters. |
49 | Parameters are in a list, '##' will be replaced by them, in the same order |
||
50 | 1 | iri | */ |
51 | _fooS loc "WELCOME"; |
||
52 | _fooS strloc loc "HELLO" (_getress "DefaultName") :: nil; |
||
53 | let localtime time -> [_ mn h _ _ _ _ _] in |
||
54 | _fooS strloc loc "DATE" (itoa h) :: (itoa mn) :: nil; |
||
55 | _fooS loc "BYE"; |
||
56 | |||
57 | 0;; |
||
58 | </pre> |
||
59 | |||
60 | Next, we create our files languages. For example, in english and in french |
||
61 | |||
62 | h3. In english |
||
63 | |||
64 | The file is "mylocapp.english.lang", in "tutorials/lang/". Each '##' will be replaced by the provided parameters in the source code. |
||
65 | |||
66 | <pre> |
||
67 | BYE Good bye ! |
||
68 | DATE It is ## hours and ## minutes |
||
69 | HELLO Hi ## ! |
||
70 | WELCOME Welcome on my application |
||
71 | </pre> |
||
72 | |||
73 | h3. In french |
||
74 | |||
75 | The file is "mylocapp.french.lang", in "tutorials/lang/". |
||
76 | |||
77 | <pre> |
||
78 | BYE Au-revoir ! |
||
79 | DATE Il est ## heures and ## minutes |
||
80 | HELLO Salut ## ! |
||
81 | WELCOME Bienvenu sur mon application |
||
82 | </pre> |
||
83 | |||
84 | h3. The script |
||
85 | |||
86 | Finally, we write the launcher : |
||
87 | <pre> |
||
88 | |||
89 | _load "locked/lib/loc.pkg" |
||
90 | _load "tutorials/mylocapp.pkg" |
||
91 | main |
||
92 | </pre> |
||
93 | |||
94 | Note that add the loc.pkg at first ! |
||
95 | Save all and launch the .scol. |
||
96 | |||
97 | This application is readable from the "repository":http://redmine.scolring.org/projects/tutorials/repository/show/localization |
||
98 | |||
99 | |||
100 | License : "CC-BY-SA-2.0":https://creativecommons.org/licenses/by-sa/2.0/ |
||
101 | Tutorial by iri |
||
102 | Updated by / |