Python GAE';s webapp2 i18n不';无法识别django模板{%trans%}标记

Python GAE';s webapp2 i18n不';无法识别django模板{%trans%}标记,python,django,google-app-engine,internationalization,webapp2,Python,Django,Google App Engine,Internationalization,Webapp2,我正在尝试将i18n功能添加到我正在进行的一个小测试项目中。我正在使用webapp2_extras i18n库。我有一个locale文件夹,其中包含使用babel命令行创建的编译过的translation.mo文件。应用程序本身只是一个简单的django模板和一个带有一个处理程序的main.py。当我在main中使用gettext方法时,我确实会得到翻译后的文本,但是模板中用{%trans%}标记包装的字符串不会被翻译。下面是处理程序: class MainHandler(webapp2.Req

我正在尝试将i18n功能添加到我正在进行的一个小测试项目中。我正在使用webapp2_extras i18n库。我有一个locale文件夹,其中包含使用babel命令行创建的编译过的translation.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%}包装的相同字符串没有被翻译


谢谢,

可以使用定制的请求处理程序,通过google app engine启用django的i18n trans标记。但更好的是像这里所说的那样使用jinja2,然后解决方案是官方的。您应该从webapp2_extras导入jinja2,然后您的i18n将工作,jinja2的翻译标记将看起来像
{%trans%}
{%endtrans%}

如果必须使用django,这里有一个指向旧blod post的链接,它提供了一个自定义请求处理程序,如果必须使用django模板,则可以使用该处理程序:


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

是否启用了jinja2.ext.i18n扩展?我相信它在webapp2配置默认设置中是关闭的。我没有使用jinja,我使用的是django模板。正如我看到的,您使用的是jinja2。因为django template render没有template.render-method。请再次检查此项或在此处发布导入部分。从google.appengine.ext.webapp导入模板