Как мне использовать несколько файлов .mo одновременно для перевода gettext?

Короче говоря, могу ли я использовать в 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 .

6
задан Zsolt Botykai 15 January 2012 в 20:54
поделиться