Как автоматически перенаправить пользователя на определенный язык в django

Я добавил новые языки на свой сайт, и теперь он доступен на английском, французском и арабском языках. Все работает хорошо, но я не смог понять, как изменить язык по умолчанию. В настоящее время, когда пользователь не выбирает никакой язык, сайт отображается на английском языке. Некоторые пользователи жалуются, что английский язык не очень широко используется в моей стране и сайт должен быть на арабском, поэтому я хочу сделать следующее: если пользователь не выбрал язык, он будет автоматически перенаправлен на арабский.

Когда я захожу на свой сайт вот так: http://127.0.0.1:8000/. я буду автоматически перенаправлен на: http://127.0.0.1:8000/ar/

Возможно ли сделать что-то подобное или мне придется изменить код по умолчанию для всего сайта.

у меня есть этот код в urls.py

    urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('core.urls')),
    path('user/',include('users.urls')),
    path('dashboard/',include('dashboard.urls')),
    path('wallet/',include('wallet.urls')),
    path('administration/',include('administration.urls')),
    path('chaining/', include('smart_selects.urls')),
    path('__debug__/', include(debug_toolbar.urls)),

]

urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

urlpatterns += i18n_patterns (
    path('',include('core.urls')),
    path('user/',include('users.urls')),
    path('dashboard/',include('dashboard.urls')),
    path('wallet/',include('wallet.urls')),
    path('administration/',include('administration.urls')),

)

и вот мои настройки

from django.utils.translation import gettext_lazy as _
LOCALE_PATHS = ( os.path.join(BASE_DIR, 'locale'), )
LANGUAGE_CODE = 'en'
LANGUAGES =(
('en', ('english')),
('ar', ('Arabic')),
('fr', ('french'))
)

Если вы измените код языка по умолчанию, вам придется переписать все строки в вашем коде, поскольку базовый язык не попадает в файлы po/mo.

Вот несколько вариантов.

  1. Не меняйте ничего. Промежуточное ПО локали Django довольно хорошо справляется с обнаружением языковых предпочтений и в любом случае перенаправляет пользователей на их язык. Сначала он проверяет url, затем любые cookies, затем предпочтения браузера. Только потом, если ничего не найдено, Django возвращается к языку по умолчанию (Как Django обнаруживает языковые предпочтения).

  2. Напишите свое настраиваемое промежуточное ПО. Вы можете начать со встроенного промежуточного программного обеспечения locale middleware и настроить его так, чтобы в конце он возвращался не к языку по умолчанию, а к вашему целевому языку.

  3. Решите эту проблему в настройках вашего сервера. Вы можете проинструктировать свой сервер перенаправлять все запросы, отправленные на ваш домен без языкового кода, на ваш домен с кодом вашего целевого языка. Но я бы не рекомендовал такой подход, так как вы потеряете приятные возможности определения языка в Django, как описано в 1.

Вернуться на верх