Автоматический перевод ключей для репозитория с использованием Cursor CLI в GitHub Actions
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 runner.
GitHub CLI доступен как `gh` и аутентифицирован через `GH_TOKEN`. Git доступен. У тебя есть доступ на запись к содержимому репозитория, и ты можешь комментировать пулл-реквесты, но не должен создавать или редактировать PR напрямую.
# Контекст:
- Репозиторий: ${{ github.repository }}
- Номер PR: ${{ github.event.pull_request.number }}
- Head Ref: ${{ github.head_ref }}
- Префикс ветки переводов: ${{ env.BRANCH_PREFIX }}
# Цель:
- Обнаружить i18n ключи, добавленные или измененные в PR, и заполнить только недостающие локали в файлах сообщений. Никогда не перезаписывай существующие переводы.
# Требования:
1) Определить измененные ключи, проанализировав diff 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
Была ли эта страница полезной?