Интернационализация Django: prefix_default_language и языковое перенаправление - PullRequest
0 голосов
/ 31 мая 2019

Я добавляю интернационализацию в свой проект 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 +

Не могу поверить, что я единственный, кто ненавидит языковые префиксы по умолчанию)) Хотя я не смог найти никакого решения как с перенаправлением, так и без префикса для языка по умолчанию. Надеюсь, кто-то что-то посоветует здесь ?

...