2025-01-29 10:19:22 -05:00
|
|
|
from typing import TYPE_CHECKING
|
|
|
|
|
2024-04-03 23:10:21 -04:00
|
|
|
from django.conf import settings
|
2024-06-03 09:00:40 -04:00
|
|
|
from django.middleware.locale import LocaleMiddleware
|
2024-04-03 23:10:21 -04:00
|
|
|
from django.utils import translation
|
|
|
|
|
2025-01-29 10:19:22 -05:00
|
|
|
if TYPE_CHECKING:
|
|
|
|
from users.models import User
|
|
|
|
|
2024-04-03 23:10:21 -04:00
|
|
|
|
2025-01-29 10:19:22 -05:00
|
|
|
def activate_language_for_user(user: "User | None", request=None):
|
2024-06-15 21:54:39 -04:00
|
|
|
user_language = None
|
|
|
|
if user and user.is_authenticated:
|
|
|
|
user_language = getattr(user, "language", "")
|
|
|
|
if not user_language:
|
|
|
|
if request:
|
2025-02-03 15:31:40 -05:00
|
|
|
user_language = request.GET.get("lang")
|
|
|
|
if not user_language:
|
|
|
|
user_language = translation.get_language_from_request(request)
|
2024-06-15 21:54:39 -04:00
|
|
|
else:
|
|
|
|
user_language = settings.LANGUAGE_CODE
|
|
|
|
# if user_language in dict(settings.LANGUAGES).keys():
|
|
|
|
translation.activate(user_language)
|
2024-11-30 13:23:21 -05:00
|
|
|
if request:
|
|
|
|
request.LANGUAGE_CODE = translation.get_language()
|
2024-06-15 21:54:39 -04:00
|
|
|
|
|
|
|
|
2024-06-03 09:00:40 -04:00
|
|
|
class LanguageMiddleware(LocaleMiddleware):
|
2024-04-03 23:10:21 -04:00
|
|
|
def process_request(self, request):
|
|
|
|
user = getattr(request, "user", None)
|
2024-11-30 13:23:21 -05:00
|
|
|
activate_language_for_user(user, request)
|