2

我正在尝试将 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 %} 包裹的相同字符串不是。

谢谢,

4

1 回答 1

1

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

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

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

于 2012-04-17T06:29:11.473 回答