Step 1: একটি অনুবাদ সরবরাহকারী চয়ন করুন
অ্যাকশনটি একটি ইউনিফাইড এপিআই পৃষ্ঠের পিছনে Azure AI Translator, এডাব্লুএস অনুবাদ এবং গুগল ক্লাউড অনুবাদ দিয়ে কাজ করে। provider ইনপুট দিয়ে প্রতি রানে একটি একক সরবরাহকারী চয়ন করুন - ওয়ার্কফ্লো সরবরাহকারী নির্বিশেষে অভিন্নভাবে আচরণ করে; কেবল শংসাপত্রগুলি আলাদা। সম্পূর্ণ তুলনার জন্য অনুবাদ সরবরাহকারী দেখুন।
Step 2: শংসাপত্র এবং একটি ওয়ার্কফ্লো যোগ করুন
আপনার সরবরাহকারীর শংসাপত্রগুলি GitHub সংগ্রহস্থল গোপনীয়তা হিসাবে সংরক্ষণ করুন তারপর .github/workflows/translate.yml তৈরি করুন। এর নির্দিষ্ট সেটআপের জন্য নীচে আপনার সরবরাহকারীকে নির্বাচন করুন - বাকি ওয়ার্কফ্লো অভিন্ন।
Azure AI Translator
Azure হল ডিফল্ট সরবরাহকারী, তাই provider বাদ দেওয়া যেতে পারে। Azure পোর্টালে একটি Azure AI Translator রিসোর্স প্রভিশন করুন, তারপরে এর শংসাপত্রগুলি সংরক্ষণ করুন:
এগুলি সংগ্রহস্থল গোপন হিসাবে সংরক্ষণ করুন
TRANSLATOR_KEY— রিসোর্সের জন্য সাবস্ক্রিপশন কী।TRANSLATOR_ENDPOINT— আঞ্চলিক এন্ডপয়েন্ট ইউআরএল।TRANSLATOR_REGION— রিসোর্সের অ্যাজুর অঞ্চল।
ওয়ার্কফ্লো যুক্ত করুন
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | azure: subscriptionKey: ${{ secrets.TRANSLATOR_KEY }} endpoint: ${{ secrets.TRANSLATOR_ENDPOINT }} region: ${{ secrets.TRANSLATOR_REGION }} sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationএডাব্লুএস অনুবাদ
aws এ provider সেট করুন। aws-actions/configure-aws-credentials মাধ্যমে ওআইডিসি পছন্দ করুন যাতে কোনও দীর্ঘস্থায়ী গোপনীয়তা সংরক্ষণ করা না হয় - পদক্ষেপ রফতানি আপনার জন্য AWS_REGION। পরিবর্তে স্ট্যাটিক কীগুলি ব্যবহার করতে, সঞ্চয় করুন:
এগুলি সংগ্রহস্থল গোপন হিসাবে সংরক্ষণ করুন
AWS_ACCESS_KEY_ID— আপনার এডাব্লুএস অ্যাক্সেস কী আইডি।AWS_SECRET_ACCESS_KEY— আপনার AWS গোপন অ্যাক্সেস কী।
একটি অঞ্চল সর্বদা প্রয়োজন হয় - এটি awsRegion বা AWS_REGION পরিবেশ ভেরিয়েবল দিয়ে সেট করুন।
ওয়ার্কফ্লো যুক্ত করুন
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: id-token: write # for aws-actions/configure-aws-credentials (OIDC) contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - uses: aws-actions/configure-aws-credentials@v4 with: role-to-assume: arn:aws:iam::123456789012:role/gh-actions-translate aws-region: us-east-1 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | aws: region: us-east-1 # or rely on AWS_REGION from the step above formality: FORMAL brevity: true sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationগুগল ক্লাউড অনুবাদ
google এ provider সেট করুন। একটি পরিষেবা-অ্যাকাউন্ট JSON শংসাপত্র বা একটি API কী দিয়ে প্রমাণীকরণ করুন - ঠিক একটি সরবরাহ করুন:
এগুলি সংগ্রহস্থল গোপন হিসাবে সংরক্ষণ করুন
GCP_TRANSLATE_CREDENTIALS— একটি পরিষেবা-অ্যাকাউন্ট JSON কী (একটি JSON স্ট্রিং হিসাবে)।GCP_TRANSLATE_API_KEY— বা একটি গুগল ক্লাউড এপিআই কী।
বাদ দেওয়ার সময় শংসাপত্র থেকে একটি ঐচ্ছিক googleProjectId অনুমান করা হয়।
ওয়ার্কফ্লো যুক্ত করুন
name: translate
on: push: branches: [main] paths: - "src/**/*.en.resx" - "src/**/*.en.json"
permissions: contents: write pull-requests: write
jobs: translate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - id: translate uses: IEvangelist/resource-translator@v3 with: provider: | google: # Provide EITHER a service-account JSON credential... credentials: ${{ secrets.GCP_TRANSLATE_CREDENTIALS }} # ...OR an API key: # apiKey: ${{ secrets.GCP_TRANSLATE_API_KEY }} model: nmt sourceLocale: en toLocales: '["fr","de","es"]' - if: steps.translate.outputs.has-new-translations == 'true' uses: peter-evans/create-pull-request@v7 with: title: ${{ steps.translate.outputs.summary-title }} body: ${{ steps.translate.outputs.summary-details }} branch: machine-translationStep 3: একটি উৎস রিসোর্স ফাইল প্রতিশ্রুতিবদ্ধ করুন
রিসোর্স ফাইলগুলি Name.<sourceLocale>.<ext> কনভেনশন ব্যবহার করে। উদাহরণস্বরূপ, Greetings.en.resx দৌড়ানোর পরে Greetings.fr.resx, Greetings.de.resx এবং আরও অনেক কিছু হয়ে যায়।
Step 4: Let smart change detection protect your bill
changeDetection defaults to smart and stores a compact .github/resource-translator-state.json manifest in the repo. Commit that file so future runs can reuse stable translations, preserve manual target edits, and send only new, missing, changed, or settings-invalidated keys to the provider. If localized files already exist, run once with snapshotOnly: true to create the manifest without provider calls.
Step 5: আউটপুট পরিদর্শন করুন
ওয়ার্কফ্লো শেষ হয়ে গেলে, ক্রিয়াটি তিনটি আউটপুট প্রকাশ করে যা আপনি একটি পিআর বর্ণনায় তারযুক্ত করতে পারেন: summary-title, summary-details এবং has-new-translations। এটি core.summary এর মাধ্যমে চাকরির পৃষ্ঠায় একটি মার্কডাউন সংক্ষিপ্তসারও লিখে।