from django.utils import translation from django.utils.cache import patch_vary_headers from . import preferences class PreferencesMiddleware: """Read the preference cookies and activate the language for this request (AD-15).""" def __init__(self, get_response): self.get_response = get_response def __call__(self, request): prefs = preferences.from_request(request) request.preferences = prefs request.LANGUAGE_CODE = prefs.language_code translation.activate(prefs.language_code) try: response = self.get_response(request) finally: translation.deactivate() response.headers.setdefault("Content-Language", prefs.language) patch_vary_headers(response, ("Cookie", "Accept-Language")) return response