* cardglue.c (card_close): New.
[gnupg.git] / ABOUT-NLS
index f923c84..5fde45a 100644 (file)
--- a/ABOUT-NLS
+++ b/ABOUT-NLS
@@ -1,16 +1,16 @@
-Notes on the GNU Translation Project
-************************************
+Notes on the Free Translation Project
+*************************************
 
-   GNU is going international!  The GNU Translation Project is a way to
-get maintainers, translators and users all together, so GNU will
-gradually become able to speak many native languages.  A few packages
-already provide native language translation for their messages.
+   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 GNU 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.
+   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
@@ -22,182 +22,303 @@ 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.
 
-One advise in advance
-=====================
+Quick configuration advice
+==========================
 
-   If you want to exploit the full power of the GNU `gettext' package
-you should configure it using
+   If you want to exploit the full power of internationalization, you
+should configure it using
 
-             --with-gnu-gettext.
+     ./configure --with-included-gettext
 
-   No existing implementation at this point provides so many useful
-features (such as locale alias or message inheritance).  It is also not
-possible to provide this additional functionality on top of a catgets
-implementation.
+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.
 
-   Future versions of GNU `gettext' will very likely provide 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 GNU packages are "localizable" when properly installed; the
+   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 provides
-usable `catgets' or `gettext' functions.  If neither is available, the
-GNU `gettext' own library will be used.  However, installers may use
-special options at configuration time for changing this behaviour.  The
-commands:
-
-     ./configure --with-gnu-gettext
+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 system `catgets' or `gettext' to use GNU
-`gettext', or else, totally disable translation of messages.
+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
+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-gnu-gettext
+     ./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 are disabled, all those available 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.
+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
-ISO 639 `LL' two-letter code prior to using the programs in the
-package.  For example, let's suppose that you speak German.  At the
-shell prompt, merely execute `setenv LANG de' (in `csh') or
-`export LANG; LANG=de' (in `sh').  This can be done from your `.login'
-or `.profile' file, once and for all.  Packages which are not
-internationalized will merely ignore the setting of this variable.
+`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.
+
+   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
 =================
 
-   The GNU `gettext' tool set contains *everything* maintainers need
-for internationalizing their packages for messages.  It also contains
-quite useful tools for helping translators at localizing messages to
-their native language, once a package has already been
-internationalized.
-
-   To achieve the GNU Translation Project, we need many interested
+   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 translating team has its own mailing list, courtesy of Linux
-International.  You may reach your translating team at the address
-`LL@li.org', replacing LL by the two-letter ISO 639 code for your
-language.  Language codes are *not* the same as country codes given in
-ISO 3166.  The following translating teams exist, as of November 1995:
-
-     Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
-     Esperanto `eo', Finnish `fi', French `fr', Irish `ga', German
-     `de', Greek `el', Italian `it', Japanese `ja', Indonesian `in',
-     Norwegian `no', Persian `fa', Polish `pl', Portuguese `pt',
-     Russian `ru', Spanish `es', Swedish `sv', Telugu `te' and Turkish
-     `tr'.
-
-For example, you may reach the Chinese translating team by writing to
-`zh@li.org'.
-
-   If you'd like to volunteer to *work* at translating messages, you
+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, Swedish people can send a message to
-`sv-request@li.org', having this message body:
+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 should be interested in *working* at
-translations, or at solving translational difficulties, rather than
-merely lurking around.  If your team does not exist yet and you want to
-start one, please write to `gnu-translation@prep.ai.mit.edu'; you will
-then reach the GNU coordinator for all translator teams.
+   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 used in GNU.  Proven linguistic skill are praised more
-than programming skill, here.  For the time being, please avoid
-subscribing to the English team unless explicitely invited to do so.
+the terminology in use.  Proven linguistic skill are praised more than
+programming skill, here.
 
 Available Packages
 ==================
 
-   Languages are not equally supported in all GNU packages.  The
-following matrix shows the current state of GNU internationalization,
-as of November 1995.  Listed are: internationalized packages, and
-languages for which work is in progress, or about to start.
-
-          See note    cs de en fr it ja nl no pt sv
-                \   .-------------------------------.
-     chess      (1) |    X  /                    X  |
-     clisp          |    X  X  X                    |
-     diffutils  (2) |       /  .                    |
-     fileutils      |    .  /                       |
-     flex       (3) |       /  .                    |
-     m4             |    -  /  -  -  .           -  |
-     gettext        |    X  /  X           X     X  |
-     ptx            |    -  /  -                 -  |
-     recode         |    -  /  -        -     -     |
-     sh-utils       |    .  /  .                    |
-     sharutils      |    X  /  X     X  X     X  X  |
-     tar            |    X  /  X           -  X  X  |
-     textutils      |    .  /  .                    |
-     wdiff          | -  -  /  -  -                 |
-                    `-------------------------------'
-                      cs de en fr it ja nl no pt sv
-
-   The interpretation legend and notes are:
-
-`/'
-     There is no PO file, this package merely defaults to this language.
-
-`.'
-     The effort of localizing this package has been undertaken by
-     someone, or by a translating team, and work is, or should be in
-     progress.
-
-`-'
-     A PO file for this package and this language is completed and is
-     currently available in a pretest release, or is all ready for
-     inclusion in the next release of this package.
-
-`X'
-     The localization of this package to this particular language is
-     fully completed, and now distributed through an official release.
-
-(1)
-     This package is translated to specific languages by methods
-     predating GNU `gettext'.  Translations are all kept on disk files,
-     and sources contain numbers where one normally expects strings.
-
-(2)
-     This package is planned to switch to GNU `gettext'.  For the time
-     being, it uses temporary means for internationalization.
-
-(3)
-     This package has its translatable strings marked, but does not use
-     GNU `gettext'.  A convenience patch may be available separately.
-
-   If November 1995 seems to be old, you may fetch a more recent copy
-of this `ABOUT-NLS' file on most GNU archive sites.
+   Languages are not equally supported in all packages.  The following
+matrix shows the current state of internationalization, as of September
+2001.  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    bg cs da de el en eo es et fi fr gl he hr id it ja
+                     +----------------------------------------------------+
+     a2ps            |          []             []    []                   |
+     bash            |          []       [] []       []                   |
+     bfd             |                                                    |
+     binutils        |                               []                   |
+     bison           |          []          [] []    []                [] |
+     clisp           |          []    []    []       []                   |
+     cpio            |       [] []          []       [] []                |
+     diffutils       |       [] []       [] []       [] []       []       |
+     enscript        |          []                   []                   |
+     error           |                      []       []                   |
+     fetchmail       |                                                    |
+     fileutils       |    [] [] [] []       []       [] []             [] |
+     findutils       |       [] []          [] []    [] []       [] []    |
+     flex            |       []             []       []                   |
+     freetype        |                                                    |
+     gas             |                                                    |
+     gawk            |                               []    []             |
+     gcal            |                                                    |
+     gcc             |                                                    |
+     gettext         |    [] [] [] []       []       [] []       [] [] [] |
+     gnupg           |          []       []    []    [] []          [] [] |
+     gprof           |                                                    |
+     grep            |    []    []       [] [] []    [] []          []    |
+     hello           |       [] [] []    [] [] [] [] [] []          [] [] |
+     id-utils        |       [] []                   []                   |
+     indent          |       [] []             []    [] []                |
+     jpilot          |                               []                   |
+     kbd             |                                                    |
+     ld              |                               []                   |
+     libc            |    [] [] [] []       []       [] []             [] |
+     lilypond        |                                                 [] |
+     lynx            |    [] [] []                                     [] |
+     m4              |    [] [] [] []                [] []       []    [] |
+     make            |       [] []          []       [] []             [] |
+     mysecretdiary   |          []                                        |
+     nano            |                      []          []       []       |
+     opcodes         |                                                    |
+     parted          |          []                      []             [] |
+     ptx             |       [] []          [] []    [] []       []       |
+     python          |                                                    |
+     recode          |       [] [] []    [] []       [] [] []       []    |
+     sed             |    [] [] [] []    []    []    [] [] []    [] [] [] |
+     sh-utils        |    [] [] [] []       [] []    [] []          [] [] |
+     sharutils       |    [] [] [] []       []       [] []             [] |
+     sketch          |                                                    |
+     soundtracker    |          []          []          []                |
+     sp              |                                                    |
+     tar             |    [] [] []          [] []    []             [] [] |
+     texinfo         |    [] [] []       []          []                [] |
+     textutils       |    [] [] [] []       []       [] []             [] |
+     util-linux      |    [] []                                           |
+     wdiff           |       [] []             []                         |
+     wget            |    [] [] [] []       [] []    [] [] []          [] |
+                     +----------------------------------------------------+
+                       bg cs da de el en eo es et fi fr gl he hr id it ja
+                        0 14 24 32 11  1  8 23 13  1 33 22  4  0  7  9 18
+     
+                       ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
+                     +----------------------------------------------------+
+     a2ps            |          []                   []    []             |  6
+     bash            |                                                    |  4
+     bfd             |                                                    |  0
+     binutils        |                                                    |  1
+     bison           |                               []                   |  6
+     clisp           |          []                                        |  5
+     cpio            | []       []       []     []   []                   | 10
+     diffutils       |                   []          []       [] []       | 11
+     enscript        |          []              []   []                   |  5
+     error           |                                  []       []       |  4
+     fetchmail       |                                                    |  0
+     fileutils       | []       []       []     []   [] [] [] [] []       | 17
+     findutils       | []       []       []     []   []    [] [] []       | 16
+     flex            | []                            []       []          |  6
+     freetype        |                                                    |  0
+     gas             |                                                    |  0
+     gawk            |                                           []       |  3
+     gcal            |                                                    |  0
+     gcc             |                                                    |  0
+     gettext         | []                []     []   []    [] [] []    [] | 18
+     gnupg           |                   []                   [] []       | 10
+     gprof           |                                                    |  0
+     grep            |                   []                [] [] []       | 12
+     hello           | [] [] [] []    [] []          [] []    [] [] []    | 22
+     id-utils        |          []                   []       []          |  6
+     indent          | []       []       []          [] []    [] []       | 12
+     jpilot          |                                                    |  1
+     kbd             |                                           []       |  1
+     ld              |                                                    |  1
+     libc            | []    []       [] []     []      []    [] []       | 16
+     lilypond        |          []                            []          |  3
+     lynx            |          []              []   []       []          |  8
+     m4              |          []       []          []       []          | 12
+     make            | []       []       []     []   []          []       | 12
+     mysecretdiary   |                                                    |  1
+     nano            |                                        []          |  4
+     opcodes         |                                           []       |  1
+     parted          |          []                   []                   |  5
+     ptx             |       [] []    [] [] []       []       [] []       | 15
+     python          |                                                    |  0
+     recode          |                   []          []    [] []          | 13
+     sed             |          []              []   [] [] [] [] []       | 19
+     sh-utils        |       [] []    [] []     []   [] [] [] [] []    [] | 21
+     sharutils       |          []                   []       []          | 11
+     sketch          |                                                    |  0
+     soundtracker    |                                                    |  3
+     sp              |                                                    |  0
+     tar             |       []       [] []     []         [] [] []       | 15
+     texinfo         |                               []                   |  7
+     textutils       |       [] []    [] []     []   [] [] []             | 16
+     util-linux      |                          []               []       |  4
+     wdiff           |                               [] []    [] []       |  7
+     wget            |          []                   [] [] [] [] [] []    | 17
+                     +----------------------------------------------------+
+       33 teams        ko lv nb nl nn no pl pt pt_BR ru sk sl sv tr uk zh
+       53 domains       9  1  6 20  0  6 17  1  13   25 10 11 23 21  2  2  387
+
+   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 September 2001 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
+to 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.