Как сменить язык пользователю на сайте Django?

1,00
р.
Делаю возможность на сайте переключаться между русской, английской и украинской версией. Обернул строки в шаблонах, которые надо перевести, в тег {% trans %}, строки в коде, всё перевёл и скомпилировал перевод. Также установил locale_url.
В settings.py прописал:
LANGUAGE_CODE = 'Ru-ru' LANGUAGES = ( ('en', 'English'), ('ru', 'Russian'), ('uk', 'Ukrainian'), )
TIME_ZONE = 'Europe/Kiev' USE_I18N = True USE_L10N = True USE_TZ = True
LOCALE_PATHS = ( 'locale', # os.path.join(BASE_DIR, 'locale'), )
Переключать язык через POST, так как это делается в django.conf.urls.i18n мне не захотелось, поэтому создал такое представление:
def select_lang(request, code): go_next = request.META.get('HTTP_REFERER', '/') response = HttpResponseRedirect(go_next) if code and translation.check_for_language(code): if hasattr(request, 'session'): request.session['django_language'] = code else: response.set_cookie(settings.LANGUAGE_COOKIE_NAME, code) translation.activate(code) return response
Перехожу в браузере на /lang/uk, страница перезагружается, а язык остаётся прежний. Если вводить адрес /uk/about - страница переводится, но при переходе на другую язык опять возвращается.
В чем проблема, подскажите, пожалуйста!
Вот мои middleware, может в них дело:
MIDDLEWARE_CLASSES = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.locale.LocaleMiddleware', ]
P.S. язык сайта по дефолту русский, как и весь текст в коде и в шаблонах. Но у меня по умолчанию отображается английский. Через заголовки запроса "Accept-Language en-US,en q=0.5"
P.S.S. функцию вьюхи проверял, на выходе у request.session['django_language'] стоит код языка, который мне надо.

Ответ
Нужно в метод добавить еще:
request.session['_language'] = code
В сессии django хранит 2 параметра: django_language и _language