Internacionalizacion - dudas varias

Toni Martínez python en ammsoft.com
Dom Ene 11 23:44:46 CET 2004


Estoy aprendiendo como preparar las futuras aplicaciones para que funcionen
en las diferentes lenguas de los operadores de la misma.
Todo va bien de momento, pero no termino de dar el tema por completado.
Intentaré explicarme:

Entorno de trabajo Windows 2000 + Python 2.3.3 + wxpython + PDO para
gestionar las bases de datos (Oracle, Mysql y  Postgress)
Tengo varios módulos (sintetizaré al máximo)
He generado un archivo etiquetas.mo mediante pygettext.py y msgfmt.py
situándolo en .\locale\es\LC_MESSAGES
Y otro en .\locale\fr\LC_MESSAGES con la traducción en francés.

Módulos:
login.py ventana de identificación del operador

#cargamos el idioma por defecto de la aplicación
import gettext
gettext.translation("etiquetas", ".\locale",languages=['es']).install()

# y se asignan los valores a las etiquetas y botones pertinentes
        self.staticText1.SetLabel(_('Operador :'))
        self.staticText2.SetLabel(_('Clave Acceso :'))
        self.btcancelar.SetLabel(_("&Cancelar"))
        self.btaplicar.SetLabel(_("&Aceptar"))

inicio.py menú principal de la aplicación

# cargamos el idioma del operador (lo hemos sacado de la base de datos tabla
operadores)
import gettext
.....
.....
lang = rs.fields['OP_IDIOMA'].value
gettext.translation("etiquetas", ".\locale",languages=[lang]).install()

# y mostramos el menú y elementos que necesitemos (todos ellos en la lengua
del operador).
........

# ahora desde el modulo inicio.py al seleccionar una opción determinada
importo el modulo empleados.py

1.- AQUI tengo la primera duda.
Necesito volver a realizar el gettext.translation("..... dentro del
empleados.py
Sino, las etiquetas _("...") no son traducidas.
¿Hay alguna manera de que no tenga que ir haciendo el gettext en cada
módulo?
Ya que hasta que no vuelva a cambiar de operador el idioma será el mismo.

2.- El fichero PO resultante del proceso pygettext.py
    a.- Si el charset es el iso-8859-1, lo que estoy haciendo será
compatible en Linux u otras plataformas?
    b.- Los caracteres acentuados los ha convertido en Unicode (creo) por
ejemplo la í = \355 la ó \363
        Hay alguna forma que pygettext.py mantenga los caracteres ASCII
normales o es aconsejable dejarlos tal como quedan.
        El resultado final usando los ascii (í,ó,..) o los (\355,\363...) ha
sido el mismo. Las ventanas muestran las vocales acentuadas.
        ¿En otras plataformas que pasaría?

3.- Cuando se realicen modificaciones en los módulos y aparezcan nuevas
etiquetas a traducir:
    ¿Cómo se gestionan los ficheros PO para saber que nuevas etiquetas deben
ser traducidas y o cuales han sido modificadas?
    Lo pregunto por si hay alguna herramienta que facilite la tarea. Ya que
si hay que hacerlo a pelo,"mi gozo en un pozo".

4.- Hay alguna forma de poder decirle que la localización del fichero MO no
sea la carpeta LC_MESSAJES (Pura curiosidad!)
    Preferiría tener todas las traducciones en un sólo directorio, con
nombres diferentes

              gettext.translation("etiq_" + lang, ".\locale").install()

Saludos.
_______________________________________________

python en ammsoft.com

{8~~~~~~~~~~~~~~~~

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20040111/cf62bca8/attachment.html>
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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