栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从webapp2的cookie /标题/会话中确定语言?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从webapp2的cookie /标题/会话中确定语言?

这是我的工作-
我有一个基本请求处理程序,所有请求处理程序都继承自该请求处理程序,然后在这里有一个包含可用语言的常量,并且我重写了init方法来为每个请求设置语言:

import webapp2from webapp2_extras import i18nAVAILABLE_LOCALES = ['en_GB', 'es_ES']class baseHandler(webapp2.RequestHandler):    def __init__(self, request, response):        """ Override the initialiser in order to set the language.        """        self.initialize(request, response)        # first, try and set locale from cookie        locale = request.cookies.get('locale')        if locale in AVAILABLE_LOCALES: i18n.get_i18n().set_locale(locale)        else: # if that failed, try and set locale from accept language header header = request.headers.get('Accept-Language', '')  # e.g. en-gb,en;q=0.8,es-es;q=0.5,eu;q=0.3 locales = [locale.split(';')[0] for locale in header.split(',')] for locale in locales:     if locale in AVAILABLE_LOCALES:         i18n.get_i18n().set_locale(locale)         break else:     # if still no locale set, use the first available one     i18n.get_i18n().set_locale(AVAILABLE_LOCALES[0])

首先,我检查cookie,然后检查标题,如果没有找到有效的语言,则默认使用第一种可用的语言。

要设置cookie,我有一个单独的控制器,看起来像这样:

import baseclass Index(base.baseHandler):    """ Set the language cookie (if locale is valid), then redirect back to referrer    """    def get(self, locale):        if locale in self.available_locales: self.response.set_cookie('locale', locale, max_age = 15724800)  # 26 weeks' worth of seconds        # redirect to referrer or root        url = self.request.headers.get('Referer', '/')        self.redirect(url)

因此,像www.example.com/locale/en_GB这样的URL会将语言环境更改为en_GB,设置cookie并返回引荐来源网址(这具有能够在任何页面上切换语言并将其保留在同一页面上的优势。页)。

此方法未考虑标头中语言环境的部分匹配,例如“ en”而不是“
en_GB”,但由于我在应用程序中启用的语言列表是固定的(语言环境更改网址很难在页脚中编码),我不太担心。

高温超导



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419929.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号