Lingo.dev 让翻译始终与代码保持同步。每次代码变更时,它都会识别发生变化的内容,通过你已连接的 本地化引擎 完成翻译——一致应用术语表规则、品牌语调和按语言区域配置的模型设置——然后提交结果或创建拉取请求。未完成的翻译绝不会进入生产环境。
选择适合你的集成方式#
每种集成方式都有对应的使用指南。请选择与你当前环境匹配的方案:
| 集成方式 | 运行方式 |
|---|---|
| GitHub App | 一次安装即可。Lingo.dev 会在默认分支有 push 时为你自动运行本地化;启用后,也会在拉取请求上运行——无需 runner、无需 API 密钥 secret、无需 lockfile。 |
| GitHub Actions | 安装 @lingo.dev/cli,并在 GitHub Actions 流水线中运行 lingo push,然后提交结果或发起 PR。 |
| GitLab CI/CD | 安装 @lingo.dev/cli,并在 GitLab 流水线作业中运行 lingo push。 |
| Bitbucket Pipelines | 安装 @lingo.dev/cli,并在 Bitbucket 流水线步骤中运行 lingo push。 |
GitHub App 运行在 Lingo.dev 的服务器上。除此之外,其他集成都通过 Lingo.dev CLI 运行——这意味着任何支持 Node.js 22+ 的 CI/CD 环境,即使没有官方集成,也能直接执行本地化。
GitHub App 如何工作#
安装应用一次,并在仓库中添加一个 .lingo/config.json。从此以后,Lingo.dev 就会自动为你运行本地化——无需流水线、无需 API 密钥 secret、无需 lockfile:
- 监测变更 —— 默认开箱即用地响应默认分支上的 push;启用
onPullRequest后,也会响应拉取请求,并根据你配置的源文件模式检查变更文件 - 翻译增量内容 —— 将变更后的源内容发送到由
engineId指定的引擎进行翻译 - 将结果写回 GitHub —— 在默认分支 push 时,它会创建或更新翻译拉取请求;在拉取请求中,它会把翻译后的文件提交到 PR 分支,并发布状态评论
- 补漏与分批处理 —— 检测先前运行遗漏的变更,并将超大更新拆分为多个提交
你可以通过审批步骤来控制运行,也可以在拉取请求中使用 /lingo 命令手动触发翻译。完整配置请参阅 GitHub App 指南。
CLI 集成如何工作#
GitHub Actions、GitLab CI/CD 和 Bitbucket 集成都在现有流水线的某个步骤中运行同一个 Lingo.dev CLI。它们需要两样东西:你的 .lingo/config.json 配置文件,以及一个用于身份验证的 LINGO_API_KEY。
每次运行时,任务都会安装 CLI(npm install -g @lingo.dev/cli),并执行 lingo push,其作用包括:
- 发现源文件 —— 读取你的 bucket 配置,找到可翻译内容
- 检测变更 - 对比
.lingo/lock.json锁定文件,识别新增或修改的字符串,因此只有增量内容会被翻译。 - 执行翻译 —— 通过你配置的 本地化引擎 处理变更内容,并应用所有规则——包括术语表、品牌语调和按语言区域设置的模型参数
- 写入结果 - 直接更新目标语言环境文件,并刷新
.lingo/lock.json。
随后,你的流水线会使用平台自带的工具提交结果,或发起拉取请求。由于只翻译发生变更的字符串,因此运行速度快、成本也更可控——即使覆盖数十种语言环境也是如此。
工作流选项#
GitHub App#
应用的行为通过 .lingo/config.json 配置:
| 选项 | 作用 |
|---|---|
推送到默认分支(onPushToDefaultBranch) | 默认启用。当源内容变更进入默认分支时,会创建或更新翻译 PR。 |
拉取请求翻译(onPullRequest) | 默认禁用。会随着 PR 的变化,将翻译提交到 PR 分支。 |
审批门禁(requireApproval) | 默认禁用。在自动运行执行翻译前,需要在 check run 中选择 Approve/Deny,或在 PR 上使用 /lingo approve。 |
手动命令(/lingo translate) | 可随时通过 PR 评论为特定文件补跑或强制翻译。 |
完整配置和命令参考请参阅 GitHub App 指南。
CI/CD 中的 CLI(GitHub Actions、GitLab CI、Bitbucket)#
四种工作流模式已覆盖大多数团队的使用场景:
| 工作流 | 触发方式 | 输出 |
|---|---|---|
| 提交到 main | 推送到 main | 翻译直接提交到 main |
| 从 main 创建 PR | 推送到 main | 包含翻译内容的拉取请求 |
| 提交到功能分支 | 推送到功能分支 | 翻译已提交到该分支 |
| 从功能分支创建 PR | 推送到功能分支 | 从该分支发起拉取请求 |
第一种方式——提交到 main——最简单。翻译会自动出现,开发者零干预。基于 PR 的方案则会在翻译合入前增加一个审核步骤。
如需了解如何在这些方案之间做选择,请参阅 高级模式。
