Cursor CLI를 사용해서 국제화를 위한 번역 키를 자동으로 관리할 수 있어. 이 워크플로우는 풀 리퀘스트에서 새로 추가되거나 변경된 i18n 키를 감지하고, 기존 번역을 덮어쓰지 않으면서 누락된 번역만 채워줘.
name: Auto Translate Keys

on:
  pull_request:
    types: [opened, synchronize, reopened, ready_for_review]

permissions:
  contents: write
  pull-requests: write

jobs:
  i18n:
    if: ${{ !startsWith(github.head_ref, 'translate/') }}
    runs-on: ubuntu-latest
    steps:
      - name: Checkout repository
        uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Install Cursor CLI
        run: |
          curl https://cursor.com/install -fsS | bash
          echo "$HOME/.cursor/bin" >> $GITHUB_PATH

      - name: Configure git identity
        run: |
          git config user.name "Cursor Agent"
          git config user.email "cursoragent@cursor.com"

      - name: Propose i18n updates
        env:
          CURSOR_API_KEY: ${{ secrets.CURSOR_API_KEY }}
          MODEL: gpt-5
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          BRANCH_PREFIX: translate
        run: |
          cursor-agent -p "지금 GitHub Actions 러너에서 실행되고 있어.

          GitHub CLI는 `gh`로 사용할 수 있고 `GH_TOKEN`으로 인증되어 있어. Git도 사용 가능해. 저장소 콘텐츠에 대한 쓰기 권한이 있고 풀 리퀘스트에 댓글을 달 수 있지만, PR을 직접 생성하거나 편집하면 안 돼.

          # 컨텍스트:
          - 저장소: ${{ github.repository }}
          - PR 번호: ${{ github.event.pull_request.number }}
          - Head Ref: ${{ github.head_ref }}
          - 번역 브랜치 접두사: ${{ env.BRANCH_PREFIX }}

          # 목표:
          - PR에서 추가되거나 변경된 i18n 키를 감지하고 메시지 파일에서 누락된 로케일만 채워. 기존 번역은 절대 덮어쓰지 마.

          # 요구사항:
          1) PR diff를 검사해서 변경된 키를 확인해 (소스 파일과 메시지 파일).
          2) 소스/표준 로케일을 기준으로 각 로케일별 누락된 키를 계산해.
          3) 누락된 키에 대해서만 항목을 추가해. 기존 값은 모두 그대로 보존해.
          4) JSON 형식과 스키마를 검증해.
          5) 컨텍스트의 번역 브랜치 접두사를 사용해서 이 PR head에 대한 지속적인 번역 브랜치를 유지해. 없으면 생성하고, 있으면 업데이트한 다음 origin에 변경사항을 푸시해.
          6) 업데이트된 내용과 이유를 간단히 설명하는 자연어로 작성된 단일 PR 댓글을 원본 PR에 게시하거나 업데이트해 (1-2문장), 그리고 PR을 빠르게 생성할 수 있는 인라인 비교 링크를 포함해.
          7) 중복 댓글을 피해; 이전 봇 댓글이 있으면 업데이트해.
          8) 변경이 필요하지 않으면 커밋하지 말고 댓글도 달지 마.

          # 입력과 규칙:
          - `gh pr diff`와 git 히스토리를 사용해서 변경사항을 감지해.

          # 업데이트가 발생할 때의 결과물:
          - 이 PR head에 대한 지속적인 번역 브랜치에 커밋 푸시.
          - 위의 비교 링크가 포함된 원본 PR에 대한 단일 자연어 PR 댓글.
          " --force --model "$MODEL" --output-format=text