Diccionarios y gettext

Francisco Javier F. Serrador serrador en tecknolabs.com
Sab Nov 18 15:16:15 CET 2006


> ¿Estás seguro? El _( ) es en realidad una función, no una "macro".
> Para acceder al contenido traducido bastaría con
> CATEGORIES["default"]["name"]
> 
> Otro problema diferente estaría en que el diccionario ya queda
> traducido en el momento de su creación y que no sea precisamente lo
> que buscas.

Claro que estoy seguro. Cuando aplicas _() a un string, lo que devuelve
la función es el mismo string. Tienes que aplicarla a una variable para
obtener la traducción, porque es una función que dependiendo del tipo de
datos devuelve una cosa u otra,  ej: 

from gettext import gettext as _
tmp = _("love") 
print tmp 
"love"
print _(tmp)
"amor"

(Tened en cuenta que si ejecutas esto en consola necesitas prepatarte un
po con la traducción y poner el dominio, etc)

Aquí el problema está en que al definir un diccionario, en la llamada al
diccionario, _(tmp) contiene también un componente léxico que es un
string _(tmp["love"]) y eso es lo que crea problemas, porque se
desencadenan sustituciones en tiempo de ejecución que transforman la
clave del diccionario usando su traducción, desencadenando llamadas tipo
tmp["amor"] y devolviendo el error de clave no encontrada (obvio)

La pregunta es si existe alguna manera de solucionar esto. Yo lo he
resuelto metiendo el diccionario dentro de una clase y creando métodos
para acceder a su contenido traducido, pero me gustaría contrastar
opiniones con alguien que lleve más tiempo programando en python (Mi
experiencia con este lenguaje deben ser unas 60 horas).


Gracias por la ayuda y vuestros comentarios


> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

------------ 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