miércoles, 8 de octubre de 2008

Internacionalización con Python

Para la utilización de traducción de aplicaciones a otros lenguajes utilizar la librería gettext

Siempre los strings a traducir deben ser etiquetados con _(), por ejemplo si queremos traducir "Hello" debería declararse como _("Hello") del resto se encargara gettext.

import gettext
gettext.translation("es", "./locale",languages=['es']).install()


El directorio locale/ es el que tendrá los ficheros de traducción.

Suponiendo que tenemos una aplicación que se llama aox.py que contiene strings que debemos traducir podríamos generar los ficheros de traducción con los siguientes comandos:

$xgettext aox.py -o locale/es/LC_MESSAGES/aox.pot
$msginit -i locale/es/LC_MESSAGES/aox.pot -o locale/es/LC_MESSAGES/es.po
$vim locale/es/LC_MESSAGES/es.po
$msgfmt locale/es/LC_MESSAGES/es.po -o locale/es/LC_MESSAGES/es.mo


En caso de modificar el programa o strings a traducir podremos actualizar los ficheros de traducción con los siguientes comandos:

$mv locale/es/LC_MESSAGES/aox.pot locale/es/LC_MESSAGES/aox.old.pot
$xgettext aox.py -o locale/es/LC_MESSAGES/aox.new.pot
$msgmerge -o locale/es/LC_MESSAGES/aox.pot locale/es/LC_MESSAGES/aox.old.pot locale/es/LC_MESSAGES/aox.new.po
$mv locale/es/LC_MESSAGES/es.po locale/es/LC_MESSAGES/es.old.po
$msginit -i locale/es/LC_MESSAGES/aox.pot -o locale/es/LC_MESSAGES/es.new.po
$msgmerge -o locale/es/LC_MESSAGES/es.po locale/es/LC_MESSAGES/es.old.po locale/es/LC_MESSAGES/es.new.po
$vim locale/es/LC_MESSAGES/es.po
$msgfmt locale/es/LC_MESSAGES/es.po -o locale/es/LC_MESSAGES/es.mo

No hay comentarios:

Publicar un comentario