工作原理

Lingo.dev CLI 将复杂的本地化处理工作流封装在一个优雅的命令行界面中。

当您运行 npx lingo.dev@latest i18n 时,CLI 会读取标准的 i18n.json 配置文件,并执行以下五个步骤:

1. 内容发现

Lingo.dev CLI 将您的项目视为可信来源。它会根据您的存储桶配置递归扫描项目中的翻译源文件和目标文件,并将其读取到内存中进行处理。

内容发现阶段遵循以下规则:

  • 包含模式,例如 locales/[locale].json
  • 排除您希望跳过的文件模式
  • 针对不同文件类型的多个存储桶配置

2. 数据清理

并非所有内容都需要翻译。生产应用程序中包含的数字、布尔值、日期、UUID 和代码片段通常在不同语言中保持不变。

Lingo.dev CLI 会智能过滤以下内容:

  • 数值,例如 423.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 配置

最终结果是本地化文件看起来像是手工制作的,准备好进行代码审查和部署。

完整的工作流程

这五个步骤通常会产生两种类型的更改:

  1. 本地化文件 — 更新了新增和修改的翻译
  2. i18n.lock 文件 — 更新了用于跟踪状态的内容指纹

两者都应提交到您的代码库中,可以手动提交,也可以通过 CI/CD 集成 自动提交。

这种架构确保 Lingo.dev CLI 能够高效扩展,从单个开发者翻译少量字符串到团队管理数百万字的多语言内容。

下一步

现在您已经了解了 Lingo.dev CLI 的内部工作原理,您可以:

  • 加入我们的社区Discord — 与其他使用 Lingo.dev CLI 的开发者联系,分享反馈,并解决您的本地化挑战;
  • 为项目做出贡献开放问题 — Lingo.dev CLI 是开源的,欢迎贡献。浏览开放问题,提出功能建议,或提交拉取请求以帮助改进工具。