|Labs
预约演示平台
React(Lingo Compiler)
Alpha
React (MCP)React(i18n)旧版 CLI(v0)
已废弃

Lingo.dev CLI

  • 工作原理
  • 快速开始
  • 快速上手
  • Monorepos

配置

  • 支持的格式
  • i18n.json
  • i18n.lock
  • 支持的语言区域

功能特性

  • 现有翻译
  • 添加语言
  • 覆盖
  • 翻译注释
  • 翻译键
  • 键重命名
  • 键锁定
  • 键忽略
  • 键保留
  • 借助 AI 提取键

性能

  • 大型项目
  • 并行处理
  • 成本预估

重新翻译

  • 自动重新翻译
  • 重新翻译
  • 删除翻译

此处文档涵盖的是旧版 CLI(v0),现已废弃。当前版本的 CLI 为 v1。 查看当前 CLI 文档

支持的格式

Lingo.dev CLI 通过 bucket type 来解析和翻译不同的文件格式。每种 bucket type 都是专为特定格式打造的解析器。你可以在 i18n.json 中配置一个或多个 bucket,用来指定 CLI 需要翻译哪些文件。

Bucket 类型#

Bucket 类型格式输出模式是否需要 [locale]
jsonJSON 文件按 locale 分别生成文件是
json5JSON5 文件按 locale 分别生成文件是
jsoncJSONC 文件(含注释)按 locale 分别生成文件是
json-dictionaryJSON 字典(扁平键值对)按 locale 分别生成文件是
yamlYAML 文件按 locale 分别生成文件是
yaml-root-key以 locale 作为根键的 YAML直接修改源文件否
markdownMarkdown 文件按 locale 分别生成文件是
mdxMDX 文件按 locale 分别生成文件是
markdocMarkdoc 文件按 locale 分别生成文件是
htmlHTML 文件按 locale 分别生成文件是
mjmlMJML 邮件模板按 locale 分别生成文件是
androidAndroid XML 资源文件按 locale 分别生成文件是
xcode-stringsXcode .strings 文件按 locale 分别生成文件是
xcode-stringsdictXcode .stringsdict 文件按 locale 分别生成文件是
xcode-xcstringsXcode .xcstrings 目录直接修改源文件否
flutterFlutter ARB 文件按 locale 分别生成文件是
poGNU gettext PO 文件按 locale 分别生成文件是
propertiesJava .properties 文件按 locale 分别生成文件是
csvCSV 文件直接修改源文件否
csv-per-localeCSV 文件(每个 locale 一个文件)按 locale 分别生成文件是
xml通用 XML 文件按 locale 分别生成文件是
xliffXLIFF 文件按 locale 分别生成文件是
srtSRT 字幕文件按 locale 分别生成文件是
vttVTT 字幕文件按 locale 分别生成文件是
phpPHP 本地化数组按 locale 分别生成文件是
typescriptTypeScript 文件按 locale 分别生成文件是
vue-jsonVue i18n JSON 区块按 locale 分别生成文件是
txt纯文本文件按 locale 分别生成文件是

输出模式#

Bucket 共有两种输出模式:

按 locale 分别生成文件 —— CLI 会为每种目标语言创建单独的文件。include 模式必须包含 [locale] 占位符:

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

这会生成 locales/en.json、locales/es.json、locales/fr.json 等文件。

直接修改源文件 —— CLI 会将翻译结果写回包含源内容的同一个文件中,不使用 [locale] 占位符:

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

CSV 文件通常会在同一个文件的不同列中存储所有 locale。Xcode .xcstrings 目录和以根键组织的 YAML 也是类似的方式。

配置示例#

使用 JSON 的 Web 应用#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

使用 Markdown 的文档站点#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

移动应用(iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

包含多种格式的 Monorepo#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

Bucket 专属功能#

除了 include/exclude 模式外,部分 bucket 还支持以下附加功能:

功能支持的 bucket说明
Key Locking键值格式(JSON、YAML 等)直接复制源值,不进行翻译
Key Ignoring键值格式将这些键完全排除在目标文件之外
Key Preserving键值格式初始化一次,之后不再更新
Translator NotesJSONC、XCStrings通过注释提供上下文,提升翻译质量

Include 模式规则#

  • 模式路径相对于 i18n.json 文件所在位置
  • 使用 [locale] 作为 locale 代码的占位符(对“分别生成文件”类型的 bucket 为必填)
  • 星号(*)可匹配任意文件名:locales/[locale]/*.json
  • 递归模式(**)可匹配任意目录层级中的文件:src/**/[locale].json、config/locales/**/[locale].yml。当模式中使用 ** 时,node_modules、.git、dist、build、.next 和 .turbo 会默认被排除——如有需要,可额外添加自己的 exclude 条目(需 CLI 0.135.0+)
  • 文件扩展名不会影响解析方式——实际使用哪个解析器由 bucket type 决定

下一步#

i18n.json
完整配置参考
Key Locking
保护特定键不被翻译
现有翻译
将 CLI 接入已包含翻译的项目
Setup
安装并配置 CLI

这个页面对你有帮助吗?

Max PrilutskiyMax Prilutskiy·已更新 5 天前·3 分钟阅读