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 gettextgettext.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