Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python i18n与jinja2+;盖伊_Python_Google App Engine_Internationalization_Gettext_Jinja2 - Fatal编程技术网

Python i18n与jinja2+;盖伊

Python i18n与jinja2+;盖伊,python,google-app-engine,internationalization,gettext,jinja2,Python,Google App Engine,Internationalization,Gettext,Jinja2,我在谷歌上搜索了一个GAE+jinjai18n示例,但没有找到它。有人能提供链接或工作示例吗 我的工作使用了django翻译,我不知道这是否是推荐的方法 import jinja2 from django.utils import translation from django.utils.translation import gettext, ngettext, ugettext, ungettext, get_language, activate class DjangoTranslator

我在谷歌上搜索了一个GAE+jinjai18n示例,但没有找到它。有人能提供链接或工作示例吗

我的工作使用了django翻译,我不知道这是否是推荐的方法

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的自定义请求处理程序:

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所需的所有步骤。

jinja2适用于新的(实验性的)Python2.7,目前还不稳定。dJango 1.2在python2.5上运行。你在谷歌上搜索过django i18n示例吗?很多帮助页面?谢谢迈克,这是一篇非常有用的帖子。