使用基于 Python 的Babel gettext 实用程序,是否有任何技术可以在文件更新时保留文件中的翻译器注释和旧(“过时”)翻译(标记为#~
)?.po
.pot
过时的翻译第一次出现在.po
文件中并pybabel update
运行时,翻译会用 标记#~
。这样一方面,它被视为注释,在翻译人员查看并更改之前不会使用,但另一方面,它不会被删除,因此翻译人员可以参考或复制文本从它到他们的其他翻译。
但是,下次pybabel update
运行时,所有注释都会从文件中永久删除。这意味着那些标有 的翻译也将#~
被删除。
例如,使用 Babel 0.9.6 版和Jinja2 2.6 版,以及以下文件:
./babel.ini
:
[jinja2: **/templates/**.html]
encoding = utf-8
./templates/test.html
:
<html><body>
<h1>{% trans %}My website{% endtrans %}</h1>
</body></html>
./i18n/pt_PT/LC_MESSAGES/messages.po
:
# ... header stuff generated from
# pybabel init -l pt_PT -d i18n -i i18n/messages.pot ...
# Don't forget, I want to remember something about this!
#~ msgid "My web page"
#~ msgstr "A minha página de web"
运行以下命令后:
$ pybabel extract -F babel.ini -o i18n/messages.pot .
$ pybabel update -l pt_PT -d i18n -i i18n/messages.pot
葡萄牙语messages.po
文件丢失了所有旧注释,仅包含:
./i18n/pt_PT/LC_MESSAGES/messages.po
:
# ... similar header stuff ...
#: templates/test.html:2
msgid "My web site"
msgstr ""
如何在不丢失评论和旧翻译的情况下更新我的翻译文件?