Django,在重定向时改变语言

时间:2015-02-24 11:20:37

标签: python django django-i18n

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

如果不使用任何第三方中间件,这可能吗?如果没有,你建议使用哪个中间件?

1 个答案:

答案 0 :(得分:3)

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

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

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