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

概览

  • @lingo.dev/cli

快速开始

  • 快速上手
  • 配置

入门

  • 示例

参考

  • lingo push
  • lingo pull
  • lingo purge
  • 其他命令

配置

  • 键级控制
  • 格式
  • Locale

指南

  • 添加语言
  • 现有翻译
  • 重新翻译
  • 翻译注释
  • 运行、状态与恢复
  • CI/CD
  • Monorepo
  • 大型项目

在找旧版 CLI(v0)? 查看旧版 CLI 文档

示例项目

下面的每个示例都是真实仓库,.lingo/config.json 已提交,翻译也已就绪,因此你可以对照生成结果直接查看旁边的配置。大多数都是可运行的应用;也有一两个示例仅用于单独展示某种文件格式。克隆或 fork 一个,运行 lingo link 绑定你自己的引擎,然后推送即可。

先选一种方式#

用 CLI 做本地化有两种方式,先选哪一种,才能知道哪些示例适合你。

直接翻译你现有的文件。 你的框架继续用自己的格式管理翻译——Rails YAML、Android XML、Laravel PHP、ARB、Markdown——CLI 只是在原文件里完成翻译。代码完全不用改。下面 11 个示例里,有 9 个都是这种方式。

无须键名,直接编写。 你只需在字符串出现的位置用 l.text(...) 包起来,lingo extract 就会为你生成基于哈希的 catalog,不需要命名或维护翻译键。代价是多一个构建步骤和一个运行时包,下面两个 Web 应用示例展示的就是这种方式。

移动应用#

示例格式为什么选它
iOSxcode-xcstrings一个 String Catalog 包含所有语言环境,因此目标路径与源路径相同
Androidandroid以不带额外包装的 values/ 作为源文件,并使用 Android 原生限定符(values-pt-rBR/)
Flutterflutter保留 @-metadata 和 ICU 占位符,按文件重写 @@locale

Web 应用#

这是两个无键示例。它们都用 l.text(...) 包裹字符串,并通过 lingo extract 生成各自的 catalog,因此中间这一列标注的是运行时包,而不是文件格式。

示例包为什么选它
React + Vite@lingo.dev/react无键编写;生成的声明会将 l.text() 收窄为提取出的字符串
Next.js@lingo.dev/react-next无键编写方式,配合语言环境路由、hreflang 和切换器。Pages Router

生产环境中的 hreflang

LingoHead 会根据 hreflang 属性生成它的 baseUrl URL,而这个属性默认是空值,因此开箱即用时这些标签会是相对 URL。搜索引擎需要绝对 URL——在正式依赖它们之前,请先传入你的网站源地址(<LingoHead baseUrl="https://example.com" />)。

内容与规范#

示例格式为什么选它
Markdown 文档md, mdx默认处理正文内容,也可按需启用 frontmatter 字段和 MDX props
Markdocmarkdoc, json一次推送,同时处理 Next.js 内容和 UI 字符串——三个条目,各自使用不同选项
OpenAPIyaml-openapi只处理摘要和描述;路径、operation ID 和枚举原样保留

框架 catalog#

示例格式为什么选它
Railsyaml-root-keylocale 是 YAML 的根键,因此连根键本身也会被改写
Laravelphp, po包含 Laravel 消息目录和一个 gettext 文件;两者中的 :name 占位符都会保留
TypeScript 模块typescriptCatalog 以 TypeScript 模块形式提供,而不是 JSON。仅展示这种格式——没有应用会消费它们

TypeScript catalog 需要默认导出

typescript 格式会读取 default 导出——也就是 export default { … },无论是否带有 as const。如果使用命名导出,就不会产生任何可翻译内容,整个运行过程结束后只会原样复制源码。所以如果一次 push 显示文件已本地化,但输出 token 几乎为零,先检查导出形式是否正确。

如何使用这些示例#

bash
npm install -g @lingo.dev/cli
lingo login
lingo link          # writes your own orgId and engineId into .lingo/config.json
lingo push --wait

这些示例都不会提交 orgId 或 engineId——这样可以避免 fork 后误用他人的引擎进行 push。lingo link 会在本地补齐这两项。

如果你想用 GitHub App 而不是 CLI

GitHub App 会从你仓库里已提交的 engineId 中读取 .lingo/config.json——组织信息会根据 App 安装本身解析,但引擎仍然必须写在这个文件里。fork 之后,先运行 lingo link,再提交更新后的配置,然后再安装 App。

并不是每种格式都有示例#

这十一个示例覆盖了大家最常问到的框架,但 CLI 实际支持翻译十八种格式。xliff、srt、Xcode .strings 和 .stringsdict、通用 yaml,以及独立的 JSON/JSONC,即使这里没有对应仓库示例也都可用——完整列表和各格式所需配置请查看 Formats。

下一步#

格式
CLI 支持翻译的全部十八种格式,包括这里没有示例的那些
配置
完整的 .lingo/config.json 参考文档
快速开始
几分钟内完成安装、认证,并跑通第一次 push
GitHub App
服务端执行,每次 push 自动翻译

这个页面对你有帮助吗?

Mike ShulgaMike Shulga·已更新 大约 5 小时前·2 分钟阅读