Traduire

Vérifiez les traductions dans GitHub Actions

Une traduction qui supprime {name} ou ignore une clé casse l'application à l'exécution, et la revue la détecte rarement. Ce workflow exécute kaeris check sur chaque pull request et fait passer la tâche au rouge. Il est hors ligne et gratuit : pas de clé API, pas de compte.

KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais

La recette

Le workflow

Enregistrez-le sous .github/workflows/i18n-check.yml. Changez source pour votre fichier de langue de base et languages pour les locales que vous expédiez.

Configuration.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr

Sans Python : npx

Le paquet npm kaeris lance la même vérification avec Node 18 ou plus récent ; npx le télécharge lui-même, sans étape d’installation. Il ne contient que check : pour traduire, il faut le paquet Python.

Configuration.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npx kaeris check --source locales/en.json --langs de,fr

La même chose sans l'Action

Étapes simples avec Python et pip. Le journal affiche ensuite chaque découverte ligne par ligne au lieu du tableau que l'Action imprime.

Configuration.github/workflows/i18n-check.yml (steps)
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with:
          python-version: "3.12"
      - run: pip install kaeris
      - run: kaeris check --source locales/en.json --langs de,fr --ci

Découvertes sur la ligne exacte de la pull request (facultatif)

L'Action peut également écrire un rapport SARIF ; son téléversement transforme chaque découverte en annotation dans le diff. Les téléversements de code-scanning sont gratuits sur les dépôts publics ; les dépôts privés nécessitent GitHub Advanced Security.

Configuration.github/workflows/i18n-check.yml
name: i18n check
on: pull_request
permissions:
  contents: read
  security-events: write
jobs:
  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: kaeris-io/kaeris-action@v1
        with:
          mode: check
          source: locales/en.json
          languages: de,fr
          sarif-file: kaeris.sarif
      - uses: github/codeql-action/upload-sarif@v3
        if: always()
        with:
          sarif_file: kaeris.sarif

Ce qu'elle imprime, lors de vraies exécutions

Sortie de kaeris 0.2.35, capturée le 27 octobre 2026. La dernière ligne de chaque boîte est le code de sortie que le job CI voit.

Ce que le job imprime

L'Action imprime un tableau récapitulatif par langue et se termine par la ligne d'erreur lorsqu'il y a un problème. Gauche : fichiers corrects. Droite : de.json avec {nam} au lieu de {name} et la clé checkout manquante.

Fichiers correctsAction step output
## KAERIS i18n — CI check

Placeholder-loss: **0** (should be 0).

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ✓ complete | 0 | 0 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
step exit=0
--- GITHUB_OUTPUT (without summary body):
missing=0
placeholder-issues=0
changed=false
check-exit-code=0
translate-exit-code=0
Une traduction incorrecteAction step output
## KAERIS i18n — CI check

Placeholder-loss: **1** (should be 0).
Missing keys remaining: **1**.

| Language | Status | Missing | Placeholder issues | Translated |
|---|---|---|---|---|
| de | ⚠ 1 missing, 1 placeholder issue | 1 | 1 | – |
| fr | ✓ complete | 0 | 0 | – |

_Generated from `kaeris check --json` — no fabricated numbers._
::error::kaeris check found incomplete/broken translations — see the job summary for the language matrix
step exit=1
--- GITHUB_OUTPUT (without summary body):
missing=1
placeholder-issues=1
changed=false
check-exit-code=1
translate-exit-code=0

Ce qu’affiche l’étape npx

Le même projet vérifié avec npx : kaeris 0.2.37 depuis npm, un cache npm vide et CI=true, comme sur un runner neuf. La première ligne est npm qui installe le paquet.

Fichiers correctsnpx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✓ de: complete & placeholder-safe
✓ fr: complete & placeholder-safe
✓ all locales complete & placeholder-safe
exit code: 0
Une traduction incorrectenpx step output
$ npx kaeris check --source locales/en.json --langs de,fr
npm warn exec The following package was not found and will be installed: [email protected]
✗ de: 1 missing key(s): checkout
✗ de: 1 placeholder mismatch(es):
    greeting: missing ['{name}'], added ['{nam}']
✗ de: 2 translation fault(s):
    greeting: lost placeholder {name}
    greeting: invented placeholder {nam} (not in source)
✓ fr: complete & placeholder-safe
✗ 1 missing key, 1 placeholder mismatch, 2 translation faults
exit code: 1

Configurez-le en trois étapes

  1. Sauvegarder le workflow

    Créez .github/workflows/i18n-check.yml avec le workflow ci-dessus, en y ajoutant votre propre source et vos languages.

  2. Ouvrir une pull request

    Poussez une branche qui modifie un fichier de locale. Le job s'exécute sur chaque pull request et devient rouge en cas de placeholder perdu ou de clé manquante.

  3. Rendre la vérification obligatoire

    Dans les paramètres du dépôt, ajoutez le job comme vérification de statut obligatoire dans la protection de branche. Un job rouge bloque alors la fusion.

Comment nous avons vérifié cela

Chaque commande de cette page a été exécutée avant d'être écrite ici. Ce qui n'a pas été exécuté est également listé.

Options à connaître

Questions

A-t-il besoin d'une clé API ou d'un compte ?

Non. kaeris check est décrit dans son aide comme statique, local et sans API, donc le job n'a pas besoin de secret. La traduction est une commande distincte qui nécessite une clé.

Quels formats de fichiers lit-il ?

L'aide de kaeris check liste JSON, ARB, YAML, .strings, .xcstrings, .po, Android XML, CSV, XLIFF, .properties, .resx, Fluent et Markdown comme formats sources (kaeris 0.2.35 et plus récents). Guides par format

Qu'est-ce qui fait échouer le job ?

Le code de sortie de kaeris check : 0 propre, 1 un problème a été trouvé, 2 utilisation incorrecte ou un fichier qu'il ne peut pas lire. Un problème que la vérification qualifie de rouge fait échouer le job ; strict fait également échouer les clés obsolètes. Référence GitHub Action

Continuer

Autres recettes : GitLab CI · pre-commit · Make et scripts npm

Référence CLI · Référence Check · Référence GitHub Action · Vérification gratuite dans le navigateur · Traduction dans le navigateur