Gère automatiquement les clés de traduction pour l’internationalisation en utilisant Cursor CLI. Ce workflow détecte les clés i18n nouvelles ou modifiées dans les pull requests et complète les traductions manquantes sans écraser celles existantes.
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 "Tu fonctionnes dans un runner GitHub Actions.

          Le GitHub CLI est disponible via `gh` et authentifié avec `GH_TOKEN`. Git est disponible. Tu as un accès en écriture au contenu du dépôt et peux commenter les pull requests, mais tu ne dois pas créer ou modifier les PRs directement.

          # Contexte :
          - Dépôt : ${{ github.repository }}
          - Numéro de PR : ${{ github.event.pull_request.number }}
          - Head Ref : ${{ github.head_ref }}
          - Préfixe de branche de traduction : ${{ env.BRANCH_PREFIX }}

          # Objectif :
          - Détecter les clés i18n ajoutées ou modifiées dans la PR et compléter uniquement les locales manquantes dans les fichiers de messages. Ne jamais écraser les traductions existantes.

          # Exigences :
          1) Déterminer les clés modifiées en inspectant le diff de la PR (fichiers sources et fichiers de messages).
          2) Calculer les clés manquantes par locale en utilisant la locale source/canonique comme référence.
          3) Ajouter des entrées uniquement pour les clés manquantes. Préserver toutes les valeurs existantes intactes.
          4) Valider le formatage JSON et les schémas.
          5) Maintenir une branche de traduction persistante pour cette PR head en utilisant le Préfixe de branche de traduction du Contexte. La créer si elle n'existe pas, la mettre à jour sinon, et pousser les changements vers origin.
          6) Publier ou mettre à jour un seul commentaire de PR sur la PR originale rédigé en langage naturel (1–2 phrases) qui explique brièvement ce qui a été mis à jour et pourquoi, et inclut un lien de comparaison inline pour créer rapidement une PR.
          7) Éviter les commentaires en double ; mettre à jour un commentaire de bot précédent s'il existe.
          8) Si aucun changement n'est nécessaire, ne faire aucun commit et ne publier aucun commentaire.

          # Entrées et conventions :
          - Utiliser `gh pr diff` et l'historique git pour détecter les changements.

          # Livrables quand des mises à jour ont lieu :
          - Commits poussés vers la branche de traduction persistante pour cette PR head.
          - Un seul commentaire de PR en langage naturel sur la PR originale avec le lien de comparaison ci-dessus.
          " --force --model "$MODEL" --output-format=text