使用Jquery确定语言切换

时间:2012-06-14 16:06:16

标签: javascript jquery client-side

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

我想找到新语言!

编辑:

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

1 个答案:

答案 0 :(得分:4)

简答:不,你无法确定。

长答案:

没有跨浏览器方式来检测用户语言,甚至更多地检测到对其的更改。

Internet Explorer有一些方法可以为您提供此类信息(Using Client Capabilities):


我知道,这些不适用于其他浏览器,因此依赖于:


根据MDN的Browser compatibility Table,这应该适用于所有现代浏览器版本:

var lang = window.navigator.userLanguage || window.navigator.language;
alert(lang);

在阅读了一下有关此信息以查找新信息是否有表面之后,我发现有人说上面的代码会从Microsoft Windows返回区域设置:

请参阅此Stackoverflow answerquestion she refers to

所以我通过在 alt + shift 之间切换,在 Windows XP Profissionalversão2002Service Pack 3 下进行了简单测试PT和en_gb:

请参阅此working Fiddle Example

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)

在浏览器已打开的情况下,在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搜索之后的问题也是空的。