Gettext

De Wikipedia, la enciclopedia libre
Esta es una versión antigua de esta página, editada a las 17:09 3 dic 2005 por 80.58.43.235 (discusión). La dirección URL es un enlace permanente a esta versión, que puede ser diferente de la versión actual.

gettext es la libreria GNU de internacionalizacion (i18n). Es comunmente usada para escribir programas multilenguaje. La ultima version es la 0.14.

Flujo de trabajo

Programador

Es necesario modificar el codigo fuente primero para poder usar las llamadas de GNU gettext. Esta, es hecha envolviendo las cadenas de texto que el usuario verá, en la funcion gettext. Para guardar en tiempo de escritura, esta funcion es usualmente asignada a _, en el codigo C

printf("Mi nombre es %s.\n", mi_nombre);

Se convierte en:

printf(_("Mi nombre es %s.\n"), mi_nombre);

En adicion al Lenguaje C, GNU gettext tiene las siguientes implementaciones: 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, y Pike. El uso es similar al de C para muchos de estos.

xgettext esta corriendo en los fuentes para producir un archivo .pot, o plantilla, cuando contiene una lista de todas las cadenas de texto traducibles extraida desde la fuente. Para el anteriormente dicho, unA entrada en el archivo .pot se puede ver como:

#: src/name.c:36
msgid "Mi nombre es%s.\n"
msgstr ""

Traductor

La traduccion genera un archivo .po desde la plantilla usando el programa msginit, 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

El siguiente para crear un archivo fr.po. Una entrada sencilla se vera como la siguiente:

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

El traductor tendra que editarlas, o a mano o con una herramientra de traducción como poEdit. Cuando ésto esté hecho, la entrada ahora se vera así:

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

Finalmente, los archivos .po files son compilado en un archivo binario .mo con msgfmt. De forma que queden listos para ser distribuidos con el paquete de software.

Usuario

El usuario, sobre sistemas tipo Unix, establece la variable de ambiente LANGUAGE, y el programa mostrara las cadenas en el idioma seleccionado, si es que hay un archivo .mo para ello

Links Externos