如何在Django中加入懒惰翻译?

时间:2015-03-25 09:50:46

标签: python django translation django-i18n

我需要使用懒惰的翻译,但我还需要翻译 - 如何处理?

此代码正在执行我需要的操作:

print ugettext_lazy('Hello world!')

现在我想加入两个懒惰的翻译并单独翻译(我现在不行,为什么但想要有两个翻译字符串)。

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

我可以执行此类代码,但它会产生比需要更多的翻译。

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

是否可以有两个翻译字符串和延迟翻译?

2 个答案:

答案 0 :(得分:8)

由于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)

答案 1 :(得分: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)