blob: 7e121c5b02cd410b1dfbb569f7e4ae9696c88fc0 [file] [log] [blame]
The Android Open Source Project441f72d2009-03-03 19:29:28 -08001Notes on the Free Translation Project
2*************************************
3
4 Free software is going international! The Free Translation Project
5is a way to get maintainers of free software, translators, and users all
6together, so that will gradually become able to speak many languages.
7A few packages already provide translations for their messages.
8
9 If you found this `ABOUT-NLS' file inside a distribution, you may
10assume that the distributed package does use GNU `gettext' internally,
11itself available at your nearest GNU archive site. But you do _not_
12need to install GNU `gettext' prior to configuring, installing or using
13this package with messages translated.
14
15 Installers will find here some useful hints. These notes also
16explain how users should proceed for getting the programs to use the
17available translations. They tell how people wanting to contribute and
18work at translations should contact the appropriate team.
19
20 When reporting bugs in the `intl/' directory or bugs which may be
21related to internationalization, you should tell about the version of
22`gettext' which is used. The information can be found in the
23`intl/VERSION' file, in internationalized packages.
24
25INSTALL Matters
26===============
27
28 Some packages are "localizable" when properly installed; the
29programs they contain can be made to speak your own native language.
30Most such packages use GNU `gettext'. Other packages have their own
31ways to internationalization, predating GNU `gettext'.
32
33 By default, this package will be installed to allow translation of
34messages. It will automatically detect whether the system already
35provides the GNU `gettext' functions. If not, the GNU `gettext' own
36library will be used. This library is wholly contained within this
37package, usually in the `intl/' subdirectory, so prior installation of
38the GNU `gettext' package is _not_ required. Installers may use
39special options at configuration time for changing the default
40behaviour. The command:
41
42 ./configure --disable-nls
43
44will bypass any pre-existing `gettext' to _totally_ disable translation
45of messages.
46
47 The configuration process will not test for the `catgets' function
48and therefore it will not be used. The reason is that even an
49emulation of `gettext' on top of `catgets' could not provide all the
50extensions of the GNU `gettext' library.
51
52 Internationalized packages have usually many `po/LL.po' files, where
53LL gives an ISO 639 two-letter code identifying the language. Unless
54translations have been forbidden at `configure' time by using the
55`--disable-nls' switch, all available translations are installed
56together with the package. However, the environment variable `LINGUAS'
57may be set, prior to configuration, to limit the installed set.
58`LINGUAS' should then contain a space separated list of two-letter
59codes, stating which languages are allowed.
60
61Using This Package
62==================
63
64 As a user, if your language has been installed for this package, you
65only have to set the `LANG' environment variable to the appropriate
66`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
67and `CC' is an ISO 3166 two-letter country code. For example, let's
68suppose that you speak German and live in Germany. At the shell
69prompt, merely execute `setenv LANG de_DE' (in `csh'),
70`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
71This can be done from your `.login' or `.profile' file, once and for
72all.
73
74 You might think that the country code specification is redundant.
75But in fact, some languages have dialects in different countries. For
76example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
77country code serves to distinguish the dialects.
78
79 The locale naming convention of `LL_CC', with `LL' denoting the
80language and `CC' denoting the country, is the one use on systems based
81on GNU libc. On other systems, some variations of this scheme are
82used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
83locales supported by your system for your country by running the command
84`locale -a | grep '^LL''.
85
86 Not all programs have translations for all languages. By default, an
87English message is shown in place of a nonexistent translation. If you
88understand other languages, you can set up a priority list of languages.
89This is done through a different environment variable, called
90`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
91for the purpose of message handling, but you still need to have `LANG'
92set to the primary language; this is required by other parts of the
93system libraries. For example, some Swedish users who would rather
94read translations in German than English for when Swedish is not
95available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
96
97 In the `LANGUAGE' environment variable, but not in the `LANG'
98environment variable, `LL_CC' combinations can be abbreviated as `LL'
99to denote the language's main dialect. For example, `de' is equivalent
100to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
101(Portuguese as spoken in Portugal) in this context.
102
103Translating Teams
104=================
105
106 For the Free Translation Project to be a success, we need interested
107people who like their own language and write it well, and who are also
108able to synergize with other translators speaking the same language.
109Each translation team has its own mailing list. The up-to-date list of
110teams can be found at the Free Translation Project's homepage,
111`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
112area.
113
114 If you'd like to volunteer to _work_ at translating messages, you
115should become a member of the translating team for your own language.
116The subscribing address is _not_ the same as the list itself, it has
117`-request' appended. For example, speakers of Swedish can send a
118message to `sv-request@li.org', having this message body:
119
120 subscribe
121
122 Keep in mind that team members are expected to participate
123_actively_ in translations, or at solving translational difficulties,
124rather than merely lurking around. If your team does not exist yet and
125you want to start one, or if you are unsure about what to do or how to
126get started, please write to `translation@iro.umontreal.ca' to reach the
127coordinator for all translator teams.
128
129 The English team is special. It works at improving and uniformizing
130the terminology in use. Proven linguistic skill are praised more than
131programming skill, here.
132
133Available Packages
134==================
135
136 Languages are not equally supported in all packages. The following
137matrix shows the current state of internationalization, as of May 2003.
138The matrix shows, in regard of each package, for which languages PO
139files have been submitted to translation coordination, with a
140translation percentage of at least 50%.
141
142 Ready PO files am az be bg ca cs da de el en en_GB eo es
143 +-------------------------------------------+
144 a2ps | [] [] [] [] |
145 aegis | () |
146 anubis | |
147 ap-utils | |
148 bash | [] [] [] |
149 batchelor | |
150 bfd | [] [] |
151 binutils | [] [] |
152 bison | [] [] [] |
153 bluez-pin | [] [] |
154 clisp | |
155 clisp | [] [] [] |
156 coreutils | [] [] [] [] |
157 cpio | [] [] [] |
158 darkstat | () [] |
159 diffutils | [] [] [] [] [] [] [] |
160 e2fsprogs | [] [] |
161 enscript | [] [] [] [] |
162 error | [] [] [] [] [] |
163 fetchmail | [] () [] [] [] [] |
164 fileutils | [] [] [] |
165 findutils | [] [] [] [] [] [] |
166 flex | [] [] [] [] |
167 gas | [] |
168 gawk | [] [] [] [] |
169 gcal | [] |
170 gcc | [] [] |
171 gettext | [] [] [] [] [] |
172 gettext-runtime | [] [] [] [] [] |
173 gettext-tools | [] [] |
174 gimp-print | [] [] [] [] [] |
175 gliv | |
176 glunarclock | [] [] [] |
177 gnucash | () [] |
178 gnucash-glossary | [] () [] |
179 gnupg | [] () [] [] [] [] |
180 gpe-calendar | [] |
181 gpe-conf | [] |
182 gpe-contacts | [] |
183 gpe-edit | |
184 gpe-login | [] |
185 gpe-ownerinfo | [] |
186 gpe-sketchbook | [] |
187 gpe-timesheet | |
188 gpe-today | [] |
189 gpe-todo | [] |
190 gphoto2 | [] [] [] [] |
191 gprof | [] [] |
192 gpsdrive | () () () |
193 grep | [] [] [] [] [] |
194 gretl | [] |
195 hello | [] [] [] [] [] [] |
196 id-utils | [] [] |
197 indent | [] [] [] [] |
198 jpilot | [] [] [] [] |
199 jwhois | [] |
200 kbd | [] [] [] [] [] |
201 ld | [] [] |
202 libc | [] [] [] [] [] [] |
203 libgpewidget | [] |
204 libiconv | [] [] [] [] [] |
205 lifelines | [] () |
206 lilypond | [] |
207 lingoteach | |
208 lingoteach_lessons | () () |
209 lynx | [] [] [] [] |
210 m4 | [] [] [] [] |
211 mailutils | [] [] |
212 make | [] [] [] |
213 man-db | [] () [] [] () |
214 mysecretdiary | [] [] [] |
215 nano | [] () [] [] [] |
216 nano_1_0 | [] () [] [] [] |
217 opcodes | [] [] |
218 parted | [] [] [] [] [] |
219 ptx | [] [] [] [] [] |
220 python | |
221 radius | |
222 recode | [] [] [] [] [] [] |
223 screem | |
224 sed | [] [] [] [] [] |
225 sh-utils | [] [] [] |
226 sharutils | [] [] [] [] [] [] |
227 sketch | [] () [] |
228 soundtracker | [] [] [] |
229 sp | [] |
230 tar | [] [] [] [] |
231 texinfo | [] [] [] [] |
232 textutils | [] [] [] [] |
233 tin | () () |
234 util-linux | [] [] [] [] [] |
235 vorbis-tools | [] [] [] |
236 wastesedge | () |
237 wdiff | [] [] [] [] |
238 wget | [] [] [] [] [] [] [] |
239 xchat | [] [] [] |
240 xpad | |
241 +-------------------------------------------+
242 am az be bg ca cs da de el en en_GB eo es
243 0 1 4 2 31 17 54 60 14 1 4 12 56
244
245 et fa fi fr ga gl he hr hu id it ja ko
246 +----------------------------------------+
247 a2ps | [] [] [] () () |
248 aegis | |
249 anubis | [] |
250 ap-utils | [] |
251 bash | [] [] |
252 batchelor | [] |
253 bfd | [] [] |
254 binutils | [] [] |
255 bison | [] [] [] [] |
256 bluez-pin | [] [] [] [] |
257 clisp | |
258 clisp | [] |
259 coreutils | [] [] [] [] |
260 cpio | [] [] [] [] |
261 darkstat | () [] [] [] |
262 diffutils | [] [] [] [] [] [] [] |
263 e2fsprogs | |
264 enscript | [] [] |
265 error | [] [] [] [] |
266 fetchmail | [] |
267 fileutils | [] [] [] [] [] |
268 findutils | [] [] [] [] [] [] [] [] [] [] [] |
269 flex | [] [] |
270 gas | [] |
271 gawk | [] [] |
272 gcal | [] |
273 gcc | [] |
274 gettext | [] [] [] |
275 gettext-runtime | [] [] [] [] |
276 gettext-tools | [] |
277 gimp-print | [] [] |
278 gliv | () |
279 glunarclock | [] [] [] [] |
280 gnucash | [] |
281 gnucash-glossary | [] |
282 gnupg | [] [] [] [] [] [] [] |
283 gpe-calendar | [] |
284 gpe-conf | |
285 gpe-contacts | [] |
286 gpe-edit | [] [] |
287 gpe-login | [] |
288 gpe-ownerinfo | [] [] [] |
289 gpe-sketchbook | [] |
290 gpe-timesheet | [] [] [] |
291 gpe-today | [] [] |
292 gpe-todo | [] [] |
293 gphoto2 | [] [] [] |
294 gprof | [] [] |
295 gpsdrive | () [] () () |
296 grep | [] [] [] [] [] [] [] [] [] [] [] |
297 gretl | [] |
298 hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
299 id-utils | [] [] [] |
300 indent | [] [] [] [] [] [] [] [] |
301 jpilot | [] () |
302 jwhois | [] [] [] [] |
303 kbd | [] |
304 ld | [] |
305 libc | [] [] [] [] [] [] |
306 libgpewidget | [] [] [] |
307 libiconv | [] [] [] [] [] [] [] [] |
308 lifelines | () |
309 lilypond | [] |
310 lingoteach | [] [] |
311 lingoteach_lessons | |
312 lynx | [] [] [] [] |
313 m4 | [] [] [] [] |
314 mailutils | |
315 make | [] [] [] [] [] [] |
316 man-db | [] () () |
317 mysecretdiary | [] [] |
318 nano | [] [] [] [] |
319 nano_1_0 | [] [] [] [] |
320 opcodes | [] [] |
321 parted | [] [] [] |
322 ptx | [] [] [] [] [] [] [] |
323 python | |
324 radius | |
325 recode | [] [] [] [] [] [] |
326 screem | |
327 sed | [] [] [] [] [] [] [] [] |
328 sh-utils | [] [] [] [] [] [] |
329 sharutils | [] [] [] [] [] |
330 sketch | [] |
331 soundtracker | [] [] [] |
332 sp | [] () |
333 tar | [] [] [] [] [] [] [] [] [] |
334 texinfo | [] [] [] [] |
335 textutils | [] [] [] [] [] |
336 tin | [] () |
337 util-linux | [] [] [] [] () [] |
338 vorbis-tools | [] |
339 wastesedge | () |
340 wdiff | [] [] [] [] [] |
341 wget | [] [] [] [] [] [] [] [] |
342 xchat | [] [] [] |
343 xpad | |
344 +----------------------------------------+
345 et fa fi fr ga gl he hr hu id it ja ko
346 20 1 15 73 14 24 8 10 30 31 19 31 9
347
348 lg lt lv ms nb nl nn no pl pt pt_BR ro
349 +----------------------------------------+
350 a2ps | [] [] () () () [] [] |
351 aegis | () |
352 anubis | [] [] |
353 ap-utils | () |
354 bash | [] |
355 batchelor | |
356 bfd | |
357 binutils | |
358 bison | [] [] [] [] |
359 bluez-pin | [] |
360 clisp | |
361 clisp | [] |
362 coreutils | [] |
363 cpio | [] [] [] |
364 darkstat | [] [] [] [] |
365 diffutils | [] [] [] |
366 e2fsprogs | |
367 enscript | [] [] |
368 error | [] [] |
369 fetchmail | () () |
370 fileutils | [] |
371 findutils | [] [] [] [] |
372 flex | [] |
373 gas | |
374 gawk | [] |
375 gcal | |
376 gcc | |
377 gettext | [] |
378 gettext-runtime | [] |
379 gettext-tools | |
380 gimp-print | [] |
381 gliv | [] |
382 glunarclock | [] |
383 gnucash | |
384 gnucash-glossary | [] [] |
385 gnupg | |
386 gpe-calendar | [] [] |
387 gpe-conf | [] [] |
388 gpe-contacts | [] |
389 gpe-edit | [] [] |
390 gpe-login | [] [] |
391 gpe-ownerinfo | [] [] |
392 gpe-sketchbook | [] [] |
393 gpe-timesheet | [] [] |
394 gpe-today | [] [] |
395 gpe-todo | [] [] |
396 gphoto2 | |
397 gprof | [] |
398 gpsdrive | () () () |
399 grep | [] [] [] [] |
400 gretl | |
401 hello | [] [] [] [] [] [] [] [] [] |
402 id-utils | [] [] [] |
403 indent | [] [] [] |
404 jpilot | () () |
405 jwhois | [] [] [] |
406 kbd | |
407 ld | |
408 libc | [] [] [] [] |
409 libgpewidget | [] [] |
410 libiconv | [] [] |
411 lifelines | |
412 lilypond | [] |
413 lingoteach | |
414 lingoteach_lessons | |
415 lynx | [] [] |
416 m4 | [] [] [] [] |
417 mailutils | |
418 make | [] [] |
419 man-db | [] |
420 mysecretdiary | [] |
421 nano | [] [] [] [] |
422 nano_1_0 | [] [] [] [] |
423 opcodes | [] [] [] |
424 parted | [] [] [] |
425 ptx | [] [] [] [] [] [] [] |
426 python | |
427 radius | |
428 recode | [] [] [] |
429 screem | |
430 sed | [] [] |
431 sh-utils | [] |
432 sharutils | [] |
433 sketch | [] |
434 soundtracker | |
435 sp | |
436 tar | [] [] [] [] [] [] |
437 texinfo | [] |
438 textutils | [] |
439 tin | |
440 util-linux | [] [] |
441 vorbis-tools | [] [] |
442 wastesedge | |
443 wdiff | [] [] [] [] |
444 wget | [] [] [] |
445 xchat | [] [] |
446 xpad | [] |
447 +----------------------------------------+
448 lg lt lv ms nb nl nn no pl pt pt_BR ro
449 0 0 2 11 7 26 3 4 18 15 34 34
450
451 ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
452 +-------------------------------------------+
453 a2ps | [] [] [] [] [] | 16
454 aegis | () | 0
455 anubis | [] [] | 5
456 ap-utils | () | 1
457 bash | [] | 7
458 batchelor | | 1
459 bfd | [] [] [] | 7
460 binutils | [] [] [] | 7
461 bison | [] [] | 13
462 bluez-pin | | 7
463 clisp | | 0
464 clisp | | 5
465 coreutils | [] [] [] [] [] | 14
466 cpio | [] [] [] | 13
467 darkstat | [] () () | 9
468 diffutils | [] [] [] [] | 21
469 e2fsprogs | [] | 3
470 enscript | [] [] [] | 11
471 error | [] [] [] | 14
472 fetchmail | [] | 7
473 fileutils | [] [] [] [] [] [] | 15
474 findutils | [] [] [] [] [] [] | 27
475 flex | [] [] [] | 10
476 gas | [] | 3
477 gawk | [] [] | 9
478 gcal | [] [] | 4
479 gcc | [] | 4
480 gettext | [] [] [] [] [] [] | 15
481 gettext-runtime | [] [] [] [] [] [] | 16
482 gettext-tools | [] [] | 5
483 gimp-print | [] [] | 10
484 gliv | | 1
485 glunarclock | [] [] [] | 11
486 gnucash | [] [] | 4
487 gnucash-glossary | [] [] [] | 8
488 gnupg | [] [] [] [] | 16
489 gpe-calendar | [] | 5
490 gpe-conf | | 3
491 gpe-contacts | [] | 4
492 gpe-edit | [] | 5
493 gpe-login | [] | 5
494 gpe-ownerinfo | [] | 7
495 gpe-sketchbook | [] | 5
496 gpe-timesheet | [] | 6
497 gpe-today | [] | 6
498 gpe-todo | [] | 6
499 gphoto2 | [] [] | 9
500 gprof | [] [] | 7
501 gpsdrive | [] [] | 3
502 grep | [] [] [] [] | 24
503 gretl | | 2
504 hello | [] [] [] [] [] | 33
505 id-utils | [] [] [] | 11
506 indent | [] [] [] [] | 19
507 jpilot | [] [] [] [] [] | 10
508 jwhois | () () [] [] | 10
509 kbd | [] [] | 8
510 ld | [] [] | 5
511 libc | [] [] [] [] | 20
512 libgpewidget | | 6
513 libiconv | [] [] [] [] [] [] | 21
514 lifelines | [] | 2
515 lilypond | [] | 4
516 lingoteach | | 2
517 lingoteach_lessons | () | 0
518 lynx | [] [] [] [] | 14
519 m4 | [] [] [] | 15
520 mailutils | | 2
521 make | [] [] [] [] | 15
522 man-db | [] | 6
523 mysecretdiary | [] [] | 8
524 nano | [] [] [] | 15
525 nano_1_0 | [] [] [] | 15
526 opcodes | [] [] | 9
527 parted | [] [] | 13
528 ptx | [] [] [] | 22
529 python | | 0
530 radius | | 0
531 recode | [] [] [] [] | 19
532 screem | [] | 1
533 sed | [] [] [] [] [] | 20
534 sh-utils | [] [] [] | 13
535 sharutils | [] [] [] [] | 16
536 sketch | [] | 5
537 soundtracker | [] | 7
538 sp | [] | 3
539 tar | [] [] [] [] [] | 24
540 texinfo | [] [] [] [] | 13
541 textutils | [] [] [] [] [] | 15
542 tin | | 1
543 util-linux | [] [] | 14
544 vorbis-tools | [] | 7
545 wastesedge | | 0
546 wdiff | [] [] [] [] | 17
547 wget | [] [] [] [] [] [] [] | 25
548 xchat | [] [] [] | 11
549 xpad | | 1
550 +-------------------------------------------+
551 50 teams ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
552 97 domains 32 19 16 0 56 0 48 10 1 1 12 23 913
553
554 Some counters in the preceding matrix are higher than the number of
555visible blocks let us expect. This is because a few extra PO files are
556used for implementing regional variants of languages, or language
557dialects.
558
559 For a PO file in the matrix above to be effective, the package to
560which it applies should also have been internationalized and
561distributed as such by its maintainer. There might be an observable
562lag between the mere existence a PO file and its wide availability in a
563distribution.
564
565 If May 2003 seems to be old, you may fetch a more recent copy of
566this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
567matrix with full percentage details can be found at
568`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
569
570Using `gettext' in new packages
571===============================
572
573 If you are writing a freely available program and want to
574internationalize it you are welcome to use GNU `gettext' in your
575package. Of course you have to respect the GNU Library General Public
576License which covers the use of the GNU `gettext' library. This means
577in particular that even non-free programs can use `libintl' as a shared
578library, whereas only free software can use `libintl' as a static
579library or use modified versions of `libintl'.
580
581 Once the sources are changed appropriately and the setup can handle
582the use of `gettext' the only thing missing are the translations. The
583Free Translation Project is also available for packages which are not
584developed inside the GNU project. Therefore the information given above
585applies also for every other Free Software Project. Contact
586`translation@iro.umontreal.ca' to make the `.pot' files available to
587the translation teams.
588