GAE的webapp2 i18n无法识别django模板{%trans%}标签

时间:2012-04-16 09:06:50

标签: python django google-app-engine internationalization webapp2

我正在尝试将i18n功能添加到我正在进行的一个小测试项目中。我正在使用webapp2_extras i18n库。我有locale文件夹,其中包含使用babel命令行创建的已编译的.mo文件。应用程序本身只是一个简单的django模板和一个带有一个处理程序的main.py.当我在main中使用gettext方法时,我确实得到了翻译后的文本,但模板中包含{%trans%}标签的字符串不会被翻译。这是处理程序:

class MainHandler(webapp2.RequestHandler):
def get(self):

    locale = self.request.GET.get('locale', 'en_US')
    i18n.get_i18n().set_locale(locale)

    message = i18n.gettext('Hello, world!')

    self.response.out.write(template.render("templates/index.html"))

在“message”中,字符串被翻译但在模板内部与{%trans%}包围的字符串不相同。

谢谢,

1 个答案:

答案 0 :(得分:1)

可以使用自定义请求处理程序,使用谷歌应用引擎启用django的i18n trans标记。但是更好的是使用jinja2就像在这里说的那样,那么解决方案就是正式的。您应该从webapp2_extras导入jinja2,然后您的i18n将正常工作,jinja2的翻译标签将显示为{% trans %}{ % endtrans %}

如果你必须使用django,这里有一个旧blod帖子的链接,它提供了一个自定义请求处理程序,如果你必须使用django模板,你可以使用它:http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html

但我们建议您使用jinja2。你试过吗?