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— آدرس نقطه پایانی منطقه ای.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 در صفحه شغل می نویسد.