run 命令会将翻译任务分发到工作池中并发执行。每个语言区域/文件组合都会拆分成一个独立任务,由多个 worker 同时处理。
用法#
bash
# Default concurrency (10 workers)
npx lingo.dev@latest run
# Custom concurrency
npx lingo.dev@latest run --concurrency 20工作原理#
- 任务创建 - CLI 会分析你的
i18n.json,为每个语言区域/文件组合生成独立任务 - Worker 分发 - 任务会通过负载均衡分配给可用的 worker
- 并发处理 - 多个 worker 同时执行翻译,文件系统锁则用来避免写入冲突
- 结果汇总 - 已完成的翻译会被安全写入目标文件
目标筛选选项#
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损坏 - 事务式处理 - 每个任务要么完整完成,要么干净失败
