是否可以覆盖客户端接受语言标头,以便子请求请求使用新语言?

时间:2014-01-10 19:36:34

标签: asp.net-mvc-4 globalization http-accept-language

我们的业务要求规定用户应该能够在不更改浏览器或系统设置的情况下更改其语言首选项。我们的实现是一个简单的界面,要求他们选择一种语言。最初,我只是将他们的选择存储在cookie值中并检查它并设置UI文化,但我想知道是否有更简单的方法。

目前,我正在尝试查看我是否可以接受他们的选择,然后在响应中设置accept语言,以便在后续请求中使用它。现在,我在响应中设置了accept-language标头,但是下一个请求会用浏览器值覆盖它(例如en-US,en; q = 0.8“)这是否可行,我该怎么做呢?还有其他想法实现这一功能也很受欢迎。

1 个答案:

答案 0 :(得分:3)

是的,您可以覆盖Accept-Language HTTP标头的效果。更确切地说,这样的标题没有效果。其角色是参与语言协商,如果服务器进行此类协商。你不需要用任何东西来覆盖它;只是不要使用它,或以使其他设置覆盖它的方式使用它。

使用cookie是常用方法。不理想,但往往是实践中最好的方法。如果需要,您可以使用Accept-Language标题来确定语言选择菜单中的默认选项,但这比大多数人想象的要复杂得多。通常,标题指定具有“质量因素”的语言或语言环境列表,而不仅仅是语言。

在HTTP响应中设置Accept-Language没有意义,因为Accept-Language只是请求标头。