并行处理
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 --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 返回后逐步填充翻译内容。如果过程被中断,可以从中断处继续翻译。