#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, как выполнить эту функцию.