使用现有翻译
Lingo.dev CLI 无缝集成到已经包含翻译文件的项目中,保留现有的翻译内容,同时补充缺失的翻译。
当您在一个已有翻译的项目中运行 CLI 时,它会分析已翻译的内容,仅为缺失的键生成内容,从而保持现有翻译的质量和一致性。
注意:请确保目标语言文件是空的,且不包含源语言的内容。在目标文件中包含源语言内容是一种不良实践,可能会干扰翻译过程。
工作原理
Lingo.dev CLI 将您的源内容与现有的目标文件进行比较,以识别缺失部分。仅生成缺失的翻译,现有的翻译内容不会被修改。
示例场景:
// locales/en.json (源文件)
{
"welcome": "Welcome to our app",
"button.save": "Save",
"button.cancel": "Cancel",
"error.network": "Network error"
}
// locales/es.json (现有的部分翻译)
{
"welcome": "Bienvenido a nuestra aplicación",
"button.save": "Guardar"
}
运行 npx lingo.dev@latest i18n
仅生成缺失的翻译:
// locales/es.json (CLI 运行后)
{
"welcome": "Bienvenido a nuestra aplicación",
"button.save": "Guardar",
"button.cancel": "Cancelar",
"error.network": "Error de red"
}
现有的 "welcome" 和 "button.save" 翻译保持不变。
第一次运行现有翻译
当您首次在包含现有翻译的项目中运行 Lingo.dev CLI 时,它会根据当前状态创建 i18n.lock
文件。此锁文件会跟踪已处理的内容,确保现有翻译不会被重新生成。
工作流程:
- 初始扫描 — CLI 识别目标文件中的现有翻译
- 差距分析 — 将源键与目标文件进行比较,找出缺失的翻译
- 翻译生成 — 仅创建缺失的翻译
- 锁文件创建 — 为所有源内容记录内容指纹
从传统翻译系统迁移
Lingo.dev CLI 可以处理由任何工具创建的翻译文件,只要它们遵循标准格式,例如 JSON、YAML 或其他支持的文件类型。
迁移步骤:
- 配置 i18n.json — 设置您的存储桶模式以匹配现有文件位置
- 运行初始翻译 — CLI 会填充任何缺失的翻译
- 审核并提交 — 保留现有翻译,仅填补空缺部分
迁移示例:
// 您现有的项目结构
locales/
en.json (源文件)
es.json (来自之前工具的部分翻译)
fr.json (来自之前工具的部分翻译)
// i18n.json 配置
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
CLI 会遵循您现有的文件结构和翻译内容。
处理翻译质量
现有翻译的质量可能比 AI 翻译引擎生成的翻译质量更差。Lingo.dev CLI 提供了在需要时刷新翻译的选项:
保留现有翻译:
npx lingo.dev@latest i18n
# 保留所有现有翻译,仅填补空缺部分
重新翻译特定语言:
npx lingo.dev@latest i18n --force --locale es
# 重新生成所有西班牙语翻译
重新翻译特定键:
npx lingo.dev@latest i18n --force --key error.network
# 仅重新生成所有语言中的 error.network 键
有关重新翻译的更多信息,请参阅重新翻译。
空目标文件
如果您有空的目标文件或仅包含部分键的文件,Lingo.dev CLI 会将它们视为部分翻译并填充缺失内容。
示例:
// locales/de.json (空目标文件)
{}
运行 CLI 后,它将变为一个完整的翻译文件,包含所有源键的翻译内容。
锁文件初始化
首次运行会创建一个 i18n.lock
文件,该文件反映了您现有的状态。这可以防止 CLI 对已经存在的内容重新翻译,即使这些内容最初并不是由 Lingo.dev CLI 生成的。
此锁文件可确保现有翻译与新翻译之间的一致性,从而实现持续一致的行为。