Step 1: Sarudza mushanduri wekushandura
Chiito chinoshanda ne Azure AI Muturikiri, Shanduro yeAWS, uye Google Cloud Translation kuseri kweimwe yakabatana API pamusoro. Sarudza mupi mumwe chete pakumhanya neiyo provider yekuisa — iyo workflow inozvibata zvakafanana zvisinei nemupi; Chete magwaro anosiyana. Tarisa Vashanduri vanopa kuti uwane kuenzanisa kwakazara.
Step 2: Wedzera zvitupa uye basa rebasa
Chengeta zvitupa zvemupi wako seGitHub repository zvakavanzika, wobva wagadzira .github/workflows/translate.yml. Sarudza mupi wako pazasi kune yayo chaiyo setup — iyo yese yebasa yakafanana.
Azure AI Muturikiri
Azure ndiyo default mupi, saka provider inogona kusiiwa. Ipa Azure AI Muturikiri sosi muAzure portal, wobva wachengeta zvitupa zvayo:
Chengeta izvi sezvakavanzika zvekuchengetera
TRANSLATOR_KEY— Kiyi yekunyoresa yekushandisa chishandiso.TRANSLATOR_ENDPOINT— Mhedzisiro yenharaunda URLTRANSLATOR_REGION— Nzvimbo yeAzure yeAzure.
Wedzera Workflow
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-translationShanduro yeAWS
Isa provider kuti aws. Sarudza OIDC kuburikidza aws-actions/configure-aws-credentials kuitira kuti pasave nezvakavanzika zvehupenyu hwakareba zvinochengetwa — nhanho inotengeswa AWS_REGION kwauri. Kuti ushandise makiyi e-static pachinzvimbo, chengeta:
Chengeta izvi sezvakavanzika zvekuchengetera
AWS_ACCESS_KEY_ID— Yako AWS Access Key IDAWS_SECRET_ACCESS_KEY— Yako AWS Yakavanzika Yekuwana Kiyi
Dunhu rinogara richidikanwa — riise awsRegion kana AWS_REGION nharaunda inoshanduka.
Wedzera Workflow
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-translationGoogle Cloud Translation
Isa provider kuti google. Vimbisa nebasa-account JSON chitupa kana kiyi yeAPI — ipa chaizvo imwe:
Chengeta izvi sezvakavanzika zvekuchengetera
GCP_TRANSLATE_CREDENTIALS— Yakazara nzira kuchinyorwa: Linux Vakapindwa muropa » General » Noticias » JSON kiyi (seJSON tambo).GCP_TRANSLATE_API_KEY— Kana kuti Google Cloud API kiyi.
An optional googleProjectId is inferred from the credential when omitted.
Wedzera Workflow
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: Ita Source Resource File
Zvishandiso zvekushandisa zvinoshandisa Name.<sourceLocale>.<ext> convention. Somuenzaniso, Greetings.en.resx inova Greetings.fr.resx, Greetings.de.resx, zvichingodaro mushure mekumhanya.
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: Ongorora zvakabuda
Kana kufamba kwebasa kwapera, chiito chinofumura zvinhu zvitatu zvaunogona kubatanidza mune PR tsananguro: summary-title, summary-details, uye has-new-translations. Iyo zvakare inonyora pfupiso yeMarkdown mune peji rebasa kuburikidza core.summary.