С помощью утилит gettext Babel на основе Python можно ли сохранить комментарии переводчика и старые ) переводы (отмечены #~
) в .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 ""
Как я могу обновить файлы переводов, не теряя при этом свои комментарии и старые переводы?