25 lines
773 B
Python
25 lines
773 B
Python
from django.utils import translation
|
|
|
|
|
|
class UserLanguageMiddleware:
|
|
"""Prefer the authenticated user's saved language over browser/cookie language."""
|
|
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
user = getattr(request, 'user', None)
|
|
language = ''
|
|
if user and user.is_authenticated:
|
|
try:
|
|
language = user.preferences.language
|
|
except Exception:
|
|
language = ''
|
|
if language:
|
|
translation.activate(language)
|
|
request.LANGUAGE_CODE = language
|
|
response = self.get_response(request)
|
|
if language:
|
|
response.setdefault('Content-Language', language)
|
|
return response
|