Python - Извлечение кода основного языка из HTTP / браузера
Мне нужен способ определения основного языка, установленного в браузере. Я нашел действительно отличное решение для PHP, но, к сожалению, я использую Django / Python.
Я думаю, что информация находится в атрибуте HTTP_ACCEPT_LANGUAGE HTTP-запроса.
Любые идеи или готовые функции для меня?
2 ответа
Вы ищете request.META
словарь:
print request.META['HTTP_ACCEPT_LANGUAGE']
Проект WebOb, облегченный веб-фреймворк, включает удобный анализатор принятия, который вы можете использовать в этом случае:
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'
Это функция, которую я использовал, и это мое творение я.
язык определения (self): if 'HTTP_ACCEPT_LANGUAGE' в self._request.META: lang = self._request.META['HTTP_ACCEPT_LANGUAGE'] вернуть str(lang[:2]) else: вернуть 'en'
Просто позвони.