|
文档
预约演示平台
平台MCPCLIAPI工作流
指南
更新日志

本地化

  • 概览
  • 翻译 API
  • Web 应用本地化
  • 移动应用本地化
  • iOS 与 String Catalogs
  • Android 与 strings.xml
  • 邮件本地化
  • 静态内容(如 .md、.json)
  • Next.js + Markdoc
  • Rails + i18n

工作流

  • 通过 MCP 配置引擎
  • Jira 智能分诊
  • CI/CD

静态内容本地化

Lingo.dev CLI 可通过已配置的 本地化引擎 翻译仓库中的静态文件——包括 Markdown、MDX、Markdoc、JSON、YAML、字幕等。只需指向你的内容,运行一次,即可在源文件旁生成对应的译文文件。

支持的内容类型#

CLI 会根据文件扩展名自动识别格式,无需配置 bucket 类型。locale 信息直接体现在路径中(content/en/x.md 会变成 content/de/x.md),因此不需要 [locale] 占位符。

内容类型格式示例路径
文档Markdowndocs/en/getting-started.md
文档MDXdocs/en/getting-started.mdx
文档Markdocdocs/en/getting-started.mdoc
结构化数据JSONdata/en.json
结构化数据YAMLdata/en.yaml
博客文章Markdown / MDXblog/en/post-slug.md
本地化Gettext POlocale/en/messages.po
本地化XLIFFlocale/en.xliff
字幕SRTsubs/en/intro.srt

支持的文件类型完整列表,请参阅 格式参考。

新 CLI 暂不支持

CSV(csv-per-locale)、VTT 字幕、纯文本 .txt 以及 Java .properties 目前暂不支持新版 CLI。请先继续通过 legacy CLI 处理这些文件,并关注更新日志了解最新进展。

前置条件#

每次运行时,内容都会经过一个本地化引擎——它的配置将决定采用哪个 LLM 模型、术语表、品牌语调和规则。先在 Lingo.dev 控制台中创建一个,再设置 CLI(Node 22+):

bash
npm install -g @lingo.dev/cli
lingo login
lingo init
lingo link

lingo init 和 lingo link 会创建 .lingo/config.json,将 CLI 连接到你的组织和引擎。请提交这个文件,让所有环境共享同一份配置。

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "docs/en/getting-started.md" }]
}

在 CI 中,请跳过 lingo login,改为通过环境变量提供 LINGO_API_KEY。你可以在 API keys 中生成它。

文档站点#

大多数文档框架都会按 locale 目录组织译文内容。请在 files 中为每个源文件添加一个模式(或直接使用 glob)。CLI 在翻译 Markdown、MDX 和 Markdoc 时,会保留 frontmatter、代码块和组件语法不变。

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "docs/en/getting-started.md" },
    { "pattern": "docs/en/setup.mdx" }
  ]
}

运行首次翻译,回填所有目标 locale:

bash
lingo push --backfill-missing

后续运行时,lingo push 只会翻译发生变化的内容。使用 lingo pull 可拉取在其他地方生成的翻译。

根据你的框架目录约定,调整源路径:

框架语言区域目录约定参考资料
Docusaurusi18n/[locale]/docusaurus-plugin-content-docs/current/Docusaurus i18n 指南
Nextra按语言区域拆分的页面或 JSON 字典Nextra 文档
Hugocontent/[locale]/Hugo 多语言指南
Astrosrc/content/[locale]/ 或 JSON 字典Astro i18n 指南
VitePress[locale]/ 目录前缀VitePress i18n
MkDocs配合 i18n 插件使用按语言区域划分的 docs/MkDocs i18n 插件

MDX 组件

MDX 翻译会保留 JSX 组件语法。像 <Callout>、<Tabs> 和 <CodeBlock> 这样的自定义组件都会原样保留——只有其中的文本内容会被翻译。

结构化数据#

JSON 和 YAML 文件会根据扩展名自动识别并翻译。使用 键控制 可以避免不可翻译的值(如 ID、URL、配置标记)被改动。

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [
    { "pattern": "content/en.json" },
    { "pattern": "data/en.yaml" }
  ]
}

通用 YAML 无需 format 字段。只有 yaml-openapi、yaml-root-key 和 android 需要在文件条目中显式指定 "format"。

以 locale 代码为根键的 YAML

以 locale 代码作为根键的 YAML 文件(常见于 Rails 和 Hugo)需要显式指定 "format": "yaml-root-key"——系统会将根键改写为目标 locale。参见 格式参考。

字幕#

SRT 字幕文件会根据扩展名自动翻译。CLI 会保留所有时间数据、字幕序号和格式标签——只有文本内容会被翻译。

json
{
  "orgId": "org_abc123",
  "engineId": "eng_abc123",
  "sourceLocale": "en",
  "targetLocales": ["es", "fr", "de", "ja"],
  "files": [{ "pattern": "subs/en/intro.srt" }]
}

VTT 暂不支持

新 CLI 目前还不支持 WebVTT(.vtt)字幕。暂时请继续使用 legacy CLI 处理 VTT 文件,并关注更新日志获取最新进展。

处理大型内容#

静态内容仓库中可能包含成千上万个文件,CLI 也能高效应对:

机制作用
运行状态.lingo/lock.json 会跟踪源内容的指纹,因此 lingo push 只会翻译新增或修改过的文件。请将它提交到仓库;每次推送时都会重新生成。
服务端并行处理引擎会自动并行处理翻译,无需手动调整并发参数。
定向运行可以用 glob 将一次运行限定在特定文件上:lingo push "docs/en/**"。

如果你想在不写入文件的情况下验证翻译是否已是最新状态(非常适合作为 CI 门禁),请运行 lingo check。

后续步骤#

支持的格式
CLI 支持的全部文件格式完整参考
项目示例
可直接运行的 Markdown、MDX、Markdoc 和 OpenAPI 仓库,配置与翻译均已提交
键控制
防止特定值被翻译
GitHub App
在每次推送时自动执行静态内容翻译
运行状态
了解增量翻译跟踪如何与 .lingo/lock.json 配合工作

这个页面对你有帮助吗?

Max PrilutskiyMax Prilutskiy·已更新 8 天前·2 分钟阅读