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'

Просто позвони.

Другие вопросы по тегам