Lingo.dev + .json-dictionary
Lingo.dev CLI 翻译 JSON 文件,其中每个可翻译的字符串在单个对象中包含多个语言区域键。与将不同语言区域分离到不同文件的标准 JSON 格式不同,json-dictionary 将所有翻译与语言区域特定的键存储在一起,例如 {"en": "Hello", "es": "Hola"}
。
快速设置
创建一个 i18n.json
配置文件:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json-dictionary": {
"include": ["content/pages.json"]
}
}
}
文件结构
json-dictionary 格式将翻译存储为带有语言区域键的嵌套对象:
{
"title": {
"en": "Welcome to our site",
"es": "Bienvenido a nuestro sitio"
},
"navigation": {
"home": {
"en": "Home",
"es": "Inicio"
},
"about": {
"en": "About Us",
"es": "Acerca de nosotros"
}
},
"staticValue": "This won't be translated",
"pages": [
{
"title": {
"en": "Page One",
"es": "Página Uno"
}
}
]
}
翻译一切
npx lingo.dev@latest i18n
CLI 会自动:
- 仅提取可翻译的对象(包含语言区域键的对象)
- 保留不可翻译的值不变
- 在现有键旁边添加目标语言区域键
- 保持源语言区域键的顺序(源语言优先,其他按字母顺序排列)
键行为
可翻译检测:只有包含源语言区域键的对象才会被视为可翻译。普通字符串、数字、布尔值以及不包含语言区域键的对象将保持不变。
键顺序:添加翻译时,源语言区域键首先出现,随后是按字母顺序排列的其他语言区域键:
{
"message": {
"en": "Original text",
"de": "Deutscher Text",
"es": "Texto en español",
"fr": "Texte français"
}
}
嵌套支持:支持深度嵌套结构和包含可翻译对象的数组。
高级配置
排除文件
"json-dictionary": {
"include": ["content/*.json"],
"exclude": ["content/config.json"]
}