Как явно установить django_language в сессии django - PullRequest
13 голосов
/ 09 апреля 2010

Как явно установить django_language в Django сеансе?

Большое спасибо ...

Ответы [ 3 ]

32 голосов
/ 09 апреля 2010

Если вы хотите, чтобы ваши пользователи могли указывать язык, убедитесь, что LocaleMiddleware включено:

MIDDLEWARE_CLASSES = (
   ...
   'django.middleware.locale.LocaleMiddleware',
   ...
)

Затем Django будет искать языковые предпочтения пользователя в этом порядке (см. get_language_from_request в trans_real.py ):

  1. in request.path_info, если используются i18n_patterns ;
  2. request.session[settings.LANGUAGE_SESSION_KEY];
  3. request.COOKIES[settings.LANGUAGE_COOKIE_NAME];
  4. каждый язык в request.META['HTTP_ACCEPT_LANGUAGE'], пока не будет найден принятый;
  5. settings.LANGUAGE_CODE.

Итак, самый простой способ явно установить язык в сеансе Django - это переписать request.session[settings.LANGUAGE_SESSION_KEY]:

def someview (request):
    ...
    request.session[settings.LANGUAGE_SESSION_KEY] = 'en'
    ...
17 голосов
/ 11 октября 2015

А если вы будете использовать версию >= Django 1.8. Вот как мы можем это использовать:

from django.utils.translation import LANGUAGE_SESSION_KEY

def someview (request):
    ...
    request.session[LANGUAGE_SESSION_KEY] = 'en'
0 голосов
/ 29 мая 2017

Попробуйте использовать django.views.i18n.set_language () . Активируйте это представление, добавив следующую строку в ваш URLconf:

# This example makes the view available at /i18n/setlang/
url(r'^i18n/', include('django.conf.urls.i18n')),

Для удобства Джанго имеет вид, django.views.i18n.set_language(), который устанавливает язык пользователя предпочтение и перенаправляет на указанный URL или, по умолчанию, обратно на предыдущая страница.

Представление ожидает вызова через метод POST с языком набор параметров в запросе. Если поддержка сеанса включена, представление сохраняет выбор языка в сеансе пользователя. В противном случае, это экономит выбор языка в куки, который по умолчанию называется django_language. (Имя можно изменить через LANGUAGE_COOKIE_NAME настройка.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...