GNU gettext

GNU gettext

Infobox Software
name = gettext
developer = The GNU Project
latest release version = 0.17
latest release date = November 11, 2007
operating system = Cross-Platform
genre = Development, Translation
license = LGPL (library), GPL (tools), GFDL/GPL (docs)
website = http://www.gnu.org/software/gettext/

gettext is the GNU internationalization (i18n) library. It is commonly used for writing multilingual programs. The latest version is 0.17.

Programming

Source code is first modified to use the GNU gettext calls. This is, for most programming languages, done by wrapping strings that the user will see in the gettext function. To save on typing time, and to reduce code clutter, this function is commonly aliased to _, so that the C codeprintf("My name is %s. ", my_name);would becomeprintf(_("My name is %s. "), my_name);gettext then uses the supplied strings as keys for looking up alternative translations, and will return the original string when no translation is available. This is in contrast to systems like catgets or the use of LoadString under Microsoft Windows where a programmatic ID (often an integer) is used.

In addition to C, GNU gettext has the following implementations: C++, Objective-C, sh script, bash script, Python, GNU CLISP, Emacs Lisp, librep, GNU Smalltalk, Java, GNU awk, Pascal, wxWidgets (through the wxLocale class), YCP (the YaST2 language), Tcl, Perl, PHP, Pike, Ruby, and R. Usage is similar to C for most of these.

xgettext is run on the sources to produce a .pot file, or template, which contains a list of all the translatable strings extracted from the sources. For the above, an entry in the .pot file would look like:

#: src/name.c:36 msgid "My name is %s. " msgstr ""

Comments placed directly before strings thus marked are made available as hints to translators by helper programs:/// TRANSLATORS: Please leave %s as it is, because it is needed by the program./// Thank you for contributing to this project.printf(_("My name is %s. "), my_name);In this example, the comment starts with /// and is given to xgettext when building the .pot template file to allow it to extract the comments for the translators. xgettext --add-comments=///

The .pot file looks like this with the comment:

#. TRANSLATORS: Please leave %s as it is, because it is needed by the program. #. Thank you for contributing to this project. #: src/name.c:36 msgid "My name is %s. " msgstr ""

Translating

The translator derives a .po file from the template using the msginit program, then fills out the translations. msginit initializes the translations so, for instance, if we wish to create a French language translation, we'd run msginit --locale=fr --input=name.pot

This will create fr.po. A sample entry would look like

#: src/name.c:36 msgid "My name is %s. " msgstr ""

The translator will have to edit these, either by hand or with a translation tool like Poedit. When they are done, the entry will look like this:

#: src/name.c:36 msgid "My name is %s. " msgstr "Je m'appelle %s. "

Finally, the .po files are compiled into binary .mo files with msgfmt. These are now ready for distribution with the software package.

Running

The user, on Unix-type systems, sets the environment variable LC_MESSAGES, and the program will display strings in the selected language, if there is an .mo file for it.

References

ee also

* Internationalization
* Translate Toolkit
* Poedit

External links

* [http://www.gnu.org/software/gettext/gettext.html Gettext homepage]
* [http://code.google.com/p/gettext-commons/ Gettext Commons - Java gettext utilities]
* [http://www.lrde.epita.fr/~adl/autotools.html Autotools Tutorial]
* [http://www.gted.org gted - GetText EDitor and tools integration]
* [http://www.wesnoth.org/wiki/GettextForTranslators Gettext for translators]


Wikimedia Foundation. 2010.

Игры ⚽ Нужен реферат?

Look at other dictionaries:

  • GNU gettext — gettext Développeur Projet GNU Dernière version 0.18.1 ( …   Wikipédia en Français

  • GNU gettext — Entwickler Das GNU gettext Team (Maintainer: Bruno Haible) Aktuelle Version 0.18.1.1 (6. Juni 2010) Betriebssystem Unix artige Betriebssysteme, Windows (s. Weblinks) Kategorie …   Deutsch Wikipedia

  • GNU gettext — …   Википедия

  • gettext — Developer(s) Various Stable release 0.18 (GNU gettext) / May 9, 2010 (GNU gettext) Operating system Cross platform Type Internationalization and localization …   Wikipedia

  • Gettext — GNU gettext Entwickler: Das GNU gettext Team (Maintainer: Bruno Haible) Aktuelle Version: 0.17 (27. November 2006) Betriebssystem: Unix artige Betriebssysteme, Windows (s. Weblinks) …   Deutsch Wikipedia

  • gettext — GNU gettext Тип локализация программного обеспечения Автор Ульрих Дреппер Разработчики сообщество Написана на C Интерфейс командная строка Операционная система Linux и др …   Википедия

  • Gettext — est la bibliothèque GNU d internationalisation (i18n). Elle est couramment utilisée pour écrire des programmes multilingues. Sommaire 1 Processus 1.1 Programmeur 1.1.1 Commentaires pour les traducteurs …   Wikipédia en Français

  • Gettext — es la biblioteca GNU de internacionalización (i18n). Comúnmente se usa para escribir programas con interfaz en varios idiomas. La última versión es la 0.18. Contenido 1 Flujo de trabajo 1.1 Programador 1.2 Traductor 1.3 …   Wikipedia Español

  • GNU build system — GNU logo The GNU build system, also known as the Autotools, is a suite of programming tools designed to assist in making source code packages portable to many Unix like systems. It can be difficult to make a software program portable: the C… …   Wikipedia

  • GNU Smalltalk — Développeur Projet GNU Dernière version stable …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”