[Python-es] Traducir correctamente aplicación con gettext bajo windows.

Chema Cortes py en ch3m4.org
Vie Mayo 3 20:29:06 CEST 2013


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

El 02/05/13 08:15, manuelcortez escribió:
> Hola a todos,
> 
> Ahora escribo por aquí para pedir un poco de ayuda porque tengo un 
> problema con la traducción de una aplicación en Python, que se
> supone debería funcionar bajo un entorno Windows. Paso a explicar.
> 
> Hace dos o tres meces, para un centro al que colaboro, empecé a
> hacer una aplicación de asistencia para practicar la dactilografía
> [escritura en el teclado con los dedos de las dos manos]. Hoy
> intenté ver si podía traducirlo, porque en principio solo lo
> escribí pensando en el español. La aplicación es multiplataforma,
> aunque tiene variaciones (en Windows usé PyGtk2.24 y en GNU/Linux
> Gtk+3 con GObject). El problema, es que nada de lo que he hecho
> funciona en lo más mínimo. Se supone que las traducciones están
> creadas, y se encuentran en la carpeta locale de la aplicación.
> Solo traduje un mensaje, para ver si me funcionaba, y parece que no
> hay caso.
> 
> Hice lo siguiente, en este orden: Primero, en la parte de la
> aplicación que despliega la interfaz gráfica, puse estas líneas,
> según leí en esta dirección [1]: import gettext 
> gettext.textdomain("app") gettext.bindtextdomain("app",
> "./locale") _ = gettext.gettext
> 
> Luego, en uno de los mensajes (realmente fue uno bastante al azar,
> el primero que vi), intenté probar esto, haciendo _("message"), con
> lo que según entiendo, se marcan las cadenas para traducción.
> 
> Después usé un script por línea de comandos que descargué de este 
> proyecto [2], el cual modifiqué para que me generara la plantilla
> de traducción para el programa con PyGettext. Se generó bien.
> Luego, el archivo para traducir ese mensaje al español lo hice con
> este comando: msginit -i messages.pot -o es.po Igual que el
> anterior, todo fue sin problemas. Eso sí, por motivos que aún
> desconozco, tuve que establecer la codificación del archivo como 
> cp1252 porque así toma las cadenas el programa. Una vez todo estuvo
> listo, y el único mensaje traducido, con esto creé el archivo que
> la máquina ha de leer: msgfmt es.po -o
> locale/es/LC_MESSAGES/app.mo
> 
> Coloco este directorio en la misma carpeta donde están los demás 
> archivos de la aplicación, intento abrirla, pero sale el mensaje
> en inglés, como si es que no existiera la traducción. El windows
> está configurado en español, y no sé exactamente qué de todo esto
> estoy haciendo mal para que no funcione como se espera.
> 
> Ya intenté también copiar el directorio es como es_ES y es_MX,
> incluso los tres al mismo tiempo, y en la llamada a
> gettext.bindtextdomain() cambiar de "./locale" a solo "locale" y a
> "/locale", pero nada.
> 
> ¿Alguna idea?


Es muy probable que en tu windows no estén asignadas las variables de
entorno que indican el lenguaje. Puedes usar el siguiente script para
configurar el entorno antes de ejecutar tu programa:

  https://launchpad.net/gettext-py-windows

Basta añadir por delante de las llamadas a gettext lo siguiente:

import gettext_windows
gettext_windows.setup_env()






- -- 
Hyperreals *R: http://ch3m4.org/blog
Quarks, bits y otras criaturas infinitesimales
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQEcBAEBAgAGBQJRhAHjAAoJEFdWyBWwhL4FxHQH/2BZEH+rv1v1JEoVM7+2Pk1Q
O+xpPY1c+Au4VBSVGV96erwb4fKOnwqKikIDOgWDYQK1JBD+27sm/tET2U47KjDA
45Il8sd1BASSHu+32K2ZH5b1n8YEbizmVzVQn1z8y8E9zfaPUl0YX/+SFeRG7Yaq
1CcY7tLaSgOK+HMsXIad/GlTU/xwWovhfbSLigXqtZfGsW5YILmQn7CeO548shZd
CRToS3p+MhLP3eslbf5QE4i5cC+4bqBtkcWX8yRzwqtZWLwdq8VB5ZNt7j1Gz5BR
SqifN9x5t7yfylVDvz2a89hCfYFWXt3xofQ+f6KHhmSfZB44vsuwThKoLKmHoTA=
=7sQ/
-----END PGP SIGNATURE-----


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