键重命名
Lingo.dev CLI 会自动检测您重命名翻译键的操作,并保留现有翻译。当仅更改键标识符时,无需重新翻译。
当您为更好地组织代码而重构并重命名键时,CLI 能识别内容未变,并将现有翻译应用到新键名。
键重命名的工作原理
Lingo.dev CLI 通过比较内容指纹(fingerprint),而不是键名,来跟踪翻译。当您重命名键但内容保持不变时,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_msg→homepage.welcome) - 源内容保持一致(
"Welcome to our platform") - 键出现在相同的 bucket 配置中
何时未检测到键重命名
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 模型或提示词后需要全新翻译的场景。
有关重新翻译的更多信息,请参见 重新翻译。