Как явно установить сеанс django_language
в Django
?
Спасибо большое...
Как явно установить сеанс django_language
в Django
?
Спасибо большое...
Если вы хотите, чтобы ваши пользователи могли указывать язык, убедитесь, что LocaleMiddleware
включен:
MIDDLEWARE_CLASSES = (
...
'django.middleware.locale.LocaleMiddleware',
...
)
Затем Django будет искать предпочтение пользовательского языка в этом порядке (см. get_language_from_request
в trans_real.py):
request.path_info
, если i18n_patterns,request.session[settings.LANGUAGE_SESSION_KEY]
;request.COOKIES[settings.LANGUAGE_COOKIE_NAME]
;request.META['HTTP_ACCEPT_LANGUAGE']
, пока не будет найден один,settings.LANGUAGE_CODE
.Таким образом, самый простой способ задать язык явно в сеансе Django - это переписать request.session[settings.LANGUAGE_SESSION_KEY]
:
def someview (request):
...
request.session[settings.LANGUAGE_SESSION_KEY] = 'en'
...
И если вы будете использовать версию >= Django 1.8
. Вот как мы могли бы это использовать:
from django.utils.translation import LANGUAGE_SESSION_KEY
def someview (request):
...
request.session[LANGUAGE_SESSION_KEY] = 'en'
С помощью django.views.i18n.set_language(). Активируйте это представление, добавив следующую строку в свой URLconf:
# This example makes the view available at /i18n/setlang/
url(r'^i18n/', include('django.conf.urls.i18n')),
В качестве удобства, Django поставляется с представлением,
django.views.i18n.set_language()
, который устанавливает язык пользователя предпочтения и перенаправления на заданный URL-адрес или, по умолчанию, обратно предыдущая страница.Ожидается, что представление будет вызвано через метод POST, с языком параметр задается в запросе. Если поддержка сеанса включена, представление сохраняет выбор языка в сеансе пользователей. В противном случае он сохраняет выбор языка в файле cookie, который по умолчанию называется
django_language
. (Имя можно изменить с помощьюLANGUAGE_COOKIE_NAME
).