This is gettext.info, produced by makeinfo version 4.2 from gettext.texi. INFO-DIR-SECTION GNU Gettext Utilities START-INFO-DIR-ENTRY * gettext: (gettext). GNU gettext utilities. * autopoint: (gettext)autopoint Invocation. Copy gettext infrastructure. * gettextize: (gettext)gettextize Invocation. Prepare a package for gettext. * msgattrib: (gettext)msgattrib Invocation. Select part of a PO file. * msgcat: (gettext)msgcat Invocation. Combine several PO files. * msgcmp: (gettext)msgcmp Invocation. Compare a PO file and template. * msgcomm: (gettext)msgcomm Invocation. Match two PO files. * msgconv: (gettext)msgconv Invocation. Convert PO file to encoding. * msgen: (gettext)msgen Invocation. Create an English PO file. * msgexec: (gettext)msgexec Invocation. Process a PO file. * msgfilter: (gettext)msgfilter Invocation. Pipe a PO file through a filter. * msgfmt: (gettext)msgfmt Invocation. Make MO files out of PO files. * msggrep: (gettext)msggrep Invocation. Select part of a PO file. * msginit: (gettext)msginit Invocation. Create a fresh PO file. * msgmerge: (gettext)msgmerge Invocation. Update a PO file from template. * msgunfmt: (gettext)msgunfmt Invocation. Uncompile MO file into PO file. * msguniq: (gettext)msguniq Invocation. Unify duplicates for PO file. * xgettext: (gettext)xgettext Invocation. Extract strings into a PO file. * ISO639: (gettext)Language Codes. ISO 639 language codes. * ISO3166: (gettext)Country Codes. ISO 3166 country codes. END-INFO-DIR-ENTRY This file provides documentation for GNU `gettext' utilities. It also serves as a reference for the free Translation Project. Copyright (C) 1995, 1996, 1997, 1998, 2001, 2002 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  File: gettext.info, Node: librep-format, Next: smalltalk-format, Prev: elisp-format, Up: Translators for other Languages librep Format Strings --------------------- librep format strings are documented in the librep manual, section Formatted Output, , .  File: gettext.info, Node: smalltalk-format, Next: java-format, Prev: librep-format, Up: Translators for other Languages Smalltalk Format Strings ------------------------ Smalltalk format strings are described in the GNU Smalltalk documentation, class `CharArray', methods `bindWith:' and `bindWithArguments:'. `http://www.gnu.org/software/smalltalk/gst-manual/gst_68.html#SEC238'. In summary, a directive starts with `%' and is followed by `%' or a nonzero digit (`1' to `9').  File: gettext.info, Node: java-format, Next: awk-format, Prev: smalltalk-format, Up: Translators for other Languages Java Format Strings ------------------- Java format strings are described in the JDK documentation for class `java.text.MessageFormat', `http://java.sun.com/j2se/1.4/docs/api/java/text/MessageFormat.html'. See also the ICU documentation `http://oss.software.ibm.com/icu/apiref/classMessageFormat.html'.  File: gettext.info, Node: awk-format, Next: object-pascal-format, Prev: java-format, Up: Translators for other Languages awk Format Strings ------------------ awk format strings are described in the gawk documentation, section Printf, `http://www.gnu.org/manual/gawk/html_node/Printf.html#Printf'.  File: gettext.info, Node: object-pascal-format, Next: ycp-format, Prev: awk-format, Up: Translators for other Languages Object Pascal Format Strings ---------------------------- Where is this documented?  File: gettext.info, Node: ycp-format, Next: tcl-format, Prev: object-pascal-format, Up: Translators for other Languages YCP Format Strings ------------------ YCP sformat strings are described in the libycp documentation `file:/usr/share/doc/packages/libycp/YCP-builtins.html'. In summary, a directive starts with `%' and is followed by `%' or a nonzero digit (`1' to `9').  File: gettext.info, Node: tcl-format, Next: php-format, Prev: ycp-format, Up: Translators for other Languages Tcl Format Strings ------------------ Tcl format strings are described in the `format.n' manual page, `http://www.scriptics.com/man/tcl8.3/TclCmd/format.htm'.  File: gettext.info, Node: php-format, Prev: tcl-format, Up: Translators for other Languages PHP Format Strings ------------------ PHP format strings are described in the documentation of the PHP function `sprintf', in `phpdoc/manual/function.sprintf.html' or `http://www.php.net/manual/en/function.sprintf.php'.  File: gettext.info, Node: Maintainers for other Languages, Next: List of Programming Languages, Prev: Translators for other Languages, Up: Programming Languages The Maintainer's View ===================== For the maintainer, the general procedure differs from the C language case in two ways. * For those languages that don't use GNU gettext, the `intl/' directory is not needed and can be omitted. This means that the maintainer calls the `gettextize' program without the `--intl' option, and that he invokes the `AM_GNU_GETTEXT' autoconf macro via `AM_GNU_GETTEXT([external])'. * If only a single programming language is used, the `XGETTEXT_OPTIONS' variable in `po/Makevars' (*note po/Makevars::) should be adjusted to match the `xgettext' options for that particular programming language. If the package uses more than one programming language with `gettext' support, it becomes necessary to change the POT file construction rule in `po/Makefile.in.in'. It is recommended to make one `xgettext' invocation per programming language, each with the options appropriate for that language, and to combine the resulting files using `msgcat'.  File: gettext.info, Node: List of Programming Languages, Next: List of Data Formats, Prev: Maintainers for other Languages, Up: Programming Languages Individual Programming Languages ================================ * Menu: * C:: C, C++, Objective C * sh:: sh - Shell Script * bash:: bash - Bourne-Again Shell Script * Python:: Python * Common Lisp:: GNU clisp - Common Lisp * clisp C:: GNU clisp C sources * Emacs Lisp:: Emacs Lisp * librep:: librep * Smalltalk:: GNU Smalltalk * Java:: Java * gawk:: GNU awk * Pascal:: Pascal - Free Pascal Compiler * wxWindows:: wxWindows library * YCP:: YCP - YaST2 scripting language * Tcl:: Tcl - Tk's scripting language * Perl:: Perl * PHP:: PHP Hypertext Preprocessor * Pike:: Pike  File: gettext.info, Node: C, Next: sh, Prev: List of Programming Languages, Up: List of Programming Languages C, C++, Objective C ------------------- RPMs gcc, gpp, gobjc, glibc, gettext File extension For C: `c', `h'. For C++: `C', `c++', `cc', `cxx', `cpp', `hpp'. For Objective C: `m'. String syntax `"abc"' gettext shorthand `_("abc")' gettext/ngettext functions `gettext', `dgettext', `dcgettext', `ngettext', `dngettext', `dcngettext' textdomain `textdomain' function bindtextdomain `bindtextdomain' function setlocale Programmer must call `setlocale (LC_ALL, "")' Prerequisite `#include ' `#include ' `#define _(string) gettext (string)' Use or emulate GNU gettext Use Extractor `xgettext -k_' Formatting with positions `fprintf "%2$d %1$d"' (POSIX but not C 99) In C++: `autosprintf "%2$d %1$d"' (*note Introduction: (autosprintf)Top.) Portability autoconf (gettext.m4) and #if ENABLE_NLS po-mode marking yes  File: gettext.info, Node: sh, Next: bash, Prev: C, Up: List of Programming Languages sh - Shell Script ----------------- RPMs bash, gettext File extension `sh' String syntax `"abc"', `'abc'', `abc' gettext shorthand `"`gettext "abc"`"' gettext/ngettext functions `gettext', `ngettext' programs textdomain environment variable `TEXTDOMAIN' bindtextdomain environment variable `TEXTDOMAINDIR' setlocale automatic Prerequisite -- Use or emulate GNU gettext use Extractor -- Formatting with positions -- Portability -- po-mode marking --  File: gettext.info, Node: bash, Next: Python, Prev: sh, Up: List of Programming Languages bash - Bourne-Again Shell Script -------------------------------- RPMs bash 2.0 or newer, gettext File extension `sh' String syntax `"abc"', `'abc'', `abc' gettext shorthand `$"abc"' gettext/ngettext functions `gettext', `ngettext' programs textdomain environment variable `TEXTDOMAIN' bindtextdomain environment variable `TEXTDOMAINDIR' setlocale automatic Prerequisite -- Use or emulate GNU gettext use Extractor `bash --dump-po-strings' Formatting with positions -- Portability -- po-mode marking --  File: gettext.info, Node: Python, Next: Common Lisp, Prev: bash, Up: List of Programming Languages Python ------ RPMs python File extension `py' String syntax `'abc'', `u'abc'', `r'abc'', `ur'abc'', `"abc"', `u"abc"', `r"abc"', `ur"abc"', `'''abc'''', `u'''abc'''', `r'''abc'''', `ur'''abc'''', `"""abc"""', `u"""abc"""', `r"""abc"""', `ur"""abc"""' gettext shorthand `_('abc')' etc. gettext/ngettext functions `gettext.gettext', `gettext.dgettext', also `ugettext' textdomain `gettext.textdomain' function, or `gettext.install(DOMAIN)' function bindtextdomain `gettext.bindtextdomain' function, or `gettext.install(DOMAIN,LOCALEDIR)' function setlocale not used by the gettext emulation Prerequisite `import gettext' Use or emulate GNU gettext emulate. Bug: uses only the first found .mo file, not all of them Extractor `xgettext' Formatting with positions `'...%(ident)d...' % { 'ident': value }' Portability fully portable po-mode marking --  File: gettext.info, Node: Common Lisp, Next: clisp C, Prev: Python, Up: List of Programming Languages GNU clisp - Common Lisp ----------------------- RPMs clisp 2.28 or newer File extension `lisp' String syntax `"abc"' gettext shorthand `(_ "abc")', `(ENGLISH "abc")' gettext/ngettext functions `i18n:gettext', `i18n:ngettext' textdomain `i18n:textdomain' bindtextdomain `i18n:textdomaindir' setlocale automatic Prerequisite -- Use or emulate GNU gettext use Extractor `xgettext -k_ -kENGLISH' Formatting with positions `format "~1@*~D ~0@*~D"' Portability On platforms without gettext, no translation. po-mode marking --  File: gettext.info, Node: clisp C, Next: Emacs Lisp, Prev: Common Lisp, Up: List of Programming Languages GNU clisp C sources ------------------- RPMs clisp File extension `d' String syntax `"abc"' gettext shorthand `ENGLISH ? "abc" : ""' `GETTEXT("abc")' `GETTEXTL("abc")' gettext/ngettext functions `clgettext', `clgettextl' textdomain -- bindtextdomain -- setlocale automatic Prerequisite `#include "lispbibl.c"' Use or emulate GNU gettext use Extractor `clisp-xgettext' Formatting with positions `fprintf "%2$d %1$d"' (POSIX but not C 99) Portability On platforms without gettext, no translation. po-mode marking --  File: gettext.info, Node: Emacs Lisp, Next: librep, Prev: clisp C, Up: List of Programming Languages Emacs Lisp ---------- RPMs emacs, xemacs File extension `el' String syntax `"abc"' gettext shorthand `(_"abc")' gettext/ngettext functions `gettext', `dgettext' (xemacs only) textdomain `domain' special form (xemacs only) bindtextdomain `bind-text-domain' function (xemacs only) setlocale automatic Prerequisite -- Use or emulate GNU gettext use Extractor `xgettext' Formatting with positions `format "%2$d %1$d"' Portability Only XEmacs. Without `I18N3' defined at build time, no translation. po-mode marking --  File: gettext.info, Node: librep, Next: Smalltalk, Prev: Emacs Lisp, Up: List of Programming Languages librep ------ RPMs librep 0.15.3 or newer File extension `jl' String syntax `"abc"' gettext shorthand `(_"abc")' gettext/ngettext functions `gettext' textdomain `textdomain' function bindtextdomain `bindtextdomain' function setlocale -- Prerequisite `(require 'rep.i18n.gettext)' Use or emulate GNU gettext use Extractor `xgettext' Formatting with positions `format "%2$d %1$d"' Portability On platforms without gettext, no translation. po-mode marking --  File: gettext.info, Node: Smalltalk, Next: Java, Prev: librep, Up: List of Programming Languages GNU Smalltalk ------------- RPMs smalltalk File extension `st' String syntax `'abc'' gettext shorthand `NLS ? 'abc'' gettext/ngettext functions `LcMessagesDomain>>#at:', `LcMessagesDomain>>#at:plural:with:' textdomain `LcMessages>>#domain:localeDirectory:' (returns a `LcMessagesDomain' object). Example: `I18N Locale default messages domain: 'gettext' localeDirectory: /usr/local/share/locale'' bindtextdomain `LcMessages>>#domain:localeDirectory:', see above. setlocale Automatic if you use `I18N Locale default'. Prerequisite `PackageLoader fileInPackage: 'I18N'!' Use or emulate GNU gettext emulate Extractor `xgettext' Formatting with positions `'%1 %2' bindWith: 'Hello' with: 'world'' Portability fully portable po-mode marking --  File: gettext.info, Node: Java, Next: gawk, Prev: Smalltalk, Up: List of Programming Languages Java ---- RPMs java, java2 File extension `java' String syntax "abc" gettext shorthand _("abc") gettext/ngettext functions `GettextResource.gettext', `GettextResource.ngettext' textdomain --, use `ResourceBundle.getResource' instead bindtextdomain --, use CLASSPATH instead setlocale automatic Prerequisite -- Use or emulate GNU gettext --, uses a Java specific message catalog format Extractor `xgettext -k_' Formatting with positions `MessageFormat.format "{1,number} {0,number}"' Portability fully portable po-mode marking -- Before marking strings as internationalizable, uses of the string concatenation operator need to be converted to `MessageFormat' applications. For example, `"file "+filename+" not found"' becomes `MessageFormat.format("file {0} not found", new Object[] { filename })'. Only after this is done, can the strings be marked and extracted. GNU gettext uses the native Java internationalization mechanism, namely `ResourceBundle's. To convert a PO file to a ResourceBundle, the `msgfmt' program can be used with the option `--java' or `--java2'. To convert a ResourceBundle back to a PO file, the `msgunfmt' program can be used with the option `--java'. Two different programmatic APIs can be used to access ResourceBundles. Note that both APIs work with all kinds of ResourceBundles, whether GNU gettext generated classes, or other `.class' or `.properties' files. 1. The `java.util.ResourceBundle' API. In particular, its `getString' function returns a string translation. Note that a missing translation yields a `MissingResourceException'. This has the advantage of being the standard API. And it does not require any additional libraries, only the `msgfmt' generated `.class' files. But it cannot do plural handling, even if the resource was generated from a PO file with plural handling. 2. The `gnu.gettext.GettextResource' API. Reference documentation in Javadoc 1.1 style format is in the javadoc1 directory (javadoc1/tree.html) and in Javadoc 2 style format in the javadoc2 directory (javadoc2/index.html). Its `gettext' function returns a string translation. Note that when a translation is missing, the MSGID argument is returned unchanged. This has the advantage of having the `ngettext' function for plural handling. To use this API, one needs the `libintl.jar' file which is part of the GNU gettext package and distributed under the LGPL.  File: gettext.info, Node: gawk, Next: Pascal, Prev: Java, Up: List of Programming Languages GNU awk ------- RPMs gawk 3.1 or newer File extension `awk' String syntax `"abc"' gettext shorthand `_"abc"' gettext/ngettext functions `dcgettext', missing `dcngettext' in gawk-3.1.0 textdomain `TEXTDOMAIN' variable bindtextdomain `bindtextdomain' function setlocale automatic, but missing `setlocale (LC_MESSAGES, "")' in gawk-3.1.0 Prerequisite -- Use or emulate GNU gettext use Extractor `xgettext' Formatting with positions `printf "%2$d %1$d"' (GNU awk only) Portability On platforms without gettext, no translation. On non-GNU awks, you must define `dcgettext', `dcngettext' and `bindtextdomain' yourself. po-mode marking --  File: gettext.info, Node: Pascal, Next: wxWindows, Prev: gawk, Up: List of Programming Languages Pascal - Free Pascal Compiler ----------------------------- RPMs fpk File extension `pp', `pas' String syntax `'abc'' gettext shorthand automatic gettext/ngettext functions --, use `ResourceString' data type instead textdomain --, use `TranslateResourceStrings' function instead bindtextdomain --, use `TranslateResourceStrings' function instead setlocale automatic, but uses only LANG, not LC_MESSAGES or LC_ALL Prerequisite `{$mode delphi}' or `{$mode objfpc}' `uses gettext;' Use or emulate GNU gettext emulate partially Extractor `ppc386' followed by `xgettext' or `rstconv' Formatting with positions `uses sysutils;' `format "%1:d %0:d"' Portability ? po-mode marking -- The Pascal compiler has special support for the `ResourceString' data type. It generates a `.rst' file. This is then converted to a `.pot' file by use of `xgettext' or `rstconv'. At runtime, a `.mo' file corresponding to translations of this `.pot' file can be loaded using the `TranslateResourceStrings' function in the `gettext' unit.  File: gettext.info, Node: wxWindows, Next: YCP, Prev: Pascal, Up: List of Programming Languages wxWindows library ----------------- RPMs wxGTK, gettext File extension `cpp' String syntax `"abc"' gettext shorthand `_("abc")' gettext/ngettext functions `wxLocale::GetString', `wxGetTranslation' textdomain `wxLocale::AddCatalog' bindtextdomain `wxLocale::AddCatalogLookupPathPrefix' setlocale `wxLocale::Init', `wxSetLocale' Prerequisite `#include ' Use or emulate GNU gettext emulate, see `include/wx/intl.h' and `src/common/intl.cpp' Extractor `xgettext' Formatting with positions -- Portability fully portable po-mode marking yes  File: gettext.info, Node: YCP, Next: Tcl, Prev: wxWindows, Up: List of Programming Languages YCP - YaST2 scripting language ------------------------------ RPMs libycp, libycp-devel, yast2-core-translator File extension `ycp' String syntax `"abc"' gettext shorthand `_("abc")' gettext/ngettext functions `_()' with 1 or 3 arguments textdomain `textdomain' statement bindtextdomain -- setlocale -- Prerequisite -- Use or emulate GNU gettext use maps instead Extractor `xgettext' Formatting with positions `sformat "%2 %1"' Portability fully portable po-mode marking --  File: gettext.info, Node: Tcl, Next: Perl, Prev: YCP, Up: List of Programming Languages Tcl - Tk's scripting language ----------------------------- RPMs tcl File extension `tcl' String syntax `"abc"' gettext shorthand `[_ "abc"]' gettext/ngettext functions `::msgcat::mc' textdomain -- bindtextdomain --, use `::msgcat::mcload' instead setlocale automatic, uses LANG, but ignores LC_MESSAGES and LC_ALL Prerequisite `package require msgcat' `proc _ {s} {return [::msgcat::mc $s]}' Use or emulate GNU gettext --, uses a Tcl specific message catalog format Extractor `xgettext -k_' Formatting with positions `format "%2\$d %1\$d"' Portability fully portable po-mode marking -- Before marking strings as internationalizable, substitutions of variables into the string need to be converted to `format' applications. For example, `"file $filename not found"' becomes `[format "file %s not found" $filename]'. Only after this is done, can the strings be marked and extracted. After marking, this example becomes `[format [_ "file %s not found"] $filename]' or `[msgcat::mc "file %s not found" $filename]'. Note that the `msgcat::mc' function implicitly calls `format' when more than one argument is given.  File: gettext.info, Node: Perl, Next: PHP, Prev: Tcl, Up: List of Programming Languages Perl ---- RPMs perl, perl-gettext File extension `pl', `PL' String syntax `"abc"' gettext shorthand -- gettext/ngettext functions `gettext', `dgettext', `dcgettext' textdomain `textdomain' function bindtextdomain `bindtextdomain' function setlocale Use `setlocale (LC_ALL, "");' Prerequisite `use POSIX;' `use Locale::gettext;' Use or emulate GNU gettext use Extractor ? Formatting with positions -- Portability ? po-mode marking --  File: gettext.info, Node: PHP, Next: Pike, Prev: Perl, Up: List of Programming Languages PHP Hypertext Preprocessor -------------------------- RPMs mod_php4, mod_php4-core, phplib, phpdoc File extension `php', `php3', `php4' String syntax `"abc"', `'abc'' gettext shorthand `_("abc")' gettext/ngettext functions `gettext', `dgettext', `dcgettext' textdomain `textdomain' function bindtextdomain `bindtextdomain' function setlocale Programmer must call `setlocale (LC_ALL, "")' Prerequisite -- Use or emulate GNU gettext use Extractor `xgettext' Formatting with positions `printf "%2\$d %1\$d"' Portability On platforms without gettext, the functions are not available. po-mode marking --  File: gettext.info, Node: Pike, Prev: PHP, Up: List of Programming Languages Pike ---- RPMs roxen File extension `pike' String syntax `"abc"' gettext shorthand -- gettext/ngettext functions `gettext', `dgettext', `dcgettext' textdomain `textdomain' function bindtextdomain `bindtextdomain' function setlocale `setlocale' function Prerequisite `import Locale.Gettext;' Use or emulate GNU gettext use Extractor -- Formatting with positions -- Portability On platforms without gettext, the functions are not available. po-mode marking --  File: gettext.info, Node: List of Data Formats, Prev: List of Programming Languages, Up: Programming Languages Internationalizable Data ======================== Here is a list of other data formats which can be internationalized using GNU gettext. * Menu: * POT:: POT - Portable Object Template * RST:: Resource String Table * Glade:: Glade - GNOME user interface description  File: gettext.info, Node: POT, Next: RST, Prev: List of Data Formats, Up: List of Data Formats POT - Portable Object Template ------------------------------ RPMs gettext File extension `pot', `po' Extractor `xgettext'  File: gettext.info, Node: RST, Next: Glade, Prev: POT, Up: List of Data Formats Resource String Table --------------------- RPMs fpk File extension `rst' Extractor `xgettext', `rstconv'  File: gettext.info, Node: Glade, Prev: RST, Up: List of Data Formats Glade - GNOME user interface description ---------------------------------------- RPMs glade, libglade, xml-i18n-tools File extension `glade' Extractor `xgettext', `libglade-xgettext'  File: gettext.info, Node: Conclusion, Next: Language Codes, Prev: Programming Languages, Up: Top Concluding Remarks ****************** 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. * Menu: * History:: History of GNU `gettext' * References:: Related Readings  File: gettext.info, Node: History, Next: References, Prev: Conclusion, Up: Conclusion History of GNU `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, Franc,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. 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 conformant 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, Franc,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. Franc,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.  File: gettext.info, Node: References, Prev: History, Up: Conclusion Related Readings ================ 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.  File: gettext.info, Node: Language Codes, Next: Country Codes, Prev: Conclusion, Up: Top Language Codes ************** The ISO 639 standard defines two character codes for many languages. All abbreviations for languages used in the Translation Project should come from this standard. `aa' Afar. `ab' Abkhazian. `ae' Avestan. `af' Afrikaans. `am' Amharic. `ar' Arabic. `as' Assamese. `ay' Aymara. `az' Azerbaijani. `ba' Bashkir. `be' Byelorussian; Belarusian. `bg' Bulgarian. `bh' Bihari. `bi' Bislama. `bn' Bengali; Bangla. `bo' Tibetan. `br' Breton. `bs' Bosnian. `ca' Catalan. `ce' Chechen. `ch' Chamorro. `co' Corsican. `cs' Czech. `cu' Church Slavic. `cv' Chuvash. `cy' Welsh. `da' Danish. `de' German. `dz' Dzongkha; Bhutani. `el' Greek. `en' English. `eo' Esperanto. `es' Spanish. `et' Estonian. `eu' Basque. `fa' Persian. `fi' Finnish. `fj' Fijian; Fiji. `fo' Faroese. `fr' French. `fy' Frisian. `ga' Irish. `gd' Scots; Gaelic. `gl' Gallegan; Galician. `gn' Guarani. `gu' Gujarati. `gv' Manx. `ha' Hausa (?). `he' Hebrew (formerly iw). `hi' Hindi. `ho' Hiri Motu. `hr' Croatian. `hu' Hungarian. `hy' Armenian. `hz' Herero. `ia' Interlingua. `id' Indonesian (formerly in). `ie' Interlingue. `ik' Inupiak. `io' Ido. `is' Icelandic. `it' Italian. `iu' Inuktitut. `ja' Japanese. `jv' Javanese. `ka' Georgian. `ki' Kikuyu. `kj' Kuanyama. `kk' Kazakh. `kl' Kalaallisut; Greenlandic. `km' Khmer; Cambodian. `kn' Kannada. `ko' Korean. `ks' Kashmiri. `ku' Kurdish. `kv' Komi. `kw' Cornish. `ky' Kirghiz. `la' Latin. `lb' Letzeburgesch. `ln' Lingala. `lo' Lao; Laotian. `lt' Lithuanian. `lv' Latvian; Lettish. `mg' Malagasy. `mh' Marshall. `mi' Maori. `mk' Macedonian. `ml' Malayalam. `mn' Mongolian. `mo' Moldavian. `mr' Marathi. `ms' Malay. `mt' Maltese. `my' Burmese. `na' Nauru. `nb' Norwegian Bokmaal. `nd' Ndebele, North. `ne' Nepali. `ng' Ndonga. `nl' Dutch. `nn' Norwegian Nynorsk. `no' Norwegian. `nr' Ndebele, South. `nv' Navajo. `ny' Chichewa; Nyanja. `oc' Occitan; Provenc,al. `om' (Afan) Oromo. `or' Oriya. `os' Ossetian; Ossetic. `pa' Panjabi; Punjabi. `pi' Pali. `pl' Polish. `ps' Pashto, Pushto. `pt' Portuguese. `qu' Quechua. `rm' Rhaeto-Romance. `rn' Rundi; Kirundi. `ro' Romanian. `ru' Russian. `rw' Kinyarwanda. `sa' Sanskrit. `sc' Sardinian. `sd' Sindhi. `se' Northern Sami. `sg' Sango; Sangro. `si' Sinhalese. `sk' Slovak. `sl' Slovenian. `sm' Samoan. `sn' Shona. `so' Somali. `sq' Albanian. `sr' Serbian. `ss' Swati; Siswati. `st' Sesotho; Sotho, Southern. `su' Sundanese. `sv' Swedish. `sw' Swahili. `ta' Tamil. `te' Telugu. `tg' Tajik. `th' Thai. `ti' Tigrinya. `tk' Turkmen. `tl' Tagalog. `tn' Tswana; Setswana. `to' Tonga (?). `tr' Turkish. `ts' Tsonga. `tt' Tatar. `tw' Twi. `ty' Tahitian. `ug' Uighur. `uk' Ukrainian. `ur' Urdu. `uz' Uzbek. `vi' Vietnamese. `vo' Volapu"k; Volapuk. `wa' Walloon. `wo' Wolof. `xh' Xhosa. `yi' Yiddish (formerly ji). `yo' Yoruba. `za' Zhuang. `zh' Chinese. `zu' Zulu.  File: gettext.info, Node: Country Codes, Next: Program Index, Prev: Language Codes, Up: Top Country Codes ************* The ISO 3166 standard defines two character codes for many countries and territories. All abbreviations for countries used in the Translation Project should come from this standard. `AD' Andorra. `AE' United Arab Emirates. `AF' Afghanistan. `AG' Antigua and Barbuda. `AI' Anguilla. `AL' Albania. `AM' Armenia. `AN' Netherlands Antilles. `AO' Angola. `AQ' Antarctica. `AR' Argentina. `AS' Samoa (American). `AT' Austria. `AU' Australia. `AW' Aruba. `AZ' Azerbaijan. `BA' Bosnia and Herzegovina. `BB' Barbados. `BD' Bangladesh. `BE' Belgium. `BF' Burkina Faso. `BG' Bulgaria. `BH' Bahrain. `BI' Burundi. `BJ' Benin. `BM' Bermuda. `BN' Brunei. `BO' Bolivia. `BR' Brazil. `BS' Bahamas. `BT' Bhutan. `BV' Bouvet Island. `BW' Botswana. `BY' Belarus. `BZ' Belize. `CA' Canada. `CC' Cocos (Keeling) Islands. `CD' Congo (Dem. Rep.). `CF' Central African Rep.. `CG' Congo (Rep.). `CH' Switzerland. `CI' Cote d'Ivoire. `CK' Cook Islands. `CL' Chile. `CM' Cameroon. `CN' China. `CO' Colombia. `CR' Costa Rica. `CU' Cuba. `CV' Cape Verde. `CX' Christmas Island. `CY' Cyprus. `CZ' Czech Republic. `DE' Germany. `DJ' Djibouti. `DK' Denmark. `DM' Dominica. `DO' Dominican Republic. `DZ' Algeria. `EC' Ecuador. `EE' Estonia. `EG' Egypt. `EH' Western Sahara. `ER' Eritrea. `ES' Spain. `ET' Ethiopia. `FI' Finland. `FJ' Fiji. `FK' Falkland Islands. `FM' Micronesia. `FO' Faeroe Islands. `FR' France. `GA' Gabon. `GB' Britain (UK). `GD' Grenada. `GE' Georgia. `GF' French Guiana. `GH' Ghana. `GI' Gibraltar. `GL' Greenland. `GM' Gambia. `GN' Guinea. `GP' Guadeloupe. `GQ' Equatorial Guinea. `GR' Greece. `GS' South Georgia and the South Sandwich Islands. `GT' Guatemala. `GU' Guam. `GW' Guinea-Bissau. `GY' Guyana. `HK' Hong Kong. `HM' Heard Island and McDonald Islands. `HN' Honduras. `HR' Croatia. `HT' Haiti. `HU' Hungary. `ID' Indonesia. `IE' Ireland. `IL' Israel. `IN' India. `IO' British Indian Ocean Territory. `IQ' Iraq. `IR' Iran. `IS' Iceland. `IT' Italy. `JM' Jamaica. `JO' Jordan. `JP' Japan. `KE' Kenya. `KG' Kyrgyzstan. `KH' Cambodia. `KI' Kiribati. `KM' Comoros. `KN' St Kitts and Nevis. `KP' Korea (North). `KR' Korea (South). `KW' Kuwait. `KY' Cayman Islands. `KZ' Kazakhstan. `LA' Laos. `LB' Lebanon. `LC' St Lucia. `LI' Liechtenstein. `LK' Sri Lanka. `LR' Liberia. `LS' Lesotho. `LT' Lithuania. `LU' Luxembourg. `LV' Latvia. `LY' Libya. `MA' Morocco. `MC' Monaco. `MD' Moldova. `MG' Madagascar. `MH' Marshall Islands. `MK' Macedonia. `ML' Mali. `MM' Myanmar (Burma). `MN' Mongolia. `MO' Macao. `MP' Northern Mariana Islands. `MQ' Martinique. `MR' Mauritania. `MS' Montserrat. `MT' Malta. `MU' Mauritius. `MV' Maldives. `MW' Malawi. `MX' Mexico. `MY' Malaysia. `MZ' Mozambique. `NA' Namibia. `NC' New Caledonia. `NE' Niger. `NF' Norfolk Island. `NG' Nigeria. `NI' Nicaragua. `NL' Netherlands. `NO' Norway. `NP' Nepal. `NR' Nauru. `NU' Niue. `NZ' New Zealand. `OM' Oman. `PA' Panama. `PE' Peru. `PF' French Polynesia. `PG' Papua New Guinea. `PH' Philippines. `PK' Pakistan. `PL' Poland. `PM' St Pierre and Miquelon. `PN' Pitcairn. `PR' Puerto Rico. `PS' Palestine. `PT' Portugal. `PW' Palau. `PY' Paraguay. `QA' Qatar. `RE' Reunion. `RO' Romania. `RU' Russia. `RW' Rwanda. `SA' Saudi Arabia. `SB' Solomon Islands. `SC' Seychelles. `SD' Sudan. `SE' Sweden. `SG' Singapore. `SH' St Helena. `SI' Slovenia. `SJ' Svalbard and Jan Mayen. `SK' Slovakia. `SL' Sierra Leone. `SM' San Marino. `SN' Senegal. `SO' Somalia. `SR' Suriname. `ST' Sao Tome and Principe. `SV' El Salvador. `SY' Syria. `SZ' Swaziland. `TC' Turks and Caicos Is. `TD' Chad. `TF' French Southern and Antarctic Lands. `TG' Togo. `TH' Thailand. `TJ' Tajikistan. `TK' Tokelau. `TM' Turkmenistan. `TN' Tunisia. `TO' Tonga. `TP' East Timor. `TR' Turkey. `TT' Trinidad and Tobago. `TV' Tuvalu. `TW' Taiwan. `TZ' Tanzania. `UA' Ukraine. `UG' Uganda. `UM' US minor outlying islands. `US' United States. `UY' Uruguay. `UZ' Uzbekistan. `VA' Vatican City. `VC' St Vincent. `VE' Venezuela. `VG' Virgin Islands (UK). `VI' Virgin Islands (US). `VN' Vietnam. `VU' Vanuatu. `WF' Wallis and Futuna. `WS' Samoa (Western). `YE' Yemen. `YT' Mayotte. `YU' Yugoslavia. `ZA' South Africa. `ZM' Zambia. `ZW' Zimbabwe.  File: gettext.info, Node: Program Index, Next: Option Index, Prev: Country Codes, Up: Top Program Index ************* * Menu: * autopoint: autopoint Invocation. * gettext <1>: bash. * gettext: sh. * gettextize: gettextize Invocation. * msgattrib: msgattrib Invocation. * msgcat: msgcat Invocation. * msgcmp: msgcmp Invocation. * msgcomm: msgcomm Invocation. * msgconv: msgconv Invocation. * msgen: msgen Invocation. * msgexec: msgexec Invocation. * msgfilter: msgfilter Invocation. * msgfmt: msgfmt Invocation. * msggrep: msggrep Invocation. * msginit: msginit Invocation. * msgmerge: msgmerge Invocation. * msgunfmt: msgunfmt Invocation. * msguniq: msguniq Invocation. * ngettext <1>: bash. * ngettext: sh. * xgettext: xgettext Invocation.