Step 1: Chagua mtoa huduma wa tafsiri
Kitendo hufanya kazi na Mtafsiri wa Azure AI, Tafsiri ya AWS, na Tafsiri ya Wingu la Google nyuma ya uso mmoja wa API uliounganishwa. Chagua mtoa huduma mmoja kwa kila kukimbia na pembejeo ya provider - mtiririko wa kazi hufanya sawa bila kujali mtoa huduma; Ni sifa tu zinazotofautiana. Tazama Watoa huduma za tafsiri kwa ulinganisho kamili.
Step 2: Ongeza kitambulisho na mtiririko wa kazi
Hifadhi kitambulisho cha mtoa huduma wako kama siri za hazina ya GitHub, kisha uunde .github/workflows/translate.yml. Chagua mtoa huduma wako hapa chini kwa usanidi wake maalum - mtiririko wa kazi wote ni sawa.
Mtafsiri wa Azure AI
Azure ndiye mtoa huduma chaguo-msingi, kwa hivyo provider inaweza kuachwa. Toa rasilimali ya Mtafsiri wa Azure AI kwenye tovuti ya Azure, kisha uhifadhi kitambulisho chake:
Hifadhi hizi kama siri za hazina
TRANSLATOR_KEY— ufunguo wa usajili wa rasilimali.TRANSLATOR_ENDPOINT— URL ya mwisho ya mkoa.TRANSLATOR_REGION— mkoa wa Azure wa rasilimali.
Ongeza mtiririko wa kazi
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-translationTafsiri ya AWS
Weka provider kwa aws. Pendelea OIDC kupitia aws-actions/configure-aws-credentials kwa hivyo hakuna siri za muda mrefu zinazohifadhiwa - usafirishaji wa hatua AWS_REGION kwako. Ili kutumia funguo tuli badala yake, hifadhi:
Hifadhi hizi kama siri za hazina
AWS_ACCESS_KEY_ID— Kitambulisho chako cha ufunguo wa ufikiaji wa AWS.AWS_SECRET_ACCESS_KEY— ufunguo wako wa ufikiaji wa siri wa AWS.
Mkoa unahitajika kila wakati - uweke na awsRegion au tofauti ya mazingira ya AWS_REGION.
Ongeza mtiririko wa kazi
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-translationTafsiri ya Wingu la Google
Weka provider kwa google. Thibitisha na kitambulisho cha JSON cha akaunti ya huduma au ufunguo wa API - toa moja haswa:
Hifadhi hizi kama siri za hazina
GCP_TRANSLATE_CREDENTIALS— ufunguo wa JSON wa akaunti ya huduma (kama kamba ya JSON).GCP_TRANSLATE_API_KEY— au ufunguo wa API ya Wingu la Google.
googleProjectId ya hiari hutolewa kutoka kwa kitambulisho wakati imeachwa.
Ongeza mtiririko wa kazi
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: Fanya faili ya rasilimali ya chanzo
Faili za rasilimali hutumia mkataba wa Name.<sourceLocale>.<ext>. Kwa mfano Greetings.en.resx inakuwa Greetings.fr.resx, Greetings.de.resx, na kadhalika baada ya kukimbia.
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: Kagua pato
Mara tu mtiririko wa kazi unapomalizika, kitendo kinafunua matokeo matatu unayoweza kuunganisha kwenye maelezo ya PR: summary-title, summary-details, na has-new-translations. Pia inaandika muhtasari wa Markdown kwenye ukurasa wa kazi kupitia core.summary.