lib.itmens/users/middlewares.py
2025-03-12 09:17:07 -04:00

34 lines
1.1 KiB
Python

from typing import TYPE_CHECKING
from django.conf import settings
from django.middleware.locale import LocaleMiddleware
from django.utils import translation
if TYPE_CHECKING:
from users.models import User
def activate_language_for_user(user: "User | None", request=None):
user_language = None
if user and user.is_authenticated:
user_language = getattr(user, "language", "")
if not user_language:
if request:
try:
user_language = translation.get_supported_language_variant(
request.GET.get("lang")
)
except Exception:
user_language = translation.get_language_from_request(request)
else:
user_language = settings.LANGUAGE_CODE
# if user_language in dict(settings.LANGUAGES).keys():
translation.activate(user_language)
if request:
request.LANGUAGE_CODE = translation.get_language()
class LanguageMiddleware(LocaleMiddleware):
def process_request(self, request):
user = getattr(request, "user", None)
activate_language_for_user(user, request)