Step 1: 择译者
此動作於一統一API表面下,運作於Azure AI 译者、AWS翻譯、谷歌云译。 每次以provider输入择一提供者,工作流程无论提供者何者,皆同行为; 唯资历异耳。 详见譯者比较。
Step 2: 增设凭证及工作流程
先将供应商凭证存为GitHub仓库秘密,继而创建.github/workflows/translate.yml。 请于下方选取供应商之具体设置,余下流程无异。
Azure AI 译者
Azure為預設供應者,故provider可省略。 于Azure门户中配置Azure AI翻译资源,继而存其凭证:
此等存为仓库秘密
TRANSLATOR_KEY— 资源之订阅密钥。TRANSLATOR_ENDPOINT— 區域端點網址。TRANSLATOR_REGION— 资源属Azure区域。
增设工作流程
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翻譯
设provider aws。 宜用OIDC经aws-actions/configure-aws-credentials以免长存秘密,步骤自能导出AWS_REGION。 欲用静态密钥,则存:
此等存为仓库秘密
AWS_ACCESS_KEY_ID— 尔之AWS访问密钥ID。AWS_SECRET_ACCESS_KEY— 尔之AWS秘密访问密钥。
区域必定,awsRegion或AWS_REGION环境变量设定之。
增设工作流程
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-translation谷歌云译
设provider google。 以服务账户JSON凭证或API密钥认证——仅供一:
此等存为仓库秘密
GCP_TRANSLATE_CREDENTIALS— 服務帳戶JSON鍵(以JSON字串示之)。GCP_TRANSLATE_API_KEY— 或谷歌云API密钥。
若省略憑證,則可推斷一選googleProjectId。
增设工作流程
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: 提交源资源文件
资源文件用Name.<sourceLocale>.<ext>约定。 如Greetings.en.resx于一轮后变为Greetings.fr.resx、Greetings.de.resx等。
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: 检视输出
流程既毕,动作显露三输出,可接入PR描述:summary-title、summary-details、has-new-translations。 又以core.summary书写Markdown摘要于职位页。