RE: [Python-es] Internacionalización

Python python en ammsoft.com
Dom Jun 14 11:58:10 CEST 2009


Lo conseguí, funciona correctamente.

Modulo1.py
_G.GavOperIdioma = "fr" #se define idioma francés
idioma = _G.GavOperIdioma
......
......

gettext.install('app1', './locale', unicode=True)
locale.setlocale(locale.LC_ALL, '')

vidioma = locale.getdefaultlocale()[0]

try:
    gettext.translation("app1", ".\locale",languages=[idioma]).install()
except:
    #si no se encuentra el directorio con la traduccion del idioma
utiliza
    #la version en castellano
    idioma = "es"

    #carga diccionario castellano en caso de error u omisión
    try:
        gettext.translation("app1",
".\locale",languages=[idioma]).install()
    except (Exception),e:
        _G.dLogg.error("Error cargando idioma (%s). %s" % (idioma,e))

    #a partir de aquí las cadenas de texto entre _("") se traducen

modulo2.py
_X = None #puntero a función gettext local para este módulo.

__init__():
        idioma = _G.GavOperIdioma 
        gettext.install('app2', './locale', unicode=True)
        t = gettext.translation("app2", "./locale",languages=[idioma])
        t.install()
        
        global _X
        _X = t.gettext
        #a partir de aquí las cadenas de texto, de ESTE MODULO, entre
_X("") se traducen teniendo en cuenta app2.mo, las _("") siguen
traduciéndose apuntando al app1.mo.

Esto es ideal, ya que el segundo módulo puede tener texto que solo le
pertenezca a él.
Pero también puede tener, por ejemplo, mensajes de error genéricos, que
se compartan con el resto de módulos.

Ahora solo hay que poner los ficheros app1.mo y app2.mo en la carpeta
del locale correspondiente y listo.

Esta forma de proceder, ya que me sirve, la considero válida, y ya la
estoy poniendo en practica.

He intentado "aprender" mirando algún código que utilice addons para ver
como se lo montan, pero no se tanto Python como para enterarme.
En concreto he estado mirando el proyecto OpenErp.
Es una gozada, espero llegar a entender su estructura. Sobre todo lo de
montar addons y lo de la internacionalización, soy incapaz de encontrar
dónde y cómo traduce (pero lo seguiré intentando). 

Gracias por todo.
Saludos.


-----Mensaje original-----
De: python-es-bounces en aditel.org [mailto:python-es-bounces en aditel.org]
En nombre de Antonio Pérez
Enviado el: sábado, 13 de junio de 2009 14:46
Para: Lista de discusión sobre python en castellano
Asunto: Re: [Python-es] Internacionalización

Hola!

Me alegro... Ya contarás si lo conseguiste... ;)

2009/6/11 Python <python en ammsoft.com>:
> Me gusta la solución.
> Gracias, voy a ver si hago unas cuantas pruebas.
>
>>> ¿Cómo se cargan ficheros .mo adicionales?
>>> He intentado de añadir otra línea gettext.install, pero lo que hace
> es
>>> que
>>> desaparecen las traducciones del fichero anterior.
>>
>>Pues yo lo que haría es tener una función para los módulos
>>adicionales, de forma que haces el "install" para la función gettext
>>general ( _ ), y algo así para los módulos:
>>
>>t = gettext.translation('modulo', '/usr/share/locale')
>>_M = t.ugettext
>>
>>A partir de ahí, las cadenas del módulo las tienes que "envolver" con
>>la función "_M", en vez de "_".
>
>
>
>
> _______________________________________________
> Lista de correo Python-es
> http://listas.aditel.org/listinfo/python-es
> FAQ: http://listas.aditel.org/faqpyes
>



-- 
Saludos:
Antonio Pérez
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes

------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es