在django` .po`文件中查找缺少的翻译

时间:2015-10-28 09:45:42

标签: django internationalization locale gettext

使用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 ""我得到了误报&#34; (即实际翻译的字符串,但其翻译开始下一行)。有数千条线,经常这样。

有任何聪明的建议吗?

由于

3 个答案:

答案 0 :(得分:2)

假设您正在使用一些受欢迎的编辑器:

  • 在gedit中,只需搜索msgstr ""\n\n
  • 即可
  • 在任何支持正则表达式的编辑器中,相同的msgstr ""\n\n都可以使用
  • 如果您是notepad.exe的必备用户,可以尝试使用同一行或msgstr ""\r\n\r\n
  • 运气
  • 你也可以尝试一些专业的编辑,check this
  • 最后,您可以执行以下操作:sed -i '/msgstr ""/{N;N; s/\n\n/\n# translate me!\n\n/g}' django.po然后在文件中搜索# translate me!条评论。

答案 1 :(得分:1)

检查缺少的翻译和其他错误的最简单方法是使用“ msgcmp”实用程序。实际上,它应该用于将翻译文件(.po)与模板(.pot)进行比较,但是将.po文件与自身进行比较非常高兴:

msgcmp path/to/nl.po path/to/nl.po

可以解决问题,甚至在任何翻译被标记为模糊的情况下也会失败(除非您指定--use-fuzzy)。

答案 2 :(得分:0)

您可以使用

msgfmt --statistics --output=/dev/null locale/django.po

查看有多少缺失的翻译(如果有),以及

msgattrib --untranslated locale/fr/LC_MESSAGES/django.po

列出未翻译的消息。