Creation:2026-06-13Last update:2026-06-13
将此文档参考到您的 AI 助手ChatGPTClaudeDeepSeekGoogle AI modeGeminiPerplexityMistralGrok
使用您最喜欢的AI助手总结文档,并引用此页面和AI提供商
版本历史
- "Init history"v9.0.02026/6/13
此页面的内容已使用 AI 翻译。
查看英文原文的最新版本Edit this doc
If you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy
Copy doc Markdown to clipboard
从 React Intl 迁移到 Intlayer
如果您的 React 应用程序使用 react-intl(FormatJS),迁移到 Intlayer 轻而易举。我们的兼容层无缝处理 ICU MessageFormat 和所有现有的 Formatted* 组件。
操作步骤
首先在您的项目中运行初始化命令:
bash
复制代码
复制代码到剪贴板
npx intlayer init然后,在您的配置中设置 Intlayer Vite 或 Next.js 插件。该插件注入构建时别名,将 react-intl 导入重定向到 @intlayer/react-intl。
vite.config.ts
复制代码
复制代码到剪贴板
import { defineConfig } from "vite";import react from "@vitejs/plugin-react";import reactIntlVitePlugin from "@intlayer/react-intl/plugin";export default defineConfig({ plugins: [react(), reactIntlVitePlugin()],});底层原理
bundler 插件将 react-intl 别名为 @intlayer/react-intl。Intlayer 插件在运行时静态提取键值并使用 Intlayer 字典,而不是手动解析大型 JSON 文件并将应用程序包装在 IntlProvider 中。
底层实现:
- ICU MessageFormat: Intlayer 使用
resolveMessage(..., 'icu')解析器,原生完全支持 ICU 复数化、selection、日期/数字格式化和富文本标签。 - 方法和 JSX 调用者:
intl.formatMessage({ id: 'a.b' })和<FormattedMessage id="a.b">由 Intlayer 编译器插件(@intlayer/babel/@intlayer/swc)识别,转换扁平点分键,使第一个段正确解析为 Intlayer 字典键。 - 格式化器:
<FormattedNumber>、<FormattedDate>等,使用Intl桥接到核心原生core/formatters。