Python структура папок локализации - PullRequest
0 голосов
/ 02 марта 2020

Реализация интернационализации для сценария python, за которым я следовал https://inventwithpython.com/blog/2014/12/20/translate-your-python-3-program-with-the-gettext-module/

, который основан на документации python: https://docs.python.org/3/library/gettext.html

Я создал следующую структуру:

./Alignment.py
./Alignment.pot
./locale/es/LC_MESSAGES/Alignment.mo
./locale/es/LC_MESSAGES/Alignment.po
./locale/de/LC_MESSAGES/Alignment.mo
./locale/de/LC_MESSAGES/Alignment.po

Я получаю следующую ошибку:

File "C:\T\Repos\Alignment.py", line 481, in <module>
    t = gettext.translation('Alignment', locale_path, languages=['de'])
  File "C:\Program Files\Python\envs\py3\lib\gettext.py", line 515, in translation
    raise OSError(ENOENT, 'No translation file found for domain', domain)
FileNotFoundError: [Errno 2] No translation file found for domain: 'Alignment'

Я обнаружил, что gettext.py делает расширение имени языка в вызове к функции:

t = gettext.translation('Alignment', locale_path, languages=['de'])

Я приступил к изменению структуры следующим образом:

./Alignment.py
./Alignment.pot
./locale/Spanish/LC_MESSAGES/Alignment.mo
./locale/Spanish/LC_MESSAGES/Alignment.po
./locale/German/LC_MESSAGES/Alignment.mo
./locale/German/LC_MESSAGES/Alignment.p

Теперь это работает.

В автоматизации процесса перевода, программное обеспечение, используемое переводчиком, создает файл в папке «de» или «es». Я хотел бы использовать эти соглашения в моей структуре папок.

Python больше не использует это соглашение в папках локализации? Как я могу заставить этот gettext понять мою исходную структуру папок без изменения этой библиотеки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...