Skip to main content
 首页 » 编程设计

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

2025年05月04日23sharpest

我正在尝试将 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")) 

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

谢谢,

请您参考如下方法:

可以使用自定义请求处理程序,使 django 的 i18n trans 标签与 google app engine 一起使用。但更好的是像这里所说的那样使用 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。你试过了吗?