要以正确的语言显示我的目标网页,我手动获取语言设置,设置会话语言,然后呈现模板。
问题在于没有翻译着陆页的第一次渲染。在渲染模板时,在考虑会话语言之前,我必须单击到另一个页面。如果我然后导航回登录页面,则会显示正确翻译。
我认为这是因为需要在客户端编写带有语言信息的会话cookie?设置会话语言的Right Way™是什么?我应该只有一个专门写这个cookie然后以某种方式重定向的视图吗?
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")
答案 0 :(得分:1)
不,这与cookie无关。而是基于会话值激活语言的代码存在于LocaleMiddleware中,并且在视图之前运行。如果要更改当前视图的语言,则需要手动执行:
translation.activate(profile.language)