使用Babel进行GAE webapp应用程序国际化

时间:2010-09-29 11:51:18

标签: python google-app-engine web-applications internationalization babel

您如何使用BABEL将Google App Engine网络应用程序国际化?我在这里寻找所有阶段:

  1. 标记要翻译的字符串。
  2. 提取它们。
  3. Traslating
  4. 配置您的应用以加载浏览器要求的正确语言

1 个答案:

答案 0 :(得分:11)

1)在代码和模板中使用_()(或gettext())。模块全局或类定义中设置的转换字符串应使用某种形式的lazy gettext(),因为在导入模块时i18n将不可用。

2)使用pybabel提取所有翻译。这里我们传递两个要扫描的目录:模板目录和app目录。这将在/ locale目录中创建一个messages.pot文件,其中包含在这些目录中找到的所有字符串。 babel.cfg是提取配置,根据您使用的模板引擎而有所不同:

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

3)初始化每种语言的目录。这只做一次。这里我们初始化三个翻译,en_US,es_ES和pt_BR,并使用在步骤2中创建的messages.pot文件:

$ 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)这里的策略可能会有所不同。对于每个请求,您必须设置要使用的正确翻译,并且可能希望缓存已加载的翻译以在后续请求中重复使用。