run コマンドは、翻訳タスクをワーカープールに振り分けて並列処理します。各ロケール/ファイルの組み合わせが独立したタスクとして扱われ、複数のワーカーが同時に処理を進めます。
使い方#
bash
# Default concurrency (10 workers)
npx lingo.dev@latest run
# Custom concurrency
npx lingo.dev@latest run --concurrency 20仕組み#
- タスクの作成 - CLI が
i18n.jsonを解析し、ロケール/ファイルの組み合わせごとに個別のタスクを生成します - ワーカーへの割り当て - タスクは負荷分散によって、利用可能なワーカーへ振り分けられます
- 並列処理 - ワーカーが同時に翻訳を実行し、ファイルシステムロックが書き込み競合を防ぎます
- 結果の集約 - 完了した翻訳は安全に対象ファイルへ書き込まれます
対象指定オプション#
run コマンドで使える対象指定オプションは、並列処理でもそのまま利用できます。
| オプション | 説明 |
|---|---|
--target-locale es | 特定の対象言語を処理 |
--source-locale en | ソースロケールを上書き |
--bucket json | 特定のバケットタイプを処理 |
--file components/header | 特定のファイルを処理(glob パターン対応) |
--key welcome.title | 特定のキーを処理(glob パターン対応) |
--force | ロックファイルを無視してすべて再翻訳 |
--frozen | 翻訳が必要なコンテンツが1つでもあれば失敗 |
--concurrency 20 | 同時実行するワーカー数を設定 |
自動キャッシュ#
Lingo.dev API を使用すると、大きなロケールファイルはチャンクに分割されます。各チャンクが API から返るたびに、対象ファイルには翻訳結果が段階的に反映されます。途中で処理が中断しても、次回の実行では続きから再開されます。
再翻訳する場合は、まず purge を実行し、その後 run を --force なしで実行してください。これにより、run --force と比べて、組み込みのキャッシュ機構を活用したより効率的な処理が可能になります。
安全性#
ワーカープールは、次の仕組みによってファイル破損を防ぎます。
- I/O の同期 - ファイルシステム操作はファイルごとに直列化されます
- ロックファイル保護 - アトミック操作により、
i18n.lockの同時破損を防ぎます - トランザクション処理 - 各タスクは完全に完了するか、確実に失敗します
