我需要一种方法来确定在浏览器中设置的主要语言。我发现了一个非常棒的PHP解决方案,但不幸的是我使用的是Django/Python。Python - 从HTTP /浏览器中提取主要语言代码
我认为信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中。
任何想法或现成的功能对我来说?
我需要一种方法来确定在浏览器中设置的主要语言。我发现了一个非常棒的PHP解决方案,但不幸的是我使用的是Django/Python。Python - 从HTTP /浏览器中提取主要语言代码
我认为信息在HTTP请求的HTTP_ACCEPT_LANGUAGE属性中。
任何想法或现成的功能对我来说?
您正在寻找request.META
dictionary:
print request.META['HTTP_ACCEPT_LANGUAGE']
的WebOb project,一个轻量级的Web框架,包括一个方便accept parser,你可以在这种情况下重用:
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语言(个体):在self._request.META 如果 'HTTP_ACCEPT_LANGUAGE': 郎= self._request.META [ 'HTTP_ACCEPT_LANGUAGE'] 返回STR(郎[:2]) 否则: 返回'en'
只需调用它即可。
我知道这一点,但我需要一种方法来检测主要语言。大多数情况下,'HTTP_ACCEPT_LANGUAGE'是一个包含不同语言的字符串等。 – Ron
请注意,客户端可能并不总是通过'HTTP_ACCEPT_LANGUAGE',即使它的确如此,它的值可能不正确。最傻瓜的方法是永远都会让用户明确地选择他们的语言。 –
它只是我的网站上的一个小功能。如果我得到的代码,它很好。如果没有,我只用德语或英语...... – Ron