Step 1: Sankhani wopereka kumasulira
Mchitidwewu umagwira ntchito ndi Womasulira wa Azure AI, Kumasulira kwa AWS, ndi Kutanthauzira kwa Mtambo wa Google kumbuyo kwa malo amodzi ogwirizana a API. Sankhani wopereka m'modzi pa kuthamanga ndi provider - ntchitoyi imakhala yofanana mosasamala kanthu za wopereka; Zidziwitso zokha ndizosiyana. Onani Othandizira omasulira kuti muyerekeze kwathunthu.
Step 2: Onjezani zidziwitso ndi ntchito
Sungani zidziwitso za wopereka wanu ngati zinsinsi zosungira GitHub, kenako pangani .github/workflows/translate.yml. Sankhani wothandizira wanu pansipa chifukwa cha kukhazikitsidwa kwake kwapadera - ntchito yonse ya ntchito ndi yofanana.
Womasulira wa Azure AI
Azure ndi wopereka kusakhulupirika, kotero provider akhoza kusiyidwa. Perekani chuma cha Azure AI Translator mu portal ya Azure, kenako sungani zidziwitso zake:
Sungani izi ngati zinsinsi zosungira
TRANSLATOR_KEY— kiyi yolembetsa ya chumacho.TRANSLATOR_ENDPOINT— URL yotsiriza ya dera.TRANSLATOR_REGION— dera la Azure la chuma.
Onjezani kayendedwe ka ntchito
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-translationKumasulira kwa AWS
Ikani provider ku aws. Kusankha OIDC kudzera pa aws-actions/configure-aws-credentials kotero palibe zinsinsi zokhala ndi moyo wautali zomwe zimasungidwa - sitepe yotumiza kunja AWS_REGION kwa inu. Kuti mugwiritse ntchito makiyi amodzi m'malo mwake, sungani:
Sungani izi ngati zinsinsi zosungira
AWS_ACCESS_KEY_ID— ID yanu yofikira AWS yofikira.AWS_SECRET_ACCESS_KEY— kiyi yanu yofikira chinsinsi cha AWS.
Dera limafunikira nthawi zonse - ikani ndi awsRegion kapena AWS_REGION chilengedwe chosinthika.
Onjezani kayendedwe ka ntchito
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-translationKutanthauzira kwa Mtambo wa Google
Ikani provider ku google. Tsimikizirani ndi chizindikiritso cha JSON kapena kiyi ya API - perekani ndendende imodzi:
Sungani izi ngati zinsinsi zosungira
GCP_TRANSLATE_CREDENTIALS— kiyi ya JSON ya akaunti yautumiki (monga chingwe cha JSON).GCP_TRANSLATE_API_KEY— kapena kiyi ya Google Cloud API.
googleProjectId yosankha imatengedwa kuchokera ku chizindikiritso pamene yasiyidwa.
Onjezani kayendedwe ka ntchito
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: Chitani fayilo ya source resource
Mafayilo othandizira amagwiritsa ntchito msonkhano wa Name.<sourceLocale>.<ext>. Mwachitsanzo Greetings.en.resx amakhala Greetings.fr.resx, Greetings.de.resx, ndi zina zotero pambuyo pa kuthamanga.
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: Yang'anani zotuluka
Ntchitoyi ikatha, zochitikazo zimavumbula zotuluka zitatu zomwe mungathe kuzigwiritsa ntchito mu mafotokozedwe a PR: summary-title, summary-details, ndi has-new-translations. Imalemba chidule cha Markdown patsamba la ntchito kudzera pa core.summary.