Подтвердить что ты не робот

Глобальная интеграция приложений SAPE с Babel

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

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

Ответ 1

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) Стратегия здесь может быть разной. Для каждого запроса вы должны установить правильные переводы, которые будут использоваться, и, возможно, захотите кэшировать загруженные переводы для повторного использования в последующих запросах.