CLI Lingo.dev распознаёт переименование ключей перевода и автоматически сохраняет существующие переводы. Если имя ключа изменилось, а исходный текст остался прежним, CLI применяет существующий перевод к новому ключу — без Повторный перевод.
Как это работает#
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 carried forward)
{
"homepage.welcome": "Bienvenido a nuestra plataforma",
"button.save": "Guardar"
}Правила определения#
Переименование ключа определяется, если:
- Имя ключа изменилось
- Исходное содержимое осталось идентичным
- Ключ находится в том же bucket
Переименование ключа не определяется, если:
- Ключ и содержимое меняются одновременно (это считается новым ключом)
- Меняется только содержимое (это считается обновлением содержимого и запускает Повторный перевод)
Масштабный рефакторинг#
Определение переименований работает в любом масштабе. Вы можете перестроить всю структуру ключей — от плоских ключей до вложенных пространств имён — и CLI за один запуск перенесёт все совпадающие переводы.
