[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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.
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
#ifdef
s 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.
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.
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.
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.
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.
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’.
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.
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 February, 21 2024 using texi2html 1.78a.