GitHub Actions에서 Cursor CLI를 사용하여 저장소의 키를 자동으로 번역
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