Проблема обновления URL и страницы для многоязычного сайта на Django

Пожалуйста, помогите мне решить один вопрос. У меня есть многоязычный сайт на Django со стандартным фреймворком интернационализации.

Settings.py

MIDDLEWARE = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware'
     ...]

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

LANGUAGE_CODE = 'en'
USE_I18N = True
USE_L10N = True
LOCALE_PATHS = ['../locale/']

Все файлы *.mo и *.po для обоих языков успешно созданы.

в файле main.html есть фрагмент кода для переключения языка:

{% get_current_language as CURRENT_LANGUAGE %}
{% get_available_languages as AVAILABLE_LANGUAGES %}
{% get_language_info_list for AVAILABLE_LANGUAGES as languages %}
<div class="languages">
   <p>{% trans "Language" %}:</p>
   <ul class="languages">
        {% for language in languages %}
           <li>
              <a href="/{{ language.code }}/"
                 {% if language.code == CURRENT_LANGUAGE %} class="active"{% endif %}>
                 {{ language.name_local }}
              </a>
           </li>
        {% endfor %}
    </ul>
</div>

url.py

urlpatterns = i18n_patterns(
        path('', include('mysite.urls'))
)

упрощенная структура сайта

main.html
--page1.html
--page2.html

Теперь я могу нажать и изменить перевод страницы, но я столкнулся со следующей проблемой. Когда я переключаю язык, например, с main/en/page1, я перенаправляюсь обратно на страницу main/ja, независимо от моего текущего местоположения в структуре сайта. Другими словами, я хотел бы оставаться на той же странице1 при переключении языка и менять только языковой префикс main/en/page1 -> main/ja/page1. Лучшим рабочим примером является DjangoDocs, у которого переключатель языка находится внизу справа и работает идеально.

Решили проблему. Просто добавьте строку {{ request.get_full_path |slice:'4:'}} в <a href=> часть.

{% get_available_languages as AVAILABLE_LANGUAGES %}
{% get_language_info_list for AVAILABLE_LANGUAGES as languages %}
<div class="languages">
   <p>{% trans "Language" %}:</p>
   <ul class="languages">
        {% for language in languages %}
           <li>
              <a href="/{{ language.code }}/ {{ request.get_full_path |slice:'4:'}}"
                 {% if language.code == CURRENT_LANGUAGE %} class="active"{% endif %}>
                 {{ language.name_local }}
              </a>
           </li>
        {% endfor %}
    </ul>
</div>
Вернуться на верх