@lingo.dev/cli
@lingo.dev/cli はソースコンテンツを ローカライゼーションエンジン に送信し、サーバー側で翻訳したうえで、出力をディスクへ書き戻します。--wait を使えば同じコマンド内で完結し、lingo pull なら後から取得できます。従来の npx lingo.dev フローに代わる仕組みで、同じプロジェクトでもアーキテクチャは根本から異なります。
従来の CLI との違い#
従来の CLI(npx lingo.dev run)は文字列を抽出し、手元のマシンから直接 LLM を呼び出して、そのまま 1 回でファイルを書き出していました。現在の CLI では、この処理を push と pull に分けています。
lingo pushはソースをエンジンにアップロードし、サーバー側のワークフローを開始して、完了まで待機するか、run ID を返してすぐに終了しますlingo pullは直近の push の出力を取得します。翻訳の途中でターミナルを閉じても、同じマシンの同じチェックアウトで pull すれば利用できます。- lockfile(
.lingo/lock.json)は各ターゲットのサーバー上の最新既知バージョンを追跡し、上書き前にローカルでの編集を競合として検出できるようにします
これにより、従来のCLIではできなかったことが可能になります。ターミナルを開いたまま待たなくても長時間の翻訳を実行でき、push してターミナルを閉じ、結果は後から pull できます。
結果を待つ#
lingo push はソースをアップロードし、サーバー側のワークフローを開始すると、実行が送信された時点ですぐに終了します。翻訳の完了は待たず、結果の書き込みも行いません。出力は lingo pull で取得するか、--wait(-w)を付けてひとつのコマンドでまとめて実行できます。
lingo push # submit the run and exit (default)
lingo pull # later: re-attach to the most recent push and download its outputs
lingo push --wait # submit, wait, and write outputs in one command--wait(-w)はワークフローが完了するまで待機し、同じコマンド内で出力を書き込みます。lingo pullはこのプロジェクトの直近の push に再接続し、出力をダウンロードします。ターミナルを閉じたあとでも利用できます。実行状態はマシンごとに~/.lingo/runs/<project-hash>.jsonで管理され、プロジェクトパスをキーにしているため、pullは同じマシンの同じチェックアウトから再開されます。
認証: どちらのコマンドも LINGO_API_KEY(または --api-key、もしくは lingo login セッション)を参照します。CI では LINGO_API_KEY を設定するだけで十分です。
push モード#
| コマンド | モード | 使うタイミング |
|---|---|---|
lingo push | インクリメンタル — ソースを .lingo/lock.json と比較して差分を取り、新規または変更されたキーだけを既存のターゲットに翻訳し、それ以外はそのまま保持します | 通常の実行は毎回これで十分(CI では --wait を追加) |
lingo push --backfill-missing | ブートストラップ — まだ存在しないターゲット FILES を埋めます | 最初の push、または新しいロケールを追加したあと |
lingo push --force | 完全再翻訳 — すべてのターゲットを上書きします(手動編集を含む)。--yes/-y を付けると確認プロンプトをスキップします | ごくまれに(例: 用語集 / エンジンの変更後) |
--backfill-missing はブートストラップ用のフラグです。対象を絞った新規リクエストを行い、不足しているターゲットファイル全体だけを追加します。すでに翻訳済みのファイルに新しく追加されたキーは翻訳されません(run では "already up-to-date" と表示され、そのキーはスキップされます)。継続的な編集には通常の lingo push を使ってください。
翻訳を手動で編集する#
通常の lingo push では、キー単位で手動編集が保持されます。
- ターゲット文字列を編集した場合(対応するソースが未変更)→ その文字列は保持され、ほかのキーは引き続き更新されます。
- 手動編集したキーに対応するソースが変更された場合 → そのキーには新しい翻訳が生成され、手動編集は置き換えられます。
- 新しいソースキーが追加された場合 → 手動編集のあるファイルであっても、翻訳されて追加されます。