Skip to content

GitHub Actions

جب آپ چاہتے ہیں کہ ایک ریپوزٹری بدلنے والی ڈاکیومنٹیشن کو خودکار طور پر ترجمہ کرے اور تیار شدہ آؤٹ پٹس کے ساتھ ایک پل ریکویسٹ کھولے تو GitHub Actions استعمال کریں۔

زیادہ تر ریپوزٹریز کو معیاری GITHUB_TOKEN سیٹ اپ استعمال کرنا چاہئیے۔ GitHub App سیٹ اپ صرف اسی وقت استعمال کریں جب آپ کی تنظیم ڈیفالٹ ٹوکن اجازتیں محدود کرے یا ایپ پر مبنی تصدیق درکار ہو۔

Prerequisites

ورک فلو بنانے سے پہلے، وہ AI سروس سیکرٹس کنفیگر کریں جو آپ کے ترجمہ چلانے کو درکار ہوں گے۔

ٹیکسٹ ترجمہ کے لیے ایک زبان ماڈل پرووائیڈر درکار ہے:

  • 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 optional OPENAI_ORG_ID and OPENAI_BASE_URL

تصویری ترجمہ کے لیے اضافی طور پر Azure AI Vision درکار ہے:

  • AZURE_AI_SERVICE_API_KEY
  • AZURE_AI_SERVICE_ENDPOINT

مقامی کنفیگریشن کی تفصیلات کے لیے Configuration اور Azure AI Setup ملاحظہ کریں۔

Standard Setup

زیادہ تر پبلک اور پرائیویٹ ریپوزٹریز کے لیے یہ سیٹ اپ استعمال کریں۔

Step 1: Add Repository Secrets

اپنی ہدف ریپوزٹری میں، Settings > Secrets and variables > Actions کھولیں، پھر وہ پرووائیڈر سیکرٹس شامل کریں جو آپ کا ورک فلو استعمال کرے گا۔

Actions کے راز منتخب کریں

Step 2: Enable Workflow Permissions

Settings > Actions > General کھولیں۔

Workflow permissions کے تحت:

  1. Read and write permissions منتخب کریں۔
  2. Allow GitHub Actions to create and approve pull requests کو فعال کریں۔
  3. سیٹنگ محفوظ کریں۔

ورک فلو کی اجازت کی ترتیب

Step 3: Add the Workflow

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/

translate -l "es fr de" -y کو اپنے پروجیکٹ کی ہدف زبانوں اور مواد فلگز کے مطابق تبدیل کریں۔ بڑی ریپوزٹریز کے لیے، on: کے تحت paths: فلٹر شامل کریں تاکہ ورک فلو صرف تب ہی رن ہو جب ڈاکیومنٹیشن تبدیل ہو۔

GitHub App Setup

جب آپ کی تنظیم میں GITHUB_TOKEN کمیٹس یا پل ریکویسٹ نہیں بنا سکتا تو یہ سیٹ اپ استعمال کریں۔

Step 1: Create or Install a GitHub App

ایک GitHub App بنائیں جس کے پاس Contents اور Pull requests تک ریڈ/رائٹ رسائی ہو، یا اگر آپ کی تنظیم پہلے ہی ایپ فراہم کرتی ہے تو وہ انسٹال کریں۔

درج کریں:

  • ایپ آئی ڈی
  • نجی کلید کا مواد

انہیں ریپوزٹری سیکرٹس کے طور پر محفوظ کریں:

  • GH_APP_ID
  • GH_APP_PRIVATE_KEY

Step 2: Generate an App Token

معیاری سیٹ اپ جیسا ہی ورک فلو استعمال کریں، مگر پل ریکویسٹ مرحلے سے پہلے ایک app-token قدم شامل کریں:

      - 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-hosted runners کی زیادہ سے زیادہ جاب دورانیہ ہوتی ہے۔ بڑی ریپوزٹریز یا بہت سی ہدف زبانیں اس حد کو عبور کر سکتی ہیں۔

بڑے ترجمے کے کاموں کے لیے:

  • ہر رن میں کم زبانیں ترجمہ کریں۔
  • -md, -nb, یا -img جیسے مواد فلگز استعمال کریں۔
  • جب ریپوزٹری کا سائز یا ماڈل کی لیٹینسی ہوسٹڈ رنرز کو غیر معتبر بناتی ہو تو self-hosted runner استعمال کریں۔

Review in CI

جب پل ریکویسٹ کو جنریٹ شدہ ترجموں کی تصدیق کرنی ہو بغیر LLM یا Vision پرووائیڈرز کو کال کیے تو co-op-review استعمال کریں۔

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

co-op-review ایک بیٹا ڈیٹرمنسٹک ریویو کمانڈ ہے۔ اس کے چیکس اور آؤٹ پٹ اسکیمہ میں تبدیلی آ سکتی ہے، مگر یہ CI کے لیے محفوظ رہنے کے لیے ڈیزائن کیا گیا ہے کیونکہ یہ فائلیں نہیں لکھتا اور ماڈل پرووائیڈرز کو کال نہیں کرتا۔