在文本框中键入时,如何使用 Jquery 确定语言切换(按键盘上的 alt+shift)?
我想找到新的语言!
编辑:
我也可以为所有操作系统的所有浏览器使用 javascript
在文本框中键入时,如何使用 Jquery 确定语言切换(按键盘上的 alt+shift)?
我想找到新的语言!
编辑:
我也可以为所有操作系统的所有浏览器使用 javascript
简短回答:不,您无法确定。
长答案:
没有跨浏览器的方法来检测用户语言,更不用说检测对它的更改。
Internet Explorer 有一些方法可以为您提供此类信息(使用客户端功能):
navigator.browserLanguage,操作系统语言:
navigator.systemLanguage,控制面板中 Regions Options 中的语言:
navigator.userLanguage,操作系统语言:
据我所知,这些不适用于其他浏览器,因此依赖于:
window.navigator.language返回浏览器的语言版本。
根据 MDN 的浏览器兼容性表,这应该适用于所有现代浏览器版本:
var lang = window.navigator.userLanguage || window.navigator.language;
alert(lang);
在阅读了一些关于此内容以了解是否有新信息浮出水面后,我发现有人说上面的代码将返回 Microsoft Windows 的区域设置:
因此,我在Windows XP Profissional 版本 2002 Service Pack 3下通过在 pt-PT 和 en_gb 之间切换alt+进行了一个简单的测试:shift
请参阅此工作小提琴示例!
打开浏览器,将系统区域设置设置为 pt-PT:
╭──────────────────────────────────╥──────────────────┬─────────────┬─────────╮
│ Browser ║ Browser UI Lang │ System Lang │ Alerted │
╞══════════════════════════════════╬══════════════════╪═════════════╪═════════╡
│ Internet Explorer 8.0.6001.18702 ║ PT │ pt-PT │ en-gb │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Opera 11.62 ║ PT │ pt-PT │ pt │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Firefox 3.6.16 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Safari 5.1.2 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Google Chrome 18.0.1025.168 m ║ PT │ pt-PT │ pt-PT │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯
打开系统区域设置为 en-gb 的浏览器:
╭──────────────────────────────────╥──────────────────┬─────────────┬─────────╮
│ Browser ║ Browser UI Lang │ System Lang │ Alerted │
╞══════════════════════════════════╬══════════════════╪═════════════╪═════════╡
│ Internet Explorer 8.0.6001.18702 ║ PT │ pt-PT │ en-gb │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Opera 11.62 ║ PT │ pt-PT │ pt │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Firefox 3.6.16 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Safari 5.1.2 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Google Chrome 18.0.1025.168 m ║ PT │ pt-PT │ pt-PT │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯
alt在浏览器已经打开的情况下,用+shift在 pt-PT 和 en_gb 之间切换:
╭──────────────────────────────────╥──────────────────┬─────────────┬─────────╮
│ Browser ║ Browser UI Lang │ System Lang │ Alerted │
╞══════════════════════════════════╬══════════════════╪═════════════╪═════════╡
│ Internet Explorer 8.0.6001.18702 ║ PT │ pt-PT │ en-gb │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Opera 11.62 ║ PT │ pt-PT │ pt │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Firefox 3.6.16 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Safari 5.1.2 ║ PT │ pt-PT │ pt-PT │
├──────────────────────────────────╫──────────────────┼─────────────┼─────────┤
│ Google Chrome 18.0.1025.168 m ║ PT │ pt-PT │ pt-PT │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯
结果总是一样的,甚至在windows 7 Home Premium SP1 Native EN with region to PT下试过这个,执行上述练习,但结果是一样的。
据我所知,并通过执行的测试证明,您无法通过用户代理语言进入系统语言,甚至无法通过使用 JavaScript 或任何依赖库检测到它的更改。
作为旁注:
已经提到的 stackoverflow 问题涵盖了与我也用来执行一些测试的hack 解决方法类似的问题,但最终结果是相同的,返回的语言与+组合应用的语言不匹配。altshift
stackoverflow 上的其他问题以及经过深入的 Google 搜索后也变成空的。