【问题标题】:GAE's webapp2 i18n doesn't recognize django templates {% trans %} tagGAE 的 webapp2 i18n 无法识别 django 模板 {% trans %} 标签
【发布时间】:2012-04-16 09:06:49
【问题描述】:

我正在尝试将 i18n 功能添加到我正在处理的一个小测试项目中。我正在使用 webapp2_extras i18n 库。我有使用 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"))

在“消息”中,字符串被翻译,但在模板中,用 {% trans %} 包裹的相同字符串不是。

谢谢,

【问题讨论】:

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

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


【解决方案1】:

可以使用自定义请求处理程序,通过谷歌应用引擎启用 django 的 i18n trans 标签。但更好的是使用 jinja2 就像这里所说的那样,那么解决方案是官方的。你应该从 webapp2_extras 导入 jinja2,然后你的 i18n 就可以工作了,jinja2 的翻译标签看起来像 {% trans %}{ % endtrans %}

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

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

【讨论】:

    猜你喜欢
    • 2012-03-18
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2014-01-18
    • 2017-07-30
    • 2013-07-11
    相关资源
    最近更新 更多