i18n与jinja2 + GAE [英] i18n with jinja2 + GAE

查看:70
本文介绍了i18n与jinja2 + GAE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Google上搜索了GAE + Jinja i18n示例,但找不到它.任何人都可以提供链接或有效示例吗?

I googled for a GAE + jinja i18n example but could not find it. Can anyone provide a link or working example?

我的努力使用了django翻译,我不知道这是否是推荐的方法.

My effort uses the django translations and I don't know if this is the recommend way of doing it.

import jinja2
from django.utils import translation
from django.utils.translation import gettext, ngettext, ugettext, ungettext, get_language, activate
class DjangoTranslator(object):

    def __init__(self):
        self.gettext = gettext
        self.ngettext = ngettext
        self.ugettext = ugettext
        self.ungettext = ungettext
from jinja2 import Environment, FileSystemLoader
class DjangoEnvironment(jinja2.Environment):

    def get_translator(self, context):
        return DjangoTranslator()

jinja_environment = DjangoEnvironment(
    loader=jinja2.FileSystemLoader(os.path.dirname(__file__)), extensions=['jinja2.ext.i18n'])
jinja_environment.install_gettext_translations(translation)

感谢您的任何提示或建议.我还为i18n使用了自定义请求处理程序:

Thanks for any hint or advice. I also use a custom request handler for i18n:

from django.utils import translation

class I18NHandler(webapp2.RequestHandler):

    def render_template(self, file, template_args):
        path = os.path.join(os.path.dirname(__file__), 'templates',
                            file)
        self.response.out.write(template.render(path, template_args))

    def initialize(self, request, response):
        webapp2.RequestHandler.initialize(self, request, response)
        self.request.COOKIES = Cookies(self)
        self.request.META = os.environ
        self.reset_language()

    def reset_language(self):

        # Decide the language from Cookies/Headers

        language = translation.get_language_from_request(self.request)
        translation.activate(language)
        self.request.LANGUAGE_CODE = translation.get_language()

        # Set headers in response
        self.response.headers['Content-Language'] = str(translation.get_language())

推荐答案

关于如何使用jinja2 + i18n所需的所有步骤对此进行了更详细的介绍.

It's kind of more detailed with all the steps needed to run jinja2 + i18n.

这篇关于i18n与jinja2 + GAE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆