Спросите gettext о текущем языке и источнике перевода в Python - PullRequest
0 голосов
/ 11 февраля 2019

Я инициализирую gettext очень просто, как это в python3.

>>> import gettext
>>> gettext.install('i18n-test', 'locales')
>>> print(_('Hello World!'))
Hallo Welt!

Могу ли я спросить gettext, какой текущий язык он использует (не должен быть системным по умолчанию LANGUAGE!) И где он открывает.mo файл из?

Я не могу видеть что-то подобное в API.

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Функция find модуля gettext - это то, что вам нужно.Точнее, он используется внутри функции install, поэтому он возвратит то, что install будет использовать:

gettext.install(domain, localedir=None, codeset=None, names=None)Это устанавливает функцию _() во встроенное пространство имен Python, основанное на домене, localedir и наборе кодов, которые передаются в функцию translation() ...

затем

gettext.translation(domain, localedir=None, languages=None, class_=None, fallback=False, codeset=None)Вернуть экземпляр Translations, основанный на домене, localedir и языках, которые сначала передаются в find(), чтобы получить список связанных путей к файлу .mo ...

Поэтому вы должны использовать:

file = gettext.find('i18n-test', 'locales')

Должно возвращаться имя файла, например localedir/language/LC_MESSAGES/domain.mo, где language - язык, выбранный gettext.

0 голосов
/ 11 февраля 2019

Из документов;

Если вы используете этот API, вы будете влиять на перевод всего вашего приложения в глобальном масштабе.Часто это то, что вы хотите, если ваше приложение одноязычное, с выбором языка в зависимости от локали вашего пользователя.Если вы локализуете модуль Python или если вашему приложению нужно переключать языки на лету, вы, вероятно, захотите вместо этого использовать API на основе классов.

Так что вам, вероятно, будет лучше использовать API на основе классов для этого.Удачи!

...