百科狗-知识改变命运!
--

Intl - JavaScript Intl 对象

乐乐1年前 (2023-11-21)阅读数 24#技术干货
文章标签语言

Intl

Intl对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比、数字格式化,和日期时间格式化。DateTimeFormat对象的构造函数是Intl对象的属性。本页文档内容包括了这些属性,以及国际化使用的构造器和其他语言的方法等常见的功能。

属性

Intl.Collatorcollators的构造函数,用于启用对语言敏感的字符串比较的对象。Intl.DateTimeFormat用于启用语言敏感的日期和时间格式的对象的构造函数。Intl.ListFormatConstructor for objects that enable language-sensitive list formatting.Intl.NumberFormat用于启用语言敏感数字格式的对象的构造函数。Intl.PluralRules用于启用多种敏感格式和多种语言语言规则的对象的构造函数。Intl.RelativeTimeFormatConstructor for objects that enable language-sensitive relative time formatting.

方法

Intl.getCanonicalLocales()返回规范区域名称(canonical locale name)。

语言区域识别和判定

国际化的构造函数和其他构造函数的几个语言敏感的方法(可参考下方的参见)一样,使用同样的模式来识别语言区域和确定使用哪一种语言格式:他们都接收localesoptions参数,使用options.localeMatcher属性指定的一个算法来对比应用请求的和支持的语言区域,来确定使用哪一个语言区域。

locales参数

locales参数必须是一个 BCP 47 语言标记的字符串,或者是一个包括多个语言标记的数组。如果locales参数未提供或者是 undefined,便会使用运行时默认的 locale。

Intl - JavaScript Intl 对象

一个 BCP 47 语言标记代表了一种语言或者区域(两者没有很大的区别)。在其最常见的格式中,它以这样的顺序囊括了这些内容:语言代码,脚本代码,和国家代码,全部由连字符分隔开。例如:

  • "hi":印地语(primary language)。
  • "de-AT"在奥地利使用的德语(primary language with country code)。
  • "zh-Hans-CN":在中国使用的简体中文(primary language with script and country codes)。

在 BCP 47 中表示语言,脚本,国家(区域)和变体(少用)的语言子标记含义可以在 IANA 语言子标记注册中找到。

BCP 47 也支持扩展,其中一个和 JavaScript 国际化方法相关的是:"u"(Unicode)扩展。它可以用于请求一个自定义区域特定行为的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": use British English with the Islamic(Hijri)calendar, where the Gregorian date 14 October, 2017 is the Hijri date 24 Muharram, 1439.

语言区域判定

locales参数,在除去所有的 Unicode 扩展之后,会被转化成来自应用的优先请求。运行时拿它和可用的语言区域做对比然后选择出最合适的一个。有两种匹配算法:“查找”匹配遵循 BCP 47 中指定的查找算法;“最佳命中”匹配器会让运行时至少提供一个语言区域,但合适请求的结果可能会比查找算法的要多。如果应用没有提供一个 locales 参数,或者运行时没有一个匹配请求的语言区域,那么会使用运行时默认的语言区域。匹配器可以使用options参数的一个属性来进行选择(见下方)。

如果选中的语言标记有一个 Unicode 扩展子字符串,这个扩展会用于自定义构造对象或者方法的行为。每一个构造函数或者方法仅支持 Unicode 扩展定义的 key 的一个子集,和依赖于语言标记的支持的值。例如,“co”这个 key(collation)只在Collator中支持,它的值“phonebk”只在德语中支持。

options参数

options参数必须是一个对象,其属性值在不同的构造函数和方法中会有所变化。如果options参数未提供或者为 undefined,所有的属性值则使用默认的。

所有语言敏感的构造函数和方法都支持的一个属性是:localeMatcher属性,它的值必须是字符串“lookup”或者“best fit”,用于选择上边描述的语言区域匹配算法。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)