Intl.DisplayNames

发布日期 · 标签:Intl

面向全球用户的 Web 应用程序需要以多种语言显示语言、地区、脚本和货币的显示名称。这些名称的翻译需要数据,这些数据可以在 Unicode CLDR 中找到。将数据打包为应用程序的一部分会给开发人员带来时间成本。用户可能更喜欢语言和地区名称的一致翻译,而要保持这些数据与世界地缘政治事件同步,需要不断维护。

幸运的是,大多数 JavaScript 运行时已经发布并保持了这些相同的翻译数据。新的 Intl.DisplayNames API 使 JavaScript 开发人员可以直接访问这些翻译,从而使应用程序能够更轻松地显示本地化名称。

使用示例 #

以下示例展示了如何创建一个 Intl.DisplayNames 对象,使用 ISO-3166 2 字母国家代码 以英语获取地区名称。

const regionNames = new Intl.DisplayNames(['en'], { type: 'region' });
regionNames.of('US');
// → 'United States'
regionNames.of('BA');
// → 'Bosnia & Herzegovina'
regionNames.of('MM');
// → 'Myanmar (Burma)'

以下示例使用 Unicode 的语言标识符语法 以繁体中文获取语言名称。

const languageNames = new Intl.DisplayNames(['zh-Hant'], { type: 'language' });
languageNames.of('fr');
// → '法文'
languageNames.of('zh');
// → '中文'
languageNames.of('de');
// → '德文'

以下示例使用 ISO-4217 3 字母货币代码 以简体中文获取货币名称。在具有不同单数和复数形式的语言中,货币名称为单数形式。对于复数形式,可以使用 Intl.NumberFormat

const currencyNames = new Intl.DisplayNames(['zh-Hans'], {type: 'currency'});
currencyNames.of('USD');
// → '美元'
currencyNames.of('EUR');
// → '欧元'
currencyNames.of('JPY');
// → '日元'
currencyNames.of('CNY');
// → '人民币'

以下示例展示了最后支持的类型,脚本,以英语显示,使用 ISO-15924 4 字母脚本代码

const scriptNames = new Intl.DisplayNames(['en'], { type: 'script' });
scriptNames.of('Latn');
// → 'Latin'
scriptNames.of('Arab');
// → 'Arabic'
scriptNames.of('Kana');
// → 'Katakana'

对于更高级的使用,第二个 options 参数也支持 style 属性。style 属性对应于显示名称的宽度,可以是 "long""short""narrow"。不同样式的值并不总是不同。默认值为 "long"

const longLanguageNames = new Intl.DisplayNames(['en'], { type: 'language' });
longLanguageNames.of('en-US');
// → 'American English'
const shortLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'short' });
shortLanguageNames.of('en-US');
// → 'US English'
const narrowLanguageNames = new Intl.DisplayNames(['en'], { type: 'language', style: 'narrow' });
narrowLanguageNames.of('en-US');
// → 'US English'

完整 API #

Intl.DisplayNames 的完整 API 如下所示。

Intl.DisplayNames(locales, options)
Intl.DisplayNames.prototype.of( code )

构造函数与其他 Intl API 一致。它的第一个参数是 语言环境列表,它的第二个参数是 options 参数,它接受 localeMatchertypestyle 属性。

"localeMatcher" 属性的处理方式与 其他 Intl API 中的处理方式相同。type 属性可以是 "region""language""currency""script"style 属性可以是 "long""short""narrow",默认值为 "long"

Intl.DisplayNames.prototype.of( code ) 期望根据实例构造方式的 type 采用以下格式。

结论 #

与其他 Intl API 一样,随着 Intl.DisplayNames 的普及,库和应用程序将选择放弃打包和发布自己的翻译数据,转而使用原生功能。

Intl.DisplayNames 支持 #