Lingo.dev + .json5 (JSON5)
Lingo.dev CLI 翻译 JSON5 语言文件,完全支持 JSON5 语法,包括注释、未加引号的键、尾随逗号和单引号。CLI 在保持框架兼容性的同时,保留 JSON5 格式和开发者友好的语法,并仅处理修改过的内容以提高成本效率。
快速设置
创建一个 i18n.json
配置文件:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json5": {
"include": ["locales/[locale].json5"]
}
}
}
提醒:[locale]
是一个占位符,在 CLI 运行时会被实际的语言代码替换,因此应在配置中保持原样。
翻译一切
npx lingo.dev@latest i18n
自动处理 JSON5 语法特性,保留注释和格式,仅更新更改的内容。
JSON5 语法支持
JSON5 扩展了 JSON,提供了开发者友好的语法:
{
// 支持注释
title: "Hello, world!", // 支持行内注释
description: '允许使用单引号',
unquoted: '键可以不加引号',
trailing: '允许尾随逗号',
/* 支持块注释
也可以多行 */
multiline: "这是一个 \
跨多行的长字符串",
// 支持十六进制数字
hex_value: 0xDEADBEEF,
positive: +123,
nested: {
key: 'value',
}, // 允许尾随逗号
}
智能结构保留
保持 JSON5 语法和框架约定:
{
nav: {
home: "Home",
about: {
team: "Our Team"
}
},
items: {
one: "{{count}} item",
other: "{{count}} items"
},
// 配置保持不变
version: 0x010203
}
高级配置
排除文件
"json5": {
"include": ["locales/[locale]/*.json5"],
"exclude": ["locales/[locale]/config.json5"]
}
锁定技术键
"json5": {
"lockedKeys": ["app/version", "settings/apiKey"]
}
使用正斜杠 (/
) 表示嵌套键路径,或使用星号 (*
) 匹配多个键路径。
JSON5 与 JSON
JSON5 提供了增强的开发者体验,同时保持了对 JSON 的完全兼容:
- 注释:使用内联和块注释记录您的翻译
- 无引号键:无需在属性名称周围添加引号,语法更简洁
- 尾随逗号:更容易编辑和进行版本控制差异比较
- 单引号:在字符串引号中提供灵活性
- 多行字符串:提高长文本的可读性
- 数字格式:支持十六进制、正号等格式
所有 JSON 文件都是有效的 JSON5 文件,使迁移变得无缝。