Step 1: یک ارائه دهنده ترجمه انتخاب کنید
این عمل با Azure AI Translator، AWS Translate و ترجمه ابری گوگل پشت یک سطح API یکپارچه کار می کند. در هر اجرا یک ارائه دهنده را با ورودی provider انتخاب کنید — جریان کار به طور یکسان عمل می کند، صرف نظر از ارائه دهنده؛ فقط مدارک متفاوت است. برای مقایسه کامل به ارائه دهندگان ترجمه مراجعه کنید.
Step 2: اطلاعات ورود و روند کاری را اضافه کنید
اطلاعات ورود ارائه دهنده خود را به عنوان اسرار مخزن گیت هاب ذخیره کنید و سپس .github/workflows/translate.yml بسازید. ارائه دهنده خود را در زیر برای تنظیمات خاص انتخاب کنید — بقیه روند کاری یکسان است.
Azure AI Translator
Azure ارائه دهنده پیش فرض است، بنابراین ممکن است provider حذف شود. یک منبع Azure AI Translator را در پورتال Azure فراهم کنید، سپس اعتبارنامه های آن را ذخیره کنید:
این ها را به عنوان اسرار مخزن ذخیره کنید
TRANSLATOR_KEY— کلید اشتراک منبع.TRANSLATOR_ENDPOINT— URL نقطه پایانی منطقه ای.TRANSLATOR_REGION— منطقه Azure منبع است.
روند کاری را اضافه کنید
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-translationAWS Translate
provider را روی aws تنظیم کنید. ترجیح می دهم OIDC از طریق aws-actions/configure-aws-credentials باشد تا هیچ راز طولانی مدتی ذخیره نشود — مرحله خروجی برای شما AWS_REGION است. برای استفاده از کلیدهای ایستا، ذخیره کنید:
این ها را به عنوان اسرار مخزن ذخیره کنید
AWS_ACCESS_KEY_ID— شناسه کلید دسترسی AWS شما.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ترجمه ابری گوگل
provider را روی google تنظیم کنید. احراز هویت را با یک کارت شناسایی JSON حساب سرویس یا کلید API انجام دهید — دقیقا یکی را ارائه دهید:
این ها را به عنوان اسرار مخزن ذخیره کنید
GCP_TRANSLATE_CREDENTIALS— یک کلید JSON حساب سرویس (به عنوان رشته JSON).GCP_TRANSLATE_API_KEY— یا یک کلید API گوگل کلود.
یک 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: خروجی را بررسی کنید
پس از پایان روند کاری، عمل سه خروجی را آشکار می کند که می توانید به یک توصیف PR متصل کنید: summary-title، summary-details و has-new-translations. همچنین خلاصه مارک داون را از طریق core.summary در صفحه شغل می نویسد.