Передача языка через URL в Django
Часто язык передают в адресе:
/en/posts/,
/ru/posts/. Для этого
подключают
LocaleMiddleware
и оборачивают маршруты в
i18n_patterns:
from django.conf.urls.i18n import i18n_patterns
from django.urls import path
from main import views
urlpatterns = i18n_patterns(
path('posts/', views.posts, name='posts'),
)
Middleware должен стоять после
SessionMiddleware.
Язык берется из префикса URL
(и при необходимости из сессии
или cookie).
Для смены языка без смены префикса
есть view set_language
(приложение django.conf.urls.i18n).
Подключите LocaleMiddleware
и i18n_patterns для
главной страницы. Откройте
/ru/ и /en/.
Сделайте две ссылки «Русский» / «English» на версии той же страницы.