如何在文本框中输入时使用Jquery确定语言切换(在键盘上按alt + shift)?
我想找到新语言!
编辑:
我也可以为所有操作系统的所有浏览器使用javascript
答案 0 :(得分:4)
简答:不,你无法确定。
长答案:
没有跨浏览器方式来检测用户语言,甚至更多地检测到对其的更改。
Internet Explorer有一些方法可以为您提供此类信息(Using Client Capabilities):
navigator.browserLanguage ,操作系统语言:
IE browserLanguage property documentation或MSDN browserLanguage property documentation
navigator.systemLanguage ,控制面板中“区域选项”中的语言:
IE systemLanguage property documentation或MSDN systemLanguage property documentation
navigator.userLanguage ,操作系统语言:
我知道,这些不适用于其他浏览器,因此依赖于:
window.navigator.language ,返回浏览器的语言版本。
根据MDN的Browser compatibility Table,这应该适用于所有现代浏览器版本:
var lang = window.navigator.userLanguage || window.navigator.language;
alert(lang);
在阅读了一下有关此信息以查找新信息是否有表面之后,我发现有人说上面的代码会从Microsoft Windows返回区域设置:
请参阅此Stackoverflow answer和question she refers to
所以我通过在
打开浏览器,系统区域设置设为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 │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯
在浏览器已打开的情况下,在pt-PT和en_gb之间使用 alt + shift 进行切换:
╭──────────────────────────────────╥──────────────────┬─────────────┬─────────╮
│ 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家庭高级版SP1本地EN下尝试使用区域到PT,执行上述练习,但结果是相同的。
据我所知,并且通过所执行的测试证明,您无法将用户代理语言转换为系统语言,甚至可以使用JavaScript或任何相关库检测对其的更改。
作为旁注:
已经提到的stackoverflow问题涵盖了类似hack workaround的问题,我也用它来执行tests with,但最终结果是一样的,返回的语言不匹配由 alt + shift 组合应用的那个。
此处有关于stackoverflow的其他问题以及深度Google搜索之后的问题也是空的。