在 Django `.po` 文件中查找缺失的翻译
Finding missing translations in django `.po` files
使用 Django,您可以使用 django.utils.translation.ugettext
和 ....ugettext_lazy
(以及一些模板标签)来处理本地化消息的翻译。
稍后,使用命令:django-admin.py makemessages -l <LANGUAGE>
您可以生成包含原始字符串的po
文件,以便开发人员可以指定所需的翻译。
问题:是否有 django 命令或任何其他快速方法来找出哪些消息未被翻译?
通常我会在 po
文件中查找字符串 msgstr ""
,但这是不准确的,因为有些翻译是多行的,如下所示:
#file.py:xyz
msgid ""
"Some very long text"
msgstr ""
"The translation of some very long text"
因此,寻找 msgstr ""
我得到 "false positives"(即实际翻译的字符串,但其翻译从下一行开始)。有数千行,这很常见。
有什么聪明的建议吗?
谢谢
假设您使用的是一些流行的编辑器:
- 在大多数编辑器中,只需搜索
msgstr ""\n\n
- 在windows下/用记事本,也许你会需要像
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!
评论。
检查缺失翻译和其他错误的最简单方法是使用 "msgcmp" 实用程序。它实际上应该用于将翻译文件 (.po) 与模板 (.pot) 进行比较,但它非常乐意将 .po 文件与自身进行比较:
msgcmp path/to/nl.po path/to/nl.po
会成功,如果任何翻译被标记为模糊(除非您指定 --use-fuzzy),甚至会失败。
您可以使用
msgfmt --statistics --output=/dev/null locale/django.po
查看有多少缺失的翻译(如果有的话),以及
msgattrib --untranslated locale/fr/LC_MESSAGES/django.po
列出未翻译的消息。
使用 Django,您可以使用 django.utils.translation.ugettext
和 ....ugettext_lazy
(以及一些模板标签)来处理本地化消息的翻译。
稍后,使用命令:django-admin.py makemessages -l <LANGUAGE>
您可以生成包含原始字符串的po
文件,以便开发人员可以指定所需的翻译。
问题:是否有 django 命令或任何其他快速方法来找出哪些消息未被翻译?
通常我会在 po
文件中查找字符串 msgstr ""
,但这是不准确的,因为有些翻译是多行的,如下所示:
#file.py:xyz
msgid ""
"Some very long text"
msgstr ""
"The translation of some very long text"
因此,寻找 msgstr ""
我得到 "false positives"(即实际翻译的字符串,但其翻译从下一行开始)。有数千行,这很常见。
有什么聪明的建议吗?
谢谢
假设您使用的是一些流行的编辑器:
- 在大多数编辑器中,只需搜索
msgstr ""\n\n
- 在windows下/用记事本,也许你会需要像
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!
评论。
检查缺失翻译和其他错误的最简单方法是使用 "msgcmp" 实用程序。它实际上应该用于将翻译文件 (.po) 与模板 (.pot) 进行比较,但它非常乐意将 .po 文件与自身进行比较:
msgcmp path/to/nl.po path/to/nl.po
会成功,如果任何翻译被标记为模糊(除非您指定 --use-fuzzy),甚至会失败。
您可以使用
msgfmt --statistics --output=/dev/null locale/django.po
查看有多少缺失的翻译(如果有的话),以及
msgattrib --untranslated locale/fr/LC_MESSAGES/django.po
列出未翻译的消息。