1 Notes on the Free Translation Project 2 ************************************* 3 4 Free software is going international! The Free Translation Project 5 is a way to get maintainers of free software, translators, and users all 6 together, so that will gradually become able to speak many languages. 7 A few packages already provide translations for their messages. 8 9 If you found this `ABOUT-NLS' file inside a distribution, you may 10 assume that the distributed package does use GNU `gettext' internally, 11 itself available at your nearest GNU archive site. But you do _not_ 12 need to install GNU `gettext' prior to configuring, installing or using 13 this package with messages translated. 14 15 Installers will find here some useful hints. These notes also 16 explain how users should proceed for getting the programs to use the 17 available translations. They tell how people wanting to contribute and 18 work at translations should contact the appropriate team. 19 20 When reporting bugs in the `intl/' directory or bugs which may be 21 related 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 25 INSTALL Matters 26 =============== 27 28 Some packages are "localizable" when properly installed; the 29 programs they contain can be made to speak your own native language. 30 Most such packages use GNU `gettext'. Other packages have their own 31 ways to internationalization, predating GNU `gettext'. 32 33 By default, this package will be installed to allow translation of 34 messages. It will automatically detect whether the system already 35 provides the GNU `gettext' functions. If not, the GNU `gettext' own 36 library will be used. This library is wholly contained within this 37 package, usually in the `intl/' subdirectory, so prior installation of 38 the GNU `gettext' package is _not_ required. Installers may use 39 special options at configuration time for changing the default 40 behaviour. The command: 41 42 ./configure --disable-nls 43 44 will bypass any pre-existing `gettext' to _totally_ disable translation 45 of messages. 46 47 The configuration process will not test for the `catgets' function 48 and therefore it will not be used. The reason is that even an 49 emulation of `gettext' on top of `catgets' could not provide all the 50 extensions of the GNU `gettext' library. 51 52 Internationalized packages have usually many `po/LL.po' files, where 53 LL gives an ISO 639 two-letter code identifying the language. Unless 54 translations have been forbidden at `configure' time by using the 55 `--disable-nls' switch, all available translations are installed 56 together with the package. However, the environment variable `LINGUAS' 57 may be set, prior to configuration, to limit the installed set. 58 `LINGUAS' should then contain a space separated list of two-letter 59 codes, stating which languages are allowed. 60 61 Using This Package 62 ================== 63 64 As a user, if your language has been installed for this package, you 65 only have to set the `LANG' environment variable to the appropriate 66 `LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, 67 and `CC' is an ISO 3166 two-letter country code. For example, let's 68 suppose that you speak German and live in Germany. At the shell 69 prompt, merely execute `setenv LANG de_DE' (in `csh'), 70 `export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). 71 This can be done from your `.login' or `.profile' file, once and for 72 all. 73 74 You might think that the country code specification is redundant. 75 But in fact, some languages have dialects in different countries. For 76 example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The 77 country code serves to distinguish the dialects. 78 79 The locale naming convention of `LL_CC', with `LL' denoting the 80 language and `CC' denoting the country, is the one use on systems based 81 on GNU libc. On other systems, some variations of this scheme are 82 used, such as `LL' or `LL_CC.ENCODING'. You can get the list of 83 locales 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 87 English message is shown in place of a nonexistent translation. If you 88 understand other languages, you can set up a priority list of languages. 89 This is done through a different environment variable, called 90 `LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' 91 for the purpose of message handling, but you still need to have `LANG' 92 set to the primary language; this is required by other parts of the 93 system libraries. For example, some Swedish users who would rather 94 read translations in German than English for when Swedish is not 95 available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. 96 97 In the `LANGUAGE' environment variable, but not in the `LANG' 98 environment variable, `LL_CC' combinations can be abbreviated as `LL' 99 to denote the language's main dialect. For example, `de' is equivalent 100 to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' 101 (Portuguese as spoken in Portugal) in this context. 102 103 Translating Teams 104 ================= 105 106 For the Free Translation Project to be a success, we need interested 107 people who like their own language and write it well, and who are also 108 able to synergize with other translators speaking the same language. 109 Each translation team has its own mailing list. The up-to-date list of 110 teams can be found at the Free Translation Project's homepage, 111 `http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" 112 area. 113 114 If you'd like to volunteer to _work_ at translating messages, you 115 should become a member of the translating team for your own language. 116 The subscribing address is _not_ the same as the list itself, it has 117 `-request' appended. For example, speakers of Swedish can send a 118 message to `sv-request (a] 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, 124 rather than merely lurking around. If your team does not exist yet and 125 you want to start one, or if you are unsure about what to do or how to 126 get started, please write to `translation (a] iro.umontreal.ca' to reach the 127 coordinator for all translator teams. 128 129 The English team is special. It works at improving and uniformizing 130 the terminology in use. Proven linguistic skill are praised more than 131 programming skill, here. 132 133 Available Packages 134 ================== 135 136 Languages are not equally supported in all packages. The following 137 matrix shows the current state of internationalization, as of May 2003. 138 The matrix shows, in regard of each package, for which languages PO 139 files have been submitted to translation coordination, with a 140 translation 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 555 visible blocks let us expect. This is because a few extra PO files are 556 used for implementing regional variants of languages, or language 557 dialects. 558 559 For a PO file in the matrix above to be effective, the package to 560 which it applies should also have been internationalized and 561 distributed as such by its maintainer. There might be an observable 562 lag between the mere existence a PO file and its wide availability in a 563 distribution. 564 565 If May 2003 seems to be old, you may fetch a more recent copy of 566 this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date 567 matrix with full percentage details can be found at 568 `http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. 569 570 Using `gettext' in new packages 571 =============================== 572 573 If you are writing a freely available program and want to 574 internationalize it you are welcome to use GNU `gettext' in your 575 package. Of course you have to respect the GNU Library General Public 576 License which covers the use of the GNU `gettext' library. This means 577 in particular that even non-free programs can use `libintl' as a shared 578 library, whereas only free software can use `libintl' as a static 579 library or use modified versions of `libintl'. 580 581 Once the sources are changed appropriately and the setup can handle 582 the use of `gettext' the only thing missing are the translations. The 583 Free Translation Project is also available for packages which are not 584 developed inside the GNU project. Therefore the information given above 585 applies also for every other Free Software Project. Contact 586 `translation (a] iro.umontreal.ca' to make the `.pot' files available to 587 the translation teams. 588 589