Step 1: A ma'iti i te hoê taata iriti parau
E ohipa teie ohipa i ni'a i te Azure AI Translator, te AWS Translate e te Google Cloud Translation i muri mai i te hoê API tahoê. A ma'iti i te hoê taata horo'a i te hororaa tata'itahi ma te faaohipa i te provider — hoê â huru ohipa noa'tu te taata horo'a ; e mea taa ê ana'e te mau parau faati'a. A hi'o Te mau taata iriti parau no te hoê faaauraa taatoa.
Step 2: A tuu i te mau parau faati'a e te hoê tereraa ohipa
A haaputu i te mau parau huna a ta outou pûpû ei mau parau huna no te haaputuraa GitHub, i muri iho a hamani i te .github/workflows/translate.yml. A ma'iti i ta outou faanahoraa i raro nei no ta'na faanahoraa taa ê — hoê â te toe'a o te tereraa ohipa.
Azure AI Translator
O Azure te faanahoraa matauhia, no reira e nehenehe provider faaorehia. A horo'a i te hoê rave'a Azure AI Translator i roto i te Azure Portal, i muri iho a haaputu i to'na mau parau faati'a :
A haaputu i te reira ei mau parau huna no te haaputuraa
TRANSLATOR_KEY— te taviri tapa'oraa no te rave'a.TRANSLATOR_ENDPOINT— te URL hopea o te retioni.TRANSLATOR_REGION— te tuhaa fenua Azure o te rave'a.
A tuu i te tereraa ohipa
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
A tuu i te provider i ni'a i te aws. A ma'iti a'e i te OIDC na roto i te aws-actions/configure-aws-credentials ia ore te mau parau huna e haa AWS_REGION putuhia. No te faaohipa i te mau taviri static, a haaputu :
A haaputu i te reira ei mau parau huna no te haaputuraa
AWS_ACCESS_KEY_ID— ta outou ID no te taviri tomoraa AWS.AWS_SECRET_ACCESS_KEY— ta outou taviri tomoraa huna AWS.
E titauhia te hoê tuhaa fenua i te mau taime atoa — a tuu i te reira i ni'a i te awsRegion e aore râ, te AWS_REGION te vahi nohoraa.
A tuu i te tereraa ohipa
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
A tuu i te provider i ni'a i te google. A haapapû na roto i te hoê parau faati'a JSON e aore râ te hoê API key — a horo'a i te hoê :
A haaputu i te reira ei mau parau huna no te haaputuraa
GCP_TRANSLATE_CREDENTIALS— te hoê taviri JSON (mai te hoê taura JSON).GCP_TRANSLATE_API_KEY— e aore râ, te hoê taviri API Google Cloud.
E ravehia te hoê googleProjectId ma'itiraa mai roto mai i te parau faati'a ia faaorehia.
A tuu i te tereraa ohipa
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
E faaohipa te mau pu'e parau i te Name.<sourceLocale>.<ext> convention. Ei hi'oraa, Greetings.en.resx riro mai ei Greetings.fr.resx, ei Greetings.de.resx, e te vai atu â i muri a'e i te hororaa.
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: A hi'opo'a i te ohipa i hamanihia
Ia oti ana'e te tereraa ohipa, e faaite mai te ohipa e toru ohipa ta outou e nehenehe e tu'ati i roto i te hoê faataaraa PR : summary-title, summary-details, e has-new-translations. E papa'i atoa te reira i te hoê haapotoraa no te Markdown i ni'a i te api ohipa na roto i te core.summary.