JavaScript i18n
JavaScript 国际化:利用 Intl API 实现浏览器原生国际化
JavaScript 将 Intl API 作为内置标准,用于格式化数字、日期和列表,以及处理不同语言环境下的复数规则。无需外部库。该 API 受到所有现代浏览器和 Node.js 的支持,开箱即用即可提供基于语言环境的字符串比较、分段和相对时间格式化功能。
JavaScript Intl API 功能
内置的 Intl API,无需外部依赖即可完成核心国际化操作
Intl.NumberFormat,用于感知区域设置的货币、百分比和单位格式化
Intl.DateTimeFormat:用于特定区域设置的日期和时间显示格式
适用于100多个地区序数词和基数词复数形式的国际复数规则
ICU MessageFormat 语法:适用于包含复数形式、选择项和嵌套结构的复杂消息
Intl.RelativeTimeFormat,用于生成人类可读的相对日期(例如“3 天前”)
Intl.ListFormat:用于支持区域设置的联结与析取列表
Intl.Collator,用于区分语言的字符串排序和比较
用于单词、句子和字母边界检测的国际分词器
JavaScript Intl API 实践
在任意现代浏览器或 Node.js 运行时中,使用内置 Intl 构造函数对货币、日期和序数进行格式化,输出符合区域设置的内容。
// Using the built-in Intl API
const formatter = new Intl.NumberFormat('de-DE', {
style: 'currency',
currency: 'EUR',
});
console.log(formatter.format(1234.56)); // "1.234,56 €"
// Date formatting
const date = new Intl.DateTimeFormat('ja-JP', {
year: 'numeric',
month: 'long',
day: 'numeric',
});
console.log(date.format(new Date())); // "2026年3月2日"
// Pluralization
const plural = new Intl.PluralRules('en');
const suffixes = { one: 'st', two: 'nd', few: 'rd', other: 'th' };
function ordinal(n) {
return `${n}${suffixes[plural.select(n)]}`;
}