Django:在编写已翻译字符串时保持惰性翻译

Django:在编写已翻译字符串时保持惰性翻译,django,internationalization,translation,gettext,lazy-evaluation,Django,Internationalization,Translation,Gettext,Lazy Evaluation,在Django中,我很高兴使用ugettext\u lazy仅在需要字符串表示时才对其进行翻译 问题是,当我将惰性字符串连接到普通字符串或使用其方法(例如capitalize())时,会对该字符串求值,并且会丢失惰性转换 例如 我知道这是Django的正常行为,但我想知道是否有人解决了这个问题 对于串联,您可以使用(最多1.10)/(从1.11)创建一个惰性对象 如果您希望实现lazycapitalize,请使用django.utils.functional.lazydecorator。有关dj

在Django中,我很高兴使用
ugettext\u lazy
仅在需要字符串表示时才对其进行翻译

问题是,当我将惰性字符串连接到普通字符串或使用其方法(例如capitalize())时,会对该字符串求值,并且会丢失惰性转换

例如


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

对于串联,您可以使用(最多1.10)/(从1.11)创建一个惰性对象

如果您希望实现lazy
capitalize
,请使用
django.utils.functional.lazy
decorator。有关django 1.11及更多信息,请参见
string\u concat

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