Gettext: другой путь для каталогов сообщений - PullRequest
2 голосов
/ 23 сентября 2011

В приложении Python, которое использует gettext для поддержки интернационализации, я хотел бы изменить путь каталогов сообщений * .mo на po/language.mo вместо значения по умолчанию localedir/language/LC_MESSAGES/domain.mo, как я хотел бы использовать перевод Launchpadинтерфейс, который требует эту схему именования (по крайней мере, насколько я понял [1]).

Однако, прочитав документацию к модулю, я не могу найти способ сделать это без мартышекмодуль gettext.Есть ли «официальный» способ сделать это?

[1] https://help.launchpad.net/Translations/YourProject/Exports


edit: Подумав немного, изменение пути на самом деле не является необходимым для Launchpad-интеграция, так как она касается только файлов * .po, а не скомпилированных файлов * .mo.Однако мой вопрос все еще остается, поскольку было бы неплохо, если бы приложение как можно меньше мешало системным каталогам (особенно учитывая, что это многоплатформенное приложение, которое работает на * nix, Windows и OS X).

1 Ответ

3 голосов
/ 01 марта 2012

Я задал тот же вопрос для PHP, но ответ лежит в базовом API gettext. Невозможно изменить путь к каталогам.

Структура каталогов фиксируется gettext.

Поскольку необходимо хранить много разных языков для разных пакетов, нам нужен какой-то способ добавить эту информацию в файлы каталога сообщений файлов. Способ, обычно используемый в средах Unix, состоит в том, чтобы иметь эту кодировку в имени файла. Это также сделано здесь. Имя каталога, указанное во втором аргументе bindtextdomains (или каталоге по умолчанию), за которым следуют имя локали, категория локали и имя домена, объединяются:

dir_name / локаль / LC_category / domain_name.mo

См .: PHP Gettext: как изменить путь MO по умолчанию после задания пути к домену?

...