在应用'购买'中,有一个文件reports.py。在这个应用程序中,我正在生成一些pdf报告,有时我想翻译成捷克语。不幸的是,makemessages脚本没有检测到可翻译的字符串。
运行以下内容表明正在处理reports.py。但是没有添加任何文件。
.././manage.py makemessages -l cs_CZ -v 2
processing file reports.py in .
processing locale cs_CZ
这是来自reports.py文件的片段:
from django.utils.translation import ugettext as trans
def purchase_order_report(purchase_order, language='en'):
...
doc.add_text(trans('Items requested'), 'Heading2')
...
Locale文件夹的设置如下:
LOCALE_PATHS = (
os.path.join(BASE_DIR, "locale"),
)
编辑: 似乎django makemessages没有正确翻译导入。
运行以下工作(但在将变量解压缩到_时可能会发生冲突):
from django.utils.translation import ugettext as _
def purchase_order_report(purchase_order, language='en'):
...
doc.add_text(_('Items requested'), 'Heading2')
...
运行以下作品(但如果你想混合和匹配ugettext和ugettext_lazy,则不是很方便):
from django.utils.translation import ugettext
def purchase_order_report(purchase_order, language='en'):
...
doc.add_text(ugettext('Items requested'), 'Heading2')
...
有什么想法吗?
答案 0 :(得分:0)
应用应该拥有自己的locale
目录。但如果它不存在,它就不会被创建。在应用程序中创建目录,然后它应该可以工作。
答案 1 :(得分:0)
xgettext
GNU命令接受--keyword=KEYWORD
选项以检测附加关键字。
我在shell中尝试了以下命令,结果与预期的一样:
xgettext -o - --from-code=UTF-8 -L Python -d django -ktrans reports.py
可悲的是,似乎还没有任何方法可以通过makemessages
Django(2.1)命令传递此选项:'(
关键字被硬编码在django/core/management/commands/makemessage.py
文件中(第570行)。