[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

17. Concluding Remarks

We would like to conclude this GNU gettext manual by presenting an history of the Translation Project so far. We finally give a few pointers for those who want to do further research or readings about Native Language Support matters.

17.1 History of GNU gettext

Internationalization concerns and algorithms have been informally and casually discussed for years in GNU, sometimes around GNU libc, maybe around the incoming Hurd, or otherwise (nobody clearly remembers). And even then, when the work started for real, this was somewhat independently of these previous discussions.

This all began in July 1994, when Patrick D'Cruze had the idea and initiative of internationalizing version 3.9.2 of GNU fileutils. He then asked Jim Meyering, the maintainer, how to get those changes folded into an official release. That first draft was full of #ifdefs and somewhat disconcerting, and Jim wanted to find nicer ways. Patrick and Jim shared some tries and experimentations in this area. Then, feeling that this might eventually have a deeper impact on GNU, Jim wanted to know what standards were, and contacted Richard Stallman, who very quickly and verbally described an overall design for what was meant to become glocale, at that time.

Jim implemented glocale and got a lot of exhausting feedback from Patrick and Richard, of course, but also from Mitchum DSouza (who wrote a catgets-like package), Roland McGrath, maybe David MacKenzie, François Pinard, and Paul Eggert, all pushing and pulling in various directions, not always compatible, to the extent that after a couple of test releases, glocale was torn apart. In particular, Paul Eggert – always keeping an eye on developments in Solaris – advocated the use of the gettext API over glocale's catgets-based API.

While Jim took some distance and time and became dad for a second time, Roland wanted to get GNU libc internationalized, and got Ulrich Drepper involved in that project. Instead of starting from glocale, Ulrich rewrote something from scratch, but more conforming to the set of guidelines who emerged out of the glocale effort. Then, Ulrich got people from the previous forum to involve themselves into this new project, and the switch from glocale to what was first named msgutils, renamed nlsutils, and later gettext, became officially accepted by Richard in May 1995 or so.

Let's summarize by saying that Ulrich Drepper wrote GNU gettext in April 1995. The first official release of the package, including PO mode, occurred in July 1995, and was numbered 0.7. Other people contributed to the effort by providing a discussion forum around Ulrich, writing little pieces of code, or testing. These are quoted in the THANKS file which comes with the GNU gettext distribution.

While this was being done, François adapted half a dozen of GNU packages to glocale first, then later to gettext, putting them in pretest, so providing along the way an effective user environment for fine tuning the evolving tools. He also took the responsibility of organizing and coordinating the Translation Project. After nearly a year of informal exchanges between people from many countries, translator teams started to exist in May 1995, through the creation and support by Patrick D'Cruze of twenty unmoderated mailing lists for that many native languages, and two moderated lists: one for reaching all teams at once, the other for reaching all willing maintainers of internationalized free software packages.

François also wrote PO mode in June 1995 with the collaboration of Greg McGary, as a kind of contribution to Ulrich's package. He also gave a hand with the GNU gettext Texinfo manual.

In 1997, Ulrich Drepper released the GNU libc 2.0, which included the gettext, textdomain and bindtextdomain functions.

In 2000, Ulrich Drepper added plural form handling (the ngettext function) to GNU libc. Later, in 2001, he released GNU libc 2.2.x, which is the first free C library with full internationalization support.

Ulrich being quite busy in his role of General Maintainer of GNU libc, he handed over the GNU gettext maintenance to Bruno Haible in 2000. Bruno added the plural form handling to the tools as well, added support for UTF-8 and CJK locales, and wrote a few new tools for manipulating PO files.

17.2 Notes on the Free Translation Project

This section contains the text that was, for a long time, distributed as a file named ABOUT-NLS.

NOTE: This documentation section is outdated. It it included here for historical purposes only.

Free software is going international! The Free Translation Project is a way to get maintainers of free software, translators, and users all together, so that free software will gradually become able to speak many languages. A few packages already provide translations for their messages.

If you found this ‘ABOUT-NLS’ file inside a distribution, you may assume that the distributed package does use GNU gettext internally, itself available at your nearest GNU archive site. But you do not need to install GNU gettext prior to configuring, installing or using this package with messages translated.

Installers will find here some useful hints. These notes also explain how users should proceed for getting the programs to use the available translations. They tell how people wanting to contribute and work on translations can contact the appropriate team.

17.2.1 INSTALL Matters

Some packages are localizable when properly installed; the programs they contain can be made to speak your own native language. Most such packages use GNU gettext. Other packages have their own ways to internationalization, predating GNU gettext.

By default, this package will be installed to allow translation of messages. It will automatically detect whether the system already provides the GNU gettext functions. Installers may use special options at configuration time for changing the default behaviour. The command:

 
./configure --disable-nls

will totally disable translation of messages.

When you already have GNU gettext installed on your system and run configure without an option for your new package, configure will probably detect the previously built and installed ‘libintl’ library and will decide to use it. If not, you may have to to use the ‘--with-libintl-prefix’ option to tell configure where to look for it.

Internationalized packages usually have many ‘po/ll.po’ files, where ll gives an ISO 639 two-letter code identifying the language. Unless translations have been forbidden at configure time by using the ‘--disable-nls’ switch, all available translations are installed together with the package. However, the environment variable LINGUAS may be set, prior to configuration, to limit the installed set. LINGUAS should then contain a space separated list of two-letter codes, stating which languages are allowed.

17.2.2 Using This Package

As a user, if your language has been installed for this package, you only have to set the LANG environment variable to the appropriate ‘ll_CC’ combination. If you happen to have the LC_ALL or some other LC_xxx environment variables set, you should unset them before setting LANG, otherwise the setting of LANG will not have the desired effect. Here ‘ll’ is an ISO 639 two-letter language code, and ‘CC’ is an ISO 3166 two-letter country code. For example, let's suppose that you speak German and live in Germany. At the shell prompt, merely execute ‘setenv LANG de_DE’ (in csh), ‘export LANG; LANG=de_DE’ (in sh) or ‘export LANG=de_DE’ (in bash). This can be done from your ‘.login’ or ‘.profile’ file, once and for all.

You might think that the country code specification is redundant. But in fact, some languages have dialects in different countries. For example, ‘de_AT’ is used for Austria, and ‘pt_BR’ for Brazil. The country code serves to distinguish the dialects.

The locale naming convention of ‘ll_CC’, with ‘ll’ denoting the language and ‘CC’ denoting the country, is the one use on systems based on GNU libc. On other systems, some variations of this scheme are used, such as ‘ll’ or ‘ll_CC.encoding’. You can get the list of locales supported by your system for your language by running the command ‘locale -a | grep '^ll'’.

Not all programs have translations for all languages. By default, an English message is shown in place of a nonexistent translation. If you understand other languages, you can set up a priority list of languages. This is done through a different environment variable, called LANGUAGE. GNU gettext gives preference to LANGUAGE over LANG for the purpose of message handling, but you still need to have LANG set to the primary language; this is required by other parts of the system libraries. For example, some Swedish users who would rather read translations in German than English for when Swedish is not available, set LANGUAGE to ‘sv:de’ while leaving LANG to ‘sv_SE’.

Special advice for Norwegian users: The language code for Norwegian bokmål changed from ‘no’ to ‘nb’ recently (in 2003). During the transition period, while some message catalogs for this language are installed under ‘nb’ and some older ones under ‘no’, it's recommended for Norwegian users to set LANGUAGE to ‘nb:no’ so that both newer and older translations are used.

In the LANGUAGE environment variable, but not in the LANG environment variable, ‘ll_CC’ combinations can be abbreviated as ‘ll’ to denote the language's main dialect. For example, ‘de’ is equivalent to ‘de_DE’ (German as spoken in Germany), and ‘pt’ to ‘pt_PT’ (Portuguese as spoken in Portugal) in this context.

17.2.3 Translating Teams

For the Free Translation Project to be a success, we need interested people who like their own language and write it well, and who are also able to synergize with other translators speaking the same language. Each translation team has its own mailing list. The up-to-date list of teams can be found at the Free Translation Project's homepage, ‘https://translationproject.org/’, in the "Teams" area.

If you'd like to volunteer to work at translating messages, you should become a member of the translating team for your own language. The subscribing address is not the same as the list itself, it has ‘-request’ appended. For example, speakers of Swedish can send a message to ‘sv-request@li.org’, having this message body:

 
subscribe

Keep in mind that team members are expected to participate actively in translations, or at solving translational difficulties, rather than merely lurking around. If your team does not exist yet and you want to start one, or if you are unsure about what to do or how to get started, please write to ‘coordinator@translationproject.org’ to reach the coordinator for all translator teams.

The English team is special. It works at improving and uniformizing the terminology in use. Proven linguistic skills are praised more than programming skills, here.

17.2.4 Available Packages

Languages are not equally supported in all packages. The following matrix shows the current state of internationalization, as of June 2023. The matrix shows, in regard of each package, for which languages PO files have been submitted to translation coordination, with a translation percentage of at least 50%.

 
Ready PO files       ab af an ar ast be bg bn bn_IN ca ckb crh cs da 
                   +--------------------------------------------------+
a2ps               |                                           []     |
anubis             |                                              []  |
aspell             |             []                 []         [] []  |
bash               |                    []          []         []     |
beebase            |                                                  |
bfd                |                                                  |
binutils           |                                                  |
bison              |                    []                            |
bison-runtime      |             []     []          []            []  |
buzztrax           |                                           [] []  |
ccd2cue            |                                              []  |
ccide              |                                              []  |
cflow              |                                                  |
clisp              |                                              []  |
coreutils          |                    []          []         [] []  |
cpio               |                                              []  |
cppi               |                                              []  |
cpplib             |                                []            []  |
cryptsetup         |                                           [] []  |
datamash           |                                              []  |
denemo             |                                []         [] []  |
dfarc              |                                []            []  |
dialog             |       []    []                 []         [] []  |
dico               |                                              []  |
diffutils          |                    []                     [] []  |
dink               |                                []            []  |
direvent           |                                              []  |
doodle             |                                           [] []  |
dos2unix           |                                []            []  |
dos2unix-man       |                                                  |
e2fsprogs          |                                []         [] []  |
enscript           |                                []            []  |
exif               |             []                            [] []  |
fetchmail          |                                []         [] []  |
findutils          |                 [] []                     [] []  |
flex               |                    []          []            []  |
freedink           |                                []         [] []  |
fusionforge        |                                                  |
gas                |                                                  |
gawk               |                    []          []                |
gcal               |                                []            []  |
gcc                |                                                  |
gdbm               |                                              []  |
gettext-examples   |    []       []     []          []         [] []  |
gettext-runtime    |             []     []          []         [] []  |
gettext-tools      |                    []          []            []  |
gnubik             |          []                                  []  |
gnuchess           |                                              []  |
gnucobol           |                                                  |
gnulib             |                    []                     [] []  |
gnunet             |                                                  |
gnunet-gtk         |                                                  |
gnutls             |                                           []     |
gold               |                                                  |
gphoto2            |                                           [] []  |
gprof              |                    []                        []  |
grep               |                 [] []          []         [] []  |
grip               |                 [] []          []            []  |
grub               |             []                 []            []  |
gsasl              |                                              []  |
gss                |                                              []  |
gst-plugins-bad    |             []     []                     [] []  |
gst-plugins-base   |                    []          []         [] []  |
gst-plugins-good   |                    []          []         [] []  |
gst-plugins-ugly   |             []     []          []         [] []  |
gstreamer          |             []     []          []         [] []  |
gtick              |                                           [] []  |
gtkam              |                 []                        [] []  |
gtkspell           |    []       []  []             []         [] []  |
gutenprint         |                                []            []  |
hello              |                                           []     |
help2man           |                                              []  |
help2man-texi      |                                                  |
idutils            |                                              []  |
kbd                |                                           []     |
klavaro            |          []        [] []       []         [] []  |
ld                 |                                                  |
libc               |                    []          []         [] []  |
libexif            |                                              []  |
libextractor       |                                              []  |
libgphoto2         |                                           [] []  |
libgphoto2_port    |                                           [] []  |
libiconv           |                 [] []                     [] []  |
libidn             |                                           [] []  |
libidn2            |                                           [] []  |
lilypond           |                                []         [] []  |
lordsawar          |                                []            []  |
lynx               |                                []         [] []  |
m4                 |                    []                            |
mailfromd          |                                              []  |
mailutils          |                                                  |
make               |                    []                     [] []  |
man-db             |             []                 []         [] []  |
man-db-manpages    |                                                  |
meritous           |                                              []  |
midi-instruments   |          []                    []         [] []  |
minicom            |                                           [] []  |
mpop               |                                                  |
msmtp              |                                                  |
nano               |                                []         [] []  |
opcodes            |                                                  |
parted             |                                           [] []  |
pies               |                                                  |
pnmixer            |                                              []  |
procps-ng          |                                                  |
procps-ng-man      |                                                  |
psmisc             |                                           [] []  |
psmisc-man         |                                                  |
pspp               |          []                    []                |
pyspread           |                                              []  |
radius             |                                []                |
recode             |                 []             []         [] []  |
recutils           |                                                  |
rush               |                                              []  |
sarg               |                                              []  |
savane             |                                                  |
sed                |             []  [] []          []         [] []  |
sharutils          |                                           []     |
shepherd           |                                                  |
shishi             |                                                  |
skribilo           |                                              []  |
solfege            |                                []         [] []  |
solfege-manual     |                                []                |
spotmachine        |                                              []  |
sudo               |             []                 []         [] []  |
sudoers            |                                []         []     |
sysstat            |                 []                           []  |
tar                |                    []          []         [] []  |
texinfo            |                                []         [] []  |
texinfo_document   |                                []         []     |
tigervnc           |                    []                     []     |
tin                |                                              []  |
tin-man            |                                                  |
trader             |                                              []  |
util-linux         |                                           [] []  |
util-linux-man     |                                                  |
ve                 |                                                  |
vmm                |                                                  |
vorbis-tools       |                                           [] []  |
wastesedge         |                                              []  |
wcd                |                                              []  |
wcd-man            |                                                  |
wdiff              |                                []         [] []  |
wget               |                 []                        []     |
wget2              |                                                  |
wyslij-po          |                                              []  |
xboard             |                                              []  |
xdg-user-dirs      | [] [] [] [] []  [] []     []   [] []  []  [] []  |
xkeyboard-config   |          []        []          []         [] []  |
xz                 |                                []         []     |
xz-man             |                                                  |
                   +--------------------------------------------------+
                     ab af an ar ast be bg bn bn_IN ca ckb crh cs da 
                      1  3  2  6 15  11 30  1   1   52  1   1  64 100

                     de  el en en_GB eo es  et eu fa fi fr  fur ga gd
                   +--------------------------------------------------+
a2ps               | []  []             []                            |
anubis             | []                 []           [] []            |
aspell             | []         []   [] []           [] []  []  []    |
bash               | []              [] []              []      []    |
beebase            | []                 []              []            |
bfd                |                                    []            |
binutils           |                                    []            |
bison              | []  []          [] []  []       [] []            |
bison-runtime      | []  []          [] []  []       [] []      []    |
buzztrax           | []                 []           [] []            |
ccd2cue            | []              [] []              []            |
ccide              | []              [] []           [] []  []        |
cflow              | []              []                 []            |
clisp              | []     []          []              []            |
coreutils          | []                 []  []          []            |
cpio               | []                 []           [] []      []    |
cppi               | []              [] []           [] []            |
cpplib             | []              [] []           [] []            |
cryptsetup         | []                 []              []            |
datamash           | []              [] []              []            |
denemo             |                                                  |
dfarc              | []              [] []           [] []  []        |
dialog             | []  []          [] []     [] [] [] []  []  [] [] |
dico               | []                 []           [] []            |
diffutils          | []  []          [] []           [] []            |
dink               | []              [] []           [] []            |
direvent           | []              [] []              []            |
doodle             | []              [] []           [] []      []    |
dos2unix           | []              [] []              []  []        |
dos2unix-man       | []                 []              []            |
e2fsprogs          | []                 []              []            |
enscript           | []         []   [] []           [] []      []    |
exif               | []              [] []           [] []  []        |
fetchmail          | ()  []     []   [] []              []            |
findutils          | []  []          [] []  []       [] []            |
flex               | []              [] []           [] []      []    |
freedink           | []  []          [] []     []    [] []  []        |
fusionforge        | []                 []              []            |
gas                |                    []           [] []            |
gawk               | []                 []           [] []            |
gcal               | []                 []              []            |
gcc                | []                                 []            |
gdbm               | []              [] []              []            |
gettext-examples   | []  []          [] []           [] []      []    |
gettext-runtime    | []              [] []           [] []      []    |
gettext-tools      | []                 []           [] []            |
gnubik             | []              [] []           [] []  []        |
gnuchess           | []              [] []              []            |
gnucobol           |                                    []            |
gnulib             | []              [] []  []       [] []            |
gnunet             |                    []                            |
gnunet-gtk         | []                 []                            |
gnutls             | []              [] []           [] []            |
gold               |                    []           [] []            |
gphoto2            | ()              []                 []            |
gprof              | []              [] []           [] []      []    |
grep               | []              [] []  []       [] []      []    |
grip               | []                 []           [] []  []        |
grub               | []                 []           [] []            |
gsasl              | []              [] []           [] []      []    |
gss                | []              [] []           [] []      []    |
gst-plugins-bad    | []              [] []              []  []        |
gst-plugins-base   | []  []          [] []           [] []  []        |
gst-plugins-good   | []  []          [] []           [] []  []        |
gst-plugins-ugly   | []  []          [] []     []    [] []  []        |
gstreamer          | []  []          [] []     []    [] []  []        |
gtick              | ()              [] []           [] []      []    |
gtkam              | ()              [] []           [] []            |
gtkspell           | []  []          [] []     []    [] []  []  []    |
gutenprint         | []                 []              []            |
hello              | []                     []    [] []               |
help2man           | []  []          [] []           [] []            |
help2man-texi      | []                 []              []            |
idutils            | []              [] []           [] []      []    |
kbd                | []  []          [] []              []            |
klavaro            | []  []          [] []     []       []            |
ld                 |                    []              []            |
libc               | []                 []           [] []            |
libexif            | []                 []              []            |
libextractor       | []                 []              []            |
libgphoto2         | ()                 []              []            |
libgphoto2_port    | ()                 []     []    [] []  []        |
libiconv           | []              [] []  []       [] []      []    |
libidn             | []              [] []           [] []            |
libidn2            | []              [] []              []  []        |
lilypond           | []              [] []              []            |
lordsawar          | []                                 []            |
lynx               | []              []     []       [] []            |
m4                 | []              [] []                            |
mailfromd          |                                    []            |
mailutils          | []                 []           [] []            |
make               | []                 []           [] []      []    |
man-db             | []              [] []              []            |
man-db-manpages    | []                 []              []            |
meritous           |                 []                               |
midi-instruments   | []  []          [] []  []    [] [] []            |
minicom            | []                 []           [] []            |
mpop               | []              [] []              []            |
msmtp              | []              []                 []            |
nano               | []              [] []           [] []      []    |
opcodes            | []                 []              []            |
parted             | []                 []              []  []        |
pies               | []                 []              []            |
pnmixer            | []                                 []            |
procps-ng          | []                 []              []            |
procps-ng-man      |                                    []            |
psmisc             | []  []          [] []           [] []            |
psmisc-man         | []                                 []            |
pspp               | []  []             []              []            |
pyspread           | []                                 []            |
radius             |                    []              []            |
recode             | []              [] []           [] []      []    |
recutils           | []                              [] []            |
rush               | []                              [] []            |
sarg               | []                 []              []            |
savane             |                    []              []            |
sed                | []  []          [] []  []       [] []      []    |
sharutils          | []              []     []          []            |
shepherd           | []                                               |
shishi             | []                              [] []            |
skribilo           |                 [] []              []  []        |
solfege            | []              [] []  []    [] [] []            |
solfege-manual     | []              [] []  []          []            |
spotmachine        | []              []              [] []            |
sudo               | []              [] []           [] []  []        |
sudoers            | []              []              [] []            |
sysstat            | []              []              [] []  []        |
tar                | []              [] []  []       [] []      []    |
texinfo            | []              [] []              []            |
texinfo_document   | []              [] []           [] []            |
tigervnc           | []                 []           [] []  []        |
tin                | []                     []          []            |
tin-man            | []         []                                    |
trader             | []         []   []              [] []            |
util-linux         | []                 []              []            |
util-linux-man     | []                                 []            |
ve                 | []              [] []           [] []  []        |
vmm                |                                                  |
vorbis-tools       | []              [] []              []            |
wastesedge         |                                    []            |
wcd                | []              [] []           [] []  []        |
wcd-man            | []                                 []            |
wdiff              | []              [] []  []       [] []      []    |
wget               | []              [] []  []       [] []      []    |
wget2              | []                 []              []            |
wyslij-po          | []              [] []           [] []            |
xboard             | []                 []              []            |
xdg-user-dirs      | []  []          [] []  [] [] [] [] []  []  [] [] |
xkeyboard-config   | []              [] []           [] []  []        |
xz                 | []              [] []           [] []            |
xz-man             | []                                 []            |
                   +--------------------------------------------------+
                     de  el en en_GB eo es  et eu fa fi fr  fur ga gd
                     130 22  1   5   83 119 19  8  5 78 141 26  26  2

                     gl gu he hi hr hu hy id is it ja ka kk kn ko ku
                   +-------------------------------------------------+
a2ps               |             []                []                |
anubis             |             [] []    []    []                   |
aspell             |             []       []    [] []                |
bash               |             [] []    []       []          []    |
beebase            |                            ()                   |
bfd                |                                                 |
binutils           |                                                 |
bison              |                               []                |
bison-runtime      | []          [] []    []    [] [] []             |
buzztrax           |                                                 |
ccd2cue            |                []                               |
ccide              |             [] []                []             |
cflow              |                                                 |
clisp              |                                                 |
coreutils          |             [] []             []          []    |
cpio               |             [] []    []    [] []          []    |
cppi               | []          [] []          [] [] []             |
cpplib             |                      []       []                |
cryptsetup         |                            [] []                |
datamash           |                                                 |
denemo             |                                                 |
dfarc              |             [] []          []                   |
dialog             | []          [] []    [] [] [] [] []          [] |
dico               |                                                 |
diffutils          |             [] []    []    [] [] []       []    |
dink               |                []                               |
direvent           |                []                               |
doodle             |                            []                   |
dos2unix           |                []             [] []       []    |
dos2unix-man       |                                           []    |
e2fsprogs          |                []                               |
enscript           |             []       []                         |
exif               | []          [] []    [] [] [] [] []       []    |
fetchmail          |                      []    [] []                |
findutils          |             [] []    []    []    []       []    |
flex               |                                                 |
freedink           |             [] []    []    []                   |
fusionforge        |                                                 |
gas                |                      []                         |
gawk               |                      []    ()             []    |
gcal               |                                                 |
gcc                |                                                 |
gdbm               |                                                 |
gettext-examples   | []          [] []    []    [] [] []             |
gettext-runtime    | []          [] []          [] []          []    |
gettext-tools      |             []       []    [] []          []    |
gnubik             | []          []             []                   |
gnuchess           | []                                              |
gnucobol           |                                                 |
gnulib             |                []          [] [] []             |
gnunet             |                                                 |
gnunet-gtk         |                                                 |
gnutls             |                            []    []             |
gold               |                                                 |
gphoto2            |                []    []    [] []          []    |
gprof              |                []    []    []    []             |
grep               | []          [] []    []    [] [] []       []    |
grip               |                []          [] []          []    |
grub               | []          [] []          []    []       []    |
gsasl              |                []    []    []    []             |
gss                |             [] []    []    []    []             |
gst-plugins-bad    |             [] []    []    []    []             |
gst-plugins-base   | []          [] []    []    []    []             |
gst-plugins-good   | []          [] []    []    [] [] []             |
gst-plugins-ugly   | []          [] []    []    [] [] []             |
gstreamer          | []          [] []    []    []                   |
gtick              | []             []    []    []                   |
gtkam              |       []       []    [] [] [] []                |
gtkspell           | []    []    [] [] [] [] [] [] [] []             |
gutenprint         | []          [] []          []    []             |
hello              |             []                   []             |
help2man           |             []             [] []          []    |
help2man-texi      |                                                 |
idutils            |                []    []          []             |
kbd                |                                                 |
klavaro            | []          [] []    []    []       []          |
ld                 |                                                 |
libc               | []          []       []    [] []          []    |
libexif            |                            []                   |
libextractor       |                                                 |
libgphoto2         |                                                 |
libgphoto2_port    |                            [] [] []             |
libiconv           | []          [] []    []    [] [] []       []    |
libidn             |             [] []    []    []             []    |
libidn2            |                []    []          []       []    |
lilypond           |                            [] []                |
lordsawar          |                               []                |
lynx               |                []    []    [] []                |
m4                 |                                  []       []    |
mailfromd          |                                                 |
mailutils          |                                                 |
make               |             []       []    [] []          []    |
man-db             |                      []       []          []    |
man-db-manpages    |                      []                   []    |
meritous           |                                                 |
midi-instruments   | []    []    [] [] [] [] [] [] [] []       [] [] |
minicom            |                []    []       [] []       []    |
mpop               |                                                 |
msmtp              |                                                 |
nano               | []          [] []    []    [] []          []    |
opcodes            |                                                 |
parted             |                []    []    [] [] []       []    |
pies               |                                                 |
pnmixer            |             []             []                   |
procps-ng          |                                           []    |
procps-ng-man      |                                                 |
psmisc             |             [] []    []    []    []       []    |
psmisc-man         |             []                            []    |
pspp               |                []             []                |
pyspread           |                                                 |
radius             |                      []                         |
recode             | []    []    [] []    []    []                   |
recutils           |                                                 |
rush               |                                                 |
sarg               |                                                 |
savane             |       []                                        |
sed                | []          [] []    []    [] [] []       []    |
sharutils          |                                                 |
shepherd           |                                                 |
shishi             |                                                 |
skribilo           |                []                               |
solfege            | []                         []                   |
solfege-manual     |                                                 |
spotmachine        |                                                 |
sudo               | []          [] []          [] [] []       []    |
sudoers            |             []             [] []          []    |
sysstat            |             []       []    []    []       []    |
tar                |             [] []    []    [] []          []    |
texinfo            |             []       []    []                   |
texinfo_document   |             [] []          []                   |
tigervnc           |       []             []          []       []    |
tin                |                                                 |
tin-man            |                                                 |
trader             |             [] []                               |
util-linux         |             []                []          []    |
util-linux-man     |                                                 |
ve                 |                         [] []                   |
vmm                |                                                 |
vorbis-tools       |             []       []          []             |
wastesedge         |                            []                   |
wcd                |                                                 |
wcd-man            |                                                 |
wdiff              | []             []          []                   |
wget               |             [] []    []    [] []          []    |
wget2              |             []                []                |
wyslij-po          | []          [] []    []                         |
xboard             |                                                 |
xdg-user-dirs      | [] [] [] [] [] []    [] [] [] [] [] [] [] [] [] |
xkeyboard-config   | []    []    [] []    []    []    []       []    |
xz                 |             [] []          []             []    |
xz-man             |                                           []    |
                   +-------------------------------------------------+
                     gl gu he hi hr hu hy id is it ja ka kk kn ko ku
                     30  1  8  1 59 62  2 57  7 67 48 39  2  1 43  3

                     ky lg lt lv mk ml mn mr ms mt nb ne nl nn or pa
                   +-------------------------------------------------+
a2ps               |                         []    []    []          |
anubis             |                         []    []    []          |
aspell             |                   []                []          |
bash               |                               []    []          |
beebase            |                                     []          |
bfd                |                                                 |
binutils           |                                                 |
bison              |                         []                      |
bison-runtime      | []    [] []             []    []    []          |
buzztrax           |                                                 |
ccd2cue            |                                                 |
ccide              |          []                         []          |
cflow              |                                                 |
clisp              |                                     []          |
coreutils          |                               []    []          |
cpio               |                                     []          |
cppi               |                                                 |
cpplib             |                                     []          |
cryptsetup         |                                                 |
datamash           |                               []    []          |
denemo             |                                     []          |
dfarc              |             []                      []          |
dialog             |       [] []             []    []    []          |
dico               |                                                 |
diffutils          |          []             []    []    []          |
dink               |                                     []          |
direvent           |                                     []          |
doodle             |                                     []          |
dos2unix           |                               []    []          |
dos2unix-man       |                                     []          |
e2fsprogs          |                                     []          |
enscript           |                                     []          |
exif               |          []             []          []          |
fetchmail          |                                     []          |
findutils          |                               []    []          |
flex               |                                     []          |
freedink           |                               []    []          |
fusionforge        |                                                 |
gas                |                                                 |
gawk               |                                     []          |
gcal               |                                                 |
gcc                |                                                 |
gdbm               |                                                 |
gettext-examples   | []       []             [] [] []    [] []       |
gettext-runtime    |                               []    [] []       |
gettext-tools      |                                                 |
gnubik             |                               []    []          |
gnuchess           |                               []    []          |
gnucobol           |                                                 |
gnulib             |                                     []          |
gnunet             |                                                 |
gnunet-gtk         |                                                 |
gnutls             |                         []          []          |
gold               |                                                 |
gphoto2            |                                     []          |
gprof              |                         []          []          |
grep               |                               []    []          |
grip               |                               []    []          |
grub               |       []                      []    []          |
gsasl              |                                     []          |
gss                |                                                 |
gst-plugins-bad    |          []                   []    []          |
gst-plugins-base   |          []                   []    []          |
gst-plugins-good   |          []                   []    []          |
gst-plugins-ugly   |          []             [] [] []    []          |
gstreamer          |       []                      []    []          |
gtick              |                               []    []          |
gtkam              |                               []    []       [] |
gtkspell           | []    [] []       []    []    []    []          |
gutenprint         |                                     []          |
hello              |                               []    []          |
help2man           |                               []                |
help2man-texi      |                                                 |
idutils            |                               []    []          |
kbd                |                                                 |
klavaro            |                               []    []       [] |
ld                 |                                                 |
libc               |                                     []          |
libexif            |                                     []          |
libextractor       |                                     []          |
libgphoto2         |                                     []          |
libgphoto2_port    |                                     []          |
libiconv           |       []                            []          |
libidn             |                                     []          |
libidn2            |                                     []          |
lilypond           |                                     []          |
lordsawar          |                                                 |
lynx               |                                     []          |
m4                 |                                     []          |
mailfromd          |                                                 |
mailutils          |                                                 |
make               |                                     []          |
man-db             |                                     []          |
man-db-manpages    |                                                 |
meritous           |                                                 |
midi-instruments   |       []          []    []       [] []          |
minicom            |                               []                |
mpop               |                                                 |
msmtp              |                                                 |
nano               |                         []    []    []          |
opcodes            |                                                 |
parted             |                                     []          |
pies               |                                                 |
pnmixer            |                                     []          |
procps-ng          |                                                 |
procps-ng-man      |                                                 |
psmisc             |                                     []          |
psmisc-man         |                                                 |
pspp               |                                     []          |
pyspread           |                                        []       |
radius             |                                     []          |
recode             |                               []    []          |
recutils           |                                     []          |
rush               |                                     []          |
sarg               |                                                 |
savane             |                                                 |
sed                |                               []    []          |
sharutils          |                                     []          |
shepherd           |                                                 |
shishi             |                                                 |
skribilo           |                                                 |
solfege            |                               []    []          |
solfege-manual     |                                     []          |
spotmachine        |                                     []          |
sudo               |                               []    []          |
sudoers            |                               []                |
sysstat            |                               []    []          |
tar                | []                            []    []          |
texinfo            |                               []    []          |
texinfo_document   |                                     []          |
tigervnc           |                                                 |
tin                |                                                 |
tin-man            |                                                 |
trader             |                               []                |
util-linux         |                                     []          |
util-linux-man     |                                                 |
ve                 |                                     []          |
vmm                |                                                 |
vorbis-tools       |                                     []          |
wastesedge         |                                     []          |
wcd                |                                     []          |
wcd-man            |                                     []          |
wdiff              |                         []    []    []          |
wget               |                               []    []          |
wget2              |                                                 |
wyslij-po          |                                     [] []       |
xboard             |                                     []          |
xdg-user-dirs      | [] [] [] [] [] []    []       []    [] [] [] [] |
xkeyboard-config   |       []                            []          |
xz                 |                                                 |
xz-man             |                                                 |
                   +-------------------------------------------------+
                     ky lg lt lv mk ml mn mr ms mt nb ne nl nn or pa
                      5  1  9 12  2  1  3  1 15  2 44  1 98  5  1  3

                     pl pt pt_BR ro  ru rw sk sl sq sr  sv  sw ta te
                   +-------------------------------------------------+
a2ps               | []          []  []             []  []           |
anubis             | [] []       []  []             []  []           |
aspell             | [] []  []   []  []    [] [] [] []  []           |
bash               | [] []  []   []                 []  []           |
beebase            |                                []               |
bfd                |    []       []  []             []               |
binutils           |    []       []  []             []  []           |
bison              | [] []  []                      []  []           |
bison-runtime      | [] []  []   []  []       [] [] []  []     []    |
buzztrax           |        []                      []  []           |
ccd2cue            |        []   []                 []  []           |
ccide              | []          []  []             []  []           |
cflow              | []     []   []                 []  []           |
clisp              |                 []             []  []           |
coreutils          | [] []  []   []  []       []    []  []           |
cpio               | [] []  []   []  []             []  []           |
cppi               | []     []   []                 []  []           |
cpplib             |        []   []  []             []  []           |
cryptsetup         | []     []   []  []             []  []           |
datamash           |        []   []                 []  []           |
denemo             |                                                 |
dfarc              | []     []   []                 []  []           |
dialog             | [] []  []   []  []    [] [] [] []  []  []       |
dico               | []     []                      []  []           |
diffutils          | [] []  []   []  []             []  []           |
dink               |                                    []           |
direvent           | []     []   []                 []  []           |
doodle             |        []   []              [] []  []           |
dos2unix           | []     []   []  []             []  []           |
dos2unix-man       | []     []   []                 []  []           |
e2fsprogs          | [] []                          []  []           |
enscript           | []     []   []  []       []    []  []           |
exif               | [] []  []   []  []    []       []  []           |
fetchmail          | []          []  []          [] []  []           |
findutils          | [] []  []   []  []       []    []  []           |
flex               | [] []  []   []  []             []  []           |
freedink           | []     []   []  []       []    []  []           |
fusionforge        |                                                 |
gas                |                 []                 []           |
gawk               | [] []  []   []                 []  []           |
gcal               |                                []  []           |
gcc                |                 []                 []           |
gdbm               | []     []   []  []             []  []           |
gettext-examples   | [] []  []   []  []    [] [] [] []  []     []    |
gettext-runtime    | [] []  []   []  []    [] []    []  []           |
gettext-tools      | [] []  []   []  []    [] []    []  []           |
gnubik             | []     []   []           []    []  []           |
gnuchess           |        []   []                 []  []           |
gnucobol           |                                []               |
gnulib             | [] []  []   []  []       []    []  []           |
gnunet             |                                []               |
gnunet-gtk         |                                []               |
gnutls             | []     []   []                 []  []           |
gold               |             []                 []               |
gphoto2            | []     []   []  []             []  []           |
gprof              |        []   []  []             []  []           |
grep               | [] []  []   []  []    [] []    []  []     []    |
grip               | []     []   []  []             []               |
grub               | [] []  []   []  []       []    []  []           |
gsasl              | []     []   []        []       []  []           |
gss                | []     []   []        []       []  []           |
gst-plugins-bad    | []     []   []  []    []       []  []           |
gst-plugins-base   | []     []   []  []    [] []    []  []           |
gst-plugins-good   | []     []   []  []    [] []    []  []           |
gst-plugins-ugly   | []     []   []  []    [] [] [] []  []     []    |
gstreamer          | []     []   []  []    [] []    []  []           |
gtick              | []     []   []  []    []       []  []           |
gtkam              | []     []   []  []    []       []  []           |
gtkspell           | [] []  []   []  []    [] [] [] []  []     []    |
gutenprint         |                 []    [] []        []           |
hello              | []          []  []    []       []  []     []    |
help2man           | []     []   []  []             []  []           |
help2man-texi      | []     []   []                 []  []           |
idutils            | []     []   []  []             []  []           |
kbd                | [] []  []   []  []             []  []           |
klavaro            | [] []  []   []  []       []    []  []           |
ld                 |        []       []             []               |
libc               | [] []  []   []  []    []       []  []           |
libexif            | []                    []       []  []           |
libextractor       | []     []   []                 []               |
libgphoto2         | []                                 []           |
libgphoto2_port    | []     []   []  []    []       []  []           |
libiconv           | []     []   []  []    [] []    []  []           |
libidn             | []     []   []                 []  []           |
libidn2            | []     []   []  []             []  []           |
lilypond           |                                    []           |
lordsawar          |                 []                 []           |
lynx               |        []       []                 []           |
m4                 |        []   []                 []  []           |
mailfromd          | []     []                      []               |
mailutils          | []     []   []                 []               |
make               | [] []  []   []  []             []  []           |
man-db             | [] []  []   []  []             []  []           |
man-db-manpages    | [] []  []   []  []             []  []           |
meritous           |        []                      []  []           |
midi-instruments   | [] []  []   []  []    [] []    []  []           |
minicom            | []     []   []  []             []  []           |
mpop               |        []       []             []  []           |
msmtp              |        []       []             []  []           |
nano               | [] []  []   []  []    []    [] []  []           |
opcodes            |        []   []                 []  []           |
parted             | []     []   []  []    [] []    []  []           |
pies               | []     []                      []               |
pnmixer            |        []   []  ()             []  []           |
procps-ng          | []     []   []                     []           |
procps-ng-man      |             []                     []           |
psmisc             | [] []  []   []  []             []  []           |
psmisc-man         |        []   []  []             []  []           |
pspp               |                 []                              |
pyspread           |        []                      []               |
radius             | []              []             []               |
recode             | [] []  []   []  []    [] []    []  []           |
recutils           |        []                      []  []           |
rush               | []     []                      []  []           |
sarg               |        []       []             []               |
savane             |        []       ()                              |
sed                | [] []  []   []  []    [] []    []  []           |
sharutils          | []     []   []                 []  []           |
shepherd           |             []                 []  []           |
shishi             | []                             []  []           |
skribilo           |        []                      []  []           |
solfege            | []     []       []    []           []           |
solfege-manual     | []     []                                       |
spotmachine        |        []   []                 []  []           |
sudo               | [] []  []   []  []             []  []           |
sudoers            | [] []  []   []  []             []  []           |
sysstat            | [] []  []   []  []    []       []  []           |
tar                | [] []  []   []  []       []    []  []           |
texinfo            | [] []  []   []  []    []       []  []           |
texinfo_document   | [] []  []   []        []       []  []           |
tigervnc           |             []  []             []  []           |
tin                |                 []                              |
tin-man            |                                                 |
trader             |        []       []             []  []           |
util-linux         | [] []  []                      []  []           |
util-linux-man     |                                []               |
ve                 | []     []   []                 []  []           |
vmm                |                                []               |
vorbis-tools       | []          []           []    []  []           |
wastesedge         |        []                          []           |
wcd                |        []   []                 []  []           |
wcd-man            |        []   []                 []  []           |
wdiff              | []     []   []  []       []    []  []           |
wget               | [] []  []   []  []    []       []  []           |
wget2              | []          []  []             []  []           |
wyslij-po          | []     []   []                 []  []           |
xboard             | []              []             []  []           |
xdg-user-dirs      | [] []  []   []  []    [] [] [] []  []     [] [] |
xkeyboard-config   | [] []  []   []  []          [] []  []           |
xz                 | [] []  []   []                 []  []           |
xz-man             |        []   []                                  |
                   +-------------------------------------------------+
                     pl pt pt_BR ro  ru rw sk sl sq sr  sv  sw ta te
                     99 45  113  105 87  0 34 30 11 131 126  1  7  1

                     tg th tr uk  ur vi wa wo zh_CN zh_HK zh_TW
                   +--------------------------------------------+
a2ps               |          []                                | 15
anubis             |       [] []     []                         | 21
aspell             |          []     [] []     []               | 32
bash               |       [] []     []        []          []   | 26
beebase            |          []                                |  6
bfd                |          []                                |  6
binutils           |          []                                |  7
bison              |          []                           []   | 17
bison-runtime      |    [] [] []     []        []          []   | 41
buzztrax           |                 []        []               | 11
ccd2cue            |    []    []     []        []               | 14
ccide              |          []     []        []               | 20
cflow              |          []                                |  9
clisp              |                                            | 12
coreutils          |       [] []     []        []          []   | 27
cpio               |       [] []     []        []               | 24
cppi               |          []     []        []               | 20
cpplib             |       [] []     []        []          []   | 20
cryptsetup         |          []                                | 14
datamash           |          []                                | 12
denemo             |                           []    []    []   |  7
dfarc              |                 []                         | 19
dialog             |    [] [] []     [] []     []          []   | 48
dico               |          []                                | 10
diffutils          |       [] []     []        []          []   | 32
dink               |       []                                   | 11
direvent           |          []     []                         | 14
doodle             |          []     []        []               | 18
dos2unix           |          []     []        []          []   | 23
dos2unix-man       |          []               []               | 12
e2fsprogs          |          []     []        []               | 15
enscript           |       [] []     []                         | 22
exif               |       [] []     []        []               | 33
fetchmail          |       []        []        []               | 21
findutils          |       [] []     []        []               | 31
flex               |       [] []     []        []          []   | 22
freedink           |    []           []                         | 26
fusionforge        |                                            |  3
gas                |          []                                |  7
gawk               |       []        []        []               | 18
gcal               |       []                  []               |  9
gcc                |                                            |  4
gdbm               |          []     []                         | 13
gettext-examples   |       [] []     []        []    []    []   | 44
gettext-runtime    |       [] []     []        []          []   | 34
gettext-tools      |       [] []     []        []          []   | 26
gnubik             |          []     []        []               | 22
gnuchess           |          []     []        []               | 15
gnucobol           |                                            |  2
gnulib             |          []     []        []          []   | 26
gnunet             |                                            |  2
gnunet-gtk         |                                            |  3
gnutls             |          []     []        []               | 18
gold               |          []                                |  6
gphoto2            |          []     []        []          []   | 20
gprof              |       [] []     []                         | 22
grep               |    [] [] []     []        []          []   | 38
grip               |          []     []        []    []    []   | 25
grub               |       [] []     []        []               | 28
gsasl              |          []     []        []               | 21
gss                |                 []        []               | 20
gst-plugins-bad    |       [] []     []        []          []   | 29
gst-plugins-base   |       [] []     []        []               | 32
gst-plugins-good   |       [] []     []        []          []   | 34
gst-plugins-ugly   |       [] []     []        []          []   | 40
gstreamer          |       [] []     []        []          []   | 34
gtick              |          []     []        []               | 23
gtkam              |          []     []        []               | 26
gtkspell           |    [] [] []     [] []     []    []    []   | 51
gutenprint         |       [] []               []               | 18
hello              |          []               []               | 18
help2man           |          []     []        []               | 21
help2man-texi      |          []                                |  9
idutils            |          []     []        []               | 21
kbd                |          []               []               | 15
klavaro            |       [] []  [] []    []  []               | 35
ld                 |          []                                |  6
libc               |       [] []     []        []          []   | 28
libexif            |          []     []                         | 12
libextractor       |          []     []                         | 11
libgphoto2         |          []     []                         |  9
libgphoto2_port    |          []     []        []          []   | 22
libiconv           |          []     [] []     []          []   | 34
libidn             |          []     []        []               | 21
libidn2            |          []               []               | 20
lilypond           |                           []               | 12
lordsawar          |       []                                   |  8
lynx               |       [] []     []                         | 19
m4                 |          []               []               | 13
mailfromd          |          []     []                         |  7
mailutils          |          []     []                         | 10
make               |          []     []        []          []   | 25
man-db             |       []        []        []          []   | 23
man-db-manpages    |       []                  []               | 14
meritous           |                                            |  5
midi-instruments   |    [] [] []     []        []          []   | 44
minicom            |                 []                    []   | 20
mpop               |          []                                |  9
msmtp              |          []                                |  8
nano               |       [] []     []        []          []   | 33
opcodes            |          []                                |  8
parted             |       [] []     []        []          []   | 26
pies               |          []     []                         |  8
pnmixer            |          []     []        ()               | 14
procps-ng          |          []     []                         | 10
procps-ng-man      |          []                                |  4
psmisc             |          []     []        []          []   | 26
psmisc-man         |          []                                | 10
pspp               |          []               []               | 12
pyspread           |          []                                |  7
radius             |          []     []                         | 10
recode             |       [] []     []        []               | 31
recutils           |          []     []                         |  9
rush               |          []     []        []               | 12
sarg               |                                            |  7
savane             |                                            |  4
sed                |       [] []     []        []          []   | 38
sharutils          |          []     []        []               | 14
shepherd           |          []                                |  5
shishi             |                 []        []               |  8
skribilo           |          []                                | 10
solfege            |       []        []        []               | 22
solfege-manual     |       []                                   | 10
spotmachine        |          []     []                         | 12
sudo               |       [] []     []        []          []   | 31
sudoers            |          []               []          []   | 21
sysstat            |       [] []     []        []               | 26
tar                |       [] []     []        []          []   | 33
texinfo            |       [] []     []                         | 23
texinfo_document   |          []                                | 19
tigervnc           |          []                           []   | 17
tin                |       []                  []          []   |  8
tin-man            |                                            |  2
trader             |                                            | 13
util-linux         |       [] []     []        []               | 18
util-linux-man     |          []                                |  4
ve                 |          []     []        []               | 17
vmm                |          []                                |  2
vorbis-tools       |                 []                         | 16
wastesedge         |       []                                   |  7
wcd                |          []     []        []               | 15
wcd-man            |          []                                |  8
wdiff              |          []     []        []          []   | 27
wget               |       [] []     []        []          []   | 30
wget2              |          []                                | 11
wyslij-po          |          []     []        []               | 20
xboard             |       [] []               []               | 12
xdg-user-dirs      |    [] [] []     [] []     []    []    []   | 72
xkeyboard-config   |       [] []               []               | 32
xz                 |       [] []     []        []          []   | 22
xz-man             |          []                                |  6
                   +--------------------------------------------+
  85 teams           tg th tr uk  ur vi wa wo zh_CN zh_HK zh_TW
 151 domains          0  8 54 120  1 93  5  1  87     5    42    2792

Some counters in the preceding matrix are higher than the number of visible blocks let us expect. This is because a few extra PO files are used for implementing regional variants of languages, or language dialects.

For a PO file in the matrix above to be effective, the package to which it applies should also have been internationalized and distributed as such by its maintainer. There might be an observable lag between the mere existence a PO file and its wide availability in a distribution.

If June 2023 seems to be old, you may fetch a more recent copy of this ‘ABOUT-NLS’ file on most GNU archive sites. The most up-to-date matrix with full percentage details can be found at ‘https://translationproject.org/extra/matrix.html’.

17.2.5 Using gettext in new packages

If you are writing a freely available program and want to internationalize it you are welcome to use GNU ‘gettext’ in your package. Of course you have to respect the GNU Lesser General Public License which covers the use of the GNU ‘gettext’ library. This means in particular that even non-free programs can use libintl as a shared library, whereas only free software can use libintl as a static library or use modified versions of libintl.

Once the sources are changed appropriately and the setup can handle the use of gettext the only thing missing are the translations. The Free Translation Project is also available for packages which are not developed inside the GNU project. Therefore the information given above applies also for every other Free Software Project. Contact ‘coordinator@translationproject.org’ to make the ‘.pot’ files available to the translation teams.

17.3 Related Readings

NOTE: This documentation section is outdated and needs to be revised.

Eugene H. Dorr (‘dorre@well.com’) maintains an interesting bibliography on internationalization matters, called Internationalization Reference List, which is available as:

 
ftp://ftp.ora.com/pub/examples/nutshell/ujip/doc/i18n-books.txt

Michael Gschwind (‘mike@vlsivie.tuwien.ac.at’) maintains a Frequently Asked Questions (FAQ) list, entitled Programming for Internationalisation. This FAQ discusses writing programs which can handle different language conventions, character sets, etc.; and is applicable to all character set encodings, with particular emphasis on ISO 8859-1. It is regularly published in Usenet groups ‘comp.unix.questions’, ‘comp.std.internat’, ‘comp.software.international’, ‘comp.lang.c’, ‘comp.windows.x’, ‘comp.std.c’, ‘comp.answers’ and ‘news.answers’. The home location of this document is:

 
ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/ISO-programming

Patrick D'Cruze (‘pdcruze@li.org’) wrote a tutorial about NLS matters, and Jochen Hein (‘Hein@student.tu-clausthal.de’) took over the responsibility of maintaining it. It may be found as:

 
ftp://sunsite.unc.edu/pub/Linux/utils/nls/catalogs/Incoming/...
     ...locale-tutorial-0.8.txt.gz

This site is mirrored in:

 
ftp://ftp.ibp.fr/pub/linux/sunsite/

A French version of the same tutorial should be findable at:

 
ftp://ftp.ibp.fr/pub/linux/french/docs/

together with French translations of many Linux-related documents.

[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Bruno Haible on September, 19 2023 using texi2html 1.78a.