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— 지역 엔드포인트 URL입니다.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로 설정하세요. aws-actions/configure-aws-credentials 통해 OIDC를 선호하여 오래 지속되는 비밀이 저장되지 않도록 하세요 — 스텝이 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 요약을 작성합니다.