Step 1: Fili ha kautaha liliu lea
ʻOku ngaue ʻa e ngaue mo e Azure AI Translator, Liliu ʻa e AWS, mo e Google Cloud Translation ʻi mui ʻi ha funga API fakatahataha. Fili ha kautaha ʻe taha ʻi he lele ʻaki ʻa e input ʻo e provider — ʻoku tatau pe ʻa e founga ngaue ʻo tatau ai pe pe ko e ha ʻa e tokotaha ʻoku ne ʻomai; ko e ngaahi tohi fakamoʻoni pe ʻoku faikehekehe. Vakai ki he Kau maʻu liliu lea ki ha fakafehoanaki kakato.
Step 2: Tanaki atu ʻa e ngaahi tohi fakamoʻoni mo ha founga ngaue
Tauhi ʻa e ngaahi fakamoʻoni ʻa hoʻo kautaha ko e ngaahi fakapulipuli ʻo e tauhiʻanga koloa ʻo e GitHub, pea faʻu .github/workflows/translate.yml. Fili hoʻo kautaha ʻi lalo ki heʻene fokotuʻutuʻu pau — ʻoku tatau pe ʻa e toenga ʻo e founga ngaue.
Azure AI Translator
Ko e Azure ʻa e kautaha naʻe ʻosi seti ki ai, ko ia ʻe lava ke toʻo ʻprovider ia. ʻOmi ha maʻuʻanga tokoni Azure AI Translator ʻi he Azure portal, pea tauhi hono ngaahi tohi fakamoʻoni:
Tauhi ʻeni ko ha ngaahi fakapulipuli ʻo e tauhiʻanga koloa
TRANSLATOR_KEY— ʻa e ki ʻo e totongi ki he maʻuʻanga tokoni.TRANSLATOR_ENDPOINT— ko e URL fakavahefonua ʻo e ngataʻanga.TRANSLATOR_REGION— ʻa e feituʻu Azure ʻo e maʻuʻanga tokoni.
Tanaki atu ʻa e founga ngaue
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-translationLiliu ʻa e AWS
Seti ʻa e provider ki he aws. Saiʻia ange ʻi he OIDC ʻo fakafou ʻi he aws-actions/configure-aws-credentials koeʻuhi ke ʻoua naʻa tauhi ha ngaahi fakapulipuli fuoloa — ʻoku AWS_REGION ʻa e sitepu export maʻau. Ke fakaʻaongaʻi ʻa e ngaahi ki ʻoku ʻikai ke ʻi ai ha meʻa, tokonaki ʻa e:
Tauhi ʻeni ko ha ngaahi fakapulipuli ʻo e tauhiʻanga koloa
AWS_ACCESS_KEY_ID— hoʻo ID ki he hu ki he AWS.AWS_SECRET_ACCESS_KEY— hoʻo ki fakapulipuli ʻo e AWS.
ʻOku fie maʻu maʻu pe ha feituʻu — fokotuʻutuʻu ia ʻaki ʻa e awsRegion pe ko e AWS_REGION ʻatakai feliliuaki.
Tanaki atu ʻa e founga ngaue
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
Seti ʻa e provider ki he google. Fakapapauʻi ʻaki ha tohi fakamoʻoni JSON ʻi he ʻakauni ngaue pe ko ha ki API — ʻomai ha taha totonu:
Tauhi ʻeni ko ha ngaahi fakapulipuli ʻo e tauhiʻanga koloa
GCP_TRANSLATE_CREDENTIALS— ko ha ki JSON ʻakauni ngaue (ko ha afo JSON).GCP_TRANSLATE_API_KEY— pe ko ha Google Cloud API key.
ʻOku maʻu ha googleProjectId fili mei he tohi fakamoʻoni ʻi he taimi ʻoku toʻo ai.
Tanaki atu ʻa e founga ngaue
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: Fakatukupaaʻi ha faile maʻuʻanga tokoni
ʻOku fakaʻaongaʻi ʻe he ngaahi faile maʻuʻanga tokoni ʻa e Name.<sourceLocale>.<ext> convention. Hange ko ʻeni, ʻoku hoko ʻGreetings.en.resx Greetings.fr.resx, Greetings.de.resx, mo e ala meʻa pehee hili ha lele.
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: Vakaiʻi ʻa e meʻa ʻoku maʻu
ʻI he ʻosi pe ʻa e founga ngaue, ʻoku fakahaaʻi ʻe he ngaue ʻa e output ʻe tolu te ke lava ʻo fakaʻaongaʻi ki ha fakamatala PR: summary-title, summary-details, mo e has-new-translations. ʻOku ne toe hiki foki ha fakamatala fakanounou ʻo e Markdown ki he peesi ngaue ʻo fakafou ʻi he core.summary.