6

W Django, z przyjemnością używam ugettext_lazy, aby przesłać tłumaczenie ciągu znaków tylko wtedy, gdy potrzebna jest jego reprezentacja.Django: zachowaj leniwy tłumaczenie podczas komponowania przetłumaczonych ciągów znaków

Problem polega na tym, że gdy łączę ciąg leniwy z normalnym ciągiem lub gdy używam jego metod (na przykład capitalize()), ciąg jest oceniany i tracę leniwą translację.

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 

Wiem, że to normalne zachowanie Django, ale zastanawiam się, czy ktoś rozwiązał ten problem.

+1

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

Odpowiedz

6

Dla złączenie, można użyć string_concat (do 1,10)/format_lazy (od 1.11), który tworzy leniwe obiektowi

Jeśli chcesz realizować leniwy capitalize użyć django.utils.functional.lazy dekorator. Zobacz string_concatimplementation.

Powiązane problemy