使用Jquery确定语言切换

3

当在文本框中输入时,如何使用Jquery判断语言切换(按下键盘上的alt+shift)?

我想找到新的语言!

编辑:

我可以在所有浏览器和操作系统上也使用javascript。


我猜是Windows系统?我认为这取决于浏览器是否遵循Windows语言切换。 - Rob Audenaerde
@MoonLight:必须使用jQuery吗?还是JavaScript可以? - Răzvan Flavius Panda
2
我可能错了,但那是一个操作系统事件,我不认为浏览器(或至少是JavaScript)会知道它。 - bfavaretto
1个回答

4

简短回答:不行,你不能确定它。

详细回答:

没有跨浏览器的方法来检测用户语言,更不用说检测是否更改了语言。

Internet Explorer有一些方法可以提供这样的信息(使用客户端功能):


据我所知,这些内容并不适用于其他浏览器,因此依赖于:
根据 MDN 的浏览器兼容性表,这应该在所有现代浏览器版本中可用。
var lang = window.navigator.userLanguage || window.navigator.language;
alert(lang);

阅读一些相关信息以查找是否有新的信息出现,我发现有些人说上面的代码将返回来自 Microsoft Windows 的区域设置:

请参见Stackoverflow答案她所指的问题

因此,我在Windows XP Profissional版本2002 Service Pack 3下进行了简单的测试,通过使用alt+shift在pt-PT和en_gb之间切换:

请参见工作的Fiddle示例

1)

使用系统区域设置为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  │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯

2)

使用系统区域设置为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  │
╰──────────────────────────────────╨──────────────────┴─────────────┴─────────╯

3)

使用浏览器已经打开的情况下,通过按下 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下使用区域设置为PT进行上述练习,结果仍然相同。
就我所知,并通过所执行的测试证明,您无法通过使用JavaScript或任何依赖库将用户代理语言转换为系统语言,甚至无法检测到其更改。
作为旁注:
stackoverflow已经提出了一个类似问题的hack workaround,我也用它来进行一些tests with,但最终结果是相同的,返回的语言与alt + shift组合应用的语言不匹配。
stackoverflow上的其他问题和深度Google搜索都没有结果。

@MoonLight,我也有我的时刻;)如果让你失望了,对不起! - Zuul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接