12

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

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

1 回答 1

11

1) 在您的代码和模板中使用 _()(或 gettext())。在模块全局变量或类定义中设置的翻译字符串应该使用某种形式的惰性 gettext(),因为在导入模块时 i18n 将不可用。

2)使用pybabel提取所有翻译。这里我们传递两个要扫描的目录:模板目录和应用程序目录。这将在 /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) The strategy here may vary. For each request you must set the correct translations to be used, and probably want to cache loaded translations to reuse in subsequent requests.

于 2010-09-30T06:25:17.333 回答