Step 1: Poná mosaleli na yo ya mosala ya kobongola mikanda
Action esalaka na Mobongoli ya Azure AI, Traduction ya AWS, mpe Traduction ya Google Cloud nsima ya surface moko ya API moko. Pona fournisseur moko na run na input ya provider — workflow esalaka ndenge moko ata soki mopesi nini; Kaka ba diplômes nde ekeseni. Tala Basali ya babongoli mpo na comparaison mobimba.
Step 2: Add credentials and a workflow
Bomba ba identifiants ya fournisseur na yo lokola basekele ya GitHub, na nsima sala .github/workflows/translate.yml. Pona mosungi na yo awa na nse mpo na kobongisa yango — mosala mosusu ezali ndenge moko.
Mobongoli ya Azure AI
Werrason azali mosungi ya Tshisekedi, yango wana akoki kolongola provider yango. Bongisa ressource ya mobongoli ya Azure AI na portail Azure, na nsima bomba ba identifiants na yango:
Bomba yango lokola sekele
TRANSLATOR_KEY— Fungola ya lisungi mpo na lisungi yaTRANSLATOR_ENDPOINT— ya pas d'url de l'url.TRANSLATOR_REGION— ya pas d'azur dans la région.
Bakisá mosala na yo
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-translationTraduction ya AWS
Tindá Tindá provider aws. Pona OIDC na nzela ya aws-actions/configure-aws-credentials mpo ete basekele ya ntango molai ebombama te — etambe ezali AWS_REGION mpo na yo. Mpo na kosalela bafungola statique na esika na yango, kobomba:
Bomba yango lokola sekele
AWS_ACCESS_KEY_ID— Fungola ya accès na yo ya AWS.AWS_SECRET_ACCESS_KEY— Fungola ya accès secret na yo ya AWS.
Esengeli ntango nyonso kozala na esika moko — kotya yango na awsRegion to na AWS_REGION ya environnement.
Bakisá mosala na yo
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-translationTraduction ya Google Cloud
Tindá Tindá provider google. Authenticer na identifiant ya JSON to na fungola ya API — pesa exactement moko:
Bomba yango lokola sekele
GCP_TRANSLATE_CREDENTIALS— Fungola ya compte JSON (lokola nsinga ya JSON).GCP_TRANSLATE_API_KEY— To fungola ya Google Cloud API.
googleProjectId ya kopona ezwamaka na mokanda ya ndingisa soki balongoli yango.
Bakisá mosala na yo
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 a source resource file
Mikanda oyo ezali na mikanda oyo ezali na kati ya Name.<sourceLocale>.<ext> ezali na kati ya liyangani. Na ndakisa, Greetings.en.resx akómaka Greetings.fr.resx, Greetings.de.resx, mpe bongo na bongo.
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: Tala ndenge biloko ebimi
Soki mosala esili, action ekobimisa makambo misato oyo okoki kotia na description ya PR: summary-title, summary-details, mpe has-new-translations. Ekomaka mpe na mokuse na lokasa ya mosala na nzela ya core.summary.