[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