我需要一種方法來確定在瀏覽器中設置的主要語言。我發現了一個非常棒的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