Почему gettext автоматически выдает мне неправильные переводы?

#python #django #translation #gettext

#python #django #перевод #gettext

Вопрос:

Я использую переводы gettext для своего проекта Django и продолжаю добавлять в файл .po новые и новые переводы с помощью makemessages and compilemessages . Сейчас происходит то, что когда я создаю сообщения, я проверяю файл .po, и там многие строки были автоматически переведены, хотя это 100% уникальная строка.

пример: теперь генерируется:

 #: .agregatormodels.py:1855
#, fuzzy
#| msgid "Distribution order"
msgid "Distribution Product Parameters"
msgstr "Objednávka u distribuce"
  

он автоматически переводится в соответствии с msgid "Distribution order" тем, что это не близко к фактической строке, и нет никакой ссылки на это msgid .

Может кто-нибудь объяснить мне, что происходит в фоновом режиме и как я могу удалить все такие ссылки, чтобы msgstr я получал только пустые строки (если строки не похожи на 100%)? Заранее благодарю.

Мой совет заключается в том, что msgid он выделяется на основе фрагментов строк в поисках «наилучшего соответствия». Если это так — как остановить это поведение?

Ответ №1:

Если msgmerge найдет переводы для похожих строк, он предложит их как «нечеткие». Это то, что вы видите здесь.

Нечеткие переводы не предназначены для использования / развертывания вашим приложением. Если вы скомпилируете свой .po файл в .mo файл с msgmerge помощью (это то, что compilemessages , вероятно, делает), эти нечеткие переводы игнорируются.

Просто оставьте нечеткие переводы в .po файле. Они не вредят и облегчают будущие переводы, потому что переводчику не нужно переводить с нуля, а вместо этого исправлять автоматически предложенный перевод.