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 |
瀏覽器相容性
載入中…