Step 1: Tria un proveïdor de traducció
L'acció funciona amb Azure AI Translator, AWS Translate i Traducció de Google Cloud darrere d'una sola superfície d'API unificada. Tria un únic proveïdor per execució amb l'entrada provider — el flux de treball es comporta igual independentment del proveïdor; Només difereixen les credencials. Vegeu Proveïdors de traducció per a una comparació completa.
Step 2: Afegeix credencials i un flux de treball
Desa les credencials del teu proveïdor com a secrets del repositori de GitHub i després crea .github/workflows/translate.yml. Selecciona el teu proveïdor a continuació per a la seva configuració específica — la resta del flux de treball és idèntic.
Azure AI Translator
Azure és el proveïdor per defecte, així que provider pot ser omès. Provisiona un recurs Azure AI Translator al portal Azure i després desa les seves credencials:
Emmagatzemeu-los com a secrets de repositori
TRANSLATOR_KEY— La clau de subscripció del recurs.TRANSLATOR_ENDPOINT— l'URL regional de l'endpoint.TRANSLATOR_REGION— la regió Azure del recurs.
Afegeix el flux de treball
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
Configura provider a aws. Prefereix l'OIDC via aws-actions/configure-aws-credentials així no s'emmagatzemen secrets de llarga durada — les exportacions de pas AWS_REGION per a tu. Per utilitzar claus estàtiques en canvi, deseu:
Emmagatzemeu-los com a secrets de repositori
AWS_ACCESS_KEY_ID— el teu ID de clau d'accés AWS.AWS_SECRET_ACCESS_KEY— la teva clau d'accés secret d'AWS.
Sempre cal una regió — configura-la amb awsRegion o la variable d'entorn AWS_REGION.
Afegeix el flux de treball
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-translationTraducció de Google Cloud
Configura provider a google. Autentica amb una credencial JSON de compte de servei o una clau API — proporciona exactament una:
Emmagatzemeu-los com a secrets de repositori
GCP_TRANSLATE_CREDENTIALS— una clau JSON de compte de servei (com a cadena JSON).GCP_TRANSLATE_API_KEY— o una clau API de Google Cloud.
Un googleProjectId opcional s'infereix de la credencial quan s'omet.
Afegeix el flux de treball
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: Commit d'un fitxer de recurs font
Els fitxers de recursos utilitzen la convenció Name.<sourceLocale>.<ext>. Per exemple, Greetings.en.resx esdevé Greetings.fr.resx, Greetings.de.resx, i així successivament després d'una partida.
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: Inspecciona la sortida
Un cop acabat el flux de treball, l'acció exposa tres sortides que pots connectar en una descripció de PR: summary-title, summary-details i has-new-translations. També escriu un resum de Markdown a la pàgina de feina a través de core.summary.