|Labs
预约演示平台
React(Lingo Compiler)
Alpha
React (MCP)React(i18n)旧版 CLI(v0)
已废弃

Lingo.dev Compiler

  • 工作方式
  • 快速开始
  • Compiler 快速上手

框架

  • Next.js 集成
  • Vite + React

指南

  • 语言切换
  • 自动复数处理
  • 手动覆盖
  • 构建模式
  • 项目结构
  • 翻译服务提供商
  • 自定义 locale 解析器
  • 开发工具

参考

  • 最佳实践
  • 配置参考
  • 故障排查
  • 迁移指南
  • 优化
  • 输出格式

迁移指南

Alpha

Lingo.dev Compiler 目前仍处于 alpha 阶段,稳定性尚未完善,不建议用于生产环境,且 API 可能会在不同版本之间发生变化。

本指南将带你从旧版 lingo.dev compiler 包迁移到当前的 @lingo.dev/compiler 包。新包采用了带作用域的 npm 包名,提供更简洁的 API、基于插件的 Vite 集成,以及用于存放元数据的全新 .lingo/ 目录。

变更概览#

项目迁移前(lingo.dev)迁移后(@lingo.dev/compiler)
包名lingo.dev@lingo.dev/compiler
Next.js 集成直接修改配置withLingo() 异步包装器
Vite 集成手动配置lingoCompilerPlugin
LingoProvider必须传入 loadDictionary 属性无需传入属性
元数据目录lingo/.lingo/
按需启用指令必须使用 'use i18n'可选(默认:全部翻译)
导入方式from "lingo.dev/react"from "@lingo.dev/compiler/react"

迁移步骤#

1

替换包

移除旧包并安装新包:

bash
npm uninstall lingo.dev
npm install @lingo.dev/compiler
2

更新导入

将所有导入路径替换为:

ts
// Before
import { LingoProvider, useLingoContext } from "lingo.dev/react";

// After
import { LingoProvider, useLingoContext } from "@lingo.dev/compiler/react";
3

更新 Next.js 配置(如适用)

现在,Next.js 配置必须改为异步函数:

ts
// Before
import { withLingo } from "lingo.dev/next";
const nextConfig = {};
export default withLingo(nextConfig, { /* options */ });

// After
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";

const nextConfig: NextConfig = {};

export default async function (): Promise<NextConfig> {
  return await withLingo(nextConfig, {
    sourceRoot: "./app",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr"],
    models: "lingo.dev",
  });
}

异步函数包装器是必需的;如果继续使用同步导出,构建将会失败。详情请参阅 Next.js Integration。

4

更新 Vite 配置(如适用)

将所有手动配置替换为 lingoCompilerPlugin:

ts
// vite.config.ts
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import { lingoCompilerPlugin } from "@lingo.dev/compiler/vite";

export default defineConfig({
  plugins: [
    lingoCompilerPlugin({
      sourceRoot: "src",
      sourceLocale: "en",
      targetLocales: ["es", "de", "fr"],
      models: "lingo.dev",
    }),
    react(), // Must come AFTER lingoCompilerPlugin
  ],
});
5

简化 LingoProvider

现在无需再传入 loadDictionary 属性,Compiler 会自动处理字典加载:

tsx
// Before
import { LingoProvider } from "lingo.dev/react";

<LingoProvider loadDictionary={loadDictionary}>
  <App />
</LingoProvider>

// After
import { LingoProvider } from "@lingo.dev/compiler/react";

<LingoProvider>
  <App />
</LingoProvider>
6

迁移元数据目录

将元数据目录从 lingo/ 重命名为 .lingo/:

bash
mv lingo/ .lingo/

如果你的 .gitignore 中仍引用旧目录名,请一并更新。.lingo/ 目录应提交到版本控制中。

7

更新“use i18n”指令(可选)

在新包中,'use i18n' 变为可选。默认情况下,sourceRoot 中的所有文件都会被翻译。如果你希望保留按需启用的行为,请在配置中设置 useDirective: true:

ts
{
  useDirective: true, // Keep requiring 'use i18n' in each file
}

如果你移除了 useDirective(或将其设为 false),也可以一并删除文件中的 'use i18n' 指令——sourceRoot 中的所有文件都会自动翻译。

8

重新构建并验证

启动开发服务器,确认翻译已正常显示:

bash
npm run dev

请检查以下内容:

  • 伪翻译器会生成 [!!! ... !!!] 标记(如已启用)
  • 此前已翻译的所有字符串仍可正常工作
  • .lingo/metadata.json 文件已创建或已更新

下一步#

设置
完整设置指南
配置参考
所有新增配置项
Next.js Integration
Next.js 专属迁移说明
Vite + React
Vite 专属迁移说明

这个页面对你有帮助吗?

Max PrilutskiyMax Prilutskiy·已更新 4 个月前·2 分钟阅读