Lingo.dev CLI 会保留你在目标文件中的手动修改。当你直接编辑目标文件,覆盖自动生成的翻译时,只要源内容没有变化,CLI 就会在后续运行中持续保留你的修改。
覆盖机制如何运作#
CLI 跟踪的是源内容的指纹,而不是目标内容的指纹。当你在目标文件中手动修改某条翻译时,源内容指纹不会变化,因此 CLI 会将这个 key 视为已翻译并跳过处理。
1
CLI 生成翻译
json
// locales/es.json (generated)
{ "greeting": "Bienvenido a nuestra plataforma" }2
你手动覆盖它
json
// locales/es.json (manually edited)
{ "greeting": "¡Bienvenido a nuestro espacio digital!" }3
后续运行会保留你的覆盖
bash
npx lingo.dev@latest run
# Your custom translation remains unchanged覆盖何时会被替换#
如果源内容发生变化,CLI 会检测到新的指纹,并重新翻译这个 key——你的覆盖也会被替换:
json
// locales/en.json (source updated)
{ "greeting": "Welcome to our new platform" }新的指纹与 lockfile 中的记录不匹配,因此 CLI 会为这个 key 生成一条全新的翻译。
Key 重命名#
即使 key 被重命名,只要内容保持不变,CLI 依然会保留翻译。lockfile 会同时跟踪内容指纹和 key 指纹,因此支持 key renaming,不会丢失已有的翻译成果。
