キーの名前変更

Lingo.dev CLIは、翻訳キーの名前変更を自動的に検出し、既存の翻訳を保持します。キー識別子のみが変更された場合、不要な再翻訳を回避できます。

コードをリファクタリングしてより良い整理のためにキーの名前を変更する場合、CLIはコンテンツが同じであることを認識し、既存の翻訳を新しいキー名に適用します。

キーの名前変更の仕組み

Lingo.dev CLIは、翻訳を追跡するためにキー名ではなくコンテンツのフィンガープリントを比較します。キーの名前を変更してもコンテンツが同じ場合、CLIはこのパターンを検出し、既存の翻訳を保持します。

シナリオ例:

// 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"
}

キー名のリファクタリング後:

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

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

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

CLIはコンテンツが同一であることを認識し、既存の翻訳を新しいキー構造に適用します。

キーの名前変更が検出される場合

Lingo.dev CLIは、以下の場合にキーの名前変更を検出します:

  • キー名が変更される(welcome_msghomepage.welcome)
  • ソースコンテンツが同一のまま("Welcome to our platform")
  • キーが同じバケット設定に表示される

キーの名前変更が検出されない場合

CLIは以下を再翻訳が必要な新しいコンテンツとして扱います:

コンテンツの変更:

// Before
{
  "welcome": "Welcome to our app"
}

// After
{
  "welcome": "Welcome to our platform"
}

キーとコンテンツの両方が変更:

// Before
{
  "old_key": "Old content"
}

// After
{
  "new_key": "New content"
}

大規模なキーのリファクタリング

キーの名前変更検出は、大規模なリファクタリング操作に対応しています。キー構造全体を再編成しても、CLIは一致するすべての翻訳を保持します。

リファクタリング前:

{
  "welcome_text": "Welcome",
  "save_btn": "Save",
  "cancel_btn": "Cancel",
  "error_network": "Network error"
}

名前空間へのリファクタリング後:

{
  "homepage.welcome": "Welcome",
  "buttons.save": "Save",
  "buttons.cancel": "Cancel",
  "errors.network": "Network error"
}

コンテンツのフィンガープリントが一致するため、すべての翻訳が保持されます。

再翻訳の強制

フィンガープリントが一致していても、コンテンツを再翻訳したい場合は、--forceフラグを使用します:

npx lingo.dev@latest run --force

これにより、キー名変更の検出がバイパスされ、すべてのコンテンツが再翻訳されます。AIモデルやプロンプトを変更した後に新しい翻訳が必要な場合に便利です。

再翻訳の詳細については、再翻訳を参照してください。