我正在使用这个API确定浏览器的当前语言环境:
var language = window.navigator.userLanguage || window.navigator.language;
在IE中返回"fr-FR"
,但在Chrome中只返回"fr"
(其他语言环境类似)。
是否有其他API也可以在Chrome中返回"fr-FR"
?
我们依赖此功能来加载相应的区域文件。
我正在使用这个API确定浏览器的当前语言环境:
var language = window.navigator.userLanguage || window.navigator.language;
在IE中返回"fr-FR"
,但在Chrome中只返回"fr"
(其他语言环境类似)。
是否有其他API也可以在Chrome中返回"fr-FR"
?
我们依赖此功能来加载相应的区域文件。
更新:
截至2021年9月,Chrome对Intl
库的支持已经相当广泛。
function getClientLocale() {
if (typeof Intl !== 'undefined') {
try {
return Intl.NumberFormat().resolvedOptions().locale;
} catch (err) {
console.error("Cannot get locale from Intl")
}
}
}
否则,您可以返回到window.navigator
对象:
Firefox和Chrome在navigator
对象上有一个languages
数组。通常,该数组中的第一个元素是用户选择的区域设置(通常继承自操作系统设置)。var language;
if (window.navigator.languages) {
language = window.navigator.languages[0];
} else {
language = window.navigator.userLanguage || window.navigator.language;
}
对于我在Chrome浏览器中的navigator.languages
数组为["en-GB", "en-US", "en"]
,而navigator.language = "en-US"
,虽然略有区别但是很重要。
en-GB
)。请参阅W3文档:https://www.w3.org/TR/ltli/#locale和MDN的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale。要使用它,您可以将该ID传递给不同对象的`.toLocaleString()`方法,例如`Date`。 - AidinIntl
构造函数也可以使用,例如 Intl.DateTimeFormat().resolvedOptions().locale
或 Intl.Collator().resolvedOptions().locale
。 - mrienstragetClientLocale()
返回 'en-US'。而 navigator.version 返回 'en-AU'。 - nevfgetClientLocale()
返回'en-US',而在Firefox浏览器中返回'en-CA'。 - undefinedvar language = window.navigator.userLanguage || window.navigator.language;
返回 'fr-FR'。var language = navigator.language;
。de-DE
,而Intl.DateTimeFormat().resolvedOptions().locale
返回en-US
。所以,很抱歉,但这个答案对OP的问题没有帮助。 - Philzen
en-US
。 - emerson.marini