Интернационализация приложения 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-->
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.