3

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

我想找到新的语言!

编辑:

我也可以为所有操作系统的所有浏览器使用 javascript

4

1 回答 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下通过在 pt-PT 和 en_gb 之间切换alt+进行了一个简单的测试:shift

请参阅此工作小提琴示例

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 with region to PT下试过这个,执行上述练习,但结果是一样的。

据我所知,并通过执行的测试证明,您无法通过用户代理语言进入系统语言,甚至无法通过使用 JavaScript 或任何依赖库检测到它的更改。

作为旁注:

已经提到的 stackoverflow 问题涵盖了与我也用来执行一些测试的hack 解决方法类似的问题,但最终结果是相同的,返回的语言与+组合应用的语言不匹配。altshift

stackoverflow 上的其他问题以及经过深入的 Google 搜索后也变成空的。

于 2012-06-14T18:54:36.667 回答