在 Internationalization API 中,ES12 对于多语言处理的增强是新增了 4 个对象:Intl.DisplayNames,Intl.ListFormat,Intl.Locale,Intl.NumberFormat。今天我们将重点关注在 ES12 中增加的 Intl.DisplayNames 对象。
什么是 Intl.DisplayNames 对象?
Intl.DisplayNames 对象提供了一个标准化方式来表示名称,可以帮助您在不同的语言环境中显示本地化的名称。具体来说,它可以将地域名称(如国家或地区)、货币名称、语言名称和脚本名称转换为本地化的名称或符号。
如何使用 Intl.DisplayNames 对象?
首先,我们需要创建一个实例,并传入特定语言环境选项。例如,要创建一个英文环境的实例,可以这样写:
const displayNames = new Intl.DisplayNames(['en'], {type: 'region'});
其中,['en']
表示选定的语言环境,{type: 'region'}
则表示转换类型为地域名称。
接下来,我们就可以使用 of()
方法来将特定名称转换为本地化的名称了,下面是一个示例代码:
console.log(displayNames.of('CN')); // China console.log(displayNames.of('US')); // United States console.log(displayNames.of('JP')); // Japan
以上代码将会在控制台输出转换后的本地化名称。
Intl.DisplayNames 对象的其他类型
在创建 Intl.DisplayNames 对象时,我们可以设置多个类型:'nu'
表示转换数字名称,'currency'
表示转换货币名称,'language'
表示转换语言名称,'script'
表示转换脚本名称。
接下来,我们将通过几个示例来演示这些不同类型的使用方式。
转换数字名称
我们可以使用 Intl.DisplayNames
对象将数字转换成具有本地化意义的字符串,例如转换成纯中文数字:
const displayNames = new Intl.DisplayNames(['zh-Hans-CN-u-nu-hanidec'], {type: 'nu'}); console.log(displayNames.of(123456)); // 一二三,四五六
转换货币名称
我们可以在转换货币名称时,传入货币类型,例如将美元转换成本地化名称:
const displayNames = new Intl.DisplayNames(['en'], {type: 'currency'}); console.log(displayNames.of('USD')); // US dollar
转换语言名称
要转换语言名称,我们可以将类型设置为 'language'
:
const displayNames = new Intl.DisplayNames(['ja'], {type: 'language'}); console.log(displayNames.of('en')); // イングリッシュ
转换脚本名称
要转换语言脚本名称,我们可以将类型设置为 'script'
:
const displayNames = new Intl.DisplayNames(['zh-Hans'], {type: 'script'}); console.log(displayNames.of('Latn')); // 拉丁文字
总结
Intl.DisplayNames 对象提供了一种简单有效的方式以本地化的方式显示名称,可以转换多种类型的名称,可以帮助我们更好地处理多语言问题。希望这篇文章能够帮助你更加深入地理解使用 Intl.DisplayNames 对象的方法和技巧。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654cb0157d4982a6eb61b0b4