【发布时间】:2016-05-19 23:15:45
【问题描述】:
我有一个 Angular 应用程序,我需要在其中将接受语言标头设置为所有 ajax 调用。目前浏览器发送它自己的接受语言,但我们有一个 api,它也给了我一个语言环境,所以要求是将我从 api 获得的语言环境附加到现有的浏览器语言环境。
所以简单来说逻辑是:- Accept-Language="从浏览器接受语言"+"api调用语言"
假设浏览器将 en,en-US 作为其语言环境,并且我从 api 收到 es-MX,所以我需要发送 en,en-US,es-MX 以用于所有下一个 api 调用。
我将如何获取浏览器随每个请求发送的接受语言。
到目前为止,根据我所阅读的内容,我需要使用其中之一或全部三个
window.navigator.userLanguage;
window.navigator.systemLanguage;
window.navigator.language;
前两个甚至不适用于 chrome/firefox/edge。
navigator.language 在 Firefox 中完美运行,但在 chrome 中,我不知道它从哪里选择语言环境,即使我的浏览器设置为西班牙语,我得到 en-US,但 Accept-header 是 es,在 EDGE 中我认为它选择不确定系统区域设置,因为我没有更改浏览器区域设置的选项。
有什么方法可以将我的语言环境附加到浏览器设置的接受语言中。
我知道我可以像这样设置一个新的,但我需要将它附加到浏览器发送的那个。
angular.module('myApp', [])
.config(function($httpProvider) {
$httpProvider.defaults.headers
.common['Accept-Language'] = 'es-MX';
});
感谢任何帮助。
【问题讨论】:
标签: javascript angularjs localization http-headers