Интернационализация приложения Python 2.6 через Babel

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

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

уже не работает. Babel не извлекает текст.

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 update, вновь созданные устаревшие строки помечаются префиксами#~, но существующие устаревшие строки сообщений удаляются.

спасибо, Малкольм!--1-->

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

2 ответов


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

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


ответить на вопрос 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.