Step 1: Kies een vertaaldienst
De actie werkt met Azure AI Translator, AWS Translate en Google Cloud Vertaling achter één uniform API-oppervlak. Kies per run één provider met de provider input — de workflow werkt identiek, ongeacht de provider; alleen de kwalificaties verschillen. Zie Vertaalaanbieders voor een volledige vergelijking.
Step 2: Voeg inloggegevens en een workflow toe
Sla de inloggegevens van je provider op als geheimen van de GitHub-repository en maak .github/workflows/translate.yml aan. Selecteer hieronder je zorgverlener voor de specifieke opstelling — de rest van de workflow is identiek.
Azure AI Translator
Azure is de standaardprovider, dus provider kan worden weggelaten. Bereid een Azure AI Translator-resource in het Azure-portaal in en sla vervolgens de inloggegevens op:
Sla deze op als repository-geheimen
TRANSLATOR_KEY— De abonnementssleutel voor de bron.TRANSLATOR_ENDPOINT— de regionale eindpunt-URL.TRANSLATOR_REGION— de Azure-regio van de bron.
Voeg de workflow toe
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
Zet provider op aws. Geef de voorkeur aan OIDC via aws-actions/configure-aws-credentials zodat er geen langlopende geheimen worden opgeslagen — de STEP-exporten AWS_REGION voor jou. Om statische toetsen te gebruiken, sla dan op:
Sla deze op als repository-geheimen
AWS_ACCESS_KEY_ID— je AWS-toegangssleutel-ID.AWS_SECRET_ACCESS_KEY— je AWS-geheime toegangssleutel.
Een regio is altijd vereist — stel deze in met awsRegion of de AWS_REGION omgevingsvariabele.
Voeg de workflow toe
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 Vertaling
Zet provider op google. Authenticeer met een service-account JSON-credential of een API-sleutel — geef er precies één:
Sla deze op als repository-geheimen
GCP_TRANSLATE_CREDENTIALS— een service-account JSON-sleutel (als een JSON-string).GCP_TRANSLATE_API_KEY— of een Google Cloud API-sleutel.
Een optionele googleProjectId wordt afgeleid uit de kwalificatie wanneer deze wordt weggelaten.
Voeg de workflow toe
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 een bronbronbestand
Resourcebestanden gebruiken de Name.<sourceLocale>.<ext> conventie. Bijvoorbeeld, Greetings.en.resx wordt Greetings.fr.resx, Greetings.de.resx, enzovoort na een run.
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: Inspecteer de output
Zodra de workflow is afgerond, wordt er drie uitvoeren blootgesteld die je kunt begeleiden in een PR-beschrijving: summary-title, summary-details en has-new-translations. Het schrijft ook een Markdown-samenvatting op de vacaturepagina via core.summary.