Intl オブジェクトは、ECMAScript の国際化 API の名前空間です。それは、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。Collator NumberFormat DateTimeFormat オブジェクトに対するコンストラクターは、Intl オブジェクトのプロパティです。このページではこれらのプロパティについて記載するとともに、国際化コンストラクターと他の言語に依存する機能に共通の機能を記載しています。

プロパティ

Intl.Collator
言語に依存した文字列の比較を可能にするオブジェクトである collators に対するコンストラクター。
Intl.DateTimeFormat
言語に依存した日時フォーマットを可能にするオブジェクトに対するコンストラクター。
Intl.NumberFormat
言語に依存した数値フォーマットを可能にするオブジェクトに対するコンストラクター。
Intl.PluralRules
複数形のフォーマットや複数形の言語ルールを可能にするオブジェクトに対するコンストラクター。

メソッド Section

Intl.getCanonicalLocales()
基準のロケール名を返すメソッド。

ロケールの識別とネゴシエーション

国際化コンストラクターや他のコンストラクターのいくつかの言語に依存したメソッド(See alsoにリストされています)は、ロケールを識別し、実際に使用しているローケルを判断するための共通パターンを使用しています: すなわち、これらはすべて、localesoptions を引数に取り、そして、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 の国際化機能にとって重要です。それは、CollatorNumberFormatDateTimeFormatオブジェクトのロケール固有の動作のカスタマイズを要求するために使用することができます。例:

  • "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.

ブラウザー実装状況

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
getCanonicalLocalesChrome 完全対応 54Edge 完全対応 16Firefox 完全対応 48IE 未対応 なしOpera 未対応 なしSafari 完全対応 11WebView Android 未対応 なしChrome Android 未対応 なしEdge Mobile 未対応 なしFirefox Android 完全対応 56Opera Android 未対応 なしSafari iOS 完全対応 11Samsung Internet Android 未対応 なしnodejs 未対応 なし
CollatorChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
DateTimeFormatChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 未対応 なしChrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android ? Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
NumberFormatChrome 完全対応 24Edge 完全対応 ありFirefox 完全対応 29IE 完全対応 11Opera 完全対応 15Safari 完全対応 10WebView Android 完全対応 4.4Chrome Android 完全対応 26Edge Mobile 完全対応 ありFirefox Android 完全対応 56Opera Android 完全対応 37Safari iOS 完全対応 10Samsung Internet Android 完全対応 ありnodejs ?
PluralRulesChrome 完全対応 63Edge 完全対応 ありFirefox 完全対応 58IE 未対応 なしOpera 完全対応 50Safari 未対応 なしWebView Android 完全対応 63Chrome Android 完全対応 63Edge Mobile 未対応 なしFirefox Android 完全対応 58Opera Android 完全対応 50Safari iOS 未対応 なしSamsung Internet Android 未対応 なしnodejs 未対応 なし

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明

関連情報

ドキュメントのタグと貢献者

このページの貢献者: Uemmra3, TomoyaShibata, teoli, Marsf, mandel59, shide55
最終更新者: Uemmra3,