Django:在编写翻译的字符串时保持延迟翻译

问题描述 投票:6回答:1

在Django中,我很高兴使用ugettext_lazy来推迟字符串的翻译,只有在需要它的表示时。

问题是,当我将一个惰性字符串连接到普通字符串或当我使用它的方法(例如,capitalize())时,字符串被评估并且我松散了延迟翻译。

EG

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的正常行为,但我想知道是否有人解决了这个问题。

django internationalization translation gettext lazy-evaluation
1个回答
6
投票

对于连接,你可以使用string_concat(最高1.10)/ format_lazy(从1.11开始)创建一个懒惰的对象

如果你想实现懒惰的capitalize,请使用django.utils.functional.lazy装饰器。见string_concat implementation

© www.soinside.com 2019 - 2024. All rights reserved.