Lingo.dev CLI 能在你重命名翻译键时自动识别并保留已有译文。只要键名变了、源内容没变,CLI 就会把现有译文应用到新键上——无需重新翻译。
工作原理#
CLI 比较的是内容指纹,而不是键名。当它在不同的键下发现相同指纹时,就会将其识别为重命名。
json
// 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"
}在源文件中重命名键之后:
json
// locales/en.json (after refactoring)
{
"homepage.welcome": "Welcome to our platform",
"button.save": "Save"
}运行 npx lingo.dev@latest run 后,译文会被保留下来:
json
// locales/es.json (translations carried forward)
{
"homepage.welcome": "Bienvenido a nuestra plataforma",
"button.save": "Guardar"
}检测规则#
满足以下条件时,会检测为键重命名:
- 键名发生变化
- 源内容保持完全一致
- 该键存在于同一个 bucket 中
以下情况不会被检测为键重命名:
- 键名和内容同时变化(会被视为新键)
- 只有内容发生变化(会被视为内容更新,并触发重新翻译)
批量重构#
重命名检测在任何规模下都适用。无论是把扁平键重组为嵌套命名空间,还是重构整套键结构,CLI 都能在一次运行中延续所有匹配的现有译文。
