Продвинутый Django 5 для продолжающих

Прогресс по курсу:  0/193

7.6 Переключение языка сайта
1 из 1 шага пройден

Переключение языка сайта

Поскольку контент сайта раздается на нескольких языках, необходимо предоставить пользователям возможность переключать язык сайта.

Вы добавите селектор языка на сайт. Селектор языка будет состоять из списка имеющихся языков, которые будут отображаться с помощью ссылок, кроме текущего языка, который будет отображаться строкой с подчёркиванием.


Для этого откройте файл шаблона base.html и отредактируйте следующим образом:

<body hx-headers='{"X-CSRFToken": "{{ csrf_token }}"}'>

    <div class="container">
        <div class="row text-end mt-1">
            <div class="col">
                {% get_current_language as LANGUAGE_CODE %}
                {% get_available_languages as LANGUAGES %}
                {% get_language_info_list for LANGUAGES as languages %}
                {% for language in languages %}
                    {% if language.code == LANGUAGE_CODE %}
                        <u>{{ language.name_local }}</u>
                    {% else %}
                        <a href="/{{ language.code }}/">{{ language.name_local }}</a>
                    {% endif %}
                {% endfor %}
            </div>
        </div>
        <div class="row mt-5">
            <div class="col">
                <!-- Форма для добавления новой книги -->


А в файле base.css отредактируйте класс body, закомментируйте или удалите строку свойства padding-top:

body {
    /* padding-top: 50px; */
    background-color: rgb(246, 246, 246);
}


Вот как формируется селектор языка:

  1. С помощью тега {% load i18n %} загружаются теги интернационализации.
  2. При помощи тега {% get_current_language %} берется текущий язык.
  3. С помощью тега {% get_available_languages %} извлекаются языки, определенные в настроечном параметре LANGUAGES.
  4. Посредством тега {% get_language_info_list %} обеспечивается легкий доступ к атрибутам языка.
  5. Для отображения всех имеющихся языков создается HTML-список, и к текущему активному языку добавляется тег подчёркивания, а к доступным для переключения добавляется тег ссылки с кодом соответствующего языка.

В исходном коде, связанном с выбором языка, использованы предоставленные в i18n шаблонные теги, созданные на основе языков, имеющихся в настройках проекта.


Теперь пройдите по URL-адресу http://127.0.0.1:8000/ru/ в своем браузере и посмотрите. Вы должны увидеть селектор языка в правом верхнем углу сайта, как показано ниже:


Переключим язык:


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

очень нужная тема была, спасибо, но я уверен что есть способ гораздо проще все сделать!