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

问题描述 投票:0回答:3

使用 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 ""
我得到“误报”(即实际翻译的字符串,但其翻译从下一行开始)。对于数千行,这种情况很常见。

有什么明智的建议吗?

谢谢

django internationalization locale gettext
3个回答
7
投票

您可以使用

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 ""

6
投票

假设您正在使用一些流行的编辑器:

  • 在大多数编辑器中,只需搜索
    msgstr ""\n\n
  • 在Windows下/使用记事本,也许你会需要类似
    msgstr ""\r\n\r\n
  • 的东西
  • 你也可以尝试一些专业的编辑器,检查这个
  • 最终,您可以执行以下操作:
    sed -i '/msgstr ""/{N;N; s/\n\n/\n# translate me!\n\n/g}' django.po
    ,然后在文件中搜索
    # translate me!
    注释。

4
投票

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

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

会成功,如果任何翻译被标记为模糊,甚至会失败(除非你指定 --use-fuzzy)。

© www.soinside.com 2019 - 2024. All rights reserved.