并行处理

更新时间:上季度 · 预计阅读 1 分钟

已弃用

这些文档介绍的是旧版 CLI(v0)。当前 CLI 版本为 v1。 查看当前 CLI 文档

run 命令会将翻译任务分发到工作池中并发执行。每个语言区域/文件组合都会拆分成一个独立任务,由多个 worker 同时处理。

用法#

bash
# Default concurrency (10 workers)
npx lingo.dev@latest run

# Custom concurrency
npx lingo.dev@latest run --concurrency 20

工作原理#

  1. 任务创建 - CLI 会分析你的 i18n.json,为每个语言区域/文件组合生成独立任务
  2. Worker 分发 - 任务会通过负载均衡分配给可用的 worker
  3. 并发处理 - 多个 worker 同时执行翻译,文件系统锁则用来避免写入冲突
  4. 结果汇总 - 已完成的翻译会被安全写入目标文件

目标筛选选项#

run 命令中的所有目标筛选选项都适用于并行处理:

选项说明
--target-locale es处理指定的目标语言
--source-locale en覆盖源语言区域
--bucket json处理指定的 bucket 类型
--file components/header处理指定文件(支持 glob 模式)
--key welcome.title处理指定键(支持 glob 模式)
--force绕过锁文件并重新翻译全部内容
--frozen如果有任何内容需要翻译则直接失败
--concurrency 20设置并发 worker 数量

自动缓存#

使用 Lingo.dev API 时,较大的语言区域文件会被拆分成多个分块。每当 API 返回一个分块,对应内容就会逐步写入目标文件。如果处理过程中断,下次运行会从上次中断的位置继续。

如需重新翻译,请先使用 purge,然后在不使用 --force 的情况下运行 run。相比 run --force,这样能更充分利用内置缓存机制,处理效率更高。

安全性#

工作池通过以下机制防止文件损坏:

  • I/O 同步 - 文件系统操作会按文件串行执行
  • 锁文件保护 - 原子操作可防止并发导致的 i18n.lock 损坏
  • 事务式处理 - 每个任务要么完整完成,要么干净失败

下一步#