ロケールフォールバックチェーン:ブラウザがロケールリクエストを解決する方法

Intl APIがフォールバックチェーンを通じてロケールリクエストを解決する方法を理解します。BCP 47サブタグ、ロケールネゴシエーションアルゴリズム、ロケール指定のベストプラクティスについて学びます。

Advanced

詳細な説明

ロケールフォールバックチェーン

完全にサポートされていないロケールをリクエストすると、Intl APIはフォールバックチェーンを使用して最適な利用可能なマッチを見つけます。このメカニズムを理解することは、予測可能な国際化動作にとって不可欠です。

BCP 47ロケールタグ

完全なロケールタグには複数のサブタグがあります:

language-script-region-extensions
zh-Hans-CN-u-ca-chinese

language: zh(中国語)
script: Hans(簡体字)
region: CN(中国)
extension: u-ca-chinese(中国暦)

フォールバックアルゴリズム

zh-Hans-CNをリクエストすると、ブラウザは以下を探します:

  1. zh-Hans-CN(完全一致)
  2. zh-Hans(地域を除去)
  3. zh(スクリプトを除去)
  4. デフォルトロケール(通常en

Unicode拡張

拡張(-u-の後)は基本ロケールを変更せずに動作をカスタマイズします:

// カレンダーシステム
'ja-JP-u-ca-japanese'  // 日本の元号
'ar-SA-u-ca-islamic'   // イスラム暦

// 数字体系
'ar-SA-u-nu-latn'      // ラテン数字のアラビア語ロケール

// 照合
'de-DE-u-co-phonebk'   // ドイツ語電話帳ソート順

実用的な推奨事項

  1. 通貨をフォーマットする場合は常に地域を指定enだけでなくen-US
  2. 特定のニーズには拡張を使用:元号日付にはja-JP-u-ca-japanese
  3. テストでsupportedLocalesOfを確認してロケールの可用性を検証
  4. ユーザー指定のロケールを受け入れるがIntl.getCanonicalLocales()検証する

ユースケース

ロケールフォールバックの理解は、ロケール対応アプリケーションを構築するi18nアーキテクトや開発者にとって重要です。ユーザーのブラウザが「en-AU」を報告しているが、アプリに「en-US」と「en-GB」のデータしかない場合、フォールバックチェーンがどちらが使用されるかを決定します。ロケールセレクターを構築する際、実際にサポートされているロケールを知ることで、サイレントにフォールバックするオプションの提示を防止できます。

試してみる — Locale String Tester

フルツールを開く