ブラウザで使われてるページの言語を調べるといった場合・・・
次の2通りの方法があります。
- 優先的に使用されている言語
- インストールされている言語リスト
ここでは この2つをJavaScriptから取得する方法&コード例 をまとめました。
グローバルなWebサービスとかを開発したいとき、
Webアプリの多言語対応を考えている時などに役立つと思います。
ブラウザで優先的に使われてる言語の取得するには...
まずは優先的に使われている言語の取得方法について
つまりブラウザで優先的に使用されている、 日本語(ja)とか、英語(en_US)とか、フランス語(fr)とか・・・そういう言語コードを取得するという方法です。
これは navigator.language プロパティの値を参照すれば分かります。
以下このプロパティについての説明(引用)
NavigatorLanguage.language 読取専用
ユーザーにとって一番望ましい言語 (たいていはブラウザー UI の言語) の DOMString を返します。不明な場合には null を返します。
簡単に言えば、 'en' とか 'fr' とか 'zh' とか返してくるってことです。
あと名前こそ language となってますが、 'ja_JP' 、 'en_US' みたいにロケール(国)も含みます。
例えば次、言語コードを取得してるコード例
1 2 |
var lang = navigator.language; console.log('language : ', lang); |
▼ このコードのコンソール表示結果
1 |
language : en-US |
自分のブラウザは英語もインストールされていて、コード実行したとき英語だったので 'en-US' が返ってきました。
でも普通の環境だったら 'ja' とか 'ja_JP' が返ってくるはずです。
ブラウザで利用可能な言語リストを取得するには
もしブラウザで優先的に使われている言語ではなく、
ユーザーが利用可能な全ての言語コードを取得したいなら・・・
その場合は window.navigator.languages から配列で取得可能です。
このプロパティに関する説明は以下の通り(引用)
navigator.languages 属性を参照することで、ユーザが使用する言語の配列を取得できます。この配列は読み取り専用で、各要素は BCP 47 言語タグです。並び順はユーザの設定した優先度順となっています。この配列の先頭にある、もっとも優先される言語タグは navigator.language を参照することで取得できます。
ユーザーが設定した優先度順で、配列として返されるみたいです。
実際に次みたいなコードを書いて表示してみました。
1 2 |
var langList = navigator.languages; console.log('languages : ', langList); |
▼ このコードのコンソール出力結果
1 |
languages : ["en-US", "ja"] |
自分のブラウザだと2種類の言語が感知されました。
多分ほとんどのブラウザだと、言語は1種類しかインストールされてないと思うので、 ['en-US'] とか ['ja-JP'] みたいな1つだけの配列が返ってくることが多いはずです。
言語切り替えテストをChromeで行う方法
最後にというか、ついでにというか・・・
一応言語を切り替えして、テストするやり方も紹介します。
以下は Chrome での言語切り替えの方法です。
まず Chrome 右上の設定アイコン( <= こんなの )を押して、設定メニューをオープン
設定メニューが開いたら、その中のさらに【設定】という項目をクリック
設定画面が開くので、一番下までスクロールして【詳細設定】を展開
さらに下までスクロールしていくと、言語設定が見つかるはずです。
▼ Chromeの言語の入れ替え・設定エリア
あとは好きな順序で言語を並び替えすればテスト可能
一番上が最優先で使用する言語で、下にいくほど優先度が低くなります。
ブラウザ言語の調べ方まとめ
ということで、簡単にまとめ
- ブラウザの最優先の使用言語を調べる
Navigatorオブジェクトの navigator.language プロパティの値を調べれば分かる。ただし、不明な場合は null が返される
- ブラウザの使用可能言語リストを調べる
Navigatorオブジェクトの navigator.languages プロパティのを調べれば分かる。並び順は最優先言語を先頭に優先度の高い順
以上、JavaScriptから使用言語を調べる方法&コード例でした。
言語ごとに何かしたいとか、特定の国をブロックしたいときとかに便利かもしれませんね。