Переименование ключей

Обновлено: в прошлом квартале · 1 мин чтения

Устаревшее

Эта документация охватывает устаревший CLI (v0). Актуальная версия — CLI v1. Перейти к актуальной документации CLI

CLI Lingo.dev распознаёт переименование ключей перевода и автоматически сохраняет существующие переводы. Если имя ключа изменилось, а исходный текст остался прежним, 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"
}

Правила определения#

Переименование ключа определяется, если:

  • Имя ключа изменилось
  • Исходное содержимое осталось идентичным
  • Ключ находится в том же bucket

Переименование ключа не определяется, если:

  • Ключ и содержимое меняются одновременно (это считается новым ключом)
  • Меняется только содержимое (это считается обновлением содержимого и запускает Повторный перевод)

Масштабный рефакторинг#

Определение переименований работает в любом масштабе. Вы можете перестроить всю структуру ключей — от плоских ключей до вложенных пространств имён — и CLI за один запуск перенесёт все совпадающие переводы.

Что дальше#