Intl
オブジェクトは、ECMAScript の国際化 API の名前空間です。それは、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。Collator
NumberFormat
DateTimeFormat
オブジェクトに対するコンストラクターは、Intl
オブジェクトのプロパティです。このページではこれらのプロパティについて記載するとともに、国際化コンストラクターと他の言語に依存する機能に共通の機能を記載しています。
プロパティ
Intl.Collator
- 言語に依存した文字列の比較を可能にするオブジェクトである collators に対するコンストラクター。
Intl.DateTimeFormat
- 言語に依存した日時フォーマットを可能にするオブジェクトに対するコンストラクター。
Intl.NumberFormat
- 言語に依存した数値フォーマットを可能にするオブジェクトに対するコンストラクター。
Intl.PluralRules
- 複数形のフォーマットや複数形の言語ルールを可能にするオブジェクトに対するコンストラクター。
-
メソッド Section
Intl.getCanonicalLocales()
- 基準のロケール名を返すメソッド。
ロケールの識別とネゴシエーション
国際化コンストラクターや他のコンストラクターのいくつかの言語に依存したメソッド(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年として表現されます。"en-GB-u-ca-islamic"
: イギリス英語でイスラム (Hijri) カレンダーを使用します。グレゴリオ暦で 14 October, 2017 は Hijri 暦で 24 Muharram, 1439 です。
ロケールネゴシエーション
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) Intl の定義 |
標準 | 初期定義。 |
ECMAScript Internationalization API 2.0 (ECMA-402) Intl の定義 |
標準 | |
ECMAScript Internationalization API 4.0 (ECMA-402) Intl の定義 |
ドラフト | Added Intl.getCanonicalLocales in the 4th edition. |
ブラウザー実装状況
デスクトップ | モバイル | サーバー | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Intl | Chrome 完全対応 24 | Edge 完全対応 12 | Firefox 完全対応 29 | IE 完全対応 11 | Opera 完全対応 15 | Safari 完全対応 10 | WebView Android 完全対応 4.4 | Chrome Android 完全対応 25 | Firefox Android 完全対応 56 | Opera Android 完全対応 あり | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 1.5 | nodejs 完全対応 あり |
Collator | Chrome 完全対応 24 | Edge 完全対応 12 | Firefox 完全対応 29 | IE 完全対応 11 | Opera 完全対応 15 | Safari 完全対応 10 | WebView Android 完全対応 ≤37 | Chrome Android 完全対応 25 | Firefox Android 完全対応 56 | Opera Android 完全対応 あり | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 1.5 | nodejs ? |
DateTimeFormat | Chrome 完全対応 24 | Edge 完全対応 12 | Firefox 完全対応 29 | IE 完全対応 11 | Opera 完全対応 15 | Safari 完全対応 10 | WebView Android 完全対応 4.4 | Chrome Android 完全対応 26 | Firefox Android 完全対応 56 | Opera Android 完全対応 14 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 1.5 | nodejs 完全対応 あり |
ListFormat | Chrome 完全対応 72 | Edge 未対応 なし | Firefox 未対応 なし | IE 未対応 なし | Opera 完全対応 60 | Safari 未対応 なし | WebView Android 完全対応 72 | Chrome Android 完全対応 72 | Firefox Android 未対応 なし | Opera Android ? | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
Locale | Chrome 完全対応 74 | Edge 未対応 なし | Firefox 未対応 なし | IE 未対応 なし | Opera 未対応 なし | Safari 未対応 なし | WebView Android 完全対応 74 | Chrome Android 完全対応 74 | Firefox Android 未対応 なし | Opera Android 未対応 なし | Safari iOS 未対応 なし | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
NumberFormat | Chrome 完全対応 24 | Edge 完全対応 12 | Firefox 完全対応 29 | IE 完全対応 11 | Opera 完全対応 15 | Safari 完全対応 10 | WebView Android 完全対応 あり | Chrome Android 完全対応 26 | Firefox Android 完全対応 56 | Opera Android 完全対応 14 | Safari iOS 完全対応 10 | Samsung Internet Android 完全対応 1.5 | nodejs ? |
PluralRules | Chrome 完全対応 63 | Edge 完全対応 18 | Firefox 完全対応 58 | IE 未対応 なし | Opera 完全対応 50 | Safari 未対応 なし | WebView Android 完全対応 63 | Chrome Android 完全対応 63 | Firefox Android 完全対応 58 | Opera Android 完全対応 46 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 8.0 | nodejs 完全対応 10.0.0 |
RelativeTimeFormat | Chrome 完全対応 71 | Edge 未対応 なし | Firefox 完全対応 65 | IE 未対応 なし | Opera 完全対応 58 | Safari 未対応 なし | WebView Android 完全対応 71 | Chrome Android 完全対応 71 | Firefox Android 完全対応 65 | Opera Android 完全対応 50 | Safari iOS 未対応 なし | Samsung Internet Android 完全対応 10.0 | nodejs 完全対応 12.0.0 |
getCanonicalLocales | Chrome 完全対応 54 | Edge 完全対応 16 | Firefox 完全対応 48 | IE 未対応 なし | Opera 未対応 なし | Safari 完全対応 11 | WebView Android 未対応 なし | Chrome Android 未対応 なし | Firefox Android 完全対応 56 | Opera Android 未対応 なし | Safari iOS 完全対応 11 | Samsung Internet Android 未対応 なし | nodejs 未対応 なし |
凡例
- 完全対応
- 完全対応
- 未対応
- 未対応
- 実装状況不明
- 実装状況不明
- 実験的。動作が変更される可能性があります。
- 実験的。動作が変更される可能性があります。