使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
此文档已过期,基础版本已在以下日期更新 2026年8月22日.
前往英文文档版本历史
- "添加了 vue 格式化器"v5.8.02025/8/20
- "添加了格式化器文档"v5.8.02025/8/18
- "添加列表格式化器文档"v5.8.02025/8/20
- "添加额外的 Intl 工具(DisplayNames、Collator、PluralRules)"v5.8.02025/8/20
- "添加语言环境工具(getLocaleName、getLocaleLang、getLocaleFromPath 等)"v5.8.02025/8/20
- "添加内容处理工具(getContent、getTranslation、getIntlayer 等)"v5.8.02025/8/20
如果您有改善此文档的想法,请随时通过在GitHub上提交拉取请求来贡献。
文档的 GitHub 链接复制文档 Markdown 到剪贴板
Intlayer 格式化工具
概述
Intlayer 提供了一组基于原生 Intl API 构建的轻量级辅助工具,以及一个缓存的 Intl 包装器,避免重复构建重量级的格式化器。这些工具完全支持本地化,可以直接从主 intlayer 包中使用。
缓存的 Intl
由于格式化器的构建相对昂贵,这种缓存机制在不改变行为的情况下提升了性能。该包装器暴露了与原生 Intl 相同的 API,因此用法完全一致。
如果环境中不支持 Intl.DisplayNames,则只会打印一次仅限开发者的警告(建议使用 polyfill)。
示例:
区域设置工具
getLocaleLang(locale?)
复制代码到剪贴板
getLocaleFromPath(inputUrl)
从 URL 或路径名中提取语言环境段:
- inputUrl:要处理的完整 URL 字符串或路径名
- returns:检测到的语言环境,如果未找到语言环境则返回默认语言环境
getLocalizedUrl(url, currentLocale, locales?, defaultLocale?, prefixDefault?)
复制代码到剪贴板
getHTMLTextDir(locale?)
返回指定语言环境的文本方向:
复制代码到剪贴板
内容处理工具
getContent(node, nodeProps, locale?)
复制代码到剪贴板
getTranslation(languageContent, locale?, fallback?)
从语言内容对象中提取特定语言环境的内容:
- languageContent:映射语言环境到内容的对象
- locale:目标语言环境(默认为配置的默认语言环境)
- fallback:是否回退到默认语言环境(默认为 true)
getIntlayer(dictionaryKey, locale?, plugins?)
复制代码到剪贴板
getIntlayerAsync(dictionaryKey, locale?, plugins?)
异步从远程字典中检索内容:
复制代码到剪贴板
格式化工具
以下所有辅助函数均从 intlayer 导出。
percentage(value, options?)
复制代码到剪贴板
格式化器函数
number(value, options?)
使用locale感知的分组和小数格式化数值。
- value:
number | string - options:
Intl.NumberFormatOptions & { locale?: LocalesValues }
复制代码到剪贴板
percentage(value, options?)
将数字格式化为百分比字符串。大于 1 的值会被规范化(例如,25 → 25%,0.25 → 25%)。
- value:
number | string - options:
Intl.NumberFormatOptions & { locale?: LocalesValues }
复制代码到剪贴板
currency(value, options?)
将值格式化为本地化货币。默认为 USD。
- value:
number | string - options:
Intl.NumberFormatOptions & { locale?: LocalesValues }- 常见:
currency,currencyDisplay("symbol" | "code" | "name")
- 常见:
复制代码到剪贴板
date(date, optionsOrPreset?)
格式化日期/时间值。
- date:
Date | string | number - optionsOrPreset:
Intl.DateTimeFormatOptions & { locale?: LocalesValues }或预设:"short" | "long" | "dateOnly" | "timeOnly" | "full"
复制代码到剪贴板
relativeTime(from, to?, options?)
格式化两个时刻之间的相对时间。
- from:
Date | string | number - to:
Date | string | number(默认值为new Date()) - options:
{ locale?, unit?, numeric?, style? }
复制代码到剪贴板
units(value, options?)
使用单位格式化数值。
- value:
number | string - options:
Intl.NumberFormatOptions & { locale?: LocalesValues }- 常见:
unit(例如,"kilometer","byte"),unitDisplay("short" | "narrow" | "long")
- 常见:
复制代码到剪贴板
compact(value, options?)
使用紧凑记号法格式化数字。
- value:
number | string - options:
Intl.NumberFormatOptions & { locale?: LocalesValues }
复制代码到剪贴板
list(values, options?)
将数组格式化为本地化列表字符串。
- values:
(string | number)[] - options:
Intl.ListFormatOptions & { locale?: LocalesValues }- 常见:
type("conjunction" | "disjunction" | "unit"),style("long" | "short" | "narrow")
- 常见:
复制代码到剪贴板
缓存的 Intl
从 intlayer 导出的 Intl 是围绕全局 Intl 的缓存包装器。它会缓存格式化程序实例(NumberFormat、DateTimeFormat 等),以避免重复构造它们,从而提高性能。
复制代码到剪贴板
额外的 Intl 功能
Intl.DisplayNames
用于获取本地化的语言、地区、货币和脚本名称:
复制代码到剪贴板
Intl.Collator
用于区域感知的字符串比较和排序:
复制代码到剪贴板
Intl.PluralRules
用于在不同的 locales 中确定复数形式:
复制代码到剪贴板
语言环境工具函数
date(date, optionsOrPreset?)
使用 Intl.DateTimeFormat 格式化日期/时间值。
复制代码到剪贴板
units(value, options?)
使用 Intl.NumberFormat 的 style: 'unit' 将数值格式化为本地化的单位字符串。
复制代码到剪贴板
compact(value, options?)
示例:
复制代码到剪贴板
list(values, options?)
使用 Intl.ListFormat 将值数组格式化为本地化的列表字符串。
复制代码到剪贴板
getPathWithoutLocale(inputUrl, locales?)
从 URL 中移除语言区域段:
复制代码到剪贴板
getHTMLTextDir(locale?)
返回一个 locale 的文本方向:
复制代码到剪贴板
内容处理工具
React
客户端组件:
复制代码到剪贴板
getTranslation(languageContent, locale?, fallback?)
为特定语言环境提取内容:
复制代码到剪贴板
Vue
客户端组件:
复制代码到剪贴板
注意事项
- 所有辅助函数接受
string输入;它们在内部被强制转换为数字或日期。 - 如果未提供 locale,则默认为你配置的
internationalization.defaultLocale。 - 这些实用程序是薄包装器;对于高级格式化,请传递标准
Intl选项。
