使用 Django,您可以使用
django.utils.translation.ugettext
和 ....ugettext_lazy
(以及一些模板标签)来处理本地化消息的翻译。
稍后,使用命令:
django-admin.py makemessages -l <LANGUAGE>
,您可以生成包含原始字符串的po
文件,以便开发者可以指定所需的翻译。
问题:是否有 django 命令或任何其他快速方法来找出哪些消息尚未翻译?
通常我会在
msgstr ""
文件中查找字符串 po
,但这是不准确的,因为有些翻译是多行的,如下所示:
#file.py:xyz
msgid ""
"Some very long text"
msgstr ""
"The translation of some very long text"
因此,寻找
msgstr ""
我得到“误报”(即实际翻译的字符串,但其翻译从下一行开始)。对于数千行,这种情况很常见。
有什么明智的建议吗?
谢谢
您可以使用
msgfmt
来查看有多少缺失的翻译,如下所示:
$ msgfmt --statistics --output=/dev/null locale/fr/LC_MESSAGES/django.po
219 translated messages, 1 untranslated message.
您可以使用
msgattrib
列出未翻译的消息,如下所示:
$ msgattrib --untranslated locale/fr/LC_MESSAGES/django.po
# Cut for brevity
msgid "French"
msgstr ""
假设您正在使用一些流行的编辑器:
msgstr ""\n\n
msgstr ""\r\n\r\n
sed -i '/msgstr ""/{N;N; s/\n\n/\n# translate me!\n\n/g}' django.po
,然后在文件中搜索 # translate me!
注释。检查缺失翻译和其他错误的最简单方法是使用“msgcmp”实用程序。它实际上应该用于将翻译文件 (.po) 与模板 (.pot) 进行比较,但它非常乐意将 .po 文件与自身进行比较:
msgcmp path/to/nl.po path/to/nl.po
会成功,如果任何翻译被标记为模糊,甚至会失败(除非你指定 --use-fuzzy)。