並列処理

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は、ローカライゼーションタスクを複数の同時実行ワーカーに分散し、異なる言語ペアとファイルパターンを同時に処理します。

アーキテクチャの概要:

  1. タスク作成 — CLIが設定を分析し、各ロケール/ファイルの組み合わせごとに個別のタスクを作成します
  2. ワーカー分散 — タスクが複数のワーカープロセスに分散されます
  3. 同時処理 — ワーカーがファイルの競合を防ぎながら翻訳を同時に処理します
  4. 結果の集約 — 完了した翻訳が安全にターゲットファイルに書き込まれます

同時実行制御

ワーカー数を設定する:

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--key--file--forceフラグは同様に機能
  • ロケールの指定オプション:
    • --target-localei18n.json設定のlocale.targetsを上書き (注: i18nコマンドの--localeオプションを置き換えます。)
    • --source-localei18n.json設定のlocale.sourceを上書き

i18nコマンドからの移行:

# Current command
npx lingo.dev@latest i18n

# Parallel equivalent
npx lingo.dev@latest run

すべての機能がパフォーマンスを大幅に向上させた状態で直接移行されます。

--localeオプションは、個別の--target-locale--source-localeオプションに置き換えられます。

ワーカープールアーキテクチャ

Lingo.dev CLIは高度なワーカープールシステムを使用します。

動的割り当て — ワーカーはシステムリソースと同時実行設定に基づいて作成されます。

タスク分散 — タスクは最適化されたアルゴリズムを使用してワーカー間に均等に分散されます。

進捗追跡 — すべての並列操作におけるリアルタイムの進捗監視。

リソース管理 — 処理完了時の自動クリーンアップとリソース解放。

自動キャッシング — Lingo.dev APIを翻訳に使用する場合、大きなロケールファイルはチャンクに分割されます。ターゲットロケールファイルは、APIから各チャンクを受信するたびに翻訳が段階的に追加されます。プロセスが中断された場合、中断した箇所から翻訳を再開できます。