How to explicitly set django_language in django session

前端 未结 3 1146
有刺的猬
有刺的猬 2020-12-23 22:27

How to explicitly set django_language in Django session?

Thanks a lot...

3条回答
  •  清歌不尽
    2020-12-23 23:10

    If you want your users to be able to specify language, make sure that LocaleMiddleware is enabled:

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

    Then Django will look for the user's language preference in that order (see get_language_from_request in trans_real.py):

    1. in request.path_info, if i18n_patterns are used;
    2. request.session[settings.LANGUAGE_SESSION_KEY];
    3. request.COOKIES[settings.LANGUAGE_COOKIE_NAME];
    4. every language in request.META['HTTP_ACCEPT_LANGUAGE'], until accepted one is found;
    5. settings.LANGUAGE_CODE.

    So the most straightforward way to set language explicitly in Django session is to rewrite request.session[settings.LANGUAGE_SESSION_KEY]:

    def someview (request):
        ...
        request.session[settings.LANGUAGE_SESSION_KEY] = 'en'
        ...
    

提交回复
热议问题