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 文件,使迁移变得无缝。