i18n.lock は、ソースコンテンツの SHA-256 フィンガープリントを保存するロックファイルです。Lingo.dev CLI は実行のたびにこれらのフィンガープリントを比較し、新規または変更された文字列を判定します。翻訳パイプラインに入るのはそれらだけで、それ以外はすべてスキップされます。
構造#
ロックファイルは YAML 形式です:
version: 1
checksums:
a07974ea09011daa56f9df706530e442:
title: f8692d39317193acf0e2e47172703c46
description: g9703e40428204bdf1f3f58283814d57| フィールド | 説明 |
|---|---|
version | ロックファイルのスキーマバージョン。 |
checksums | コンテンツのフィンガープリントを格納するマップ。各エントリは、ソースコンテンツのハッシュをキーハッシュに対応付けます。 |
二重ハッシュ構造(コンテンツハッシュ + キーハッシュ)により、キー名変更の検出が可能になります。キー名を変更してもコンテンツが同じであれば、CLI は既存の翻訳をそのまま保持します。
ワークフロー#
初回実行 - すべてのソースコンテンツのフィンガープリントを含むロックファイルを作成します:
npx lingo.dev@latest run
# Creates i18n.lock2 回目以降の実行 - 差分のみを翻訳します:
npx lingo.dev@latest run
# Compares against i18n.lock, translates only changes強制再翻訳 - ロックファイルを無視して、すべてを再翻訳します:
npx lingo.dev@latest run --forceロックファイルの再作成 - ソースファイルの現在の状態からロックファイルを再構築します:
npx lingo.dev@latest lockfile --forceマージコンフリクトの解消時にロックファイルをリセットするには lockfile --force を使います。これはいつ実行しても安全です。
固定検証 - 翻訳が必要なコンテンツがある場合は失敗します(CI/CD 向け):
npx lingo.dev@latest run --frozen重複排除#
ブランチをマージすると、ロックファイルの YAML に重複エントリがたまることがあります。CLI は読み込みのたびに自動で重複を排除し、同じチェックサムブロック内の重複キーは最後に現れたものを採用します。重複が削除された場合、CLI はその件数をログに出力します。
重複排除は、ロックファイルを読み込むすべてのコマンドで実行されます: run、status、lockfile など。
バージョン管理#
i18n.lock は、ロケールファイルと一緒にリポジトリへコミットする必要があります。これが増分翻訳を可能にする仕組みです。これがないと、実行のたびにプロジェクト全体が再翻訳されます。
