Intl.DisplayNames.prototype.of()
Intl.DisplayNames 实例的 of() 方法接收一个代码,并根据实例化此 Intl.DisplayNames 对象时提供的区域设置和选项返回一个字符串。
试一试
const regionNamesInEnglish = new Intl.DisplayNames(["en"], { type: "region" });
const regionNamesInTraditionalChinese = new Intl.DisplayNames(["zh-Hant"], {
type: "region",
});
console.log(regionNamesInEnglish.of("US"));
// Expected output: "United States"
console.log(regionNamesInTraditionalChinese.of("US"));
// Expected output: "美國"
语法
js
of(code)
参数
code-
要提供的
code取决于type- 如果
type是 "region",code应该是 两个字母的 ISO 3166 地区代码,或者 三位数的 UN M49 区域代码。它需要遵循unicode_region_subtag语法。使用大写代码(例如"US"),因为小写代码(例如"us")可能无法在所有地方可靠地工作。 - 如果
type是 "script",code应该是 四个字母的 ISO 15924 脚本代码。它需要遵循unicode_script_subtag语法。 - 如果
type是 "language",code应该能被unicode_language_id非终结符匹配。 - 如果
type是 "currency",code应该是 三个字母的 ISO 4217 货币代码。它需要包含正好三个字母字符。 - 如果
type是 "dateTimeField",code应该是以下之一:"era"、"year"、"quarter"、"month"、"weekOfYear"、"weekday"、"day"、"dayPeriod"、"hour"、"minute"、"second"、"timeZoneName"。 - 如果
type是 "calendar",code应该是一个 日历键。它需要遵循 Unicode 区域设置标识符 的type语法。
- 如果
返回值
特定于语言的格式化字符串,如果输入没有数据且 fallback 为 "none",则返回 undefined。
注意: 仅当 code 在结构上有效时,才会使用 fallback。请参阅 使用 fallback。
异常
RangeError-
如果
code对于给定的type在结构上无效,则会抛出此错误。
示例
使用 of 方法
js
const regionNames = new Intl.DisplayNames("en", { type: "region" });
regionNames.of("419"); // "Latin America"
const languageNames = new Intl.DisplayNames("en", { type: "language" });
languageNames.of("fr"); // "French"
const currencyNames = new Intl.DisplayNames("en", { type: "currency" });
currencyNames.of("EUR"); // "Euro"
const languageNamesStandard = new Intl.DisplayNames("fr", {
type: "language",
languageDisplay: "standard",
});
languageNamesStandard.of("fr-CA"); // "français (Canada)"
const languageNamesDialect = new Intl.DisplayNames("fr", {
type: "language",
languageDisplay: "dialect",
});
languageNamesDialect.of("fr-CA"); // "français canadien"
使用 fallback
当 Intl.DisplayNames 使用 fallback: "code" 构建时,如果输入看起来在结构上有效但没有该输入的数据,of() 方法将返回 code。如果 fallback 为 "none",则返回 undefined。
js
console.log(
new Intl.DisplayNames("en", { type: "region", fallback: "code" }).of("ZL"),
); // "ZL"
console.log(
new Intl.DisplayNames("en", { type: "region", fallback: "none" }).of("ZL"),
); // undefined
但是,这仅适用于 code 在结构上有效的情况。例如,如果 type 是 "region" 但 code 不遵循 unicode_region_subtag 语法(2 个字母字符或 3 个数字字符),则会直接抛出 RangeError,而不是使用 fallback。
js
console.log(
new Intl.DisplayNames("en", { type: "region", fallback: "code" }).of("ZLC"),
); // throws RangeError: invalid value "ZLC" for option region
规范
| 规范 |
|---|
| ECMAScript® 2026 国际化 API 规范 # sec-Intl.DisplayNames.prototype.of |
浏览器兼容性
加载中…