Короче говоря, могу ли я использовать в python множество .mo
файлов для одного и того же языка одновременно?
В моем приложении на Python мне нужно использовать ] gettext
для I18N. Это приложение использует своего рода систему плагинов. Это означает, что вы можете загрузить подключаемый модуль и поместить его в соответствующий каталог, и он будет работать как любой другой пакет python. Основное приложение хранит файл .mo
, который он использует, скажем, в ./ locale / en / LC_MESSAGES / main.mo
. И плагин №1 имеет свой собственный файл .mo
с именем plugin1.mo
в том же каталоге.
Я бы использовал это для загрузки сообщений main.mo
I18N:
gettext.install('main', './locale', unicode=False)
Как я могу установить и другие, чтобы все плагины были переведены так, как должны?
] Решения, о которых я подумал:
Следует ли gettext.install ()
в пространстве имен каждого пакета? Но это переопределит _ ()
, определенное ранее, и испортит будущие переводы основного приложения.
Есть ли способ объединить два .mo
файлов в один (например, когда установлен новый плагин)?
Могу ли я объединить их во время выполнения в один объект GNUTranslation
? Или переопределить метод по умолчанию _ ()
, который добавляется в глобальное пространство имен? Тогда как мне выбрать этот вариант?
Вместо _ ('Hello World')
я бы использовал _ ('plugin1', 'Hello World in plug-in 1')
Примечание. Приложение не должно быть знает обо всех подключаемых модулях, которые должны быть установлены, поэтому он не может уже перевести все сообщения в свой файл main.mo
.