并行处理

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 --target-locale es --target-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

支持 minimatch 库 定义的 glob 模式。

强制重新翻译:

npx lingo.dev@latest run --force

**提示:**为获得最佳重新翻译效果,建议先使用 purge 命令移除翻译,然后在不带 --force 的情况下运行 run 命令。此方法可利用内置缓存机制,提高重新翻译效率。

这些目标选项与 i18n 命令完全一致,但任务会并行处理。

竞态条件预防

Lingo.dev CLI 通过多重保护机制,在并行处理时防止文件损坏:

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

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

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

性能优化

监控系统资源,尤其在高并发值下使用时。CLI 设计注重效率,但超大项目建议配合资源监控。

从默认值开始:

npx lingo.dev@latest run
# Uses optimized concurrency settings

逐步扩展:

npx lingo.dev@latest run --concurrency 20
# Increase if system handles load well

针对特定内容迭代:

npx lingo.dev@latest run --file src/components
# Process only changed components

兼容性

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

  • 相同的 i18n.json 格式 — 无需更改配置
  • 相同的 i18n.lock 行为 — 增量翻译跟踪方式一致
  • 相同的文件格式 — 支持所有 bucket 类型
  • 相同的目标选项--bucket--key--file--force 标志用法一致
  • 通过选项指定语言环境
    • --target-locale 可覆盖 locale.targets(来自 i18n.json 配置) (注意: 替代 --locale 选项,用于 i18n 命令。)
    • --source-locale 可覆盖 locale.source(来自 i18n.json 配置)

i18n 命令迁移:

# Current command
npx lingo.dev@latest i18n

# Parallel equivalent
npx lingo.dev@latest run

所有功能将直接迁移,并且性能大幅提升。

--locale 选项已被独立的 --target-locale--source-locale 选项所取代。

Worker 池架构

Lingo.dev CLI 采用了先进的 worker 池系统:

动态分配 — 根据系统资源和并发设置动态创建 worker。

任务分发 — 通过优化算法将任务均匀分配到各个 worker。

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

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

自动缓存 — 使用 Lingo.dev API 进行翻译时,大型 locale 文件会被拆分为多个区块。目标 locale 文件会在每个区块从 API 返回后逐步填充翻译内容。如果过程被中断,可以从中断处继续翻译。