diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/javascript/reference/global_objects/intl/index.html | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/javascript/reference/global_objects/intl/index.html')
-rw-r--r-- | files/zh-cn/web/javascript/reference/global_objects/intl/index.html | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/files/zh-cn/web/javascript/reference/global_objects/intl/index.html b/files/zh-cn/web/javascript/reference/global_objects/intl/index.html new file mode 100644 index 0000000000..165a332206 --- /dev/null +++ b/files/zh-cn/web/javascript/reference/global_objects/intl/index.html @@ -0,0 +1,132 @@ +--- +title: Intl +slug: Web/JavaScript/Reference/Global_Objects/Intl +tags: + - JavaScript + - 国际化 +translation_of: Web/JavaScript/Reference/Global_Objects/Intl +--- +<div>{{JSRef}}</div> + +<p class="summary"><strong><code>Intl</code></strong> 对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化,和日期时间格式化。{{jsxref("Collator")}},{{jsxref("NumberFormat")}} 和 {{jsxref("DateTimeFormat")}} 对象的构造函数是 <code>Intl</code> 对象的属性。本页文档内容包括了这些属性,以及国际化使用的构造器和其他语言的方法等常见的功能。</p> + +<h2 id="属性">属性</h2> + +<dl> + <dt>{{jsxref("Global_Objects/Collator", "Intl.Collator")}}</dt> + <dd>collators的构造函数,用于启用对语言敏感的字符串比较的对象。</dd> + <dt>{{jsxref("Global_Objects/DateTimeFormat", "Intl.DateTimeFormat")}}</dt> + <dd>用于启用语言敏感的日期和时间格式的对象的构造函数。</dd> + <dt>{{jsxref("Global_Objects/ListFormat", "Intl.ListFormat")}}</dt> + <dd>Constructor for objects that enable language-sensitive list formatting.</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>Constructor for objects that enable language-sensitive relative time formatting.</dd> +</dl> + +<h2 id="方法">方法</h2> + +<dl> + <dt>{{jsxref("Intl.getCanonicalLocales()")}}</dt> + <dd>返回规范区域名称(canonical locale name)。</dd> +</dl> + +<h2 id="语言区域识别和判定">语言区域识别和判定</h2> + +<p>国际化的构造函数和其他构造函数的几个语言敏感的方法(可参考下方的{{anch("See_also", "参见")}})一样,使用同样的模式来识别语言区域和确定使用哪一种语言格式:他们都接收 <code>locales</code> 和 <code>options</code> 参数,使用 <code>options.localeMatcher</code> 属性指定的一个算法来对比应用请求的和支持的语言区域,来确定使用哪一个语言区域。</p> + +<h3 id="locales_参数"><code>locales</code> 参数</h3> + +<p><code>locales</code> 参数必须是一个 <a href="http://tools.ietf.org/html/rfc5646">BCP 47 语言标记</a>的字符串,或者是一个包括多个语言标记的数组。如果 <code>locales</code> 参数未提供或者是 undefined,便会使用运行时默认的 locale。</p> + +<p>一个 BCP 47 语言标记代表了一种语言或者区域(两者没有很大的区别)。在其最常见的格式中,它以这样的顺序囊括了这些内容:语言代码,脚本代码,和国家代码,全部由连字符分隔开。例如:</p> + +<ul> + <li><code>"hi"</code>:印地语 (primary language)。</li> + <li><code>"de-AT"</code>:<code>在奥地利使用的德语 (primary language with country code)。</code></li> + <li><code>"zh-Hans-CN"</code>:在中国使用的简体中文 (primary language with script and country codes)。</li> +</ul> + +<p>在 BCP 47 中表示语言,脚本,国家(区域)和变体(少用)的语言子标记含义可以在<a href="http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry"> IANA 语言子标记注册</a>中找到。</p> + +<p>BCP 47 也支持扩展,其中一个和 JavaScript 国际化方法相关的是:"u"(Unicode)扩展。它可以用于请求一个自定义区域特定行为的 {{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":在日期和时间格式化中使用日本的日历表示方式,所以 2013 会表示为平成 25。</code></li> + <li><code>"en-GB-u-ca-islamic"</code>: use British English with the Islamic (Hijri) calendar, where the Gregorian date 14 October, 2017 is the Hijri date 24 Muharram, 1439.</li> +</ul> + +<h3 id="语言区域判定">语言区域判定</h3> + +<p><code>locales</code> 参数,在除去所有的 Unicode 扩展之后,会被转化成来自应用的优先请求。运行时拿它和可用的语言区域做对比然后选择出最合适的一个。有两种匹配算法:“查找” 匹配遵循 <a href="http://tools.ietf.org/html/rfc5646">BCP 47</a> 中指定的查找算法;“最佳命中” 匹配器会让运行时至少提供一个语言区域,但合适请求的结果可能会比查找算法的要多。如果应用没有提供一个 locales 参数,或者运行时没有一个匹配请求的语言区域,那么会使用运行时默认的语言区域。匹配器可以使用 <code>options</code> 参数的一个属性来进行选择(见下方)。</p> + +<p>如果选中的语言标记有一个 Unicode 扩展子字符串,这个扩展会用于自定义构造对象或者方法的行为。每一个构造函数或者方法仅支持 Unicode 扩展定义的 key 的一个子集,和依赖于语言标记的支持的值。例如,<code>“co”</code>这个 key(collation)只在 {{jsxref("Collator")}} 中支持,它的值 “phonebk” 只在德语中支持。</p> + +<h3 id="options_参数"><code>options</code> 参数</h3> + +<p><code>options</code> 参数必须是一个对象,其属性值在不同的构造函数和方法中会有所变化。如果 <code>options</code> 参数未提供或者为 undefined,所有的属性值则使用默认的。</p> + +<p>所有语言敏感的构造函数和方法都支持的一个属性是:<code>localeMatcher</code> 属性,它的值必须是字符串 “lookup” 或者 “best fit”,用于选择上边描述的语言区域匹配算法。</p> + +<h2 id="规范">规范</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Specification</th> + <th scope="col">Status</th> + <th scope="col">Comment</th> + </tr> + <tr> + <td>{{SpecName('ES Int 1.0', '#sec-8', 'Intl')}}</td> + <td>{{Spec2('ES Int 1.0')}}</td> + <td>Initial definition.</td> + </tr> + <tr> + <td>{{SpecName('ES Int 2.0', '#sec-8', 'Intl')}}</td> + <td>{{Spec2('ES Int 2.0')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ES Int Draft', '#intl-object', 'Intl')}}</td> + <td>{{Spec2('ES Int Draft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="浏览器兼容性">浏览器兼容性</h2> + +<div class="hidden">The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</div> + +<p>{{Compat("javascript.builtins.Intl")}}</p> + +<h2 id="参见">参见</h2> + +<ul> + <li>介绍:<a href="http://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> + </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> |