在 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 工具可用。你拥有代码仓库内容的写入权限,可以对 Pull Request 进行评论,但不能直接创建或编辑 PR。
# 上下文信息:
- 仓库:${{ github.repository }}
- PR 编号:${{ github.event.pull_request.number }}
- Head Ref:${{ github.head_ref }}
- 翻译分支前缀:${{ env.BRANCH_PREFIX }}
# 目标:
- 检测 PR 中新增或修改的 i18n 键值,并仅补充消息文件中缺失的语言版本。绝不覆盖现有翻译。
# 要求:
1) 通过检查 PR 差异(源文件和消息文件)确定变更的键值。
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