14 | | * Register at the [https://boinc.berkeley.edu/translate/ BOINC Translation Services] web page (BTS). |
15 | | * Subscribe to the [mlist:boinc_loc boinc_loc] email list, which is for translation-related discussion and announcements. |
16 | | * Make suggestions and send an email to the boinc_loc email list telling you made suggestions for a specific language that need a review. |
17 | | * Because web sites are dynamic, you will have to periodically update your translation. You can do this efficiently by looking at the BTS web page or the SVN diffs of the authoritative translation file. |
18 | | {{{ |
19 | | #!comment Where can someone find this authoritative file? It must be somewhere in the svn but where? |
20 | | }}} |
21 | | * Email the translation manager ([[T(MailHide|tran...@boinc...|k=01LUzWNjTW63Fi-QRO2-H2ug==&c=hVi2Vhq36r0HGWxOKyVciRIHCa8ey_fi-teaby_UMcg=)]]) if your language is not listed in the BOINC Translation Services. |
22 | | * If you are translation manager you can also download the .po file via SVN or BTS and use an external program like [http://www.poedit.net/ poedit] or [http://translate.sourceforge.net/wiki/virtaal/index Virtaal]. |
| 15 | You'll see some or all of the following "projects": |
| 16 | * Pootle: ignore this |
| 17 | * BOINC Client 6.6.x: the current client release. '''Only BOINC-Manager.po is relevant; ignore other files.''' |
| 18 | * BOINC Development: the development versions of both client and server. This should contain: |
| 19 | * BOINC-Manager.po: translations for the BOINC Manager |
| 20 | * BOINC-Project-Generic.po: translations for the generic part of project web sites |
| 21 | * BOINC-Web.po: translations for the BOINC web site |
| 22 | * SETI@Home Website |
54 | | msgid "%1 currently has the following applications. " |
55 | | "When you participate in %2, work for one or more " |
56 | | "of these applications will be assigned to your computer. " |
57 | | "The current version of the application will be downloaded " |
58 | | "to your computer. This happens automatically; you don't have to do anything." |
59 | | msgstr "%1 har i øjeblikket følgende applikationer. " |
60 | | "Når du deltager i %2 vil arbejde fra en eller flere " |
61 | | "af disse applikationer blive tildelt din computer. " |
62 | | "Den nuværende version af applikationen vil blive downloadet " |
63 | | "til din computer. Dette sker automatisk - du behøver ikke at gøre noget." |
64 | | }}} |
71 | | Here you can find all the translation files for |
72 | | |
73 | | * [source:trunk/boinc/locale/ all languages] |
74 | | {{{ |
75 | | #!comment There are more places where .po files can be found. Are they used anymore? |
76 | | }}} |
77 | | |
78 | | == Writing translatable web pages == |
79 | | |
80 | | Translatable web pages must be PHP, and must include |
81 | | |
82 | | {{{ |
83 | | require_once("../inc/translation.inc"); |
84 | | }}} |
85 | | |
86 | | Literal text is replaced with `tra("text")`. For example, |
87 | | |
88 | | {{{ |
89 | | page_head("Current version"); |
90 | | }}} |
91 | | |
92 | | is replaced with |
93 | | |
94 | | {{{ |
95 | | page_head(tra("Current version")); |
96 | | }}} |
97 | | |
98 | | For BOINC projects, the directory [source:trunk/boinc/html/languages/translations/ html/languages/translations] contains a number of 'translation files'. When a person accesses the page, the browser passes a list of languages. The BOINC PHP code finds the first of these languages for which a translation is available, or English if none. As the page is generated, each call to `tr()` replaces the token with the corresponding translated text. |
99 | | |
100 | | In developing web pages, keep in mind that word order differs between languages, so you should avoid breaking a sentence up into multiple translation units. For example, use constructs like |
101 | | |
102 | | {{{ |
103 | | msgid "Already have an original 'Classic' account as of May 14, 2004?" |
104 | | "%1We've transferred it, just %2activate it%3. " |
105 | | "%4Otherwise %5create a new account%6." |
106 | | msgstr "" |
107 | | }}} |
108 | | |
109 | | with the corresponding PHP: |
110 | | |
111 | | {{{ |
112 | | printf(tra("Already have an original 'Classic' account as of May 14, 2004? %1We've transferred it, just %2activate it%3. %4Otherwise %5create a new account%6."), |
113 | | "<br>", "<a href=\"sah_email_form.php\">", "</a>", |
114 | | "<p><img src=\"images/arrow_right.gif\">", |
115 | | "<a href=create_account_form.php>", "</a>" |
116 | | ); |
117 | | }}} |
118 | | |
119 | | == Project-specific translations == |
120 | | |
121 | | The web site of a BOINC-based project involves both |
122 | | |
123 | | * BOINC pages, such as the forms for creating accounts. These are part of the BOINC source code distribution, and are updated periodically by BOINC. |
124 | | * Project-specific pages (and BOINC pages that are modified by the project). |
125 | | |
126 | | To allow translations of both types of pages, a project can haves its own 'project-specific translation files'. These are stored in a directory [source:trunk/boinc/html/user/project_specific_translations html/user/project_specific_translations]. Project-specific translation files override BOINC translation files. |
127 | | |
128 | | == BOINC Manager translations == |
129 | | |
130 | | Menu names and other text in the BOINC manager are stored in files in [source:trunk/boinc/locale/ boinc/locale/]. |