GitHub Actions

GitHub ActionsとLingo.dev CI/CDによるAI翻訳

GitHub Actionsとは?

GitHub Actionsは、GitHubに組み込まれたCI/CD・自動化プラットフォームです。ユーザーはYAMLファイルでワークフローを定義し、コードのビルド、テスト、デプロイ、またはリポジトリイベントによってトリガーされるタスクの自動化を行うことができます。

Lingo.dev CI/CDとは?

Lingo.dev CI/CDは、CI/CD環境でアプリやコンテンツをローカライズするためのAI搭載ツールで、翻訳が常に最新の状態に保たれることを保証します。GitHub向けには、Lingo.devが統合を簡素化するカスタムGitHub Actionを提供しています。

このガイドについて

このガイドでは、Lingo.dev GitHub ActionとLingo.dev Engineを使用してLingo.dev CI/CDをセットアップする方法を説明します。

ステップ 1. Lingo.dev CLIのセットアップ

まず、Lingo.dev CLIクイックスタートに従ってください。

最終的に以下が揃います:

  • Lingo.devのAPIキー
  • 翻訳パイプラインの動作を設定するi18n.jsonファイル
  • npx lingo.dev@latest runでコンテンツを翻訳する機能

ステップ 2. リポジトリシークレットの設定

  1. Settings > Secrets and variables > Actionsに移動します。
  2. New repository secretをクリックします。
  3. NameフィールドにLINGODOTDEV_API_KEYと入力します。
  4. SecretフィールドにLingo.dev APIキーを入力します。
  5. Add secretをクリックします。

ステップ 3. ワークフローの選択

Lingo.dev CI/CDは、さまざまなワークフローをサポートするために異なる方法でセットアップできます。以下は、推奨するワークフロー(および例を提供するもの)の一部です:

  • コンテンツがmainにマージされた場合、翻訳をmainにコミットする
  • コンテンツがmainにマージされた場合、mainからプルリクエストを作成する
  • コンテンツがフィーチャーブランチにマージされた場合、翻訳をそのブランチにコミットする
  • コンテンツがフィーチャーブランチにマージされた場合、そのブランチからプルリクエストを作成する

ただし、「最適な」ワークフローというものは存在しません。すべてにトレードオフがあります。どこから始めればよいかわからない場合は、最初のオプションから始めることをお勧めします。これが最もシンプルで、最も目立たないワークフローです。

ステップ4. ワークフローのセットアップ

  1. リポジトリに .github/workflows ディレクトリを作成します:

    mkdir -p .github/workflows
    

    .github の先頭に . を必ず含めてください。

  2. .github/workflows ディレクトリ内にYAMLファイルを作成します:

    touch .github/workflows/translate.yml
    

    ファイル名は重要ではありません。

  3. ワークフロー例のいずれかをファイルにコピーします。

  4. ワークフローがプルリクエストを作成する場合:

    1. 設定 > アクション > 全般に移動します。
    2. GitHub Actionsによるプルリクエストの作成と承認を許可するを有効にします。
    3. 保存をクリックします。
  5. 変更を main ブランチにコミットしてプッシュします:

    git add  .github/workflows/translate.yml
    git commit -m "feat: GitHub action for Lingo.dev"
    git push
    

(オプション)ステップ5. ワークフローのカスタマイズ

Lingo.dev CI/CDには、ほとんどの場合カスタマイズする必要のないデフォルト値があります。GitHub Actionに入力を渡すことで、これらをオーバーライドできます:

利用可能な入力:

  • version: Lingo.dev CLIバージョン(デフォルト: "latest")
  • api-key: Lingo.dev Platform APIキー(必須)
  • pull-request: 変更を含むプルリクエストを作成(デフォルト: false)
  • commit-message: カスタムコミットメッセージ(デフォルト: "feat: update translations via @LingoDotDev")
  • pull-request-title: カスタムプルリクエストタイトル(デフォルト: "feat: update translations via @LingoDotDev")
  • commit-author-name: Gitコミット作成者名(デフォルト: "Lingo.dev")
  • commit-author-email: Gitコミット作成者メールアドレス(デフォルト: "[email protected]")
  • working-directory: 作業ディレクトリ(デフォルト: ".")
  • process-own-commits: このアクションによって作成されたコミットを処理(デフォルト: false)
  • parallel: 並列モードで実行(デフォルト: false)

カスタム入力を使用した例:

- name: Lingo.dev
  uses: lingodotdev/lingo.dev@main
  with:
    api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
    commit-message: "My custom commit message!"
    parallel: true

ワークフロー例

mainにコミット

コンテンツがmainにマージされたとき、翻訳をmainにコミットします。

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

GitHubで表示

mainからのプルリクエスト

コンテンツがmainにマージされたとき、mainからプルリクエストを作成します。

name: Translate

on:
  push:
    branches: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHubで表示

フィーチャーブランチへのコミット

コンテンツがフィーチャーブランチにマージされたとき、翻訳をそのブランチにコミットします。

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}

GitHubで表示

フィーチャーブランチからのプルリクエスト

コンテンツがフィーチャーブランチにマージされたとき、そのブランチからプルリクエストを作成します。

name: Translate

on:
  push:
    branches-ignore: [main]

permissions:
  contents: write
  pull-requests: write

jobs:
  translate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Lingo.dev
        uses: lingodotdev/lingo.dev@main
        with:
          api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
          pull-request: true
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

GitHubで表示