diff options
Diffstat (limited to 'doc/nls.texi')
-rw-r--r-- | doc/nls.texi | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/doc/nls.texi b/doc/nls.texi new file mode 100644 index 0000000..a7797e8 --- /dev/null +++ b/doc/nls.texi @@ -0,0 +1,254 @@ +@node Translation Intro +@chapter Notes on the Free Translation Project + +@set STATUS August 1998 + +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 @file{ABOUT-NLS} file inside a distribution, you +may assume that the distributed package does use GNU @code{gettext} +internally, itself available at your nearest GNU archive site. But you +do @emph{not} need to install GNU @code{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 @file{intl/} directory or bugs which may +be related to internationalization, you should tell about the version +of @code{gettext} which is used. The information can be found in +the @file{intl/VERSION} file, in internationalized packages. + +@menu +* One advise:: +* INSTALL Matters:: +* Using This Package:: +* Translating Teams:: +* Available Packages:: +* Using gettext in own code:: +@end menu + +@node One advise +@section One advise in advance + +If you want to exploit the full power of internationalization, you +should configure it using + +@example +./configure --with-included-gettext +@end example + +@noindent +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 @code{gettext} implementation in the GNU C library version 2 +provides as many features (such as locale alias or message inheritance) +as the implementation here. It is also not possible to offer this +additional functionality on top of a @code{catgets} implementation. +Future versions of GNU @code{gettext} will very likely convey even more +functionality. So it might be a good idea to change to GNU +@code{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 @file{libintl}. + + +@node INSTALL Matters +@section INSTALL Matters + +Some packages are @dfn{localizable} when properly installed; the +programs they contain can be made to speak your own native language. +Most such packages use GNU @code{gettext}. Other packages have their +own ways to internationalization, predating GNU @code{gettext}. + +By default, this package will be installed to allow translation of +messages. It will automatically detect whether the system provides +usable @code{catgets} (if using this is selected by the installer) or +@code{gettext} functions. If neither is available, the GNU +@code{gettext} own library will be used. This library is wholly +contained within this package, usually in the @file{intl/} subdirectory, +so prior installation of the GNU @code{gettext} package is @emph{not} +required. Installers may use special options at configuration time for +changing the default behaviour. The commands: + +@example +./configure --with-included-gettext +./configure --with-catgets +./configure --disable-nls +@end example + +@noindent +will respectively bypass any pre-existing @code{catgets} or +@code{gettext} to use the internationalizing routines provided within +this package, enable the use of the @code{catgets} functions (if found +on the locale system), or else, @emph{totally} disable translation of +messages. + +When you already have GNU @code{gettext} installed on your system and +run configure without an option for your new package, @code{configure} +will probably detect the previously built and installed @file{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 @code{gettext} +library. I.e. if the file @file{intl/VERSION} shows that the library +which comes with this package is more recent, you should use + +@example +./configure --with-included-gettext +@end example + +@noindent +to prevent auto-detection. + +By default the configuration process will not test for the +@code{catgets} function and therefore they will not be used. The +reasons are already given above: the emulation on top of @code{catgets} +cannot provide all the extensions provided by the GNU @code{gettext} +library. If you nevertheless want to use the @code{catgets} functions +use + +@example +./configure --with-catgets +@end example + +@noindent +to enable the test for @code{catgets} (this causes no harm if +@code{catgets} is not available on your system). If you really select +this option we would like to hear about the reasons because we cannot +think of any good one ourself. + +Internationalized packages have usually many @file{po/@var{ll}.po} +files, where @var{ll} gives an @w{ISO 639} two-letter code +identifying the language. Unless translations have been forbidden +at @code{configure} time by using the @samp{--disable-nls} switch, +all available translations are installed together with the package. +However, the environment variable @code{LINGUAS} may be set, prior +to configuration, to limit the installed set. @code{LINGUAS} should +then contain a space separated list of two-letter codes, stating +which languages are allowed. + +@node Using This Package +@section Using This Package + +@c -- +@c FIXME: rewrite to document LANGUAGE, the long names, and aliases. +@c -- +As a user, if your language has been installed for this package, you +only have to set the @code{LANG} environment variable to the appropriate +@w{ISO 639} @samp{@var{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 @w{@samp{setenv LANG de}} (in +@code{csh}), @w{@samp{export LANG; LANG=de}} (in @code{sh}) or +@w{@samp{export LANG=de}} (in @code{bash}). This can be done from your +@file{.login} or @file{.profile} file, once and for all. +@c Packages which are not internationalized will merely ignore the +@c setting of this variable. +@c FIXME: This last sentence is not true!! --drepper + +An operating system might already offer message localization for many of +its programs, while other programs have been +installed locally with the full capabilities of GNU @code{gettext}. +Just using @code{gettext} extended syntax for @code{LANG} would break +proper localization of already available operating system programs. In +this case, users should set both @code{LANGUAGE} and @code{LANG} +variables in their environment, as programs using GNU @code{gettext} +give preference to @code{LANGUAGE}. For example, some Swedish users +would rather read translations in German than English for when Swedish +is not available. This is easily accomplished by setting +@code{LANGUAGE} to @samp{sv:de} while leaving @code{LANG} to @samp{sv}. + + +@node Translating Teams +@section 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, courtesy of Linux +International. You may reach your translation team at the address +@file{@var{ll}@@li.org}, replacing @var{ll} by the two-letter @w{ISO +639} code for your language. Language codes are @emph{not} the same as +the country codes given in @w{ISO 3166}. The following translation +teams exist, as of @value{STATUS}: + +@quotation +Chinese @code{zh}, Czech @code{cs}, Danish @code{da}, Dutch @code{nl}, +English @code{en}, Esperanto @code{eo}, Finnish @code{fi}, French +@code{fr}, German @code{de}, Hungarian @code{hu}, Irish @code{ga}, +Italian @code{it}, Indonesian @code{id}, Japanese @code{ja}, Korean +@code{ko}, Latin @code{la}, Norwegian @code{no}, Persian @code{fa}, +Polish @code{pl}, Portuguese @code{pt}, Russian @code{ru}, Slovenian +@code{sl}, Spanish @code{es}, Swedish @code{sv}, and Turkish @code{tr}. +@end quotation + +@noindent +For example, you may reach the Chinese translation team by writing to +@file{zh@@li.org}. + +If you'd like to volunteer to @emph{work} at translating messages, you +should become a member of the translating team for your own language. +The subscribing address is @emph{not} the same as the list itself, it +has @samp{-request} appended. For example, speakers of Swedish can send +a message to @w{@file{sv-request@@li.org}}, having this message body: + +@example +subscribe +@end example + +Keep in mind that team members are expected to participate +@emph{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 +@w{@file{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. + +@node Available Packages +@section Available Packages + +Languages are not equally supported in all packages. The following +matrix shows the current state of internationalization, as of +@value{STATUS}. The matrix shows, in regard of each package, for which +languages PO files have been submitted to translation coordination. + +@include matrix.texi + +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 @value{STATUS} seems to be old, you may fetch a more recent copy +of this @file{ABOUT-NLS} file on most GNU archive sites. + + +@node Using gettext in own code +@section Using @code{gettext} in new packages + +If you are writing a freely available program and want to +internationalize it you are welcome to use GNU @file{gettext} in your +package. Of course the GNU Public License applies to your sources from +then if you include @code{gettext} directly in your distribution on but +since you are writing free software anyway this is no restriction. + +Once the sources are change appropriately and the setup can handle to +use of @code{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 +@w{@file{translation@@iro.umontreal.ca}} to make the @file{.pot} files +available to the translation teams. |