0

我已经设置了我的 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')

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

4

1 回答 1

3

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

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

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

于 2015-02-24T12:37:56.097 回答