ロケールフォールバックチェーン:ブラウザがロケールリクエストを解決する方法
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をリクエストすると、ブラウザは以下を探します:
zh-Hans-CN(完全一致)zh-Hans(地域を除去)zh(スクリプトを除去)- デフォルトロケール(通常
en)
Unicode拡張
拡張(-u-の後)は基本ロケールを変更せずに動作をカスタマイズします:
// カレンダーシステム
'ja-JP-u-ca-japanese' // 日本の元号
'ar-SA-u-ca-islamic' // イスラム暦
// 数字体系
'ar-SA-u-nu-latn' // ラテン数字のアラビア語ロケール
// 照合
'de-DE-u-co-phonebk' // ドイツ語電話帳ソート順
実用的な推奨事項
- 通貨をフォーマットする場合は常に地域を指定:
enだけでなくen-US - 特定のニーズには拡張を使用:元号日付には
ja-JP-u-ca-japanese - テストでsupportedLocalesOfを確認してロケールの可用性を検証
- ユーザー指定のロケールを受け入れるが
Intl.getCanonicalLocales()で検証する
ユースケース
ロケールフォールバックの理解は、ロケール対応アプリケーションを構築するi18nアーキテクトや開発者にとって重要です。ユーザーのブラウザが「en-AU」を報告しているが、アプリに「en-US」と「en-GB」のデータしかない場合、フォールバックチェーンがどちらが使用されるかを決定します。ロケールセレクターを構築する際、実際にサポートされているロケールを知ることで、サイレントにフォールバックするオプションの提示を防止できます。