从浏览器中的'navigator.languages'获取国家/地区代码



我正在使用navigator.languages来检测浏览器的语言&国家代码,格式为en-US

如果我将浏览器语言设置为英语,则会得到en-US,但如果我将其设置为日语,则只返回ja,而不返回国家/地区代码JP。很明显,全世界都只在日本说日语,所以他们一定忽略了它。韩语也是如此,因为我得到的是ko而不是ko_KR

但我需要这两个信息,因为我正在加载的Facebook SDK脚本需要ll_cc格式的信息,如下所示:

https://connect.facebook.net/en_US/sdk.js
https://connect.facebook.net/ja_JP/sdk.js

根据Facebook文档,将ja_JP放入脚本地址是实现显示语言更改的唯一方法。

我想根据用户的浏览器语言设置更改显示语言。(例如,日语、韩语等(

那么,我应该如何从浏览器中获取国家代码JP呢?

我曾考虑在一对一的情况下创建一个表来匹配语言和国家代码,但我很好奇是否有更好的方法来实现这一点。

感谢您提前提供的帮助。

BCP47中指定的navigator.language为您提供的是国际标准组织的ISO 639-1语言代码,该代码主要是两个字母的代码。(如英语en和日语jp(

有方言、语言版本或变体的语言需要另一个指定的语言代码,这是一个例外。(例如,美国英语版本的en-us不同于英国英语版本(en-gb(。

语言代码的组合与语言和国家代码的组合之间存在令人困惑的重叠。

为了满足language-country的代码格式,您需要参考ISO-639-1和ISO-3166或方便地将两者结合在一起的网站,例如这里。

这是我写的一些应该有效的代码<这是我第一次写答案,所以如果我做错了什么,请告诉我。>

/// Note the l2.io and jQuery script tag

/// From Xposedbones (https://stackoverflow.com/questions/35999265/get-country-code-using-javascript)
var country_code = null;
$.getJSON('http://ipinfo.io/' + userip, function(data){
country_code = data.country;
console.log(country_code)

/// Modified From MDN Web Docs (https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage/language)
var language_code = navigator.language.split("-")[0] /// There is probably a better way for this
/// Combine country and language
const combined = `${language_code}-${country_code}`
alert(combined)

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="https://l2.io/ip.js?var=userip"></script>

相关内容

  • 没有找到相关文章

最新更新