Source code for ievv_opensource.ievv_i18n_url.middleware

from django.http import HttpResponseRedirect
from django.utils import translation
from django.utils.deprecation import MiddlewareMixin

from ievv_opensource.ievv_i18n_url import active_i18n_url_translation

from . import i18n_url_utils


[docs]class LocaleMiddleware(MiddlewareMixin): """ `ievv_js_i18n_url` locale middleware. """ response_redirect_class = HttpResponseRedirect
[docs] def process_request(self, request): """ Initializes the ievv_i18n_url handler from the request, and calls :meth:`ievv_opensource.ievv_i18n_url.handlers.AbstractHandler.activate_languagecode_from_request`. Args: request: The request-object. """ handler_class = i18n_url_utils.get_handler_class() handler_class.activate_languagecode_from_request(request=request) translation_language = translation.get_language() request.LANGUAGE_CODE = translation_language request.session['LANGUAGE_CODE'] = translation_language request.IEVV_I18N_URL_DEFAULT_LANGUAGE_CODE = active_i18n_url_translation.get_default_languagecode() request.IEVV_I18N_URL_ACTIVE_LANGUAGE_CODE = active_i18n_url_translation.get_active_languagecode()
def process_response(self, request, response): language = translation.get_language() if 'Content-Language' not in response: response['Content-Language'] = language return response