6

In Django, sto usando felicemente ugettext_lazy per pospone la traduzione di una stringa solo quando è necessaria la sua rappresentazione.Django: mantieni la traduzione lazy quando componi stringhe tradotte

Il problema è che quando concatenare una stringa lazy su una stringa normale o quando utilizzo i suoi metodi (ad es. Capitalize()), la stringa viene valutata e io perdo la traduzione lazy.

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 

So che questo è il comportamento normale di Django, ma mi chiedo se qualcuno ha risolto questo problema.

+1

Per django 1.11 e successivi. https://stackoverflow.com/questions/29252312/how-can-i-join-lazy-translation-in-django/47263039#47263039 – Jay

risposta

6

per concatenare, è possibile utilizzare string_concat (fino a 1.10)/format_lazy (da 1.11), che crea un oggetto pigro

Se si desidera implementare pigro capitalize, utilizzare django.utils.functional.lazy decoratore. Vedi string_concatimplementation.

Problemi correlati