[Pro - Bolivia] [General] python+gettext, programas multilenguaje
Rolando Espinoza La Fuente
darkrho en gmail.com
Lun Jul 31 17:40:19 GMT 2006
Seguro muchos se habrán dado cuenta que los programas SL generalmente
vienen en varios idiomas.
Uno de los métodos más usados es gettext, librería de GNU inicialmente
para C pero implementado en varios lenguajes.
Les mostraré lo fácil que es utilizarlo con python:
Nuestro programa inicial, minombre.py:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
nombre = 'Rho'
print 'Mi nombre es: %s' % (nombre)
# __EOF__
Nuestro programa gettext'izado, minombre_i18n.py:
#!/usr/bin/env python
nombre = 'Rho'
#módulo gettext
import gettext
#dominio='minombre', path a buscar '.', si no encuentra fallback=True
t = gettext.translation('minombre', '.', fallback=True)
#función de traducción automágica ;-)
_ = t.gettext
print _('Mi nombre es: %s') % (nombre)
# __EOF__
Generamos nuestro primer pot:
shell$ xgettext minombre_i18n.py -o minombre.pot
Una copia para nuestra traducción al inglés:
sheel$ cp minombre.pot en.po
Contenido en.po:
# Demo Gettext
# Copyright (C) 2006, Rho
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Mi Nombre\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2006-07-31 13:26-0400\n"
"PO-Revision-Date: 2006-07-21 13:27-0400\n"
"Last-Translator: Rho <EMAIL en ADDRESS>\n"
"Language-Team: EN <LL en li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: minombre_i18n.py:9
#, python-format
msgid "Mi nombre es: %s"
msgstr "My name is: %s"
# __EOF__
Creamos las rutas:
shell$ mkdir -p en/LC_MESSAGES/
"Compilamos" nuestro .po:
shell$ msgfmt en.po -o en/LC_MESSAGES/minombre.mo
A probar!
$ python minombre_i18n.py
Mi nombre es: Rho
$ LANGUAGE=en python minombre_i18n.py
My name is: Rho
$ LANGUAGE=fr python minombre_i18n.py
Je m'appelle: Rho
$ LANGUAGE=qh python minombre_i18n.py
Rho, Ima Sutinki?
Gettext puede ser usado en c, c++, php, perl, bash, java, pascal, haskell, etc.
Como colaborar con la traducción de un programa? Pues fácil, te bajas
el .po, lo traduces y lo envías al autor... ;-)
--
~Rho
GPG Key: http://darkstar.pinguinos.org/~rolando/darkrho.key.asc
GPG Fingerprint: E91A EADE 75D1 4A82 E564 322F E01C EB49 4372 ED1A
_______________________________________________
General mailing list
General en softwarelibre.org.bo
http://softwarelibre.org.bo/cgi-bin/mailman/listinfo/general
Más información sobre la lista de distribución Bolivia