キーのリネーム

更新日:3 か月前 · 読了目安 1分

非推奨

このドキュメントは旧CLI(v0)について説明しています。現在のCLIはv1です。 現在の CLI ドキュメントを見る

Lingo.dev CLI は翻訳キーのリネームを検出し、既存の翻訳を自動で保持します。キー名だけが変わり、ソース内容が同じままであれば、CLI は既存の翻訳を新しいキーにそのまま適用するため、再翻訳は発生しません。

仕組み#

CLI が比較するのはキー名ではなく、コンテンツのフィンガープリントです。別のキーで同じフィンガープリントが見つかると、CLI はそれをリネームとして認識します。

json
// locales/en.json (before refactoring)
{
  "welcome_msg": "Welcome to our platform",
  "btn_save": "Save"
}

// locales/es.json (existing translations)
{
  "welcome_msg": "Bienvenido a nuestra plataforma",
  "btn_save": "Guardar"
}

ソースファイル内でキーをリネームした後:

json
// locales/en.json (after refactoring)
{
  "homepage.welcome": "Welcome to our platform",
  "button.save": "Save"
}

npx lingo.dev@latest run を実行すると、翻訳はそのまま保持されます:

json
// locales/es.json (translations carried forward)
{
  "homepage.welcome": "Bienvenido a nuestra plataforma",
  "button.save": "Guardar"
}

検出ルール#

次の条件を満たすと、キーのリネームとして検出されます:

  • キー名が変更されている
  • ソース内容が完全に同一である
  • キーが同じバケット内に存在する

次の場合、キーのリネームとしては検出されません:

  • キーと内容の両方が同時に変更される(新しいキーとして扱われる)
  • 内容だけが変更される(内容の更新として扱われ、再翻訳が行われる)

大規模なリファクタリング#

リネーム検出は、どんな規模でも機能します。フラットなキーからネストされた名前空間まで、キー構造全体を再編成しても、CLI は一致する翻訳を 1 回の実行ですべて引き継ぎます。

次のステップ#