JavaScriptから使用言語コードを取得する方法とかコード例

ブラウザで使われてるページの言語を調べるといった場合・・・

次の2通りの方法があります。

  • 優先的に使用されている言語
  • インストールされている言語リスト

ここでは この2つをJavaScriptから取得する方法&コード例 をまとめました。

グローバルなWebサービスとかを開発したいとき、
Webアプリの多言語対応を考えている時などに役立つと思います。

ブラウザで優先的に使われてる言語の取得するには...

まずは優先的に使われている言語の取得方法について

つまりブラウザで優先的に使用されている、 日本語(ja)とか、英語(en_US)とか、フランス語(fr)とか・・・そういう言語コードを取得するという方法です。

これは navigator.language  プロパティの値を参照すれば分かります。

以下このプロパティについての説明(引用)

NavigatorLanguage.language 読取専用

ユーザーにとって一番望ましい言語 (たいていはブラウザー UI の言語) の DOMString を返します。不明な場合には null を返します。

引用元 : Navigator - Web API | MDN

簡単に言えば、 'en'  とか 'fr'  とか 'zh'  とか返してくるってことです。

あと名前こそ language となってますが、 'ja_JP'  、 'en_US'  みたいにロケール(国)も含みます。

 

例えば次、言語コードを取得してるコード例

▼ このコードのコンソール表示結果

自分のブラウザは英語もインストールされていて、コード実行したとき英語だったので 'en-US'  が返ってきました。

でも普通の環境だったら 'ja'  とか 'ja_JP'  が返ってくるはずです。

ブラウザで利用可能な言語リストを取得するには

もしブラウザで優先的に使われている言語ではなく、
ユーザーが利用可能な全ての言語コードを取得したいなら・・・

その場合は window.navigator.languages  から配列で取得可能です。

このプロパティに関する説明は以下の通り(引用)

navigator.languages 属性を参照することで、ユーザが使用する言語の配列を取得できます。この配列は読み取り専用で、各要素は BCP 47 言語タグです。並び順はユーザの設定した優先度順となっています。この配列の先頭にある、もっとも優先される言語タグは navigator.language を参照することで取得できます。

引用元 : navigator.languages - Web API | MDN

ユーザーが設定した優先度順で、配列として返されるみたいです。

 

実際に次みたいなコードを書いて表示してみました。

▼ このコードのコンソール出力結果

自分のブラウザだと2種類の言語が感知されました。

多分ほとんどのブラウザだと、言語は1種類しかインストールされてないと思うので、 ['en-US']  とか  ['ja-JP']  みたいな1つだけの配列が返ってくることが多いはずです。

言語切り替えテストをChromeで行う方法

最後にというか、ついでにというか・・・

一応言語を切り替えして、テストするやり方も紹介します

以下は Chrome での言語切り替えの方法です。

 

まず Chrome 右上の設定アイコン( <= こんなの )を押して、設定メニューをオープン

設定メニューが開いたら、その中のさらに【設定】という項目をクリック

まずChromeの設定画面を開く

設定画面が開くので、一番下までスクロールして【詳細設定】を展開

さらに下までスクロールしていくと、言語設定が見つかるはずです。

▼ Chromeの言語の入れ替え・設定エリア

Chromeの言語の入れ替え・設定エリア

あとは好きな順序で言語を並び替えすればテスト可能

一番上が最優先で使用する言語で、下にいくほど優先度が低くなります。

ブラウザ言語の調べ方まとめ

ということで、簡単にまとめ

  • ブラウザの最優先の使用言語を調べる
    Navigatorオブジェクトの navigator.language  プロパティの値を調べれば分かる。ただし、不明な場合は null  が返される
  • ブラウザの使用可能言語リストを調べる
    Navigatorオブジェクトの navigator.languages  プロパティのを調べれば分かる。並び順は最優先言語を先頭に優先度の高い順

以上、JavaScriptから使用言語を調べる方法&コード例でした。

言語ごとに何かしたいとか、特定の国をブロックしたいときとかに便利かもしれませんね。

Commentsこの記事についたコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください