添加语言
Lingo.dev CLI 通过向 i18n.json
配置中添加目标语言区域并运行一个命令,使得将项目扩展到新语言变得简单。
当您添加新语言时,CLI 会为新语言区域生成完整的翻译文件,同时保留所有现有翻译并维护相同的内容指纹系统。
添加您的第一个新语言
要添加新语言,请更新 i18n.json
配置中的 targets
数组:
原始配置:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
添加德语后的更新配置:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
运行 npx lingo.dev@latest i18n
会创建新的德语翻译文件:
locales/
en.json (源文件 - 未更改)
es.json (现有文件 - 未更改)
fr.json (现有文件 - 未更改)
de.json (新文件 - 完全翻译)
新语言生成的工作原理
Lingo.dev CLI 对新语言和现有语言的处理方式不同:
- 现有语言 — 仅生成缺失的翻译
- 新语言 — 从头开始创建完整的翻译文件
带有部分现有翻译的示例:
// locales/en.json (源文件)
{
"welcome": "Welcome",
"button.save": "Save",
"error.network": "Network error"
}
// locales/es.json (现有文件,缺少翻译)
{
"welcome": "Bienvenido"
}
添加德语并运行 CLI 后:
// locales/es.json (填补缺失部分)
{
"welcome": "Bienvenido",
"button.save": "Guardar",
"error.network": "Error de red"
}
// locales/de.json (完整的新文件)
{
"welcome": "Willkommen",
"button.save": "Speichern",
"error.network": "Netzwerkfehler"
}
添加多种语言
您可以同时添加多种语言:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh"]
}
}
CLI 会处理所有新增语言,为每个新语言区域创建完整的翻译文件。
区域变体
Lingo.dev CLI 支持使用 BCP 47 语言标签的区域语言变体:
{
"locale": {
"source": "en-US",
"targets": ["en-GB", "es-ES", "es-MX", "fr-FR", "fr-CA"]
}
}
这将为每个区域变体生成独立的翻译文件,考虑术语、拼写和文化背景的差异。
文件结构影响
CLI 会根据您的存储模式创建新文件。对于不同的文件格式:
JSON 存储:
locales/[locale].json → locales/de.json, locales/ja.json
Markdown 存储:
content/[locale]/*.md → content/de/*.md, content/ja/*.md
嵌套结构:
app/[locale]/messages.json → app/de/messages.json, app/ja/messages.json
添加特定语言
您可以使用 --locale
标志为特定的新语言生成翻译:
npx lingo.dev@latest i18n --locale de
这将仅生成德语翻译,其他新语言可以稍后处理。
删除语言
要删除某种语言,只需将其从 targets
数组中移除。CLI 不会删除现有文件,但会停止处理该语言区域:
{
"locale": {
"source": "en",
"targets": ["es", "fr"]
}
}
如果需要,您可以手动删除相应的翻译文件。