Python-从HTTP/Browser中提取主语言代码
我需要一种方法来确定浏览器中的主语言集。我发现了一个非常好的PHP解决方案,但不幸的是,我使用的是Django/Python 我认为这些信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中 有什么想法或现成的功能给我吗?您正在寻找: 是一个轻量级web框架,包括一个在本例中可以重用的便利工具:Python-从HTTP/Browser中提取主语言代码,python,django,http-accept-language,Python,Django,Http Accept Language,我需要一种方法来确定浏览器中的主语言集。我发现了一个非常好的PHP解决方案,但不幸的是,我使用的是Django/Python 我认为这些信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中 有什么想法或现成的功能给我吗?您正在寻找: 是一个轻量级web框架,包括一个在本例中可以重用的便利工具: from webob.acceptparse import Accept language_accept = Accept(request.META['HTTP_ACCEPT_LANGUA
from webob.acceptparse import Accept
language_accept = Accept(request.META['HTTP_ACCEPT_LANGUAGE'])
print language_accept.best_match(('en', 'de', 'fr'))
print 'en' in language_accept
请注意,安装WebOb包不会干扰Django的功能,我们只是在这里重新使用包中的一个类,它恰好非常有用
简短的演示通常更具说明性:
>>> header = 'en-us,en;q=0.5'
>>> from webob.acceptparse import Accept
>>> lang = Accept(header)
>>> 'en' in lang
True
>>> 'fr' in lang
False
>>> lang.best_match(('en', 'de', 'fr'))
'en'
这是我使用的一个函数,也是我自己创造的
def language(self):
if 'HTTP_ACCEPT_LANGUAGE' in self._request.META:
lang = self._request.META['HTTP_ACCEPT_LANGUAGE']
return str(lang[:2])
else:
return 'en'
就叫它。我知道这一点,但我需要一种方法来检测主语言。大多数情况下,
HTTP\u ACCEPT\u LANGUAGE
是一个包含不同语言的字符串,因此必须注意,客户端可能并不总是传递HTTP\u ACCEPT\u LANGUAGE
,即使传递,其值也可能不正确。最简单的方法是让用户明确地选择他们的语言。这只是我网站上的一个小功能。如果我得到代码,那就好了。如果不是,我就用德语或英语。。。
def language(self):
if 'HTTP_ACCEPT_LANGUAGE' in self._request.META:
lang = self._request.META['HTTP_ACCEPT_LANGUAGE']
return str(lang[:2])
else:
return 'en'