Intl.Locale
Baseline 广泛可用 *
Intl.Locale 对象是 Intl 对象的一个标准内置属性,用于表示一个 Unicode 区域设置标识符。
试一试
const korean = new Intl.Locale("ko", {
script: "Kore",
region: "KR",
hourCycle: "h23",
calendar: "gregory",
});
const japanese = new Intl.Locale("ja-Jpan-JP-u-ca-japanese-hc-h12");
console.log(korean.baseName, japanese.baseName);
// Expected output: "ko-Kore-KR" "ja-Jpan-JP"
console.log(korean.hourCycle, japanese.hourCycle);
// Expected output: "h23" "h12"
描述
创建 Intl.Locale 对象是为了更方便地处理 Unicode 区域设置。Unicode 使用字符串表示区域设置,称为区域设置标识符。区域设置标识符由语言标识符和扩展标签组成。语言标识符是区域设置的核心,由语言、脚本、地区和变体子标签组成。关于区域设置的附加信息存储在可选的扩展标签中。扩展标签包含有关区域设置方面的信息,例如日历类型、时钟类型和数字系统类型。
传统上,Intl API 与 Unicode 一样,使用字符串来表示区域设置。这是一个简单、轻量且效果良好的解决方案。然而,添加 Locale 类可以更轻松地解析和操作语言、脚本、地区以及扩展标签。Intl.Locale 的以下属性对应于 Unicode 区域设置标识符子标签:
| 属性 | 对应的子标签 |
|---|---|
language |
语言 ID,第一部分 |
script |
language 后的语言 ID 部分 |
region |
script 后的语言 ID 部分 |
variants |
region 后的语言 ID 部分 |
calendar |
ca (扩展) |
caseFirst |
kf (扩展) |
collation |
co (扩展) |
hourCycle |
hc (扩展) |
numberingSystem |
nu (扩展) |
numeric |
kn (扩展) |
以上信息在构造 Locale 对象时完全按原样提供,不会查询任何外部数据库。Intl.Locale 对象还提供了一些方法,用于返回有关区域设置的真实世界信息,例如可用的日历、排序规则和数字系统。
构造函数
Intl.Locale()-
创建一个新的
Locale对象。
实例属性
这些属性定义在 Intl.Locale.prototype 上,并被所有 Intl.Locale 实例共享。
Intl.Locale.prototype.baseName-
以完整数据字符串的子字符串形式返回
Locale的基本、核心信息。 Intl.Locale.prototype.calendar-
返回
Locale中指示区域设置日历时代的那个部分。 Intl.Locale.prototype.caseFirst-
返回区域设置的排序规则是否考虑了大小写。
Intl.Locale.prototype.collation-
返回
Locale的排序类型,用于根据区域设置的规则对字符串进行排序。 Intl.Locale.prototype.constructor-
创建实例对象的构造函数。对于
Intl.Locale实例,初始值是Intl.Locale构造函数。 Intl.Locale.prototype.hourCycle-
返回区域设置使用的计时格式约定。
Intl.Locale.prototype.language-
返回与区域设置关联的语言。
Intl.Locale.prototype.numberingSystem-
返回区域设置使用的数字系统。
Intl.Locale.prototype.numeric-
返回区域设置是否对数字字符有特殊的排序处理。
Intl.Locale.prototype.region-
返回与区域设置关联的世界地区(通常是国家)。
Intl.Locale.prototype.script-
返回用于书写区域设置中使用到的特定语言的脚本。
Intl.Locale.prototype.variants-
返回与区域设置关联的变体子标签(例如不同的正字法)。
Intl.Locale.prototype[Symbol.toStringTag]-
[Symbol.toStringTag]属性的初始值是字符串"Intl.Locale"。此属性用于Object.prototype.toString()。
实例方法
Intl.Locale.prototype.getCalendars()-
根据区域设置的规则,返回一个可用日历标识符的
Array。 Intl.Locale.prototype.getCollations()-
返回
Locale的排序类型的Array。 Intl.Locale.prototype.getHourCycles()-
返回小时周期标识符的
Array,表示 12 小时制("h12")、日文 12 小时制("h11")、24 小时制("h23")或未使用格式 "h24"。 Intl.Locale.prototype.getNumberingSystems()-
根据区域设置的规则,返回可用数字系统标识符的
Array。 Intl.Locale.prototype.getTextInfo()-
返回指示字符排序方向的 `ltr`(从左到右)或 `rtl`(从右到左)的部分。
Intl.Locale.prototype.getTimeZones()-
返回与
Locale关联的时区标识符的Array。 Intl.Locale.prototype.getWeekInfo()-
根据区域设置规则,返回 UTS 35 的周元素。
Intl.Locale.prototype.maximize()-
根据现有值获取区域设置最可能的语言、脚本和地区值。
Intl.Locale.prototype.minimize()-
尝试移除调用
maximize()时会添加的区域设置信息。 Intl.Locale.prototype.toString()-
返回区域设置的完整区域设置标识符字符串。
示例
基本用法
最简单的情况下,Intl.Locale() 构造函数将区域设置标识符字符串作为其参数。
const us = new Intl.Locale("en-US");
使用带有选项对象的 Locale 构造函数
构造函数还接受一个可选的配置对象参数,该参数可以包含任何几种扩展类型。例如,将配置对象的 hourCycle 属性设置为所需的时钟周期类型,然后将其传递给构造函数。
const us12hour = new Intl.Locale("en-US", { hourCycle: "h12" });
console.log(us12hour.hourCycle); // Prints "h12"
规范
| 规范 |
|---|
| ECMAScript® 2026 国际化 API 规范 # locale-objects |
浏览器兼容性
加载中…