gpt4 book ai didi

javascript - 将语言环境附加到请求接受语言

转载 作者:行者123 更新时间:2023-11-30 16:03:41 24 4
gpt4 key购买 nike

我有一个 Angular 应用程序,我需要在其中为所有 ajax 调用设置接受语言 header 。目前浏览器发送它自己的接受语言,但我们有一个 api,它也给我一个语言环境,所以要求是将我从 api 获得的语言环境附加到现有的浏览器语言环境。

所以简单来说,逻辑是:-Accept-Language= "accept-language from browser"+"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';
});

感谢任何帮助。

最佳答案

请看angular-translate是如何实现的。根据页面 https://angular-translate.github.io/docs/#/guide/07_multi-language,它具有函数 determinePreferredLanguage() :

tries to determine by itself what the preferred language would be. It searches for values in the window.navigator object in the following properties (also in this order):

navigator.languages[0]
navigator.language
navigator.browserLanguage
navigator.systemLanguage
navigator.userLanguage

Please use this method on your own risk! Be aware that each browser can return different values on these properties.

我发现该函数非常可靠,所以我想您可以在您的应用中重新实现它。

关于javascript - 将语言环境附加到请求接受语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37335545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com