Step 1: ଏକ ଅନୁବାଦ ପ୍ରଦାନକାରୀ ବାଛନ୍ତୁ
ଏହି କ୍ରିୟା ଏକ ଏକୀକୃତ API ପୃଷ୍ଠ ପଛରେ Azure AI Translator, ଏଡବ୍ଲ୍ୟୁଏସ୍ ଅନୁବାଦ ଏବଂ ଗୁଗଲ୍ କ୍ଲାଉଡ୍ ଅନୁବାଦ ସହିତ କାମ କରେ । provider ଇନପୁଟ୍ ସହିତ ପ୍ରତି ରନ୍ ପାଇଁ ଗୋଟିଏ ପ୍ରଦାନକାରୀ ବାଛନ୍ତୁ - ପ୍ରଦାନକାରୀ ନିର୍ବିଶେଷରେ ୱାର୍କଫ୍ଲୋ ସମାନ ଆଚରଣ କରେ; କେବଳ ପରିଚୟପତ୍ର ଭିନ୍ନ । ସମ୍ପୂର୍ଣ୍ଣ ତୁଳନା ପାଇଁ ଅନୁବାଦ ପ୍ରଦାନକାରୀ ଦେଖନ୍ତୁ ।
Step 2: ପରିଚୟ ପତ୍ର ଏବଂ ଏକ କାର୍ଯ୍ୟପ୍ରବାହ ଯୋଡନ୍ତୁ
GitHub ରିପୋଜିଟୋରୀ ଗୁପ୍ତ ଭାବରେ ଆପଣଙ୍କ ପ୍ରଦାନକାରୀଙ୍କ ପରିଚୟ ପତ୍ର ଷ୍ଟୋର୍ କରନ୍ତୁ, ତାପରେ .github/workflows/translate.yml ସୃଷ୍ଟି କରନ୍ତୁ। ଏହାର ନିର୍ଦ୍ଦିଷ୍ଟ ସେଟଅପ୍ ପାଇଁ ନିମ୍ନରେ ଆପଣଙ୍କର ପ୍ରଦାନକାରୀଙ୍କୁ ଚୟନ କରନ୍ତୁ - ବାକି ୱାର୍କଫ୍ଲୋ ସମାନ ଅଟେ ।
Azure AI Translator
Azure ହେଉଛି ଡିଫଲ୍ଟ ପ୍ରଦାନକାରୀ, ତେଣୁ provider ବାଦ ଦିଆଯାଇପାରେ। Azure ପୋର୍ଟାଲରେ ଏକ Azure AI Translator resource ପ୍ରଦାନ କରନ୍ତୁ, ତାପରେ ଏହାର ପରିଚୟ ପତ୍ର ଷ୍ଟୋର୍ କରନ୍ତୁ:
ଏଗୁଡ଼ିକୁ ରିପୋଜିଟୋରୀ ରହସ୍ୟ ଭାବରେ ଷ୍ଟୋର୍ କରନ୍ତୁ
TRANSLATOR_KEY— ଉତ୍ସ ପାଇଁ ସଦସ୍ୟତା କୀ।TRANSLATOR_ENDPOINT— ଆଞ୍ଚଳିକ ଏଣ୍ଡପଏଣ୍ଟ URL ।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 ଆକସେସ୍ କୀ 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— କିମ୍ୱା ଏକ Google Cloud 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 ମାଧ୍ୟମରେ ଚାକିରି ପୃଷ୍ଠାରେ ଏକ ମାର୍କଡାଉନ୍ ସାରାଂଶ ମଧ୍ୟ ଲେଖେ ।