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 Professional バージョン 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 でリージョナル to PT を使用して上記の演習を実行しても、結果は同じでした。

私の知る限り、実行されたテストで証明されているように、ユーザー エージェント言語をシステム言語に移行することはできません。また、JavaScript や依存ライブラリを使用してもシステム言語への変更を検出することはできません。

補足として:

でいくつかのテストを実行するために使用したハックの回避策として、同様の問題をカバーするスタックオーバーフローの既に参照された質問ですが、最終結果は同じでした。返された言語は+の組み合わせによって適用された言語と一致しませんでした。altshift

ここでのstackoverflowに関する他の質問と、Googleの詳細な検索が空になった後も同様です。

于 2012-06-14T18:54:36.667 に答える