GNU Gettext
Provee un conjunto de herramientas que buscan facilitar el proceso de internacionalización de programas y paquetes.
Lo Basico
El Gettext es un paquete diseñado pensando en el proyecto de traduccion de GNU, y para tal fin provee a los progrmadores de las herramientas necesarias para hacer que sus programas puedan mostrar mensajes en diferentes lenguajes.
Este paquete incluye una librería, y una serie de programas independientes que permiten el manejo de las cadenas traducibles de un programa. y en su Documentación se puede encontrar una serie de convenciones acerca de como los programas deben ser escritos, como deben ser llamados, la forma en que deben organizarse los archivos y los directorios.
Internacionalizacion
O i18n es el proceso gracias al cual un programa o un paquete son preparados para poder dar soporte a múltiples lenguajes.
Localizacion
O L10n es un proceso al que se somete un programa o un paquete previamente internacionalizado, para permitir que este pueda manejar las entradas y salidas de forma correcta dependiendo el lenguaje y la región donde se use el software.
Como se Usa
Lo primero que hay que hacer es identificar, dentro de las fuentes, las cadenas de texto que pueden y deben ser traducidas. Una vez se han identificado, dependiendo del lenguaje en que se este desarrollando hay que seguir una serie de convenciones para marcar estas cadenas y así permitir que Gettext las identifique.
Una vez las fuentes han sido modificadas, se usa el programa xgettext que se encarga de buscar y extraer todas las cadenas de texto traducibles y colocarlas en un archivo *.PO inicial. Hecho esto, lo siguiente es realizar la traducción de las cadenas de texto.
A medida que pasa el tiempo suelen introducirse nuevas funcionalidades y cambiarse algunos detalles del código fuente. Con el fin de facilitar el proceso de internacionalización Gettext tiene una utilidad llamada msgmerge que tiene el propósito de actualizar un fichero PO existente, comparándolo con un nuevo fichero .po, extraído usando xgettext con las fuentes mas recientes.
Una vez se ha terminado la edición del archivo PO el programa msgfmt se usa para traducirlo en un archivo MO.Tras todo este proceso, y suponiendo que las variables de entorno apropiadas tengan el valor correcto, el programa será capaz de localizarse a sí mismo de forma automática, cada vez que se ejecute.
Archivos PO
Los archivos PO (Portable Object)son legibles y editables por humanos. Asocian cada cadena original y traducible de un determinado paquete con su traducción en una lengua determinada. Es decir, un fichero PO individual está dedicado a la traducción de un único lenguaje.
Archivos MO
Los archivos MO (Machine Object) son datos leidos por los programas, y tienen formato binario. El formato es no-portable, lo cual quiere decir que deberemos crear un fichero MO por cada plataforma donde pensemos utilizar la aplicación.
Editando el Archivo PO
Un archivo PO se compone de un conjunto de entradas, cada una relacionando la cadena de texto original sin traducir con su correspondiente traducción. Cada entrada tiene la siguiente estructura:
# comentarios del traductor #. comentarios automáticos #: referencia #, flags msgid cadena sin traducir msgstr cadena traducida
Cada entrada en un archivo PO tiene una sección de Comentarios, seguida por dos cadenas de texto, la primera es la cadena original que aparece en el código fuente, y la segunda a la traducción de esta cadena. La cadena original es la que sigue a msgid (creada y mantenida por gettext), mientras que la traducción es la que sigue a msgstr (la que se debe editar).
Es importante mencionar que las cadenas de texto que aparecen en el archivo PO respetan la sintaxis de C para las cadenas de caracteres, incluyendo las comillas y las secuencias de escape.
Algunos ejemplos
Internacionalización en Python
Enlaces
Algo de informacion en español
