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 optionalOPENAI_ORG_IDandOPENAI_BASE_URL
تصویری ترجمہ کے لیے اضافی طور پر Azure AI Vision درکار ہے:
AZURE_AI_SERVICE_API_KEYAZURE_AI_SERVICE_ENDPOINT
مقامی کنفیگریشن کی تفصیلات کے لیے Configuration اور Azure AI Setup ملاحظہ کریں۔
Standard Setup¶
زیادہ تر پبلک اور پرائیویٹ ریپوزٹریز کے لیے یہ سیٹ اپ استعمال کریں۔
Step 1: Add Repository Secrets¶
اپنی ہدف ریپوزٹری میں، Settings > Secrets and variables > Actions کھولیں، پھر وہ پرووائیڈر سیکرٹس شامل کریں جو آپ کا ورک فلو استعمال کرے گا۔

Step 2: Enable Workflow Permissions¶
Settings > Actions > General کھولیں۔
Workflow permissions کے تحت:
- Read and write permissions منتخب کریں۔
- Allow GitHub Actions to create and approve pull requests کو فعال کریں۔
- سیٹنگ محفوظ کریں۔

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_IDGH_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 کے لیے محفوظ رہنے کے لیے ڈیزائن کیا گیا ہے کیونکہ یہ فائلیں نہیں لکھتا اور ماڈل پرووائیڈرز کو کال نہیں کرتا۔