Intl
Intl
Intl
对象是ECMAScript Internationalization API的名称空间,它提供了对语言敏感的字符串比较,数字格式以及日期和时间格式。对于构造Collator
,NumberFormat
以及DateTimeFormat
对象是属性Intl
对象。此页面记录了这些属性以及国际化构造函数和其他语言敏感函数的通用功能。
属性
Intl.Collator
collators的构造函数,启用语言敏感字符串比较的对象。Intl.DateTimeFormat
可启用语言敏感日期和时间格式的对象的构造函数。Intl.NumberFormat
用于启用语言敏感数字格式的对象的构造函数。
方法
Intl.getCanonicalLocales()
返回规范化语言环境名称的方法。
区域识别和协商
国际化构造函数以及其他构造函数的几种语言敏感方法(参见另请参见)使用通用模式来标识语言环境并确定它们实际使用的方式:它们都接受locales
和options
参数,并针对所请求的语言环境进行协商它们使用options.localeMatcher
属性中指定的算法支持的语言环境。
localesargument
所述locales
参数必须是保持的字符串BCP 47语言标签,或这样的语言标记的阵列。如果locales
参数未提供或未定义,则使用运行时的默认语言环境。
BCP 47语言标签标识语言或语言环境(两者之间的差异是模糊的)。在它们最常见的形式中,它可以按照以下顺序包含:语言代码,脚本代码和国家代码,所有代码均用连字符分隔。例子:
"hi"
:印度语。
可以在IANA语言子标签注册中找到BCP 47语言标签中标识语言,脚本,国家(地区)和(很少使用)变体的子标签。
BCP 47也允许扩展,其中一个对JavaScript国际化功能很重要:"u"
(Unicode)扩展。它可用于请求的区域设置特定的行为的定制Collator
,NumberFormat
或DateTimeFormat
对象。例子:
"de-DE-u-co-phonebk"
:使用德语排序顺序的电话簿变体,它将未变元音扩展为字符对:ä→ae,ö→oe,ü→ue。
区域协商
locales
在删除所有Unicode扩展之后,该参数被解释为来自应用程序的优先请求。运行时将它与它可用的语言环境进行比较,并选择可用的最佳语言环境。存在两种匹配算法:"lookup"
匹配器遵循BCP 47中指定的查找算法; 该"best fit"
匹配器允许运行时提供一个区域设置这至少,但可能更多,适合于比查找算法的结果的请求。如果应用程序未提供locales
参数,或者运行时没有与请求匹配的区域设置,则使用运行时的默认区域设置。可以使用options
参数的属性来选择匹配器(见下文)。
如果所选语言标记具有Unicode扩展子字符串,那么现在将使用该扩展来定制构造对象或函数的行为。每个构造函数或函数仅支持为Unicode扩展定义的键的子集,并且支持的值通常取决于语言标记。例如,"co"
密钥(排序规则)仅受支持Collator
,并且其"phonebk"
值仅支持德语。
options argument
所述options
参数必须与构造和功能之间变化属性的对象。如果options
参数未提供或未定义,则默认值将用于所有属性。
所有语言敏感的构造函数和函数都支持一个属性:localeMatcher
属性的值必须是一个字符串"lookup"
或者"best fit"
用于选择上述某种语言环境匹配算法。
规范
规范 | 状态 | 评论 |
---|---|---|
ECMAScript国际化API 1.0(ECMA-402)该规范中'Intl'的定义。 | 标准 | 初始定义。 |
ECMAScript国际化API 2.0(ECMA-402)该规范中'Intl'的定义。 | 标准 | |
ECMAScript国际化API 4.0(ECMA-402)该规范中'Intl'的定义。 | 草案 | 在第4版中增加了Intl.getCanonicalLocales。 |
浏览器兼容性
Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Basic support | 24 | (Yes) | 29 (29) | 11 | 15 | 10.0 |
Feature | Android | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Basic support | No support | 26 | (Yes) | 56.0 (56) | No support | No support | 10.0 |