Django: ленивый перевод при составлении переведенных строк - PullRequest
6 голосов
/ 09 ноября 2011

В Django я с радостью использую ugettext_lazy, чтобы отложить перевод строки только тогда, когда необходимо ее представление.

Проблема в том, что когда я объединяю ленивую строку в нормальную строку или когдаЯ использую его методы (например, capitalize ()), строка оценивается, и я теряю ленивый перевод.

Например:

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

Я знаю, что это нормальное поведение Джанго, но мне интересноесли кто-то решил эту проблему.

1 Ответ

6 голосов
/ 20 ноября 2011

Для объединения можно использовать string_concat (до 1,10) / format_lazy (от 1,11), который создает ленивый объект

Если выхотите реализовать ленивый capitalize, использовать django.utils.functional.lazy декоратор.См. string_concat реализация .

...