Intl

Intl オブジェクトは、 ECMAScript の国際化 API の名前空間で、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。 Intl オブジェクトは、いくつかのコンストラクターに加え、国際化コンストラクターや他の言語に関する関数に共通する機能へのアクセスを提供します。

プロパティ

Intl.Collator
言語に依存した文字列の比較を可能にするオブジェクトである collator のためのコンストラクター。
Intl.DateTimeFormat
言語に依存した日時の書式化を可能にするオブジェクトのためのコンストラクター。
Intl.ListFormat
言語に依存したリストの書式化を可能にするオブジェクトのためのコンストラクター。
Intl.Locale
Unicode ロケール識別子を表すオブジェクトのためのコンストラクター。
Intl.NumberFormat
言語に依存した数値フォーマットを可能にするオブジェクトのためのコンストラクター。
Intl.PluralRules
複数形を意識した書式化や複数形の言語規則を可能にするオブジェクトのためのコンストラクター。
Intl.RelativeTimeFormat (en-US)
言語を意識した相対時刻の書式化を可能にするオブジェクトのためのコンストラクター。

メソッド

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

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

国際化コンストラクターや他のコンストラクターの言語を意識したメソッド (関連情報に記載) は、ロケールを識別して実際に使用するものを決定するために共通のパターンを使用しています。これらはすべて、 localesoptions の引数を受け取り、 options.localeMatcher プロパティで指定したアルゴリズムを使用して 要求されたロケールと対応しているロケールとのネゴシエーションを行います。

locales 引数

locales 引数は、 BCP 47 言語タグを保持している文字列か、そのような言語タグの配列でなければなりません。 locales 引数が与えられていなかったり、 undefined であったりした場合は、実行時の既定のロケールが使用されます。

BCP 47 言語タグは、言語と、少なくとも主たる言語コードを含んでいます。ほとんどのよくある形式では、すべてハイフンで区切られたサブタグを、言語コード、文字体系コード、国または地域コードの順で含んでいます。タグは大文字小文字を区別しませんが、文字体系コードでは先頭が大文字で残りは小文字、国または地域コードでは大文字、その他はすべて小文字が推奨されています。

例:

  • "hi": ヒンディー語 (主たる言語)。
  • "de-AT": オーストリアで使用されているドイツ語 (主たる言語と国コード)。
  • "zh-Hans-CN": 中国で使用されている簡体字で書かれる中国語 (主たる言語と文字体系と国コード)。

言語、文字体系、国 (地域)、 (まれに使用される) 変化形を識別する BCP 47 言語タグのサブタグは IANA Language Subtag Registry で調べられます。

BCP 47 はまた、拡張を認めており、そのうちの一つ "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) を使用します。グレゴリオ暦で2017年10月14日は、 Hijri 暦で 24 Muharram, 1439 です。

BCP 47 拡張タグは Unicode CLDR Project にあります。

ロケールネゴシエーション

locales 引数は、すべての Unicode 拡張を除去した後、アプリケーションからの優先順位付き要求として解釈されます。ランタイムは、利用可能なロケールと比較し、利用可能なロケールのうち最適なものを選びます。マッチングアルゴリズムは二種類あります。 "lookup" マッチャーは、BCP 47 で指定された Lookup アルゴリズムに従います。 "best fit" マッチャーでは、ランタイムが少なくとも、あるいは場合によっては、 Lookup アルゴリズムの結果よりもリクエストに適合したロケールを提供します。アプリケーションが locales 引数を提供しなかった場合や、リクエストに一致するロケールをランタイムが持っていなかった場合は、ランタイムの既定のロケールが使用されます。マッチャーは、 options 引数のプロパティを使って選択することができます (後述)。

ネゴシエーションにより選択された言語タグが Unicode 拡張の部分文字列を持っているとき、その拡張はここで、構築されたオブジェクトや関数の振る舞いをカスタマイズするために使われます。それぞれのコンストラクターや関数は、 Unicode 拡張用のキーのごく一部分のみ対応しており、また、対応する値は、多くの場合言語タグに依存します。例えば、 "co" キー (コレクション)は、 Collator だけが対応しており、そのキーに対する "phonebk" の値はドイツ語だけが対応しています。

options 引数

options 引数は、コンストラクターや関数ごとに異なるプロパティをもつオブジェクトである必要があります。 options 引数が与えられなかった場合、または、未定義の場合、すべてのプロパティに対して既定値が使用されます。

言語を意識するすべてのコンストラクターや関数が対応しているプロパティが一つあります。 localeMatcher プロパティで、この値は "lookup" または "best fit" の文字列である必要があり、上記のロケールマッチングアルゴリズムのうちから一つを選択します。

仕様書

仕様書
ECMAScript Internationalization API (ECMA-402)
Intl の定義

ブラウザーの互換性

BCD tables only load in the browser

関連情報