1*75f6d617SchristosNotes on the Free Translation Project 2*75f6d617Schristos************************************* 3*75f6d617Schristos 4*75f6d617Schristos Free software is going international! The Free Translation Project 5*75f6d617Schristosis a way to get maintainers of free software, translators, and users all 6*75f6d617Schristostogether, so that will gradually become able to speak many languages. 7*75f6d617SchristosA few packages already provide translations for their messages. 8*75f6d617Schristos 9*75f6d617Schristos If you found this `ABOUT-NLS' file inside a distribution, you may 10*75f6d617Schristosassume that the distributed package does use GNU `gettext' internally, 11*75f6d617Schristositself available at your nearest GNU archive site. But you do _not_ 12*75f6d617Schristosneed to install GNU `gettext' prior to configuring, installing or using 13*75f6d617Schristosthis package with messages translated. 14*75f6d617Schristos 15*75f6d617Schristos Installers will find here some useful hints. These notes also 16*75f6d617Schristosexplain how users should proceed for getting the programs to use the 17*75f6d617Schristosavailable translations. They tell how people wanting to contribute and 18*75f6d617Schristoswork at translations should contact the appropriate team. 19*75f6d617Schristos 20*75f6d617Schristos When reporting bugs in the `intl/' directory or bugs which may be 21*75f6d617Schristosrelated to internationalization, you should tell about the version of 22*75f6d617Schristos`gettext' which is used. The information can be found in the 23*75f6d617Schristos`intl/VERSION' file, in internationalized packages. 24*75f6d617Schristos 25*75f6d617SchristosQuick configuration advice 26*75f6d617Schristos========================== 27*75f6d617Schristos 28*75f6d617Schristos If you want to exploit the full power of internationalization, you 29*75f6d617Schristosshould configure it using 30*75f6d617Schristos 31*75f6d617Schristos ./configure --with-included-gettext 32*75f6d617Schristos 33*75f6d617Schristosto force usage of internationalizing routines provided within this 34*75f6d617Schristospackage, despite the existence of internationalizing capabilities in the 35*75f6d617Schristosoperating system where this package is being installed. So far, only 36*75f6d617Schristosthe `gettext' implementation in the GNU C library version 2 provides as 37*75f6d617Schristosmany features (such as locale alias, message inheritance, automatic 38*75f6d617Schristoscharset conversion or plural form handling) as the implementation here. 39*75f6d617SchristosIt is also not possible to offer this additional functionality on top 40*75f6d617Schristosof a `catgets' implementation. Future versions of GNU `gettext' will 41*75f6d617Schristosvery likely convey even more functionality. So it might be a good idea 42*75f6d617Schristosto change to GNU `gettext' as soon as possible. 43*75f6d617Schristos 44*75f6d617Schristos So you need _not_ provide this option if you are using GNU libc 2 or 45*75f6d617Schristosyou have installed a recent copy of the GNU gettext package with the 46*75f6d617Schristosincluded `libintl'. 47*75f6d617Schristos 48*75f6d617SchristosINSTALL Matters 49*75f6d617Schristos=============== 50*75f6d617Schristos 51*75f6d617Schristos Some packages are "localizable" when properly installed; the 52*75f6d617Schristosprograms they contain can be made to speak your own native language. 53*75f6d617SchristosMost such packages use GNU `gettext'. Other packages have their own 54*75f6d617Schristosways to internationalization, predating GNU `gettext'. 55*75f6d617Schristos 56*75f6d617Schristos By default, this package will be installed to allow translation of 57*75f6d617Schristosmessages. It will automatically detect whether the system already 58*75f6d617Schristosprovides the GNU `gettext' functions. If not, the GNU `gettext' own 59*75f6d617Schristoslibrary will be used. This library is wholly contained within this 60*75f6d617Schristospackage, usually in the `intl/' subdirectory, so prior installation of 61*75f6d617Schristosthe GNU `gettext' package is _not_ required. Installers may use 62*75f6d617Schristosspecial options at configuration time for changing the default 63*75f6d617Schristosbehaviour. The commands: 64*75f6d617Schristos 65*75f6d617Schristos ./configure --with-included-gettext 66*75f6d617Schristos ./configure --disable-nls 67*75f6d617Schristos 68*75f6d617Schristoswill respectively bypass any pre-existing `gettext' to use the 69*75f6d617Schristosinternationalizing routines provided within this package, or else, 70*75f6d617Schristos_totally_ disable translation of messages. 71*75f6d617Schristos 72*75f6d617Schristos When you already have GNU `gettext' installed on your system and run 73*75f6d617Schristosconfigure without an option for your new package, `configure' will 74*75f6d617Schristosprobably detect the previously built and installed `libintl.a' file and 75*75f6d617Schristoswill decide to use this. This might be not what is desirable. You 76*75f6d617Schristosshould use the more recent version of the GNU `gettext' library. I.e. 77*75f6d617Schristosif the file `intl/VERSION' shows that the library which comes with this 78*75f6d617Schristospackage is more recent, you should use 79*75f6d617Schristos 80*75f6d617Schristos ./configure --with-included-gettext 81*75f6d617Schristos 82*75f6d617Schristosto prevent auto-detection. 83*75f6d617Schristos 84*75f6d617Schristos The configuration process will not test for the `catgets' function 85*75f6d617Schristosand therefore it will not be used. The reason is that even an 86*75f6d617Schristosemulation of `gettext' on top of `catgets' could not provide all the 87*75f6d617Schristosextensions of the GNU `gettext' library. 88*75f6d617Schristos 89*75f6d617Schristos Internationalized packages have usually many `po/LL.po' files, where 90*75f6d617SchristosLL gives an ISO 639 two-letter code identifying the language. Unless 91*75f6d617Schristostranslations have been forbidden at `configure' time by using the 92*75f6d617Schristos`--disable-nls' switch, all available translations are installed 93*75f6d617Schristostogether with the package. However, the environment variable `LINGUAS' 94*75f6d617Schristosmay be set, prior to configuration, to limit the installed set. 95*75f6d617Schristos`LINGUAS' should then contain a space separated list of two-letter 96*75f6d617Schristoscodes, stating which languages are allowed. 97*75f6d617Schristos 98*75f6d617SchristosUsing This Package 99*75f6d617Schristos================== 100*75f6d617Schristos 101*75f6d617Schristos As a user, if your language has been installed for this package, you 102*75f6d617Schristosonly have to set the `LANG' environment variable to the appropriate 103*75f6d617Schristos`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, 104*75f6d617Schristosand `CC' is an ISO 3166 two-letter country code. For example, let's 105*75f6d617Schristossuppose that you speak German and live in Germany. At the shell 106*75f6d617Schristosprompt, merely execute `setenv LANG de_DE' (in `csh'), 107*75f6d617Schristos`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). 108*75f6d617SchristosThis can be done from your `.login' or `.profile' file, once and for 109*75f6d617Schristosall. 110*75f6d617Schristos 111*75f6d617Schristos You might think that the country code specification is redundant. 112*75f6d617SchristosBut in fact, some languages have dialects in different countries. For 113*75f6d617Schristosexample, `de_AT' is used for Austria, and `pt_BR' for Brazil. The 114*75f6d617Schristoscountry code serves to distinguish the dialects. 115*75f6d617Schristos 116*75f6d617Schristos The locale naming convention of `LL_CC', with `LL' denoting the 117*75f6d617Schristoslanguage and `CC' denoting the country, is the one use on systems based 118*75f6d617Schristoson GNU libc. On other systems, some variations of this scheme are 119*75f6d617Schristosused, such as `LL' or `LL_CC.ENCODING'. You can get the list of 120*75f6d617Schristoslocales supported by your system for your country by running the command 121*75f6d617Schristos`locale -a | grep '^LL''. 122*75f6d617Schristos 123*75f6d617Schristos Not all programs have translations for all languages. By default, an 124*75f6d617SchristosEnglish message is shown in place of a nonexistent translation. If you 125*75f6d617Schristosunderstand other languages, you can set up a priority list of languages. 126*75f6d617SchristosThis is done through a different environment variable, called 127*75f6d617Schristos`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' 128*75f6d617Schristosfor the purpose of message handling, but you still need to have `LANG' 129*75f6d617Schristosset to the primary language; this is required by other parts of the 130*75f6d617Schristossystem libraries. For example, some Swedish users who would rather 131*75f6d617Schristosread translations in German than English for when Swedish is not 132*75f6d617Schristosavailable, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. 133*75f6d617Schristos 134*75f6d617Schristos In the `LANGUAGE' environment variable, but not in the `LANG' 135*75f6d617Schristosenvironment variable, `LL_CC' combinations can be abbreviated as `LL' 136*75f6d617Schristosto denote the language's main dialect. For example, `de' is equivalent 137*75f6d617Schristosto `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' 138*75f6d617Schristos(Portuguese as spoken in Portugal) in this context. 139*75f6d617Schristos 140*75f6d617SchristosTranslating Teams 141*75f6d617Schristos================= 142*75f6d617Schristos 143*75f6d617Schristos For the Free Translation Project to be a success, we need interested 144*75f6d617Schristospeople who like their own language and write it well, and who are also 145*75f6d617Schristosable to synergize with other translators speaking the same language. 146*75f6d617SchristosEach translation team has its own mailing list. The up-to-date list of 147*75f6d617Schristosteams can be found at the Free Translation Project's homepage, 148*75f6d617Schristos`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" 149*75f6d617Schristosarea. 150*75f6d617Schristos 151*75f6d617Schristos If you'd like to volunteer to _work_ at translating messages, you 152*75f6d617Schristosshould become a member of the translating team for your own language. 153*75f6d617SchristosThe subscribing address is _not_ the same as the list itself, it has 154*75f6d617Schristos`-request' appended. For example, speakers of Swedish can send a 155*75f6d617Schristosmessage to `sv-request@li.org', having this message body: 156*75f6d617Schristos 157*75f6d617Schristos subscribe 158*75f6d617Schristos 159*75f6d617Schristos Keep in mind that team members are expected to participate 160*75f6d617Schristos_actively_ in translations, or at solving translational difficulties, 161*75f6d617Schristosrather than merely lurking around. If your team does not exist yet and 162*75f6d617Schristosyou want to start one, or if you are unsure about what to do or how to 163*75f6d617Schristosget started, please write to `translation@iro.umontreal.ca' to reach the 164*75f6d617Schristoscoordinator for all translator teams. 165*75f6d617Schristos 166*75f6d617Schristos The English team is special. It works at improving and uniformizing 167*75f6d617Schristosthe terminology in use. Proven linguistic skill are praised more than 168*75f6d617Schristosprogramming skill, here. 169*75f6d617Schristos 170*75f6d617SchristosAvailable Packages 171*75f6d617Schristos================== 172*75f6d617Schristos 173*75f6d617Schristos Languages are not equally supported in all packages. The following 174*75f6d617Schristosmatrix shows the current state of internationalization, as of March 175*75f6d617Schristos2002. The matrix shows, in regard of each package, for which languages 176*75f6d617SchristosPO files have been submitted to translation coordination, with a 177*75f6d617Schristostranslation percentage of at least 50%. 178*75f6d617Schristos 179*75f6d617Schristos Ready PO files bg ca cs da de el en eo es et fi fr 180*75f6d617Schristos +-------------------------------------+ 181*75f6d617Schristos a2ps | [] [] [] [] | 182*75f6d617Schristos bash | [] [] [] [] | 183*75f6d617Schristos bfd | [] [] | 184*75f6d617Schristos binutils | [] [] | 185*75f6d617Schristos bison | [] [] [] | 186*75f6d617Schristos clisp | [] [] [] [] | 187*75f6d617Schristos cpio | [] [] [] [] | 188*75f6d617Schristos diffutils | [] [] [] [] [] [] | 189*75f6d617Schristos enscript | [] [] | 190*75f6d617Schristos error | [] [] | 191*75f6d617Schristos fetchmail | () [] [] [] () | 192*75f6d617Schristos fileutils | [] [] [] [] [] | 193*75f6d617Schristos findutils | [] [] [] [] [] | 194*75f6d617Schristos flex | [] [] [] [] | 195*75f6d617Schristos gas | [] [] | 196*75f6d617Schristos gawk | [] [] | 197*75f6d617Schristos gcal | [] [] | 198*75f6d617Schristos gcc | [] [] | 199*75f6d617Schristos gettext | [] [] [] [] [] | 200*75f6d617Schristos gnupg | [] [] [] [] [] [] | 201*75f6d617Schristos gprof | [] [] | 202*75f6d617Schristos grep | [] [] [] [] [] [] | 203*75f6d617Schristos hello | [] [] [] [] [] [] [] [] | 204*75f6d617Schristos id-utils | [] [] [] | 205*75f6d617Schristos indent | [] [] [] [] [] | 206*75f6d617Schristos jpilot | () [] [] [] | 207*75f6d617Schristos jwhois | [] [] | 208*75f6d617Schristos kbd | [] [] | 209*75f6d617Schristos ld | [] [] | 210*75f6d617Schristos libc | [] [] [] [] [] [] [] | 211*75f6d617Schristos lilypond | [] [] | 212*75f6d617Schristos lynx | [] [] [] [] | 213*75f6d617Schristos m4 | [] [] [] [] [] | 214*75f6d617Schristos make | [] [] [] [] | 215*75f6d617Schristos mysecretdiary | [] [] | 216*75f6d617Schristos nano | [] () [] [] [] [] | 217*75f6d617Schristos nano_1_0 | [] () [] [] [] [] | 218*75f6d617Schristos opcodes | [] [] [] | 219*75f6d617Schristos parted | [] [] [] [] | 220*75f6d617Schristos ptx | [] [] [] [] [] | 221*75f6d617Schristos python | | 222*75f6d617Schristos recode | [] [] [] [] [] [] | 223*75f6d617Schristos sed | [] [] [] [] [] [] [] [] | 224*75f6d617Schristos sh-utils | [] [] [] [] [] [] [] [] | 225*75f6d617Schristos sharutils | [] [] [] [] [] [] | 226*75f6d617Schristos sketch | () [] () | 227*75f6d617Schristos soundtracker | [] [] [] | 228*75f6d617Schristos sp | | 229*75f6d617Schristos tar | [] [] [] [] [] [] | 230*75f6d617Schristos texinfo | [] [] [] [] [] | 231*75f6d617Schristos textutils | [] [] [] [] [] | 232*75f6d617Schristos util-linux | [] [] [] [] | 233*75f6d617Schristos vorbis-tools | | 234*75f6d617Schristos wdiff | [] [] [] [] [] | 235*75f6d617Schristos wget | [] [] [] [] [] [] [] [] | 236*75f6d617Schristos +-------------------------------------+ 237*75f6d617Schristos bg ca cs da de el en eo es et fi fr 238*75f6d617Schristos 1 12 11 31 36 9 1 8 39 15 1 50 239*75f6d617Schristos 240*75f6d617Schristos gl he hr hu id it ja ko lv nb nl nn 241*75f6d617Schristos +-------------------------------------+ 242*75f6d617Schristos a2ps | () () [] | 243*75f6d617Schristos bash | | 244*75f6d617Schristos bfd | [] | 245*75f6d617Schristos binutils | [] | 246*75f6d617Schristos bison | [] [] | 247*75f6d617Schristos clisp | [] | 248*75f6d617Schristos cpio | [] [] [] | 249*75f6d617Schristos diffutils | [] [] [] | 250*75f6d617Schristos enscript | [] | 251*75f6d617Schristos error | [] | 252*75f6d617Schristos fetchmail | | 253*75f6d617Schristos fileutils | [] [] [] | 254*75f6d617Schristos findutils | [] [] [] [] [] [] | 255*75f6d617Schristos flex | [] | 256*75f6d617Schristos gas | | 257*75f6d617Schristos gawk | [] | 258*75f6d617Schristos gcal | | 259*75f6d617Schristos gcc | | 260*75f6d617Schristos gettext | [] | 261*75f6d617Schristos gnupg | [] [] [] | 262*75f6d617Schristos gprof | | 263*75f6d617Schristos grep | [] | 264*75f6d617Schristos hello | [] [] [] [] [] [] [] [] [] [] | 265*75f6d617Schristos id-utils | [] | 266*75f6d617Schristos indent | [] [] [] | 267*75f6d617Schristos jpilot | () () | 268*75f6d617Schristos jwhois | | 269*75f6d617Schristos kbd | | 270*75f6d617Schristos ld | | 271*75f6d617Schristos libc | [] [] [] [] | 272*75f6d617Schristos lilypond | [] [] | 273*75f6d617Schristos lynx | [] [] | 274*75f6d617Schristos m4 | [] [] [] [] | 275*75f6d617Schristos make | [] [] [] [] | 276*75f6d617Schristos mysecretdiary | | 277*75f6d617Schristos nano | [] [] [] () [] () [] | 278*75f6d617Schristos nano_1_0 | [] [] [] () [] () [] | 279*75f6d617Schristos opcodes | [] | 280*75f6d617Schristos parted | [] [] [] | 281*75f6d617Schristos ptx | [] [] [] [] | 282*75f6d617Schristos python | | 283*75f6d617Schristos recode | [] [] [] | 284*75f6d617Schristos sed | [] [] [] [] [] [] [] | 285*75f6d617Schristos sh-utils | [] [] [] [] [] | 286*75f6d617Schristos sharutils | [] [] [] | 287*75f6d617Schristos sketch | () | 288*75f6d617Schristos soundtracker | [] | 289*75f6d617Schristos sp | | 290*75f6d617Schristos tar | [] [] [] | 291*75f6d617Schristos texinfo | [] [] | 292*75f6d617Schristos textutils | [] [] | 293*75f6d617Schristos util-linux | () [] | 294*75f6d617Schristos vorbis-tools | | 295*75f6d617Schristos wdiff | | 296*75f6d617Schristos wget | [] [] [] [] [] | 297*75f6d617Schristos +-------------------------------------+ 298*75f6d617Schristos gl he hr hu id it ja ko lv nb nl nn 299*75f6d617Schristos 19 7 0 4 6 11 22 9 1 8 19 4 300*75f6d617Schristos 301*75f6d617Schristos no pl pt pt_BR ru sk sl sv tr uk zh_TW 302*75f6d617Schristos +----------------------------------------+ 303*75f6d617Schristos a2ps | () () () [] [] [] () | 8 304*75f6d617Schristos bash | | 4 305*75f6d617Schristos bfd | [] [] | 5 306*75f6d617Schristos binutils | [] | 4 307*75f6d617Schristos bison | [] [] [] | 8 308*75f6d617Schristos clisp | | 5 309*75f6d617Schristos cpio | [] [] [] [] | 11 310*75f6d617Schristos diffutils | [] [] [] [] [] | 14 311*75f6d617Schristos enscript | [] [] [] | 6 312*75f6d617Schristos error | [] [] [] | 6 313*75f6d617Schristos fetchmail | () () [] | 4 314*75f6d617Schristos fileutils | [] [] [] [] | 12 315*75f6d617Schristos findutils | [] [] [] [] [] [] [] | 18 316*75f6d617Schristos flex | [] [] [] | 8 317*75f6d617Schristos gas | [] | 3 318*75f6d617Schristos gawk | [] [] | 5 319*75f6d617Schristos gcal | [] [] | 4 320*75f6d617Schristos gcc | [] | 3 321*75f6d617Schristos gettext | [] [] [] [] | 10 322*75f6d617Schristos gnupg | [] [] [] | 12 323*75f6d617Schristos gprof | [] [] | 4 324*75f6d617Schristos grep | [] [] [] | 10 325*75f6d617Schristos hello | [] [] [] [] [] [] [] | 25 326*75f6d617Schristos id-utils | [] [] | 6 327*75f6d617Schristos indent | [] [] [] [] | 12 328*75f6d617Schristos jpilot | () () | 3 329*75f6d617Schristos jwhois | () () [] | 3 330*75f6d617Schristos kbd | [] [] | 4 331*75f6d617Schristos ld | [] [] | 4 332*75f6d617Schristos libc | [] [] [] [] [] [] | 17 333*75f6d617Schristos lilypond | [] | 5 334*75f6d617Schristos lynx | [] [] [] | 9 335*75f6d617Schristos m4 | [] [] [] | 12 336*75f6d617Schristos make | [] [] [] [] | 12 337*75f6d617Schristos mysecretdiary | [] [] | 4 338*75f6d617Schristos nano | () [] [] [] [] | 14 339*75f6d617Schristos nano_1_0 | () [] [] [] | 13 340*75f6d617Schristos opcodes | [] [] | 6 341*75f6d617Schristos parted | [] [] [] | 10 342*75f6d617Schristos ptx | [] [] [] [] [] [] | 15 343*75f6d617Schristos python | | 0 344*75f6d617Schristos recode | [] [] [] [] | 13 345*75f6d617Schristos sed | [] [] [] [] [] [] | 21 346*75f6d617Schristos sh-utils | [] [] [] [] [] [] [] [] [] | 22 347*75f6d617Schristos sharutils | [] [] [] | 12 348*75f6d617Schristos sketch | [] () | 3 349*75f6d617Schristos soundtracker | [] | 5 350*75f6d617Schristos sp | | 0 351*75f6d617Schristos tar | [] [] [] [] [] [] [] | 16 352*75f6d617Schristos texinfo | [] [] [] | 10 353*75f6d617Schristos textutils | [] [] [] [] | 11 354*75f6d617Schristos util-linux | [] [] [] | 8 355*75f6d617Schristos vorbis-tools | [] | 1 356*75f6d617Schristos wdiff | [] [] [] [] | 9 357*75f6d617Schristos wget | [] [] [] [] [] [] [] | 20 358*75f6d617Schristos +----------------------------------------+ 359*75f6d617Schristos 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW 360*75f6d617Schristos 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 361*75f6d617Schristos 362*75f6d617Schristos Some counters in the preceding matrix are higher than the number of 363*75f6d617Schristosvisible blocks let us expect. This is because a few extra PO files are 364*75f6d617Schristosused for implementing regional variants of languages, or language 365*75f6d617Schristosdialects. 366*75f6d617Schristos 367*75f6d617Schristos For a PO file in the matrix above to be effective, the package to 368*75f6d617Schristoswhich it applies should also have been internationalized and 369*75f6d617Schristosdistributed as such by its maintainer. There might be an observable 370*75f6d617Schristoslag between the mere existence a PO file and its wide availability in a 371*75f6d617Schristosdistribution. 372*75f6d617Schristos 373*75f6d617Schristos If March 2002 seems to be old, you may fetch a more recent copy of 374*75f6d617Schristosthis `ABOUT-NLS' file on most GNU archive sites. The most up-to-date 375*75f6d617Schristosmatrix with full percentage details can be found at 376*75f6d617Schristos`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. 377*75f6d617Schristos 378*75f6d617SchristosUsing `gettext' in new packages 379*75f6d617Schristos=============================== 380*75f6d617Schristos 381*75f6d617Schristos If you are writing a freely available program and want to 382*75f6d617Schristosinternationalize it you are welcome to use GNU `gettext' in your 383*75f6d617Schristospackage. Of course you have to respect the GNU Library General Public 384*75f6d617SchristosLicense which covers the use of the GNU `gettext' library. This means 385*75f6d617Schristosin particular that even non-free programs can use `libintl' as a shared 386*75f6d617Schristoslibrary, whereas only free software can use `libintl' as a static 387*75f6d617Schristoslibrary or use modified versions of `libintl'. 388*75f6d617Schristos 389*75f6d617Schristos Once the sources are changed appropriately and the setup can handle 390*75f6d617Schristosto use of `gettext' the only thing missing are the translations. The 391*75f6d617SchristosFree Translation Project is also available for packages which are not 392*75f6d617Schristosdeveloped inside the GNU project. Therefore the information given above 393*75f6d617Schristosapplies also for every other Free Software Project. Contact 394*75f6d617Schristos`translation@iro.umontreal.ca' to make the `.pot' files available to 395*75f6d617Schristosthe translation teams. 396*75f6d617Schristos 397