Как включить локализованное сообщение в Python setuptools? - PullRequest
0 голосов
/ 26 марта 2019

Я следовал за процессами Python i18n и l10n, чтобы выводить и переводить текстовые сообщения в приложении Python. Но когда я упаковываю код Python в пакет wheel, я не могу найти никаких указаний в документации по setuptools.

Поскольку файлы локализованных сообщений можно рассматривать как файлы данных. Возможно, я мог бы использовать пароли package_data для включения этих файлов. Тем не менее, это не кажется правильным способом сделать это. Поскольку развернутые файлы локализованных сообщений должны находиться либо в системной локали по умолчанию / usr / share / locale, либо в пользовательском расположении. В любом случае, мне трудно подключить пакет pkg_resources к пакету gettext без вмешательства в реальный взлом физического пути.

1 Ответ

0 голосов
/ 03 апреля 2019

Вот что я сделал. Я проверил, что пакет wheel развернут и правильно загрузил локализованный файл каталога сообщений * .mo в Linux, Mac OSX и Windows 10.

  1. Переместите папку locales в папку пакета верхнего уровня Python. Например, скажем, ваше имя пакета pkg1, и у вас есть my_msg.mo файл каталога для французского языка. Переместите файл * .mo в pkg1/locales/fr/LC_MESSAGES/my_msg.mo

  2. В вашем файле setup.py добавьте: ... package_data={'pkg1': ['pkg1/locales/<em>/LC_MESSAGES/</em>.mo']}, include_package_data=True, ...

  3. В вашем скрипте Python используйте следующий способ для загрузки без жесткого кода любого физического пути: ... locale_path = pkg_resources.resource_filename('pkg1', 'locales') my_msg = gettext.translation(domain='my_msg', localedir=locale_path, fallback=True) _T = my_msg.gettext print(_T("hello world!")) ...

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