Интернационализация приложения Python 2.6 через Babel - PullRequest
8 голосов
/ 25 мая 2010

Мы оцениваем Babel 0.9.5 [1] под Windows для использования с Python 2.6, и у нас есть следующие вопросы, на которые мы не смогли ответить, прочитав документацию или погуглив.

1) Я хотел бы использовать аббревиатуру типа _ для незаписанного текста. Есть ли какое-то мнение, следует ли использовать для этого n_ или N_?

n_ не работает. Вавилон не извлекает текст.

N_, кажется, частично работает. Babel извлекает текст, как это делается для gettext, но не форматирует для ngettext (отсутствует аргумент множественного числа и msgstr [n].)

2) Есть ли способ установить начальные поля msgstr, как показано ниже, при создании файла POT?

Я подозреваю, что может быть способ сделать это с помощью файлов Babel cfg, но я не смог найти документацию по формату файлов Babel cfg.

"Project-Id-Version: ВЕРСИЯ ПРОЕКТА \ n" "Language-Team: en_US \ n"

3) Есть ли способ сохранить «устаревший» msgid / msgstr в наших PO-файлах? Когда я использую команду обновления Babel, вновь созданные устаревшие строки помечаются префиксами # ~, но существующие устаревшие строки сообщений удаляются.

Спасибо, Malcolm

[1] http://babel.edgewall.org/

Ответы [ 2 ]

8 голосов
/ 25 мая 2010

По умолчанию pybabel extract распознает следующие ключевые слова: _, gettext, ngettext, ugettext, ungettext, dgettext, dngettext, N_. Используйте -k параметр , чтобы добавить другие. N_ часто используется для NULL-переводов (также называемых отложенными переводами).

Обновление : опция -k может перечислять аргументы функции, которая будет помещена в каталог. Итак, если вы используете n_ = ngettext, попробуйте pybabel extract -k n_:1,2 ....

1 голос
/ 22 января 2012

Для ответа на вопрос 2):

Если вы запускаете Babel с помощью pybabel extract, вы можете установить Project-Id-Version с помощью параметров --project и --version.

Если вы запускаете Babel через setup.py extract_messages, то из дистрибутива берется Project-Id-Version (имя и версия проекта в файле setup.py).

Оба способа также поддерживают опции --msgid-bugs-address и --copyright-holder для установки метаданных POT.

...