1Notes on the Free Translation Project
2*************************************
3
4   Free software is going international!  The Free Translation Project
5is a way to get maintainers of free software, translators, and users all
6together, so that will gradually become able to speak many languages.
7A few packages already provide translations for their messages.
8
9   If you found this `ABOUT-NLS' file inside a distribution, you may
10assume that the distributed package does use GNU `gettext' internally,
11itself available at your nearest GNU archive site.  But you do *not*
12need to install GNU `gettext' prior to configuring, installing or using
13this package with messages translated.
14
15   Installers will find here some useful hints.  These notes also
16explain how users should proceed for getting the programs to use the
17available translations.  They tell how people wanting to contribute and
18work at translations should contact the appropriate team.
19
20   When reporting bugs in the `intl/' directory or bugs which may be
21related to internationalization, you should tell about the version of
22`gettext' which is used.  The information can be found in the
23`intl/VERSION' file, in internationalized packages.
24
25One advise in advance
26=====================
27
28   If you want to exploit the full power of internationalization, you
29should configure it using
30
31     ./configure --with-included-gettext
32
33to force usage of internationalizing routines provided within this
34package, despite the existence of internationalizing capabilities in the
35operating system where this package is being installed.  So far, only
36the `gettext' implementation in the GNU C library version 2 provides as
37many features (such as locale alias or message inheritance) as the
38implementation here.  It is also not possible to offer this additional
39functionality on top of a `catgets' implementation.  Future versions of
40GNU `gettext' will very likely convey even more functionality.  So it
41might be a good idea to change to GNU `gettext' as soon as possible.
42
43   So you need not provide this option if you are using GNU libc 2 or
44you have installed a recent copy of the GNU gettext package with the
45included `libintl'.
46
47INSTALL Matters
48===============
49
50   Some packages are "localizable" when properly installed; the
51programs they contain can be made to speak your own native language.
52Most such packages use GNU `gettext'.  Other packages have their own
53ways to internationalization, predating GNU `gettext'.
54
55   By default, this package will be installed to allow translation of
56messages.  It will automatically detect whether the system provides
57usable `catgets' (if using this is selected by the installer) or
58`gettext' functions.  If neither is available, the GNU `gettext' own
59library will be used.  This library is wholly contained within this
60package, usually in the `intl/' subdirectory, so prior installation of
61the GNU `gettext' package is *not* required.  Installers may use
62special options at configuration time for changing the default
63behaviour.  The commands:
64
65     ./configure --with-included-gettext
66     ./configure --with-catgets
67     ./configure --disable-nls
68
69will respectively bypass any pre-existing `catgets' or `gettext' to use
70the internationalizing routines provided within this package, enable
71the use of the `catgets' functions (if found on the locale system), or
72else, *totally* disable translation of messages.
73
74   When you already have GNU `gettext' installed on your system and run
75configure without an option for your new package, `configure' will
76probably detect the previously built and installed `libintl.a' file and
77will decide to use this.  This might be not what is desirable.  You
78should use the more recent version of the GNU `gettext' library.  I.e.
79if the file `intl/VERSION' shows that the library which comes with this
80package is more recent, you should use
81
82     ./configure --with-included-gettext
83
84to prevent auto-detection.
85
86   By default the configuration process will not test for the `catgets'
87function and therefore they will not be used.  The reasons are already
88given above: the emulation on top of `catgets' cannot provide all the
89extensions provided by the GNU `gettext' library.  If you nevertheless
90want to use the `catgets' functions use
91
92     ./configure --with-catgets
93
94to enable the test for `catgets' (this causes no harm if `catgets' is
95not available on your system).  If you really select this option we
96would like to hear about the reasons because we cannot think of any
97good one ourself.
98
99   Internationalized packages have usually many `po/LL.po' files, where
100LL gives an ISO 639 two-letter code identifying the language.  Unless
101translations have been forbidden at `configure' time by using the
102`--disable-nls' switch, all available translations are installed
103together with the package.  However, the environment variable `LINGUAS'
104may be set, prior to configuration, to limit the installed set.
105`LINGUAS' should then contain a space separated list of two-letter
106codes, stating which languages are allowed.
107
108Using This Package
109==================
110
111   As a user, if your language has been installed for this package, you
112only have to set the `LANG' environment variable to the appropriate
113ISO 639 `LL' two-letter code prior to using the programs in the
114package.  For example, let's suppose that you speak German.  At the
115shell prompt, merely execute `setenv LANG de' (in `csh'),
116`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash').  This
117can be done from your `.login' or `.profile' file, once and for all.
118
119   An operating system might already offer message localization for
120many of its programs, while other programs have been installed locally
121with the full capabilities of GNU `gettext'.  Just using `gettext'
122extended syntax for `LANG' would break proper localization of already
123available operating system programs.  In this case, users should set
124both `LANGUAGE' and `LANG' variables in their environment, as programs
125using GNU `gettext' give preference to `LANGUAGE'.  For example, some
126Swedish users would rather read translations in German than English for
127when Swedish is not available.  This is easily accomplished by setting
128`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
129
130Translating Teams
131=================
132
133   For the Free Translation Project to be a success, we need interested
134people who like their own language and write it well, and who are also
135able to synergize with other translators speaking the same language.
136Each translation team has its own mailing list, courtesy of Linux
137International.  You may reach your translation team at the address
138`LL@li.org', replacing LL by the two-letter ISO 639 code for your
139language.  Language codes are *not* the same as the country codes given
140in ISO 3166.  The following translation teams exist, as of December
1411997:
142
143     Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
144     Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
145     `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
146     Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
147     `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
148     Swedish `sv', and Turkish `tr'.
149
150For example, you may reach the Chinese translation team by writing to
151`zh@li.org'.
152
153   If you'd like to volunteer to *work* at translating messages, you
154should become a member of the translating team for your own language.
155The subscribing address is *not* the same as the list itself, it has
156`-request' appended.  For example, speakers of Swedish can send a
157message to `sv-request@li.org', having this message body:
158
159     subscribe
160
161   Keep in mind that team members are expected to participate
162*actively* in translations, or at solving translational difficulties,
163rather than merely lurking around.  If your team does not exist yet and
164you want to start one, or if you are unsure about what to do or how to
165get started, please write to `translation@iro.umontreal.ca' to reach the
166coordinator for all translator teams.
167
168   The English team is special.  It works at improving and uniformizing
169the terminology in use.  Proven linguistic skill are praised more than
170programming skill, here.
171
172Available Packages
173==================
174
175   Languages are not equally supported in all packages.  The following
176matrix shows the current state of internationalization, as of December
1771997.  The matrix shows, in regard of each package, for which languages
178PO files have been submitted to translation coordination.
179
180     Ready PO files    cs da de en es fi fr it ja ko nl no pl pt ru sl sv
181                     .----------------------------------------------------.
182     bash            |       []          []          []                   |  3
183     bison           |       []          []          []                   |  3
184     clisp           |       [] [] []    []                               |  4
185     cpio            |       []    []    []       [] []    []             |  6
186     diffutils       |       []    []    []                []          [] |  5
187     enscript        |       []    [] [] []          []             []    |  6
188     fileutils       | []    []    []    []       [] []    [] []    [] [] | 10
189     findutils       |       []    []    [] []    [] []    []    []    [] |  9
190     flex            |             []    []       []                   [] |  4
191     gcal            |       []          []          []    []          [] |  5
192     gettext         |    [] []    []    []       [] [] [] [] []    [] [] | 12
193     grep            |       []    []    []       [] [] [] []    [] [] [] | 10
194     hello           |    [] []    []    []       [] [] [] [] []    [] [] | 11
195     id-utils        |       []          []                []             |  3
196     indent          |    [] []                   []       []    []       |  5
197     libc            |       []    []    []       [] []    []          [] |  7
198     m4              |       []          []    []    []          []    [] |  6
199     make            |       []    []    []       [] []    []             |  6
200     music           |                   []                []             |  2
201     ptx             |       []    []    []          [] [] [] []       [] |  8
202     recode          |    [] []    []    []          []    [] []    [] [] |  9
203     sh-utils        |       []    []    []          [] [] [] []       [] |  8
204     sharutils       | []    []    []    []          []                [] |  6
205     tar             | []    []          [] []    [] [] [] [] []    [] [] | 11
206     texinfo         | []    []          []                               |  3
207     textutils       | []    []    []    []       [] [] [] []          [] |  9
208     wdiff           | []    []    []    []          [] [] []          [] |  8
209                     `----------------------------------------------------'
210       17 languages    cs da de en es fi fr it ja ko nl no pl pt ru sl sv
211       27 packages      6  4 25  1 18  1 26  2  1 12 20  9 19  7  4  7 17  179
212
213   Some counters in the preceding matrix are higher than the number of
214visible blocks let us expect.  This is because a few extra PO files are
215used for implementing regional variants of languages, or language
216dialects.
217
218   For a PO file in the matrix above to be effective, the package to
219which it applies should also have been internationalized and
220distributed as such by its maintainer.  There might be an observable
221lag between the mere existence a PO file and its wide availability in a
222distribution.
223
224   If December 1997 seems to be old, you may fetch a more recent copy
225of this `ABOUT-NLS' file on most GNU archive sites.
226
227