Интернационализация Django - как сохранить выбранный язык на протяжении всей сессии?

У меня есть многостраничное приложение для художественной галереи, которое поддерживает японский и английский языки, причем при запуске по умолчанию используется японский язык. У меня есть кнопка, которая добавляет к url выбранный код языка, который является либо 'en', либо 'ja' между английским и японским. При первом нажатии на кнопку мое приложение перенаправляется на домашнюю страницу и отображает страницу с новым переведенным английским содержимым. Однако, когда я перехожу на другую страницу в приложении на английском языке, эта страница отображается на японском языке, даже если был выбран английский язык.

Как я могу сохранить выбранный язык на протяжении всего сеанса, независимо от того, куда я перехожу? Нужно ли мне передавать язык в качестве параметра в представлении? Если да, то как это сделать? Я читал соответствующую документацию по Django, но в ней нет ответа на подобную проблему. Спасибо!

index.html кнопка тега:

{% get_current_language as LANGUAGE_CODE %}
{% if LANGUAGE_CODE == 'ja' %}
<a 
href="/en/"
role="button">
English
</a>
{% else %}
<a 
href="/ja/"
role="button">
日本語
</a>
{% endif %}

Основной проект urls.py:

urlpatterns += i18n_patterns (
    path('', include('Art_Gallery_App.urls')),
    path('admin/', admin.site.urls), 
    prefix_default_language=True
)

Art_Gallery_App urls.py:

urlpatterns = [
    path('', views.index, name='index'),
    # by default, URL looks like this: /ja/carousel/14
    path('carousel/<int:pk>', views.carousel, name='carousel'),
    path('checkout/<int:pk>', views.checkout, name='checkout')
]

settings.py:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
LANGUAGE_CODE = 'ja'

USE_I18N = True

LANGUAGES = [
    ('ja', 'Japanese'),
    ('en', _('English')),
]

LOCALE_PATHS = [
    os.path.join(BASE_DIR, 'locale/')
]
Вернуться на верх