Step 1: Yan olupese itumọ kan
Iṣe naa n ṣiṣẹ pẹlu Azure AI Translator, AWS Itumọ, ati Itumọ awọsanma Google lẹhin oju API ti iṣọkan kan. Yan olupese kan ṣoṣo fun ṣiṣe pẹlu titẹ sii provider — iṣan-iṣẹ naa huwa bakanna laibikita olupese; Awọn iwe-ẹri nikan yatọ. Wo Awọn olupese itumọ fun ifiwera kikun.
Step 2: Ṣafikun awọn iwe-ẹri ati iṣẹ ṣiṣe kan
Fipamọ awọn iwe-ẹri olupese rẹ bi awọn aṣiri ibi ipamọ GitHub, lẹhinna ṣẹda .github/workflows/translate.yml. Yan olupese rẹ ni isalẹ fun iṣeto rẹ pato — iyoku iṣan-iṣẹ jẹ kanna.
Azure AI Translator
Íà ýòîò ñ÷ ̧ò ýòîò ÷åëîâåê, provider ÷åëîâåê. Pese ohun elo Onitumọ Azure AI ni ẹnu-ọna Azure, lẹhinna tọju awọn iwe-ẹri rẹ:
Fipamọ awọn wọnyi bi awọn aṣiri ibi ipamọ
TRANSLATOR_KEY— Bọtini Bọtini BọTRANSLATOR_ENDPOINT— Öåíû íà ýòîò ñ÷åò ñîñòàâëÿåò UR.TRANSLATOR_REGION— Agbegbe Azure ti o wa ni ayika agbaye.
Ṣafikun iṣẹ naa
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 Itumọ
Ṣeto provider si aws. Fẹ OIDC nipasẹ aws-actions/configure-aws-credentials ki ko si awọn aṣiri ti o pẹ ti o wa ni fipamọ — awọn okeere igbesẹ AWS_REGION fun ọ. Lati lo awọn bọtini aimi dipo, fipamọ:
Fipamọ awọn wọnyi bi awọn aṣiri ibi ipamọ
AWS_ACCESS_KEY_ID— ID bọtini wiwọle AWS rẹAWS_SECRET_ACCESS_KEY— Bọtini Wiwọle Asiri AWS rẹ
A nilo agbegbe nigbagbogbo — ṣeto rẹ pẹlu awsRegion tabi iyipada ayika AWS_REGION.
Ṣafikun iṣẹ naa
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-translationItumọ awọsanma Google
Ṣeto provider si google. Jẹrisi pẹlu boya iwe-ẹri JSON akọọlẹ iṣẹ tabi bọtini API — pese gangan ọkan:
Fipamọ awọn wọnyi bi awọn aṣiri ibi ipamọ
GCP_TRANSLATE_CREDENTIALS— Bọtini JSON akọọlẹ iṣẹ kan (bi okun JSON).GCP_TRANSLATE_API_KEY— Tabi bọtini Google Cloud API.
A googleProjectId aṣayan lati inu iwe-ẹri nigbati o ba fi silẹ.
Ṣafikun iṣẹ naa
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: Ṣe faili orisun orisun kan
Awọn faili orisun lo apejọ Name.<sourceLocale>.<ext> naa. Fun apẹẹrẹ, Greetings.en.resx di Greetings.fr.resx, Greetings.de.resx, ati bẹbẹ lọ lẹhin ṣiṣe.
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: Ṣayẹwo awọn o wu
Lọgan ti iṣan-iṣẹ ba pari, iṣe naa ṣafihan awọn abajade mẹta ti o le ṣe sinu apejuwe PR kan: summary-title, summary-details, ati has-new-translations. O tun kọ akopọ Markdown sinu oju-iwe iṣẹ nipasẹ core.summary.