GitHub

更新日:4 日前 · 読了目安 2分

Lingo.dev では、GitHub 上で継続的ローカライゼーションを実行する方法を 2 つ用意しています。マネージドな GitHub App を使う方法と、GitHub Actions ジョブ内で @lingo.dev/cli を実行する方法です。

どちらを使うべき?

まずは GitHub App から始めるのがおすすめです。サーバー側で動作し、push や pull request に自動で反応するうえ、runner も API キーの secret も lockfile の管理も不要です。ほかの CI ステップと一緒に、自分のパイプライン内でローカライゼーションを動かしたい場合は GitHub Actions を選んでください。

GitHub App(推奨)#

GitHub App は、GitHub 上で継続的ローカライゼーションを実行するもっとも手軽な方法です。一度インストールしてエンジンを指定すれば、以後はすべての push と pull request に自動で反応します。

  1. GitHub App ページからアプリをインストールし、リポジトリへのアクセスを許可します。
  2. リポジトリのルートに .lingo/config.json をコミットし、bucket とロケール、さらにアプリが使用するエンジンの engineId を記述します。ファイル形式については Configuration を参照してください。
  3. あとは push するだけです。アプリが変更されたコンテンツをサーバー側でローカライズし、結果をコミットで反映するか、必要に応じて pull request を作成して、.lingo/lock.json を自動で最新の状態に保ちます。

アプリはサーバー側で動作するため、管理すべき runner も、保存しておく LINGO_API_KEY secret も、実行する lockfile コマンドも必要ありません。

GitHub Actions#

自分のパイプライン内でローカライゼーションを実行する場合は、ジョブに CLI をインストールして lingo push を実行し、その後、既存のツールで結果をコミットするか pull request を作成します。

API キーは、LINGO_API_KEY という名前のリポジトリ secret として保存してください(Settings > Secrets and variables > Actions)。CLI は環境変数からそれを読み取ります。

現在のブランチにコミットする#

.github/workflows/localize.yml を作成します。

yaml
name: Localize
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
      - name: Install Lingo.dev CLI
        run: npm install -g @lingo.dev/cli
      - name: Localize
        run: lingo push --wait
        env:
          LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
      - name: Commit translations
        run: |
          git config user.name "Lingo.dev"
          git config user.email "support@lingo.dev"
          git add .
          git diff --staged --quiet || git commit -m "feat: update translations"
          git push

これにより、変更されたコンテンツがローカライズされ、push のたびに結果がそのブランチへ直接コミットされます。

pull request を作成する#

直接コミットする代わりに、レビューを通して翻訳を反映したい場合は、結果をブランチに push して pull request を作成します。この例では GitHub CLI を使用します。これは GitHub ホスト型 runner に標準でインストールされています。

yaml
name: Localize
on:
  push:
    branches: [main]
permissions:
  contents: write
  pull-requests: write
jobs:
  localize:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - name: Install Lingo.dev CLI
        run: npm install -g @lingo.dev/cli
      - name: Localize
        run: lingo push --wait
        env:
          LINGO_API_KEY: ${{ secrets.LINGO_API_KEY }}
      - name: Open pull request
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          git config user.name "Lingo.dev"
          git config user.email "support@lingo.dev"
          branch="lingo/translations-${{ github.run_id }}"
          git checkout -b "$branch"
          git add .
          git diff --staged --quiet && exit 0
          git commit -m "feat: update translations"
          git push origin "$branch"
          gh pr create --fill --base "${{ github.ref_name }}" --head "$branch"

PRベースのワークフローでは、Settings > Actions > General > Allow GitHub Actions to create and approve pull requests を有効にしてください。

同じジョブは feature branch でも動作します。どこでローカライゼーションを実行するかは、on.push.branches フィルター(たとえば branches-ignore: [main])を変更して制御できます。

次のステップ#