键重命名
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"
) - 键出现在相同的存储桶配置中
何时未检测到键重命名
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
此操作会绕过键重命名检测并重新翻译所有内容,当您更改 AI 模型或提示后需要更新翻译时非常有用。
有关重新翻译的更多信息,请参阅 重新翻译。