from django.utils import translation class UserLocaleMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): language = None activated = False user = getattr(request, "user", None) if user and getattr(user, "is_authenticated", False): language = getattr(user, "preferred_language", None) if language: translation.activate(language) request.LANGUAGE_CODE = language activated = True response = self.get_response(request) active_language = translation.get_language() if active_language: response["Content-Language"] = active_language if activated: translation.deactivate() return response