使用您最喜欢的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
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本如果您有改善此文档的想法,请随时通过在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选项。
