2

我正在尝试将I18n功能添加到我正在处理的一个小测试项目中。我正在使用webapp2_extras i18n库。我有使用babel命令行创建的编译翻译.mo文件的locale文件夹。该应用程序本身只是一个简单的Django模板和一个处理程序的main.py。当我在主要中使用gettext方法时,我确实得到了翻译文本,但模板内用{%trans%}标记包装的字符串不会被翻译。这里的处理程序:GAE的webapp2 i18n无法识别django模板{%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")) 

在“消息”的字符串转换,但在模板中相同的字符串wrappwed {%反%}不是。

感谢,

+0

你是否启用jinja2.ext.i18n扩展?我相信它在webapp2配置默认值中关闭。 – alex 2012-04-16 09:31:18

+0

我不使用jinja,我使用django模板。 – yohairosen 2012-04-16 10:03:03

+0

正如我看到你使用jinja2。因为django-template-render没有template.render-method。请重新检查一遍或在这里发布一个导入部分。 – SkyFox 2012-04-16 12:01:29

回答

1

它可以使用自定义的请求处理程序,使Django的国际化与谷歌应用程序引擎反式标签。但更好的是使用jinja2就像这里所说的那样,那么解决方案就是官方的。您应该从webapp2_extras中导入jinja2,然后您的i18n将会工作,并且jinja2的翻译标记将看起来像{% trans %}{ % endtrans %}

如果必须使用Django这里是呈现,您可以使用,如果你必须使用Django模板的自定义请求处理旧BLOD帖子的链接:http://blog.yjl.im/2009/02/using-django-i18n-in-google-app-engine.html

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

+0

Jinja正在工作。谢谢。 – yohairosen 2012-04-22 15:02:47