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

#django #internationalization #django-i18n

Вопрос:

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

language_form.html

 {% load i18n %}

<form action="/i18n/setlang/?next={% url 'homepage' %}" method="post">
    {% csrf_token %}
    <select name="language" style="padding: 4px 3px;">
        {% get_current_language as LANGUAGE_CODE %}
        {% get_available_languages as LANGUAGES %}
        {% get_current_language_bidi as LANGUAGE_BIDI %}
        {% for language in LANGUAGES %}
            <option value="{{ language.0 }}"{% if language.0 == LANGUAGE_CODE %} selected {% endif %} ">
                {{ language.1 }}
            </option>
        {% endfor %}
    </select>
    {% for lang in aLANGUAGES %}
        {{lang.list}}
    {% endfor %}
    <input type="submit" value="Change language" style="padding: 3px 3px; margin-right: 10px;">
  </form>
 

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

Комментарии:

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

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