Django会话语言不适用于用户登陆的第一页

时间:2016-06-16 08:04:17

标签: django session translation

要以正确的语言显示我的目标网页,我手动获取语言设置,设置会话语言,然后呈现模板。

问题在于没有翻译着陆页的第一次渲染。在渲染模板时,在考虑会话语言之前,我必须单击到另一个页面。如果我然后导航回登录页面,则会显示正确翻译。

我认为这是因为需要在客户端编写带有语言信息的会话cookie?设置会话语言的Right Way™是什么?我应该只有一个专门写这个cookie然后以某种方式重定向的视图吗?

views.py

from django.utils import translation
def landing_page(request):
    profile = Profiles.objects.get(user=request.user)
    request.session[translation.LANGUAGE_SESSION_KEY] = profile.language`
    return render(request, "my_template.html")

1 个答案:

答案 0 :(得分:1)

不,这与cookie无关。而是基于会话值激活语言的代码存在于LocaleMiddleware中,并且在视图之前运行。如果要更改当前视图的语言,则需要手动执行:

translation.activate(profile.language)