概要
Intl オブジェクトは、ECMAScriptの国際化APIの名前空間です。それは、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。Collator、NumberFormat、DateTimeFormatオブジェクトに対するコンストラクタは、Intlオブジェクトのプロパティです。このページではこれらのプロパティについて記載するとともに、国際化コンストラクタと他の言語に依存する機能に共通の機能を記載しています。
プロパティ
Intl.Collator- 言語に依存した文字列の比較を可能にするオブジェクトであるcollatorsに対するコンストラクタ。
Intl.DateTimeFormat- 言語に依存した日時フォーマットを可能にするオブジェクトに対するコンストラクタ。
Intl.NumberFormat- 言語に依存した数値フォーマットを可能にするオブジェクトに対するコンストラクタ。
ロケールの識別とネゴシエーション
国際化コンストラクタや他のコンストラクタのいくつかの言語に依存したメソッド(See alsoにリストされています)は、ロケールを識別し、実際に使用しているローケルを判断するための共通パターンを使用しています: すなわち、これらはすべて、localesとoptionsを引数に取り、そして、options.localeMatcherプロパティで指定されたアルゴリズムを使用して、言語依存のメソッドがサポートするローケルと引数で要求されたロケールから、実際に使われるロケールを取り決める、ネゴシエーションを行います。
locales引数
locales引数はBCP 47 language tagを保持している文字列、または、そのような言語タグからなる配列のどちらかでなければなりません。locales引数が与えられない、または、未定義の場合、ランタイムのデフォルトローケルが使用されます。
BCP 47言語タグは言語またはローケルを識別します(その二つの間の違いはあいまいです)。ほとんどのの共通フォームでは、すべてハイフンで区切られたサブタグを、言語コード、用字系コード、国コードの順で含んでいます。例:
"hi": ヒンディー語。"de-AT": オーストリアで使用されているドイツ語。"zh-Hans-CN": 中国で使用されている簡体字で書かれる中国語。
言語、スクリプト、国(地域)、(まれに使用される)バリアントを識別するBCP 47言語タグのサブタグはIANA Language Subtag Registryで調べられます。
BCP47はまた、拡張を認めていて、そのうちの一つ "u" (Unicode) 拡張は、JavaScriptの国際化機能にとって重要です。それは、Collator、NumberFormat、DateTimeFormatオブジェクトのロケール固有の動作のカスタマイズを要求するために使用することができます。例:
"de-DE-u-co-phonebk": ドイツ語のソート順の電話帳バリアントを使用します。このソート順では、ウムラウト付きの母音を、ä → ae, ö → oe, ü → ueのように、ウムラウトの付かない母音二文字に展開したものと見なした並びでソートします。"th-TH-u-nu-thai": 数値フォーマットで、タイの数字 (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) を使用します。"ja-JP-u-ca-japanese": 日時フォーマットで和暦を使用します。すなわち、2013年は、平成25年として表現されます。
ロケールネゴシエーション
locales引数は、すべてのUnicode拡張を除去した後、アプリケーションからの優先順位付き要求として解釈されます。ランタイムは、利用可能なローケルと比較し、利用可能なもののうち一番よいローケルを選びます。マッチングアルゴリズムは"lookup" matcherと"best fit" matcherの二つです。"lookup" matcher は、BCP 47で指定されたLookupアルゴリズムに従います。"best fit" matcher では、少なくとも "lookup" matcher と同程度の、しかし可能ならより要求に適したロケールを選択します。アプリケーションがlocales引数を提供しない場合、または、ランタイムが要求に一致したローケルを持っていない場合、ランタイムのデフォルトローケルが使用されます。使用するマッチングアルゴリズムは、options引数のプロパティで選択できます(下を見てください)。
ネゴシエーションにより選択された言語タグがUnicode拡張の部分を持っているとき、その拡張はここで、構築されたオブジェクトや関数の振る舞いをカスタマイズするために使われます。それぞれのコンストラクタや関数は、Unicode拡張用のキーのごく一部分のみ対応しており、また、対応する値は、多くの場合言語タグに依存します。例えば、"co" キー (コレクション)は、Collatorだけが対応していて、そのキーに対する"phonebk"値はドイツ語だけが対応しています。
options 引数
options 引数は、コンストラクタや関数ごとに異なるプロパティをもつオブジェクトである必要があります。options引数が与えられない場合、または、未定義の場合、すべてのプロパティに対してデフォルト値が使用されます。
localeMatcherプロパティは、すべての言語に依存したコンストラクタや関数によってサポートされます。localeMatcherプロパティの値は、文字列"lookup"または"best fit"である必要があり、このプロパティにより上述のロケールマッチングアルゴリズムから一つを選択します。
仕様
| 仕様 | 状況 | コメント |
|---|---|---|
| ECMAScript Internationalization API 1.0 (ECMA-402) The definition of 'Intl' in that specification. |
Standard | 初期定義。 |
ブラウザ実装状況
| 機能 | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| 基本サポート | 24 | 29 (29) | 11 | 15 | 未サポート |
| 機能 | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| 基本サポート | 未サポート | 26 | 未サポート バグ 864843 |
未サポート | 未サポート | 未サポート |