我们的业务要求规定用户应该能够在不更改浏览器或系统设置的情况下更改其语言偏好。我们的实现是一个简单的界面,要求他们选择一种语言。最初,我打算将他们的选择存储在 cookie 值中并检查它并设置 UI 文化,但我想知道是否有更简单的方法。
目前,我正在尝试看看我是否可以接受他们的选择,然后在响应中设置接受语言,以便在后续请求中使用它。现在,我在响应中设置了接受语言标头,但下一个请求用浏览器值覆盖它(例如 en-US,en;q=0.8")这可能吗?我该怎么做?还有其他想法实现这个功能也很受欢迎。
我们的业务要求规定用户应该能够在不更改浏览器或系统设置的情况下更改其语言偏好。我们的实现是一个简单的界面,要求他们选择一种语言。最初,我打算将他们的选择存储在 cookie 值中并检查它并设置 UI 文化,但我想知道是否有更简单的方法。
目前,我正在尝试看看我是否可以接受他们的选择,然后在响应中设置接受语言,以便在后续请求中使用它。现在,我在响应中设置了接受语言标头,但下一个请求用浏览器值覆盖它(例如 en-US,en;q=0.8")这可能吗?我该怎么做?还有其他想法实现这个功能也很受欢迎。
是的,您可以覆盖Accept-Language
HTTP 标头的效果。更准确地说,这样的标题本身没有效果。如果服务器进行这种协商,它的唯一作用是参与语言协商。你不需要使用任何东西来覆盖它;只是不要使用它,或者以使其他设置覆盖它的方式使用它。
使用 cookie 是常用的方法。不理想,但通常是实践中的最佳方法。如果需要,您可以使用Accept-Language
标题来确定语言选择菜单中的默认选项,但这比大多数人想象的要复杂。标题通常指定具有“质量因素”的语言或区域设置列表,而不仅仅是一种语言。
Accept-Language
在 HTTP 响应中设置没有意义,因为Accept-Language
它只是一个请求标头。