Django,重定向时更改语言

Django, change language while redirecting

我已将我的 Django 应用设置为支持多种语言。

POST /i18n/setlang/ 起作用并从下拉菜单中更改语言。

<form action="/i18n/setlang/" method="post" class="form-inline">
    {% csrf_token %}
    <input name="next" type="hidden" value="/dashboard" />
    <select name="language" class="form-control" onchange="this.form.submit()">
        {% for lang in LANGUAGES %}
            <option value="{{ lang.0 }}" {% if request.LANGUAGE_CODE == lang.0 %} selected {% endif %}>{{ lang.1 }}</option>
        {% endfor %}
    </select>
</form>

在我的数据库中,我从用户名知道原籍国(用户名已预先指定)。如何在登录后自动更改语言并重定向到第一页?

例如:

return HttpResponseRedirect(reverse("dashboard", args=[lang]))

return HttpResponseRedirect('/dashboard?lang=pt')

这是否可以不使用任何第 3 方中间件?如果没有,您建议使用哪种中间件?

您可以在登录后明确更改语言,如下所示:

from django.utils import translation
user_language = 'en'
translation.activate(user_language)
request.session['django_language'] = user_language

activate() 只会更改线程的语言,而更改会话会使其在未来的请求中保持不变。