Step 1: Escolla un provedor de tradución
A acción funciona con Azure AI Translator, AWS Translate e Tradución de Google Cloud detrás dunha superficie API unificada. Escolla un único provedor por execución coa entrada provider — o fluxo de traballo compórtase igual independentemente do provedor; Só difiren as credenciais. Consulta Provedores de tradución para unha comparación completa.
Step 2: Engade credenciais e un fluxo de traballo
Garda as credenciais do teu provedor como segredos do repositorio de GitHub e logo crea .github/workflows/translate.yml. Selecciona o teu provedor a continuación para a súa configuración específica — o resto do fluxo de traballo é idéntico.
Azure AI Translator
Azure é o provedor por defecto, así que provider pode ser omitido. Provisiona un recurso Azure AI Translator no portal Azure e logo almacena as súas credenciais:
Almacénaos como segredos de repositorio
TRANSLATOR_KEY— A clave de subscrición para o recurso.TRANSLATOR_ENDPOINT— a URL rexional do punto final.TRANSLATOR_REGION— a rexión Azure do recurso.
Engade o fluxo de traballo
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
Configura provider a aws. Prefire OIDC a través de aws-actions/configure-aws-credentials para que non se almacenen segredos duradeiros — as exportacións por pasos AWS_REGION para ti. Para usar claves estáticas en vez diso, almacena:
Almacénaos como segredos de repositorio
AWS_ACCESS_KEY_ID— o teu ID da clave de acceso AWS.AWS_SECRET_ACCESS_KEY— a túa clave secreta de acceso AWS.
Sempre é necesaria unha rexión — configúraa con awsRegion ou coa variable de ambiente AWS_REGION.
Engade o fluxo de traballo
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-translationTradución de Google Cloud
Configura provider a google. Autentifícate con unha credencial JSON da conta de servizo ou cunha clave API — proporciona exactamente unha:
Almacénaos como segredos de repositorio
GCP_TRANSLATE_CREDENTIALS— unha clave JSON de conta de servizo (como cadea JSON).GCP_TRANSLATE_API_KEY— ou unha clave API de Google Cloud.
Un googleProjectId opcional infírese da credencial cando se omite.
Engade o fluxo de traballo
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 dun ficheiro de recurso fonte
Os ficheiros de recursos usan a convención Name.<sourceLocale>.<ext>. Por exemplo, Greetings.en.resx convértese en Greetings.fr.resx, Greetings.de.resx, e así sucesivamente despois dunha partida.
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: Inspeccionar a saída
Unha vez rematado o fluxo de traballo, a acción expón tres saídas que podes conectar nunha descrición de PR: summary-title, summary-details e has-new-translations. Tamén escribe un resumo de Markdown na páxina de traballo a través de core.summary.