CI/CD

Max PrilutskiyCEO 兼联合创始人预计阅读 1 分钟

CLI 没有专门的 ci 命令。要在 CI 中完成本地化,你有两种方式:让 Lingo.dev GitHub App 在服务端自动处理(GitHub 场景下推荐),或者在你自己的流水线中运行 lingo push 并提交结果。

方案 1:GitHub App(推荐)#

在你的仓库中安装 Lingo.dev GitHub App。将它指向已提交的 .lingo/config.json(包含 engineId)后,它就会自动响应 push 和 pull request:检测变更过的源字符串,通过你的引擎完成翻译,并将结果提交回分支,或直接发起 pull request。无需 runner、无需 API key secret,也无需维护 lockfile。

方案 2:在你自己的 runner 中运行 lingo push#

任何支持 Node.js 22+ 的 CI 环境都可以直接运行 CLI。使用 API key 进行身份验证(以 secret 形式存储),执行 push,然后提交输出结果。

yaml
name: Translate
on:
  push:
    branches: [main]
permissions:
  contents: write
jobs:
  localize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: npm install -g @lingo.dev/cli
      - run: lingo push --wait
        env:
          LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
      - name: Commit translations
        run: |
          git config user.name "lingo-bot"
          git config user.email "support@lingo.dev"
          git add .
          git diff --cached --quiet || git commit -m "chore: update translations"
          git push

lingo push --wait 只会翻译自上次运行以来变更的内容(记录在 .lingo/lock.json 中),等待运行完成后再写入输出。如果没有 --wait,push 会在提交运行后立即退出,而提交步骤则找不到可提交的内容。若要创建拉取请求而不是直接提交到该分支,请先将更改推送到专用分支,再使用你所在平台的工具创建 PR(例如 gh pr create)。

部署前先验证#

在构建前添加一个 lingo check 步骤;如果有任何源字符串缺少翻译,就让流水线直接失败:

bash
lingo check

另请参阅#

  • GitHub App - 托管式持续本地化,无需 runner 或 secret。
  • lingo push - 作用域模式、--backfill-missing 和重试机制。
  • Configuration - .lingo/config.json 和 lockfile。