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

Lingo.dev CLI автоматически обнаруживает, когда вы переименовываете ключи перевода, и сохраняет существующие переводы, избегая ненужного повторного перевода, если изменяется только идентификатор ключа.

Когда вы рефакторите свой код и переименовываете ключи для лучшей организации, CLI распознает, что содержимое осталось прежним, и применяет существующие переводы к новым именам ключей.

Как работает переименование ключей

Lingo.dev CLI сравнивает отпечатки содержимого, а не имена ключей, чтобы отслеживать переводы. Когда вы переименовываете ключ, но сохраняете то же содержимое, CLI обнаруживает этот шаблон и сохраняет ваши существующие переводы.

Пример сценария:

// locales/en.json (до рефакторинга)
{
  "welcome_msg": "Welcome to our platform",
  "btn_save": "Save"
}

// locales/es.json (существующие переводы)
{
  "welcome_msg": "Bienvenido a nuestra plataforma",
  "btn_save": "Guardar"
}

После рефакторинга имен ключей:

// locales/en.json (после рефакторинга)
{
  "homepage.welcome": "Welcome to our platform",
  "button.save": "Save"
}

Запуск npx lingo.dev@latest i18n сохраняет существующие переводы:

// locales/es.json (переводы сохранены)
{
  "homepage.welcome": "Bienvenido a nuestra plataforma",
  "button.save": "Guardar"
}

CLI распознает, что содержимое идентично, и применяет существующие переводы к новой структуре ключей.

Когда обнаруживается переименование ключей

Lingo.dev CLI обнаруживает переименование ключей, когда:

  • Имя ключа изменяется (welcome_msghomepage.welcome)
  • Исходное содержимое остается идентичным ("Welcome to our platform")
  • Ключ появляется в той же конфигурации bucket

Когда переименование ключей не обнаруживается

CLI рассматривает это как новый контент, требующий перевода:

Изменения содержимого:

// До
{
  "welcome": "Welcome to our app"
}

// После
{
  "welcome": "Welcome to our platform"
}

Изменяются и ключ, и содержимое:

// До
{
  "old_key": "Old content"
}

// После
{
  "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 i18n --force

Это обходит обнаружение переименования ключей и повторно переводит весь контент. Это полезно, если вы хотите получить обновленные переводы после изменения моделей ИИ или подсказок.

Для получения дополнительной информации о повторном переводе см. Повторный перевод.