并行处理

Lingo.dev CLI 通过 run 命令提供并行处理功能,该命令可以同时处理多个本地化任务,从而显著减少大型项目的翻译时间。

run 命令将在未来版本中逐步取代 i18n 命令,提供相同的功能,同时通过并发处理显著提升性能。

基本用法

使用并行处理处理所有翻译:

npx lingo.dev@latest run

控制并发级别:

npx lingo.dev@latest run --concurrency 20

run 命令使用与标准 i18n 命令相同的 i18n.json 配置文件和 i18n.lock 文件。

并行处理的工作原理

Lingo.dev CLI 将本地化任务分配给多个并发工作进程,同时处理不同的语言对和文件模式。

架构概览:

  1. 任务创建 — CLI 分析您的配置,为每个语言环境/文件组合创建单独的任务
  2. 工作进程分配 — 任务分配给多个工作进程
  3. 并发处理 — 工作进程同时处理翻译任务,同时防止文件冲突
  4. 结果聚合 — 完成的翻译安全地写入目标文件

并发控制

设置工作进程数量:

npx lingo.dev@latest run --concurrency 15

默认并发数 为 10 个工作进程。更高的值可以更快地处理翻译,但会消耗更多的系统资源,并可能触发 API 速率限制。

最佳并发数 取决于您的系统性能和翻译提供商的限制。建议从默认值开始,根据性能进行调整。

定向处理

处理特定语言:

npx lingo.dev@latest run --locale es --locale fr

处理特定文件类型:

npx lingo.dev@latest run --bucket json

处理特定文件:

npx lingo.dev@latest run --file components/header

处理特定键:

npx lingo.dev@latest run --key welcome.title

强制重新翻译:

npx lingo.dev@latest run --force

这些定向选项与 i18n 命令的工作方式相同,但任务以并行方式处理。

竞态条件预防

Lingo.dev CLI 通过多重保护措施防止并行处理时的文件损坏:

I/O 同步 — 文件系统操作经过同步,防止多个工作线程同时写入同一文件。

锁文件保护i18n.lock 文件使用原子操作,防止并发更新时的损坏。

事务处理 — 每个任务要么完全完成,要么干净地失败,确保文件状态一致。

性能优化

监控系统资源 在使用高并发值时。CLI 经过高效设计,但对于非常大的项目,可能需要进行资源监控。

从默认值开始:

npx lingo.dev@latest run

# 使用优化的并发设置

逐步增加:

npx lingo.dev@latest run --concurrency 20

# 如果系统能很好地处理负载,则增加

针对特定内容进行迭代:

npx lingo.dev@latest run --file src/components

# 仅处理已更改的组件

兼容性

run 命令完全兼容现有配置:

  • 相同的 i18n.json 格式 — 无需更改配置
  • 相同的 i18n.lock 行为 — 增量翻译跟踪功能完全相同
  • 相同的文件格式 — 支持所有存储桶类型
  • 相同的目标选项--locale--bucket--key--file--force 标志的工作方式完全相同

i18n 命令迁移:


# 当前命令

npx lingo.dev@latest i18n

# 并行等效命令

npx lingo.dev@latest run

所有功能直接转移,同时显著提升性能。

工作池架构

Lingo.dev CLI 使用了复杂的工作池系统:

动态分配 — 根据系统资源和并发设置创建工作线程。

任务分配 — 使用优化算法将任务均匀分配到各个工作线程。

进度跟踪 — 实时监控所有并行操作的进度。

资源管理 — 处理完成后自动清理和资源释放。