我知道这听起来很愚蠢,但我找不到问题所在。 我使用内置 View 进行用户身份验证,登录和注销分别将语言切换为当前 session 的非默认语言。
我有两种语言,根据 Djangoproject 站点上的文档进行设置,即在 locale 文件夹中,并且有 .mo 文件和所有内容。很好。
我有一个基于表单的语言切换,可以为发布到/i18n/setlang 的任何用户启用语言切换
所以,我的问题是,当我注销或登录时(我猜这也是 POST),为什么它似乎是“POST”来切换语言。
感谢您对此提供任何可能的线索。
编辑:我应该补充一点,它永远不会切换回来。它仅在一个方向上切换语言,即切换到非默认语言。
EDIT2:并不是说我认为它会吸引更多的答案,但这是我的语言切换器的代码(它通过 jQuery 动态切换。问题仍然是它会转到德语,并在我注销时保持在那里(注销)由 Django 中的注销 View 处理)。
<ul>
<li>
<form name="setLangen" action="/i18n/setlang/" method="POST"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='871Y71JyfG9WcieiKr8jjwe4j37IkIfq' /></div>
<input name="next" type="hidden" value="/" />
<input type="hidden" name="language" value="en" />
<a href="#" onclick="document.setLangen.submit();return false;">English</a>
</form>
</li>
<li>
<form name="setLangde" action="/i18n/setlang/" method="POST"><div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='871Y71JyfG9WcieiKr8jjwe4j37IkIfq' /></div>
<input name="next" type="hidden" value="/" />
<input type="hidden" name="language" value="de" />
<a href="#" onclick="document.setLangde.submit();return false;">Deutch</a>
</form>
</li>
</ul>
最佳答案
我猜你会在 session 中保留语言设置,当用户注销时, session 就会消失,你会回到默认语言。
关于Django:/logout 切换语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542741/