Я добавляю интернационализацию в свой проект Django. Идея того, как это должно работать, заключается в следующем:
Когда пользователь вводит "/", то есть "домашнюю страницу", мы пытаемся получить его / ее
языковые предпочтения из нашей сессии. Если это не наш по умолчанию
язык (EN), мы перенаправляем пользователя на локальную версию, например / ES /,
/ RU /, / CN / и т. Д.
Если у нас нет таких данных сеанса, мы проверяем Accept-Language и
перенаправить пользователя на локальную версию, если мы поддерживаем такие
Если мы не поддерживаем Accept-Language пользователя ИЛИ, если это EN - мы не поддерживаем
перенаправить пользователя! мы просто показываем «язык по умолчанию»
т.е. все "не языки по умолчанию" должны иметь свои префиксы, а по умолчанию - нет. Почему язык по умолчанию должен иметь префикс, верно? )))
Проблема в том, что я не могу понять, как настроить эту логику. Если я установлю prefix_default_language=False
, чтобы отключить префикс / EN / для языка по умолчанию, он также отключит перенаправление «не по умолчанию». Я нашел пакет, который решает проблему: https://github.com/st4lk/django-solid-i18n-urls#behaviour settings.SOLID_I18N_USE_REDIRECTS = True
, но он не работает в Django 2 +
Не могу поверить, что я единственный, кто ненавидит языковые префиксы по умолчанию)) Хотя я не смог найти никакого решения как с перенаправлением, так и без префикса для языка по умолчанию. Надеюсь, кто-то что-то посоветует здесь ?