Skip to content

GitHub Actions

Använd GitHub Actions när du vill att ett repository automatiskt ska översätta ändrad dokumentation och öppna en pull-begäran med de genererade resultaten.

De flesta repositorier bör använda standarduppsättningen med GITHUB_TOKEN. Använd GitHub App-uppsättningen endast när din organisation begränsar de standardbehörigheter som token har eller kräver autentisering baserad på appar.

Förutsättningar

Innan du skapar arbetsflödet, konfigurera de AI-tjänstens hemligheter som din översättningskörning behöver.

Textöversättning kräver en leverantör av språkmodell:

  • Azure OpenAI: AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_MODEL_NAME, AZURE_OPENAI_CHAT_DEPLOYMENT_NAME, AZURE_OPENAI_API_VERSION
  • OpenAI: OPENAI_API_KEY, OPENAI_CHAT_MODEL_ID, plus valfri OPENAI_ORG_ID och OPENAI_BASE_URL

Bildöversättning kräver dessutom Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Se Konfiguration och Azure AI-inställning för lokala konfigurationsdetaljer.

Standardinställning

Använd denna konfiguration för de flesta offentliga och privata repositorier.

Steg 1: Lägg till Repository Secrets

I ditt mål-repository, öppna Settings > Secrets and variables > Actions, och lägg sedan till de leverantörshemligheter som ditt arbetsflöde kommer att använda.

Välj Actions-hemligheter

Steg 2: Aktivera Workflow Permissions

Öppna Settings > Actions > General.

Under Workflow permissions:

  1. Select Read and write permissions.
  2. Enable Allow GitHub Actions to create and approve pull requests.
  3. Save the setting.

Inställning för arbetsflödesbehörigheter

Steg 3: Lägg till arbetsflödet

Create .github/workflows/co-op-translator.yml:

name: Co-op Translator

on:
  push:
    branches:
      - main

jobs:
  co-op-translator:
    runs-on: ubuntu-latest

    permissions:
      contents: write
      pull-requests: write

    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.10"

      - name: Install Co-op Translator
        run: |
          python -m pip install --upgrade pip
          pip install co-op-translator

      - name: Run Co-op Translator
        env:
          PYTHONIOENCODING: utf-8
          AZURE_AI_SERVICE_API_KEY: ${{ secrets.AZURE_AI_SERVICE_API_KEY }}
          AZURE_AI_SERVICE_ENDPOINT: ${{ secrets.AZURE_AI_SERVICE_ENDPOINT }}
          AZURE_OPENAI_API_KEY: ${{ secrets.AZURE_OPENAI_API_KEY }}
          AZURE_OPENAI_ENDPOINT: ${{ secrets.AZURE_OPENAI_ENDPOINT }}
          AZURE_OPENAI_MODEL_NAME: ${{ secrets.AZURE_OPENAI_MODEL_NAME }}
          AZURE_OPENAI_CHAT_DEPLOYMENT_NAME: ${{ secrets.AZURE_OPENAI_CHAT_DEPLOYMENT_NAME }}
          AZURE_OPENAI_API_VERSION: ${{ secrets.AZURE_OPENAI_API_VERSION }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
          OPENAI_ORG_ID: ${{ secrets.OPENAI_ORG_ID }}
          OPENAI_CHAT_MODEL_ID: ${{ secrets.OPENAI_CHAT_MODEL_ID }}
          OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}
        run: |
          translate -l "es fr de" -y

      - name: Create Pull Request with translations
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          commit-message: "Update translations via Co-op Translator"
          title: "Update translations via Co-op Translator"
          body: |
            This PR updates translations for recent changes to the main branch.

            Generated by Co-op Translator.
          branch: update-translations
          base: main
          labels: translation, automated-pr
          delete-branch: true
          add-paths: |
            translations/
            translated_images/

Change translate -l "es fr de" -y to the target languages and content flags your project needs. For large repositories, add a paths: filter under on: so the workflow only runs when documentation changes.

GitHub App Setup

Använd denna uppsättning när GITHUB_TOKEN inte kan skapa commits eller pull requests i din organisation.

Steg 1: Create or Install a GitHub App

Create a GitHub App with read/write access to Contents and Pull requests, or install the organization-provided app if your organization already maintains one.

Anteckna:

  • App ID
  • Private key contents

Spara dem som repository-hemligheter:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Steg 2: Generera en App Token

Use the same workflow as the standard setup, but add an app-token step before the pull request step:

      - name: Authenticate GitHub App
        id: generate_token
        uses: tibdex/github-app-token@v1
        with:
          app_id: ${{ secrets.GH_APP_ID }}
          private_key: ${{ secrets.GH_APP_PRIVATE_KEY }}

      - name: Create Pull Request with translations
        uses: peter-evans/create-pull-request@v5
        with:
          token: ${{ steps.generate_token.outputs.token }}
          commit-message: "Update translations via Co-op Translator"
          title: "Update translations via Co-op Translator"
          branch: update-translations
          base: main
          delete-branch: true
          add-paths: |
            translations/
            translated_images/

Runner Limits

GitHub-hostade runners har en maximal jobbtid. Stora repositorier eller många målspråk kan överskrida den gränsen.

För stora översättningsarbetsbelastningar:

  • Översätt färre språk per körning.
  • Använd innehavsflaggor som -md, -nb, eller -img.
  • Använd en self-hosted runner när repositorystorlek eller modellatens gör hostade runners opålitliga.

Review in CI

Använd co-op-review när en pull request ska validera genererade översättningar utan att anropa LLM- eller Vision-leverantörer.

      - name: Review translated outputs
        run: |
          co-op-review --changed-from "origin/${{ github.base_ref }}" --format github

co-op-review är ett beta-deterministiskt granskningskommando. Dess kontroller och utdata-schema kan utvecklas, men det är designat att vara säkert för CI eftersom det inte skriver filer eller anropar modellleverantörer.