6

在Django的时候,我愉快地使用ugettext_lazy到POSPONE只有当需要它表示的字符串的翻译。Django的:保持懒翻译撰写翻译的字符串

问题是,当我将一个懒惰的字符串连接到一个普通的字符串或者当我使用它的方法(例如,大写())时,字符串被评估,我松散懒惰的翻译。

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 

我知道这是Django的正常行为,但我不知道是否有人解决了这个问题。

+1

对于Django 1.11和更进一步。 https://stackoverflow.com/questions/29252312/how-can-i-join-lazy-translation-in-django/47263039#47263039 – Jay

回答

6

对于串联,可以使用string_concat(最高1.10)如果您希望实现懒capitalize,使用django.utils.functional.lazy装饰它创建了一个懒惰的对象

/format_lazy(1.11)。见string_concatimplementation