我该如何在Django中加入惰性翻译?

5

我需要使用惰性翻译,但同时我也需要进行翻译 - 如何处理?

这段代码正在做我需要的事情:

print ugettext_lazy('Hello world!')

现在我想将两个懒惰的翻译合并在一起,并将其分别翻译(我知道这样做不会奏效,但我想要两个翻译字符串)。

print ugettext_lazy('Hello world!') + ' ' + ugettext_lazy('Have a fun!')

我可以编写这样的代码,但会生成比所需更多的翻译。
print ugettext_lazy('Hello world! Have a fun!')

是否有可能拥有两个翻译字符串和懒惰翻译?

2个回答

16
自从Django 1.11开始,string-concat已被弃用,应使用format_lazy替代。
from django.utils.text import format_lazy
from django.utils.translation import ugettext_lazy

name = ugettext_lazy('John Lennon')
instrument = ugettext_lazy('guitar')
result = format_lazy('{} : {}', name, instrument)

0

我认为你不能这样做,否则会导致另一个字符串被翻译...

这是从文档中获取的示例。没有提到将2个翻译文件合并在一起,因此我认为这是不可能的,但我可能错了。

这是正确的方法。

https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#joining-strings-string-concat

from django.utils.translation import string_concat
from django.utils.translation import ugettext_lazy
...
name = ugettext_lazy('John Lennon')
instrument = ugettext_lazy('guitar')
result = string_concat(name, ': ', instrument)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接