Переименование ключей
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_msg
→homepage.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
Это обходит обнаружение переименования ключей и повторно переводит весь контент. Это полезно, если вы хотите получить обновленные переводы после изменения моделей ИИ или подсказок.
Для получения дополнительной информации о повторном переводе см. Повторный перевод.