Django 会话语言不适用于用户登陆的第一页
Django session language doesn't apply to the first page the user lands on
为了以正确的语言显示我的登陆页面,我手动获取语言设置,设置会话语言,然后呈现模板。
问题是着陆页的第一次渲染没有翻译。在呈现模板时考虑会话语言之前,我必须单击进入另一个页面。如果我随后导航回登录页面,它似乎已正确翻译。
我想这是因为需要在客户端编写一个带有语言信息的会话cookie?设置会话语言的正确方法是什么?我应该只拥有一个专门用于编写此 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")
不,这与 cookie 无关。而是基于会话值激活语言的代码位于 LocaleMiddleware 中,即视图之前的 运行。如果您想更改当前视图的语言,您需要手动进行:
translation.activate(profile.language)
为了以正确的语言显示我的登陆页面,我手动获取语言设置,设置会话语言,然后呈现模板。
问题是着陆页的第一次渲染没有翻译。在呈现模板时考虑会话语言之前,我必须单击进入另一个页面。如果我随后导航回登录页面,它似乎已正确翻译。
我想这是因为需要在客户端编写一个带有语言信息的会话cookie?设置会话语言的正确方法是什么?我应该只拥有一个专门用于编写此 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")
不,这与 cookie 无关。而是基于会话值激活语言的代码位于 LocaleMiddleware 中,即视图之前的 运行。如果您想更改当前视图的语言,您需要手动进行:
translation.activate(profile.language)