Skip to content

GitHub Actions

Folosește GitHub Actions când vrei ca un repository să traducă automat documentația modificată și să deschidă un pull request cu rezultatele generate.

Majoritatea repository-urilor ar trebui să folosească configurația standard GITHUB_TOKEN. Folosește configurarea GitHub App numai când organizația ta restricționează permisiunile implicite ale token-ului sau solicită autentificare bazată pe aplicație.

Prerequisites

Înainte de a crea workflow-ul, configurează secretele serviciilor AI de care rulează traducerea ta are nevoie.

Traducerea textului necesită un singur furnizor de modele de limbaj:

  • 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 opțional OPENAI_ORG_ID și OPENAI_BASE_URL

Traducerea imaginilor necesită în plus Azure AI Vision:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

Vezi Configuration și Azure AI Setup pentru detalii de configurare locală.

Standard Setup

Folosește această configurare pentru majoritatea repository-urilor publice și private.

Step 1: Add Repository Secrets

În repository-ul țintă, deschide Settings > Secrets and variables > Actions, apoi adaugă secretele furnizorului pe care workflow-ul tău le va folosi.

Selectați secretele Actions

Step 2: Enable Workflow Permissions

Deschide Settings > Actions > General.

Sub Workflow permissions:

  1. Selectează Read and write permissions.
  2. Activează Allow GitHub Actions to create and approve pull requests.
  3. Salvează setarea.

Setarea permisiunilor workflow

Step 3: Add the Workflow

Creează .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/

Schimbă translate -l "es fr de" -y la limbile țintă și la flag-urile de conținut de care are nevoie proiectul tău. Pentru repository-urile mari, adaugă un filtru paths: sub on: astfel încât workflow-ul să ruleze doar când se schimbă documentația.

GitHub App Setup

Folosește această configurare atunci când GITHUB_TOKEN nu poate crea commit-uri sau pull request-uri în organizația ta.

Step 1: Create or Install a GitHub App

Creează o GitHub App cu acces de citire/scriere la Contents și Pull requests, sau instalează aplicația furnizată de organizație dacă organizația ta deja întreține una.

Înregistrează:

  • App ID
  • Private key contents

Stochează-le ca secrete ale repository-ului:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Step 2: Generate an App Token

Folosește același workflow ca în configurarea standard, dar adaugă un pas app-token înainte de pasul pull request:

      - 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

Runner-urile găzduite de GitHub au o durată maximă pentru joburi. Repository-urile mari sau multe limbi țintă pot depăși această limită.

Pentru fluxuri mari de lucru de traducere:

  • Tradu mai puține limbi pe rulare.
  • Folosește flag-uri de conținut precum -md, -nb, sau -img.
  • Folosește un runner self-hosted când dimensiunea repository-ului sau latența modelului face ca runner-urile găzduite să fie nesigure.

Review in CI

Folosește co-op-review când un pull request ar trebui să valideze traducerile generate fără a apela la furnizori LLM sau Vision.

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

co-op-review este o comandă de revizuire deterministă în beta. Verificările și schema de output se pot schimba, dar este proiectată să fie sigură pentru CI deoarece nu scrie fișiere și nu apelează furnizori de modele.