Intl.Locale

Baseline 廣泛可用 *

此功能已成熟,並可在許多裝置和瀏覽器版本上使用。自 2020 年 9 月起,所有瀏覽器均已提供此功能。

* 此特性的某些部分可能存在不同級別的支援。

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() 建構函式將區域設定識別符號字串作為其引數。

js
const us = new Intl.Locale("en-US");

使用帶有選項物件的 Locale 建構函式

建構函式還接受一個可選的配置物件引數,該引數可以包含任何幾種擴充套件型別。例如,將配置物件的 hourCycle 屬性設定為所需的時鐘週期型別,然後將其傳遞給建構函式。

js
const us12hour = new Intl.Locale("en-US", { hourCycle: "h12" });
console.log(us12hour.hourCycle); // Prints "h12"

規範

規範
ECMAScript® 2026 國際化 API 規範
# locale-objects

瀏覽器相容性

另見