您如何使用BABEL将Google App Engine网络应用程序国际化?我在这里寻找所有阶段:
答案 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)这里的策略可能会有所不同。对于每个请求,您必须设置要使用的正确翻译,并且可能希望缓存已加载的翻译以在后续请求中重复使用。