1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
---
title: Intl
slug: Web/JavaScript/Reference/Global_Objects/Intl
tags:
- Internationalization
- Intl
- JavaScript
- Namespace
- 名前空間
- 国際化
translation_of: Web/JavaScript/Reference/Global_Objects/Intl
---
<div>{{JSRef}}</div>
<p><strong><code>Intl</code></strong> オブジェクトは、 ECMAScript の国際化 API の名前空間で、言語に依存した文字列の比較、数値フォーマット、日付フォーマットを提供します。 <strong><code>Intl</code></strong> オブジェクトは、いくつかのコンストラクターに加え、国際化コンストラクターや他の言語に関する関数に共通する機能へのアクセスを提供します。</p>
<h2 id="Properties" name="Properties">プロパティ</h2>
<dl>
<dt>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</dt>
<dd>言語に依存した文字列の比較を可能にするオブジェクトである collator のためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</dt>
<dd>言語に依存した日時の書式化を可能にするオブジェクトのためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/ListFormat", "Intl.ListFormat")}}</dt>
<dd>言語に依存したリストの書式化を可能にするオブジェクトのためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/Locale", "Intl.Locale")}}</dt>
<dd>Unicode ロケール識別子を表すオブジェクトのためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/NumberFormat", "Intl.NumberFormat")}}</dt>
<dd>言語に依存した数値フォーマットを可能にするオブジェクトのためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/PluralRules", "Intl.PluralRules")}}</dt>
<dd>複数形を意識した書式化や複数形の言語規則を可能にするオブジェクトのためのコンストラクター。</dd>
<dt>{{jsxref("Global_Objects/RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</dt>
<dd>言語を意識した相対時刻の書式化を可能にするオブジェクトのためのコンストラクター。</dd>
</dl>
<h2 id="Methods" name="Methods">メソッド</h2>
<dl>
<dt>{{jsxref("Intl.getCanonicalLocales()")}}</dt>
<dd>正規のロケール名を返すメソッド。</dd>
</dl>
<h2 id="Locale_identification_and_negotiation" name="Locale_identification_and_negotiation">ロケールの識別とネゴシエーション</h2>
<p>国際化コンストラクターや他のコンストラクターの言語を意識したメソッド (<a href="#See_also">関連情報</a>に記載) は、ロケールを識別して実際に使用するものを決定するために共通のパターンを使用しています。これらはすべて、 <code>locales</code> と <code>options</code> の引数を受け取り、 <code>options.localeMatcher</code> プロパティで指定したアルゴリズムを使用して 要求されたロケールと対応しているロケールとのネゴシエーションを行います。</p>
<h3 id="locales_argument" name="locales_argument">locales 引数</h3>
<p><code>locales</code> 引数は、 <a href="http://tools.ietf.org/html/rfc5646">BCP 47 言語タグ</a>を保持している文字列か、そのような言語タグの配列でなければなりません。 <code>locales</code> 引数が与えられていなかったり、 undefined であったりした場合は、実行時の既定のロケールが使用されます。</p>
<p>BCP 47 言語タグは、言語と、少なくとも主たる言語コードを含んでいます。ほとんどのよくある形式では、すべてハイフンで区切られたサブタグを、言語コード、文字体系コード、国または地域コードの順で含んでいます。タグは大文字小文字を区別しませんが、文字体系コードでは先頭が大文字で残りは小文字、国または地域コードでは大文字、その他はすべて小文字が推奨されています。</p>
<p>例:</p>
<ul>
<li><code>"hi"</code>: ヒンディー語 (主たる言語)。</li>
<li><code>"de-AT"</code>: オーストリアで使用されているドイツ語 (主たる言語と国コード)。</li>
<li><code>"zh-Hans-CN"</code>: 中国で使用されている簡体字で書かれる中国語 (主たる言語と文字体系と国コード)。</li>
</ul>
<p>言語、文字体系、国 (地域)、 (まれに使用される) 変化形を識別する BCP 47 言語タグのサブタグは <a href="http://www.iana.org/assignments/language-subtag-registry">IANA Language Subtag Registry</a> で調べられます。</p>
<p>BCP 47 はまた、拡張を認めており、そのうちの一つ <code>"u"</code> (Unicode) 拡張は、 JavaScript の国際化機能にとって重要です。それは、{{jsxref("Collator")}}, {{jsxref("NumberFormat")}}, {{jsxref("DateTimeFormat")}} オブジェクトのロケール固有の動作のカスタマイズを要求するために使用することができます。</p>
<ul>
<li><code>"de-DE-u-co-phonebk"</code>: ドイツ語のソート順の電話帳変化形を使用します。このソート順では、ウムラウト付きの母音を、 ä → ae, ö → oe, ü → ue のように、ウムラウトの付かない母音二文字に展開したものと見なした順で並べ替えします。</li>
<li><code>"th-TH-u-nu-thai"</code>: 数値書式で、タイの数字 (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) を使用します。</li>
<li><code>"ja-JP-u-ca-japanese"</code>: 日時書式で和暦を使用します。すなわち、2013年は平成25年として表現されます。</li>
<li><code>"en-GB-u-ca-islamic"</code>: イギリス英語でイスラム暦 (Hijri) を使用します。グレゴリオ暦で2017年10月14日は、 Hijri 暦で 24 Muharram, 1439 です。</li>
</ul>
<p>BCP 47 拡張タグは <a href="https://unicode.org/repos/cldr/trunk/common/bcp47/">Unicode CLDR Project</a> にあります。</p>
<h3 id="Locale_negotiation" name="Locale_negotiation">ロケールネゴシエーション</h3>
<p><code>locales</code> 引数は、すべての Unicode 拡張を除去した後、アプリケーションからの優先順位付き要求として解釈されます。ランタイムは、利用可能なローケルと比較し、利用可能なロケールのうち最適なものを選びます。マッチングアルゴリズムは二種類あります。 "<code>lookup</code>" マッチャーは、<a href="http://tools.ietf.org/html/rfc4647#section-3.4">BCP 47</a> で指定された Lookup アルゴリズムに従います。 "<code>best fit</code>" マッチャーでは、ランタイムが少なくとも、あるいは場合によっては、 Lookup アルゴリズムの結果よりもリクエストに適合したロケールを提供します。アプリケーションが <code>locales</code> 引数を提供しなかった場合や、リクエストに一致するロケールをランタイムが持っていなかった場合は、ランタイムの既定のロケールが使用されます。マッチャーは、 <code>options</code> 引数のプロパティを使って選択することができます (後述)。</p>
<p>ネゴシエーションにより選択された言語タグが Unicode 拡張の部分文字列を持っているとき、その拡張はここで、構築されたオブジェクトや関数の振る舞いをカスタマイズするために使われます。それぞれのコンストラクターや関数は、 Unicode 拡張用のキーのごく一部分のみ対応しており、また、対応する値は、多くの場合言語タグに依存します。例えば、 "<code>co</code>" キー (コレクション)は、 {{jsxref("Collator")}} だけが対応しており、そのキーに対する "<code>phonebk</code>" の値はドイツ語だけが対応しています。</p>
<h3 id="options_argument" name="options_argument">options 引数</h3>
<p><code>options</code> 引数は、コンストラクターや関数ごとに異なるプロパティをもつオブジェクトである必要があります。 <code>options</code> 引数が与えられなかった場合、または、未定義の場合、すべてのプロパティに対して既定値が使用されます。</p>
<p>言語を意識するすべてのコンストラクターや関数が対応しているプロパティが一つあります。 <code>localeMatcher</code> プロパティで、この値は "<code>lookup</code>" または "<code>best fit</code>" の文字列である必要があり、上記のとけーるマッチングアルゴリズムのうちから一つを選択します。</p>
<h2 id="Specifications" name="Specifications">仕様書</h2>
<table class="standard-table">
<thead>
<tr>
<th scope="col">仕様書</th>
</tr>
</thead>
<tbody>
<tr>
<td>{{SpecName('ES Int Draft', '#intl-object', 'Intl')}}</td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2>
<div>
<div class="hidden">このページの互換性一覧表は構造化データから生成されています。データに協力していただけるのであれば、 <a class="external" href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> をチェックアウトしてプルリクエストを送信してください。</div>
<p>{{Compat("javascript.builtins.Intl")}}</p>
</div>
<h2 id="See_also" name="See_also">関連情報</h2>
<ul>
<li>導入: <a href="https://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/index.html">The ECMAScript Internationalization API</a></li>
<li>コンストラクター
<ul>
<li>{{jsxref("Collator", "Intl.Collator")}}</li>
<li>{{jsxref("DateTimeFormat", "Intl.DateTimeFormat")}}</li>
<li>{{jsxref("ListFormat", "Intl.ListFormat")}}</li>
<li>{{jsxref("NumberFormat", "Intl.NumberFormat")}}</li>
<li>{{jsxref("PluralRules", "Intl.PluralRules")}}</li>
<li>{{jsxref("RelativeTimeFormat", "Intl.RelativeTimeFormat")}}</li>
<li>{{jsxref("Locale", "Intl.Locale")}}</li>
</ul>
</li>
<li>メソッド
<ul>
<li>{{jsxref("String.prototype.localeCompare()")}}</li>
<li>{{jsxref("Number.prototype.toLocaleString()")}}</li>
<li>{{jsxref("Date.prototype.toLocaleString()")}}</li>
<li>{{jsxref("Date.prototype.toLocaleDateString()")}}</li>
<li>{{jsxref("Date.prototype.toLocaleTimeString()")}}</li>
</ul>
</li>
</ul>
|