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 অ্যাপ তৈরি করুন যেটি Contents এবং Pull requests-এ রিড/রাইট অ্যাক্সেস রাখে, অথবা যদি আপনার সংস্থা ইতিমধ্যে একটি অ্যাপ রক্ষা করে থাকে তাহলে সেটি ইনস্টল করুন।
নোট করুন:
- App ID
- Private key contents
এসবকে রিপোজিটরি সিক্রেট হিসেবে সংরক্ষণ করুন:
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 রানারগুলোর একটি সর্বোচ্চ জব ডিউরেশন আছে। বড় রিপোজিটরি বা বহু টার্গেট ভাষা সেই সীমা অতিক্রম করতে পারে।
বড় অনুবাদ ওয়ার্কলোডের জন্য:
- প্রতি রান কম ভাষা অনুবাদ করুন।
-md,-nb, বা-imgমত কন্টেন্ট ফ্ল্যাগ ব্যবহার করুন।- যখন রিপোজিটর সাইজ বা মডেল ল্যাটেন্সি হোস্টেড রানারকে অবিশ্বস্ত করে তখন self-hosted রানার ব্যবহার করুন।
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-এর জন্য নিরাপদভাবে ডিজাইন করা হয়েছে কারণ এটি ফাইল লেখে না বা মডেল প্রোভাইডারদের কল করে না।