Почему gettext (Python) не работает без файлов .mo?

Gettext в моем приложении выдает следующую ошибку, когда файлы .mo удаляются из ... / LC_MESSAGES, но есть файлы .po:

No translation file found for domain', domain)
FileNotFoundError: [Errno 2] No translation file found for domain: 'bot'

В чем может быть причина? Я видел несколько проектов без файлов .mo, и они работали. Например, файлы .mo указаны в файле Python gitignore (https://github.com/github/gitignore/blob/master/Python.gitignore; строка 55), поэтому их следует удалить из репозитория.


person Bakhanov A.    schedule 23.06.2020    source источник


Ответы (1)


Файлы .po - это исходные файлы, а файлы .mo - это скомпилированные каталоги переводов, используемые во время выполнения. Поэтому краткий ответ заключается в том, что gettext ищет только .mo файлы, а не .po файлы, и это сделано намеренно.

Это правда, что некоторые фреймворки используют .po файлы непосредственно во время выполнения, но Python gettetxt явно не использует, и для такого дизайнерского решения есть веские причины. См. Преимущества компиляции файлов po в mo, где Я уже подробно остановился на этой теме.

person Guido Flohr    schedule 08.07.2020