【JS応用|初心者向け】JavaScriptで言語コードをスマートに取得!Intl.Locale.prototype.getLanguage入門

1. 導入: なぜこの技術が重要なのか

Webサイトを多言語対応させる際、「ユーザーが現在どの言語設定を使っているか」を正確に判定するのは意外と手間がかかる作業です。通常、ブラウザの言語設定は「ja-JP」や「en-US」といった形式で取得されますが、ここから「言語(ja)」だけを抽出したい場合、これまでは文字列の分割処理(split)などを行っていました。
しかし、Intl.Locale APIを使えば、そんな面倒な文字列操作をすることなく、言語、地域、スクリプトなどの情報をオブジェクトとして安全に取得できます。コードの可読性を高め、バグを減らすために非常に役立つ機能です。

2. 基礎知識: Intl.Localeとは?

Intl.Localeは、JavaScriptの国際化対応(Internationalization)のための組み込みオブジェクトです。
通常、言語設定は「言語タグ」と呼ばれる文字列で管理されています。例えば「en-US」であれば、「en」が言語コード、「US」が地域コードを表します。
Intl.Localeを使うと、この文字列を「解析可能なオブジェクト」に変換できます。その中の getLanguage プロパティ(※正確には getLanguage() メソッドではなく、プロパティとしてアクセスします)を使うことで、言語タグから言語部分のみを簡単に取り出せるようになります。

3. 実装/解決策

実装は非常にシンプルです。まず、言語タグの文字列を引数にして Intl.Locale オブジェクトを作成します。次に、そのオブジェクトの language プロパティを参照するだけです。これにより、複雑な正規表現や文字列操作を自前で書く必要がなくなります。

4. サンプルプログラム

以下のコードをブラウザのコンソールなどに貼り付けて、動作を確認してみてください。

// 1. 言語タグを定義します
const localeString = "ja-JP";

// 2. Intl.Localeオブジェクトを作成します
const locale = new Intl.Locale(localeString);

// 3. languageプロパティを使用して言語コードのみを取得します
const languageCode = locale.language;

// 結果を出力します
console.log("元の言語タグ:", localeString);
console.log("抽出された言語コード:", languageCode); // 出力: "ja"

// 別の例:地域やスクリプトを含む場合
const complexLocale = new Intl.Locale("zh-Hans-CN");
console.log("言語:", complexLocale.language); // 出力: "zh"
console.log("スクリプト:", complexLocale.script); // 出力: "Hans"

5. 応用・注意点

現場で使う際に注意すべき点がいくつかあります。

・ブラウザの互換性: このAPIはモダンブラウザ(Chrome, Firefox, Safari, Edgeなど)で広くサポートされていますが、非常に古いブラウザやInternet Explorerでは動作しません。必要に応じてPolyfill(機能補完ライブラリ)の導入を検討してください。
・プロパティかメソッドか: 今回紹介した language は「プロパティ」です。括弧(())を付けずに呼び出す点に注意してください。
・エラーハンドリング: 存在しない言語タグや無効な文字列を渡すと、エラーが発生する場合があります。ユーザー入力など、信頼できない値を使用する場合は try-catch 文で囲むのが安全です。

この機能を活用すれば、多言語対応サイトの構築がよりスマートで堅牢なものになります。ぜひ実際のプロジェクトで試してみてください!

タイトルとURLをコピーしました