无论如何使用javascript检测操作系统语言?

Sal*_*leh 9 javascript javascript-framework

我需要使用javascript检测操作系统语言,以便根据语言查看我的页面.

我知道我们可以检测浏览器语言,但这对我来说还不够.

我需要操作系统语言

提前致谢

小智 20

这将返回系统语言:

Intl.DateTimeFormat().resolvedOptions().locale
Run Code Online (Sandbox Code Playgroud)


Ric*_*ook 15

没有跨浏览器的方法来做到这一点.Internet Explorer支持以下内容:

  • navigator.browserLanguage:浏览器语言
  • navigator.systemLanguage:Windows系统语言
  • navigator.userLanguage:Windows用户特定语言

但是没有办法从任何其他浏览器访问这些设置(我可以告诉),所以不要使用它们:navigator.language如果你想维护跨浏览器功能,坚持使用标准(对应于浏览器语言).如果您使用它们,您将把您的网站绑定到特定的操作系统系列(即Windows)和特定的浏览器(即Internet Explorer).你真的想这么做吗?

为什么浏览器语言不适合您的应用程序?


Den*_*nin 5

可能只是考虑以下几个因素来猜测操作系统语言

\n\n

Windows操作系统

\n\n

IE浏览器

\n\n
    \n
  • navigator.browserLanguage:IE语言(菜单、帮助等),与操作系统显示语言相同(如果用户没有更改)。如控制面板 -> 区域和语言 -> 键盘和语言 -> 显示语言
  • \n
  • navigator.systemLanguage:如控制面板 -> 区域和语言 -> 位置
  • \n
  • navigator.userLanguage:如控制面板 -> 区域和语言 -> 格式
  • \n
\n\n

ECMAScript 国际化 API

\n\n
var d=new Date(Date.UTC(2014,1,26,3,0,0));\nvar dateFormat={weekday:"long",year:"numeric",month:"long",day:"numeric"};\nvar result = d.toLocaleDateString("i-default",dateFormat);\nalert(result);\n//e.g. for Russian format ( Control Panel -> Region and Language -> Formats ) \n//result == \'\xd1\x81\xd1\x80\xd0\xb5\xd0\xb4\xd0\xb0, 26 \xd1\x84\xd0\xb5\xd0\xb2\xd1\x80\xd0\xb0\xd0\xbb\xd1\x8f 2014 \xd0\xb3.\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后搜索result在您的服务器上搜索初步生成的不同语言的格式化日期集。

\n\n

注意!Chrome 返回以其 UI 语言格式化的日期。

\n\n

Adobe Flash

\n\n

如果您迫切需要了解操作系统语言,请在页面中嵌入flash并利用flash.system.Capability.language

\n\n

注意! Chrome 不允许这种伎俩——Chrome 的 Flash 总是显示browser.language,我想是因为它有自己的 Flash。

\n\n

火狐和 Chrome

\n\n

navigator.language告诉您浏览器的 UI 语言(菜单、帮助等),您可能会认为在绝大多数情况下它与操作系统语言匹配(特别是对于家用计算机):下载 FF 或 Chrome 时,会根据用户显示下载页面\ 然后是浏览器——在 Windows 上,它是 IE,与操作系统的语言相同。

\n\n

确实很奇怪,Chrome 在处理浏览器的环境参数时本身就是一个东西,唉。

\n