Lingo.dev 的 CLI 可通过已配置的 localization engine 翻译你的 Web 应用资源文件——包括 JSON、YAML、XLIFF、PO 和 PHP。先在框架中完成 i18n 配置,再让 CLI 指向翻译文件并运行即可。
工作原理#
每种 Web 框架都有自己的 i18n 库,用于从资源文件中加载翻译——比如 React 用 JSON,Angular 用 XLIFF,Django 用 PO,等等。CLI 会直接翻译这些文件,因此无需修改任何代码,框架就能自动读取翻译结果。
在框架中设置 i18n
使用框架官方提供的 i18n 库,添加支持 locale 的路由、翻译函数以及源语言资源文件。下方各框架章节均附有对应的官方配置指南。
配置 CLI
运行 lingo init 创建 .lingo/config.json,写入源语言和目标语言区域,以及需要翻译的文件匹配模式;然后再运行 lingo link 关联你的组织和引擎。CLI 会根据文件扩展名自动识别每个文件的格式,因此无需指定 bucket type。提交 .lingo/config.json。
运行翻译
运行 lingo push 后,CLI 就会通过 localization engine 翻译你的资源文件——术语表规则、品牌语气和模型选择都会自动生效。
前置条件#
安装 CLI 并完成认证:
npm install -g @lingo.dev/cli
lingo loginCLI 需要 Node.js 22+。在 CI 中,可跳过交互式登录,通过 --api-key 或环境变量 LINGO_API_KEY 传入密钥。
每次运行 CLI 时,内容都会经过一个本地化引擎——也就是决定使用哪个 LLM 模型、术语表、品牌语气和规则的配置。请在 Lingo.dev 控制台中创建一个,并生成一个API key。lingo link会将该引擎的orgId和engineId写入.lingo/config.json。
AI 辅助配置
i18n MCP 可以自动为你的框架搭建完整的 i18n 基础设施。将它连接到 Claude Code、Cursor 或 GitHub Copilot,然后输入提示词“Set up i18n”——代理会按照一份 13 步清单,完成路由、翻译文件和语言切换器的配置。
JavaScript 框架#
每个 pattern 中的语言区域片段都会按目标语言区域替换——public/locales/en/translation.json 会变成 public/locales/de/translation.json,以此类推。源路径中必须包含源语言区域代码。
react-i18next 从 JSON 文件中加载翻译,并提供一个 useTranslation hook,在运行时将键映射为对应的译文。
{
"orgId": "org_...",
"engineId": "eng_...",
"sourceLocale": "en",
"targetLocales": ["es", "fr", "de", "ja"],
"files": [{ "pattern": "public/locales/en/translation.json" }]
}服务端框架#
Laravel 自带 内置本地化能力,可从按 locale 目录组织的 PHP 文件中加载翻译。
{
"orgId": "org_...",
"engineId": "eng_...",
"sourceLocale": "en",
"targetLocales": ["es", "fr", "de", "ja"],
"files": [{ "pattern": "lang/en/messages.php" }]
}运行翻译#
准备好 .lingo/config.json 后,只需一条命令即可翻译所有资源文件:
lingo pushCLI 会读取你的源语言区域文件,借助 锁文件(即 .lingo/lock.json,与配置文件一并提交)计算自上次运行以来的变更,只翻译增量内容,并将结果写入目标语言区域文件。现有翻译会被保留——CLI 只会补全缺失或已更新的字符串。
首次运行,或新增目标语言区域后,请从头翻译全部内容:
lingo push --backfill-missing传入 glob,即可将本次运行限定在部分文件范围内:
lingo push "messages/**"如果你想在其他地方获取最新翻译(例如另一台机器上,或构建流程中),且不执行翻译,请运行 lingo pull。还可以将 lingo check 用作部署门禁,验证翻译是否已保持最新。
