Step 1: Kies 'n vertaalverskaffer
Die aksie werk met Azure AI Translator, AWS Translate en Google Cloud Translation agter een verenigde API-oppervlak. Kies 'n enkele verskaffer per lopie met die provider inset — die werkvloei gedra hom identies ongeag die verskaffer; Slegs die kwalifikasies verskil. Sien Vertaalverskaffers vir 'n volledige vergelyking.
Step 2: Voeg geloofsbriewe en 'n werkvloei by
Stoor jou verskaffer se geloofsbriewe as GitHub-bewaarplekgeheime, en skep dan .github/workflows/translate.yml. Kies jou verskaffer hieronder vir sy spesifieke opstelling — die res van die werkvloei is identies.
Azure AI Translator
Azure is die verstekverskaffer, so provider kan weggelaat word. Voorsien 'n Azure AI Translator-hulpbron in die Azure-portaal, en stoor dan sy geloofsbriewe daarvan:
Stoor hierdie as bewaarplekgeheime
TRANSLATOR_KEY— Die intekensleutel vir die hulpbron.TRANSLATOR_ENDPOINT— die streek-eindpunt URL.TRANSLATOR_REGION— die hulpbron se Azure-streek.
Voeg die werkvloei by
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
Stel provider op aws. Verkies OIDC via aws-actions/configure-aws-credentials sodat geen langlewende geheime gestoor word nie — die stap voer AWS_REGION vir jou uit. Om eerder statiese sleutels te gebruik, stoor:
Stoor hierdie as bewaarplekgeheime
AWS_ACCESS_KEY_ID— jou AWS-toegangssleutel-ID.AWS_SECRET_ACCESS_KEY— jou AWS-geheime toegangssleutel.
'n Streek is altyd nodig — stel dit in met awsRegion of die AWS_REGION omgewingsveranderlike.
Voeg die werkvloei by
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
Stel provider op google. Verifieer met óf 'n diensrekening-JSON-kwalifikasie óf 'n API-sleutel — voorsien presies een:
Stoor hierdie as bewaarplekgeheime
GCP_TRANSLATE_CREDENTIALS— 'n diensrekening JSON-sleutel (as 'n JSON-string).GCP_TRANSLATE_API_KEY— of 'n Google Cloud API-sleutel.
'n Opsionele googleProjectId word afgelei uit die kwalifikasie wanneer dit weggelaat word.
Voeg die werkvloei by
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 'n bronbronlêer
Hulpbronlêers gebruik die Name.<sourceLocale>.<ext> konvensie. Byvoorbeeld, Greetings.en.resx word Greetings.fr.resx, Greetings.de.resx, ensovoorts na 'n hardloop.
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: Inspekteer die uitset
Sodra die werkvloei klaar is, stel die aksie drie uitsette bloot wat jy in 'n PR-beskrywing kan bedra: summary-title, summary-details en has-new-translations. Dit skryf ook 'n Markdown-opsomming in die werkbladsy via core.summary.