6

En Django, estoy felizmente usando ugettext_lazy para posponer la traducción de una cadena solo cuando se necesita su representación.Django: mantener la traducción diferida al componer cadenas traducidas

El problema es que cuando concateno una cadena perezosa a una cadena normal o cuando uso sus métodos (por ejemplo, capitalizar()), la cadena se evalúa y pierdo la traducción diferida.

E.g.

label = ugettext_lazy('my label') #This is lazy 
label_concat = label + ' some other string' #'label_concat' contains transalted 'label' 
label_cap = label.capitalize() #'label_cap' contains transalted 'label' 

#Set language 
... 

print label #Translated 
print label_cap #Not translated 

Sé que este es el comportamiento normal de Django, pero me pregunto si alguien ha resuelto este problema.

+1

Para django 1.11 y posteriores. https://stackoverflow.com/questions/29252312/how-can-i-join-lazy-translation-in-django/47263039#47263039 – Jay

Respuesta

6

para concatenar, puede utilizar string_concat (hasta 1,10)/format_lazy (de 1,11), que crea un objeto vago

Si desea implementar perezoso capitalize, utilice django.utils.functional.lazy decorador. Ver string_concatimplementation.

Cuestiones relacionadas