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?