1Notes 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 589