工作原理
Lingo.dev CLI 将复杂的本地化处理工作流封装在一个优雅的命令行界面中。
当您运行 npx lingo.dev@latest i18n
时,CLI 会读取标准的 i18n.json
配置文件,并执行以下五个步骤:
1. 内容发现
Lingo.dev CLI 将您的项目视为可信来源。它会根据您的存储桶配置递归扫描项目中的翻译源文件和目标文件,并将其读取到内存中进行处理。
内容发现阶段遵循以下规则:
- 包含模式,例如
locales/[locale].json
- 排除您希望跳过的文件模式
- 针对不同文件类型的多个存储桶配置
2. 数据清理
并非所有内容都需要翻译。生产应用程序中包含的数字、布尔值、日期、UUID 和代码片段通常在不同语言中保持不变。
Lingo.dev CLI 会智能过滤以下内容:
- 数值,例如
42
或3.14
- 布尔值(
true
/false
) - ISO 日期和时间戳
- UUID 和类似标识符
- 代码块和技术片段
这种过滤可以降低 LLM 推理成本,并通过专注于可翻译内容来提高处理速度。
3. 差异计算
未更改的内容不应重新翻译。Lingo.dev CLI 实现了一个复杂的版本控制系统,该系统:
- 使用 SHA-256 哈希创建内容指纹
- 将当前内容与存储在
i18n.lock
中的先前状态进行比较 - 识别新增、修改和删除的翻译键
- 仅将差异部分发送到翻译引擎
这种增量方法意味着您只需为新增或更改的内容付费,而不是每次运行都为整个内容库付费。
了解更多:i18n.lock 锁文件
4. 本地化
本地化必须可靠,即使在不稳定的网络连接或 LLM 提供商中断的情况下也是如此。在此步骤中,Lingo.dev CLI 会获取差异并将其发送到您配置的翻译后端。
CLI 实现了以下功能:
- 针对网络故障的指数退避重试策略
- 自动错误恢复和部分进度保存
- 支持原始 LLM API(如 OpenAI、Anthropic)和 Lingo.dev 引擎
- 支持多目标语言的并发处理
每个翻译请求都包含上下文信息,以确保整个项目的一致性和质量。
5. 内容注入
为了保持清晰、可审查的变更集,Lingo.dev CLI 会在源内容所在的确切位置注入翻译。此方法:
- 保留文件结构和格式
- 避免不必要的 git 冲突
- 创建最小化、集中的差异
- 如果存在,遵循您现有的 Prettier 配置
最终结果是本地化文件看起来像是手工制作的,准备好进行代码审查和部署。
完整的工作流程
这五个步骤通常会产生两种类型的更改:
- 本地化文件 — 更新了新增和修改的翻译
- i18n.lock 文件 — 更新了用于跟踪状态的内容指纹
两者都应提交到您的代码库中,可以手动提交,也可以通过 CI/CD 集成 自动提交。
这种架构确保 Lingo.dev CLI 能够高效扩展,从单个开发者翻译少量字符串到团队管理数百万字的多语言内容。
下一步
现在您已经了解了 Lingo.dev CLI 的内部工作原理,您可以: