Foros del Web » Programando para Internet » Python »

Problema para traducir textos de una aplicacion

Estas en el tema de Problema para traducir textos de una aplicacion en el foro de Python en Foros del Web. Buenos dias. Tengo un problema con un programa que estoy haciendo y me gustaria saber si alguien me puede ayudar. Os cuento, necesito hacer una ...
  #1 (permalink)  
Antiguo 08/09/2009, 04:59
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Problema para traducir textos de una aplicacion

Buenos dias. Tengo un problema con un programa que estoy haciendo y me gustaria saber si alguien me puede ayudar.

Os cuento, necesito hacer una aplicación en la que pueda tener los textos traducidos en varios idiomas. Busque en internet y encontre que se puede hacer con gettext, por lo que intente hacer un programa sencillo.

Os dejo el codigo y los pasos que he seguido.

1º Me bajo los drives necesarios para tener gettext en windows.
2º Creo una carpeta para dejar todo lo referente a gettext (C:\gettext)
3º Creo un programa llamado programita.py con el siguiente codigo:

import gettext

gettext.textdomain("programita")
gettext.bindtextdomain("programita","C:\gettext\mo ")

print gettext.gettext("Hellooo")

4º Me meto en el directorio C:\gettext y creo la carpeta mo, luego la carpeta es y por ultimo la carpeta LC_MESSAGES de tal modo que la ruta seria: C:\gettext\mo\es\LC_MESSAGES

5º Abro un terminal con cmd, me voy al directorio C:\gettext\bin y ejecuto las siguientes instrucciones:
a)xgettext --language=Python -o messages.pot programita.py
b)msginit -i messages.pot -o es.po (Porque quiero crear el idioma español)

6º Edito el archivo es.po, pongo el charset a UTF-8 y luego introduzco la cadena a traducir de forma que me queda:
#: programita.py:6
msgid "Hellooo"
msgstr "Hola"

7º Una vez guardado el archivo, vuelvo al cmd y ejecuto: msgfmt es.po -o mo\es\LC_MESSAGES\programita.mo

En teoria, con esto seria suficiente, con ejecutar el programa me tendria que mostrar "Hola" pero haga lo que haga siempre me muestra "Hellooo" y no entiendo por que.

No se si he hecho algo mal del codigo, si las rutas estan mal o que, pero ya no se que mas modificar.

Si alguien me puede ayudar, le estaré muy agradecido.

Saludos y gracias.
  #2 (permalink)  
Antiguo 08/09/2009, 09:50
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema para traducir textos de una aplicacion

Nunca he trabajado con gettext, pero leyendo el manual creo que el problema está en que gettext busca el idioma al que debe "traducir" en las variables de entorno LANGUAGE, LC_ALL, LC_MESSAGES, y LANG. Considerando que estas variables por lo general no existen en Windows, yo probaría establecerlas a "es" y luego volver a probar el sistema.


Saludos.
  #3 (permalink)  
Antiguo 08/09/2009, 14:39
 
Fecha de Ingreso: septiembre-2009
Mensajes: 2
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Problema para traducir textos de una aplicacion

Hola AlvaroG, gracias por contestar. Yo tambien lei la documentacion de gettext, pero en todos los ejemplos que he leido, se creaba una carpeta con LC_MESSAGES como ultima carpeta donde va el .mo y supongo que sera por eso, porque busca los idiomas en esas carpetas.

Por otra parte, no entiendo a que te refieres cuando dices que tu probarias a establecerlas a "es", sino te importa explicarmelo mejor te lo agradeceria.

Repito que todos los ejemplos que he visto por internet, todo el mundo se crea una serie de carpeas locales hasta crear una ruta del estilo: loquesea\es\LC_MESSAGES.

Saludos y gracias.
  #4 (permalink)  
Antiguo 08/09/2009, 15:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema para traducir textos de una aplicacion

No se trata de carpetas sino de variables de entorno.
Si estás en Windows XP, ve a Propiedades del Sistema -> Avanzado -> Variables de Entorno y crea una nueva, con el valor "es" y de nombre cualquiera de los 4 mencionados antes.
Creo que en una ventana de DOS debería funcionar también escribir
Código:
set LANG="es"
Pero sería válida solamente para esa ventana de DOS, no para el resto del sistema.

En Unix es más sencillo, pero dado que antes escribiste "c:\" asumo que estás en Windows


Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:25.