С помощью утилит Babel gettext на основе 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 ""
Как я могу обновить свои файлы переводов, не теряя свои комментарии и старые переводы?