并行处理
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 将本地化任务分配给多个并发工作进程,同时处理不同的语言对和文件模式。
架构概览:
- 任务创建 — CLI 分析您的配置,为每个语言环境/文件组合创建单独的任务
- 工作进程分配 — 任务分配给多个工作进程
- 并发处理 — 工作进程同时处理翻译任务,同时防止文件冲突
- 结果聚合 — 完成的翻译安全地写入目标文件
并发控制
设置工作进程数量:
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 使用了复杂的工作池系统:
动态分配 — 根据系统资源和并发设置创建工作线程。
任务分配 — 使用优化算法将任务均匀分配到各个工作线程。
进度跟踪 — 实时监控所有并行操作的进度。
资源管理 — 处理完成后自动清理和资源释放。