Notes on the Free Translation Project
*************************************

   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 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 at translations should contact the appropriate team.

   When reporting bugs in the `intl/' directory or bugs which may be
related to internationalization, you should tell about the version of
`gettext' which is used.  The information can be found in the
`intl/VERSION' file, in internationalized packages.

Quick configuration advice
==========================

   If you want to exploit the full power of internationalization, you
should configure it using

     ./configure --with-included-gettext

to force usage of internationalizing routines provided within this
package, despite the existence of internationalizing capabilities in the
operating system where this package is being installed.  So far, only
the `gettext' implementation in the GNU C library version 2 provides as
many features (such as locale alias, message inheritance, automatic
charset conversion or plural form handling) as the implementation here.
It is also not possible to offer this additional functionality on top
of a `catgets' implementation.  Future versions of GNU `gettext' will
very likely convey even more functionality.  So it might be a good idea
to change to GNU `gettext' as soon as possible.

   So you need _not_ provide this option if you are using GNU libc 2 or
you have installed a recent copy of the GNU gettext package with the
included `libintl'.

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.  If not, the GNU `gettext' own
library will be used.  This library is wholly contained within this
package, usually in the `intl/' subdirectory, so prior installation of
the GNU `gettext' package is _not_ required.  Installers may use
special options at configuration time for changing the default
behaviour.  The commands:

     ./configure --with-included-gettext
     ./configure --disable-nls

will respectively bypass any pre-existing `gettext' to use the
internationalizing routines provided within this package, or else,
_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.a' file and
will decide to use this.  This might be not what is desirable.  You
should use the more recent version of the GNU `gettext' library.  I.e.
if the file `intl/VERSION' shows that the library which comes with this
package is more recent, you should use

     ./configure --with-included-gettext

to prevent auto-detection.

   The configuration process will not test for the `catgets' function
and therefore it will not be used.  The reason is that even an
emulation of `gettext' on top of `catgets' could not provide all the
extensions of the GNU `gettext' library.

   Internationalized packages have usually 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.

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.  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 country 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'.

   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.

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,
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National 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 `translation@iro.umontreal.ca' 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 skill are praised more than
programming skill, here.

Available Packages
==================

   Languages are not equally supported in all packages.  The following
matrix shows the current state of internationalization, as of May 2003.
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       am az be bg ca cs da de el en en_GB eo es
                        +-------------------------------------------+
     a2ps               |       []          [] [] []                |
     aegis              |                      ()                   |
     anubis             |                                           |
     ap-utils           |                                           |
     bash               |                      []             [] [] |
     batchelor          |                                           |
     bfd                |                   []                   [] |
     binutils           |                   []                   [] |
     bison              |                   [] []                [] |
     bluez-pin          |                []                   []    |
     clisp              |                                           |
     clisp              |                      []    []          [] |
     coreutils          |             []    [] []                [] |
     cpio               |                   [] []                [] |
     darkstat           |                   ()                   [] |
     diffutils          |             [] [] [] [] []          [] [] |
     e2fsprogs          |                []    []                   |
     enscript           |             []    [] []        []         |
     error              |             []    [] []        []      [] |
     fetchmail          |             [] () [] [] []             [] |
     fileutils          |                   [] []                [] |
     findutils          |             []    [] [] []          [] [] |
     flex               |             []    [] []                [] |
     gas                |                                        [] |
     gawk               |             []    [] []                [] |
     gcal               |             []                            |
     gcc                |                   []                   [] |
     gettext            |       []    []    [] []                [] |
     gettext-runtime    |       []    []    [] []                [] |
     gettext-tools      |                      []                [] |
     gimp-print         |                [] [] []        []      [] |
     gliv               |                                           |
     glunarclock        |    []             [] []                   |
     gnucash            |                      ()        []         |
     gnucash-glossary   |                   [] ()                [] |
     gnupg              |             [] ()    [] []          [] [] |
     gpe-calendar       |                      []                   |
     gpe-conf           |                      []                   |
     gpe-contacts       |                      []                   |
     gpe-edit           |                                           |
     gpe-login          |                      []                   |
     gpe-ownerinfo      |                      []                   |
     gpe-sketchbook     |                      []                   |
     gpe-timesheet      |                                           |
     gpe-today          |                      []                   |
     gpe-todo           |                      []                   |
     gphoto2            |                [] [] []                [] |
     gprof              |                   []                   [] |
     gpsdrive           |                      ()    ()          () |
     grep               |          [] []       [] []             [] |
     gretl              |                                        [] |
     hello              |             []    [] [] []          [] [] |
     id-utils           |                   [] []                   |
     indent             |             []       []             [] [] |
     jpilot             |                [] [] []                [] |
     jwhois             |                                        [] |
     kbd                |                [] [] [] []             [] |
     ld                 |                   []                   [] |
     libc               |             [] [] [] [] []             [] |
     libgpewidget       |                      []                   |
     libiconv           |             []    [] []             [] [] |
     lifelines          |                   [] ()                   |
     lilypond           |                   []                      |
     lingoteach         |                                           |
     lingoteach_lessons |                      ()                () |
     lynx               |             [] [] [] []                   |
     m4                 |                [] [] [] []                |
     mailutils          |             []                         [] |
     make               |                   [] []                [] |
     man-db             |             [] () [] []                () |
     mysecretdiary      |                   [] []                [] |
     nano               |             [] () [] []                [] |
     nano_1_0           |             [] () [] []                [] |
     opcodes            |                   []                   [] |
     parted             |             [] [] [] []                [] |
     ptx                |             []    [] []             [] [] |
     python             |                                           |
     radius             |                                           |
     recode             |       []          [] [] []          [] [] |
     screem             |                                           |
     sed                |             []    [] []             [] [] |
     sh-utils           |                   [] []                [] |
     sharutils          |             [] [] [] [] []             [] |
     sketch             |                   [] ()                [] |
     soundtracker       |                   [] []                [] |
     sp                 |                      []                   |
     tar                |                [] [] []                [] |
     texinfo            |                [] [] []             []    |
     textutils          |             []    [] []                [] |
     tin                |                      ()        ()         |
     util-linux         |             [] [] [] []                [] |
     vorbis-tools       |                [] []                   [] |
     wastesedge         |                      ()                   |
     wdiff              |             []    [] []                [] |
     wget               |          [] [] [] [] [] []             [] |
     xchat              |             []          []             [] |
     xpad               |                                           |
                        +-------------------------------------------+
                          am az be bg ca cs da de el en en_GB eo es
                           0  1  4  2 31 17 54 60 14  1   4   12 56
     
                          et fa fi fr ga gl he hr hu id it ja ko
                        +----------------------------------------+
     a2ps               | []    [] []                   ()    () |
     aegis              |                                        |
     anubis             |          []                            |
     ap-utils           |          []                            |
     bash               |          []             []             |
     batchelor          |             []                         |
     bfd                |          []                      []    |
     binutils           |          []                      []    |
     bison              | []       []                [] []       |
     bluez-pin          |          [] []          [] []          |
     clisp              |                                        |
     clisp              |          []                            |
     coreutils          | []       []                   [] []    |
     cpio               |          []    []       []          [] |
     darkstat           |          () []          [] []          |
     diffutils          |       [] []    [] []    [] []    []    |
     e2fsprogs          |                                        |
     enscript           |          []          []                |
     error              |       [] [] []          []             |
     fetchmail          |                                  []    |
     fileutils          | []       []             []    [] []    |
     findutils          | []    [] [] [] []    [] [] [] [] [] [] |
     flex               |          []                         [] |
     gas                |          []                            |
     gawk               |          []       []                   |
     gcal               |          []                            |
     gcc                |          []                            |
     gettext            |          []                      [] [] |
     gettext-runtime    |          []                []    [] [] |
     gettext-tools      |                                  []    |
     gimp-print         |          []                      []    |
     gliv               |          ()                            |
     glunarclock        |             [] []       []       []    |
     gnucash            |                               []       |
     gnucash-glossary   |                               []       |
     gnupg              | []    [] []    []          [] [] []    |
     gpe-calendar       |                            []          |
     gpe-conf           |                                        |
     gpe-contacts       |          []                            |
     gpe-edit           |          []                []          |
     gpe-login          |          []                            |
     gpe-ownerinfo      |          []             [] []          |
     gpe-sketchbook     |          []                            |
     gpe-timesheet      |          [] []             []          |
     gpe-today          |          [] []                         |
     gpe-todo           |          []                []          |
     gphoto2            |          []             []       []    |
     gprof              |          []                []          |
     gpsdrive           |          ()             []    () ()    |
     grep               | []    [] [] [] [] [] [] [] [] [] []    |
     gretl              |          []                            |
     hello              | [] [] [] [] [] [] [] [] [] [] [] [] [] |
     id-utils           |          []             [] []          |
     indent             | []    [] []    []       [] [] [] []    |
     jpilot             |          []                      ()    |
     jwhois             |          []             [] [] []       |
     kbd                |          []                            |
     ld                 |          []                            |
     libc               |       [] []    []       []       [] [] |
     libgpewidget       |          [] []             []          |
     libiconv           |       [] [] [] []    [] [] [] []       |
     lifelines          |          ()                            |
     lilypond           |          []                            |
     lingoteach         |          []                []          |
     lingoteach_lessons |                                        |
     lynx               | []                      []    [] []    |
     m4                 |          []    []          []    []    |
     mailutils          |                                        |
     make               |          []    [] [] []          [] [] |
     man-db             |          []                   () ()    |
     mysecretdiary      |          []                []          |
     nano               |          []    []          [] []       |
     nano_1_0           |          []    []          [] []       |
     opcodes            |          []                []          |
     parted             |          []    []                []    |
     ptx                | []    [] [] [] []       [] []          |
     python             |                                        |
     radius             |                                        |
     recode             |          []    [] []    [] [] []       |
     screem             |                                        |
     sed                | []       [] [] []       [] [] [] []    |
     sh-utils           | []    [] []             []    [] []    |
     sharutils          | []       []    []       []       []    |
     sketch             |          []                            |
     soundtracker       |          []    []    []                |
     sp                 |          []                      ()    |
     tar                | []    [] []    []    [] [] [] [] []    |
     texinfo            |          []       [] []          []    |
     textutils          |          []    []       []       [] [] |
     tin                | []       ()                            |
     util-linux         | []    [] []             []    () []    |
     vorbis-tools       |          []                            |
     wastesedge         |          ()                            |
     wdiff              | []       []    []       [] []          |
     wget               | []    [] []    [] [] [] []       []    |
     xchat              | []       []                      []    |
     xpad               |                                        |
                        +----------------------------------------+
                          et fa fi fr ga gl he hr hu id it ja ko
                          20  1 15 73 14 24  8 10 30 31 19 31  9
     
                          lg lt lv ms nb nl nn no pl pt pt_BR ro
                        +----------------------------------------+
     a2ps               |          []    []    () () ()  []   [] |
     aegis              |                ()                      |
     anubis             |          []                         [] |
     ap-utils           |                         ()             |
     bash               |                                []      |
     batchelor          |                                        |
     bfd                |                                        |
     binutils           |                                        |
     bison              |          []    []              []   [] |
     bluez-pin          |                                     [] |
     clisp              |                                        |
     clisp              |                []                      |
     coreutils          |                         []             |
     cpio               |                []       []     []      |
     darkstat           |          []    []              []   [] |
     diffutils          |          []             []     []      |
     e2fsprogs          |                                        |
     enscript           |                []              []      |
     error              |                []              []      |
     fetchmail          |                         ()     ()      |
     fileutils          |                         []             |
     findutils          |                []       []     []   [] |
     flex               |                                []      |
     gas                |                                        |
     gawk               |                                []      |
     gcal               |                                        |
     gcc                |                                        |
     gettext            |                         []             |
     gettext-runtime    |                         []             |
     gettext-tools      |                                        |
     gimp-print         |                []                      |
     gliv               |                                []      |
     glunarclock        |          []                            |
     gnucash            |                                        |
     gnucash-glossary   |                []          []          |
     gnupg              |                                        |
     gpe-calendar       |                            []       [] |
     gpe-conf           |                            []       [] |
     gpe-contacts       |                            []          |
     gpe-edit           |                            []       [] |
     gpe-login          |                            []       [] |
     gpe-ownerinfo      |                            []       [] |
     gpe-sketchbook     |                            []       [] |
     gpe-timesheet      |                            []       [] |
     gpe-today          |                            []       [] |
     gpe-todo           |                            []       [] |
     gphoto2            |                                        |
     gprof              |                                []      |
     gpsdrive           |                ()    ()        ()      |
     grep               |                         [] []  []   [] |
     gretl              |                                        |
     hello              |       [] [] [] [] [] [] []     []   [] |
     id-utils           |                []              []   [] |
     indent             |                []              []   [] |
     jpilot             |                ()    ()                |
     jwhois             |                []              []   [] |
     kbd                |                                        |
     ld                 |                                        |
     libc               |             []       [] []     []      |
     libgpewidget       |                            []       [] |
     libiconv           |                                []   [] |
     lifelines          |                                        |
     lilypond           |                []                      |
     lingoteach         |                                        |
     lingoteach_lessons |                                        |
     lynx               |                []              []      |
     m4                 |                []       []     []   [] |
     mailutils          |                                        |
     make               |                []              []      |
     man-db             |                                []      |
     mysecretdiary      |                                []      |
     nano               |          []    []       []          [] |
     nano_1_0           |          [] []    []    []             |
     opcodes            |                []              []   [] |
     parted             |                   []       []  []      |
     ptx                |             [] []    [] [] []  []   [] |
     python             |                                        |
     radius             |                                        |
     recode             |                         []     []   [] |
     screem             |                                        |
     sed                |                                []   [] |
     sh-utils           |             []                         |
     sharutils          |                []                      |
     sketch             |                                []      |
     soundtracker       |                                        |
     sp                 |                                        |
     tar                |          [] []       [] []     []   [] |
     texinfo            |                                     [] |
     textutils          |             []                         |
     tin                |                                        |
     util-linux         |                []              []      |
     vorbis-tools       |                []                   [] |
     wastesedge         |                                        |
     wdiff              |          []             []     []   [] |
     wget               |                []       []          [] |
     xchat              |       []       []                      |
     xpad               |                                     [] |
                        +----------------------------------------+
                          lg lt lv ms nb nl nn no pl pt pt_BR ro
                           0  0  2 11  7 26  3  4 18 15  34   34
     
                          ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
                        +-------------------------------------------+
     a2ps               | []    []    []    [] []                   | 16
     aegis              | ()                                        |  0
     anubis             |                   [] []                   |  5
     ap-utils           |                      ()                   |  1
     bash               | []                                        |  7
     batchelor          |                                           |  1
     bfd                |             []    []           []         |  7
     binutils           |             []    []           []         |  7
     bison              | []          []                            | 13
     bluez-pin          |                                           |  7
     clisp              |                                           |  0
     clisp              |                                           |  5
     coreutils          | []    []    []    []                 []   | 14
     cpio               | []          []                 []         | 13
     darkstat           |             []                 ()    ()   |  9
     diffutils          | []          []    []                 []   | 21
     e2fsprogs          |                   []                      |  3
     enscript           | []          []    []                      | 11
     error              |    []             []                 []   | 14
     fetchmail          |                   []                      |  7
     fileutils          | []    []    []    []           []    []   | 15
     findutils          | [] [] []    []    []           []         | 27
     flex               | []          []    []                      | 10
     gas                |                   []                      |  3
     gawk               |             []    []                      |  9
     gcal               |             []    []                      |  4
     gcc                |                   []                      |  4
     gettext            | [] [] []    []    []                 []   | 15
     gettext-runtime    | [] [] []    []    []                 []   | 16
     gettext-tools      |    [] []                                  |  5
     gimp-print         |    []       []                            | 10
     gliv               |                                           |  1
     glunarclock        | []          []             []             | 11
     gnucash            |    []                                []   |  4
     gnucash-glossary   |    []       []                       []   |  8
     gnupg              |    []       []    []                 []   | 16
     gpe-calendar       |                                      []   |  5
     gpe-conf           |                                           |  3
     gpe-contacts       |                                      []   |  4
     gpe-edit           |                                      []   |  5
     gpe-login          |                                      []   |  5
     gpe-ownerinfo      |                                      []   |  7
     gpe-sketchbook     |                                      []   |  5
     gpe-timesheet      |                                      []   |  6
     gpe-today          |                                      []   |  6
     gpe-todo           |                                      []   |  6
     gphoto2            |             []                 []         |  9
     gprof              |             []    []                      |  7
     gpsdrive           |    []       []                            |  3
     grep               | []    []          [] []                   | 24
     gretl              |                                           |  2
     hello              | [] []       []    [] []                   | 33
     id-utils           | []          []    []                      | 11
     indent             | [] []       []    []                      | 19
     jpilot             |             []    []    []     []    []   | 10
     jwhois             | ()          ()    []                 []   | 10
     kbd                |             []    []                      |  8
     ld                 |             []    []                      |  5
     libc               |    []       []    []           []         | 20
     libgpewidget       |                                           |  6
     libiconv           | [] [] []    []    [] []                   | 21
     lifelines          |             []                            |  2
     lilypond           |             []                            |  4
     lingoteach         |                                           |  2
     lingoteach_lessons |                                ()         |  0
     lynx               | []          []    [] []                   | 14
     m4                 | []          []                 []         | 15
     mailutils          |                                           |  2
     make               | []          []    []           []         | 15
     man-db             |             []                            |  6
     mysecretdiary      |             []    []                      |  8
     nano               | []          []       []                   | 15
     nano_1_0           | []          []       []                   | 15
     opcodes            |             []    []                      |  9
     parted             |             []    []                      | 13
     ptx                | []          []    []                      | 22
     python             |                                           |  0
     radius             |                                           |  0
     recode             | []    []    []    []                      | 19
     screem             |             []                            |  1
     sed                |    [] []    []    [] []                   | 20
     sh-utils           | []    []          []                      | 13
     sharutils          | []          []    []                 []   | 16
     sketch             |             []                            |  5
     soundtracker       |             []                            |  7
     sp                 |                   []                      |  3
     tar                |    [] []    []    []           []         | 24
     texinfo            | []          []    []           []         | 13
     textutils          | []    []    []    []                 []   | 15
     tin                |                                           |  1
     util-linux         |             []    []                      | 14
     vorbis-tools       | []                                        |  7
     wastesedge         |                                           |  0
     wdiff              | [] []       []    []                      | 17
     wget               | [] [] []    []    [] []              []   | 25
     xchat              |    [] []    []                            | 11
     xpad               |                                           |  1
                        +-------------------------------------------+
       50 teams           ru sk sl sr sv ta tr uk vi wa zh_CN zh_TW
       97 domains         32 19 16  0 56  0 48 10  1  1  12    23    913

   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 May 2003 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
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.

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 Library 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
`translation@iro.umontreal.ca' to make the `.pot' files available to
the translation teams.

