Добрый день! Столкнулся с такой историей, есть мультиязычный сайт, и потребовалось подключение from django.contrib.gis.geoip2 import GeoIP2, как написано в документации
Changed in Django 4.2:
Support for .mmdb files downloaded from DB-IP was added.
, ну так и поступил, обновил версию Джанги с 4.1.6. на 4.2, всю эту беду запустил, НО тут пришла беда откуда не ждали, начала тупить мультиязычность, то-есть начал автоматически подставлять /ru/ в маршрут, хотя
LANGUAGE_CODE = "en"
prefix_default_language=False,
, начал ковыряться в чём причина, думал доб модули меняют что то, но оказалось дело в джанге, они убрали строчки из env/lib/python3.10/site-packages/django/middleware/locale.py было :
def process_request(self, request):
urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF)
(
i18n_patterns_used,
prefixed_default_language,
) = is_language_prefix_patterns_used(urlconf)
language = translation.get_language_from_request(
request, check_path=i18n_patterns_used
)
language_from_path = translation.get_language_from_path(request.path_info)
if (
not language_from_path
and i18n_patterns_used
and not prefixed_default_language
):
language = settings.LANGUAGE_CODE
translation.activate(language)
request.LANGUAGE_CODE = translation.get_language()
стало
def process_request(self, request):
urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF)
i18n_patterns_used, _ = is_language_prefix_patterns_used(urlconf)
language = translation.get_language_from_request(request, check_path=i18n_patterns_used)
if not language:
language = self.get_fallback_language(request)
translation.activate(language)
request.LANGUAGE_CODE = translation.get_language()
Эта строчка language = translation.get_language_from_request(request, check_path=i18n_patterns_used) -- в конце концов если везде пусто отдаст язык из request.META.get("HTTP_ACCEPT_LANGUAGE", ""), и если раньше блок
if (
not language_from_path
and i18n_patterns_used
and not prefixed_default_language
):
перебивал это поведение то сейчас НЕТ, и нам летит язык /ru/ ! мне не нужно такое поведение, нужно чтобы / - был английский, не лезть же в джангу с дописками проверки, и версию понижать не вариант так как GeoIP2 корректно работает!, Кто чем может помочь?