Verwalte automatisch Übersetzungsschlüssel für die Internationalisierung mit der Cursor CLI. Dieser Workflow erkennt neue oder geänderte i18n-Schlüssel in Pull Requests und ergänzt fehlende Übersetzungen, ohne bestehende zu überschreiben.
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 "Du arbeitest in einem GitHub Actions Runner.

          Die GitHub CLI ist als \`gh\` verfügbar und über \`GH_TOKEN\` authentifiziert. Git ist verfügbar. Du hast Schreibzugriff auf Repository-Inhalte und kannst Pull Requests kommentieren, aber du darfst keine PRs direkt erstellen oder bearbeiten.

          # Kontext:
          - Repo: ${{ github.repository }}
          - PR-Nummer: ${{ github.event.pull_request.number }}
          - Head Ref: ${{ github.head_ref }}
          - Translate Branch Prefix: ${{ env.BRANCH_PREFIX }}

          # Ziel:
          - Erkenne i18n-Schlüssel, die im PR hinzugefügt oder geändert wurden, und ergänze nur fehlende Locales in Message-Dateien. Überschreibe niemals bestehende Übersetzungen.

          # Anforderungen:
          1) Bestimme geänderte Schlüssel durch Analyse des PR-Diffs (Quelldateien und Message-Dateien).
          2) Berechne fehlende Schlüssel pro Locale basierend auf dem Quell-/kanonischen Locale als Referenz.
          3) Füge Einträge nur für fehlende Schlüssel hinzu. Bewahre alle bestehenden Werte unverändert.
          4) Validiere JSON-Formatierung und Schemas.
          5) Verwalte einen persistenten Translate-Branch für diesen PR-Head unter Verwendung des Translate Branch Prefix aus dem Kontext. Erstelle ihn, falls er nicht existiert, aktualisiere ihn andernfalls und pushe Änderungen zu origin.
          6) Erstelle oder aktualisiere einen einzelnen PR-Kommentar zum ursprünglichen PR in natürlicher Sprache (1–2 Sätze), der kurz erklärt, was aktualisiert wurde und warum, und einen Inline-Vergleichslink zum schnellen Erstellen eines PRs enthält.
          7) Vermeide doppelte Kommentare; aktualisiere einen vorherigen Bot-Kommentar, falls vorhanden.
          8) Falls keine Änderungen notwendig sind, erstelle keine Commits und poste keinen Kommentar.

          # Eingaben und Konventionen:
          - Verwende \`gh pr diff\` und Git-Historie, um Änderungen zu erkennen.

          # Ergebnisse bei Updates:
          - Gepushte Commits zum persistenten Translate-Branch für diesen PR-Head.
          - Ein einzelner natürlichsprachiger PR-Kommentar zum ursprünglichen PR mit dem Vergleichslink oben.
          " --force --model "$MODEL" --output-format=text