12

Как вы собираетесь интернационализировать приложение Google App Engine для веб-приложений, используя BABEL? Я ищу здесь для всех этапов:GAE webapp применение интернационализации с Babel

  1. Маркировка строк для перевода.
  2. Извлечь их.
  3. Traslating
  4. Настройка приложения, чтобы загрузить правильный язык, запрошенный браузером

ответ

11

1) использовать _() (или Gettext()) в коде и шаблонов. Переведенные строки, установленные в глобалях модулей или определения классов, должны использовать некоторую форму ленивого gettext(), потому что i18n не будет доступен, когда модули будут импортированы.

2) Извлеките все переводы, используя pybabel. Здесь мы передаем две каталоги для сканирования: каталог шаблонов и каталог приложения. Это создаст файл messages.pot в каталоге/locale со всеми строками, найденными в этих каталогах. babel.cfg конфигурация экстракции, которая меняется в зависимости от шаблона двигателя вы используете:

$ pybabel extract -F ./babel.cfg -o ./locale/messages.pot ./templates/ ./app/ 

3) Инициализировать каталог для каждого языка. Это делается только один раз. Здесь мы инициализируем три перевода, en_US, es_ES и pt_BR, и использовать файл messages.pot, созданный на шаге 2:

$ pybabel init -l en_US -d ./locale -i ./locale/messages.pot 
$ pybabel init -l es_ES -d ./locale -i ./locale/messages.pot 
$ pybabel init -l pt_BR -d ./locale -i ./locale/messages.pot 

Перевести сообщения. Они будут в .mo файлах в каждом каталоге переводов. После всех локалей пересчитаны, компилировать их:

$ pybabel compile -f -d ./locale 

В дальнейшем, если будут добавлены новые переводы, повторите шаги 2 и обновить их с помощью нового .pot файла:

$ pybabel update -l pt_BR -d ./locale/ -i ./locale/messages.pot 

Затем перевести новые строки и скомпилировать переводы снова.

4) Стратегия здесь может быть разной. Для каждого запроса вы должны установить правильные переводы, которые будут использоваться, и, возможно, захотите кэшировать загруженные переводы для повторного использования в последующих запросах.

+1

Спасибо moraes, шаг 4 все еще ускользает от меня. Я надеюсь, что некоторые из них опубликуют хорошее решение для этого. – fccoelho

+1

У любого есть простое предложение по пункту 4 этого ответа? – fccoelho

+0

номер 4 является неработающей ссылке ..:/ – Lipis

Смежные вопросы