Vérifier les traductions dans GitLab CI
Le job installe le package kaeris et exécute kaeris check sur les merge requests qui touchent vos fichiers de locale. Un placeholder perdu ou une clé manquante fait échouer le pipeline. C'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 job
Ajoutez-le à .gitlab-ci.yml. Modifiez --source pour pointer vers votre fichier de langue de base et --langs pour les locales que vous expédiez. Le bloc rules exécute le job uniquement sur les merge requests qui modifient quelque chose sous locales/ ; supprimez les lignes changes pour l'exécuter sur chaque merge request.
i18n-check:
stage: test
image: python:3.12-slim
rules:
- if: $CI_PIPELINE_SOURCE == "merge_request_event"
changes:
- locales/**/*
script:
- pip install kaeris
- kaeris check --source locales/en.json --langs de,fr --ci
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
Les deux lignes script, exécutées dans l'ordre. Gauche : fichiers corrects. Droite : de.json avec {nam} au lieu de {name} et la clé checkout manquante ; le job s'arrête avec le code de sortie 1.
$ pip install kaeris Collecting kaeris Using cached kaeris-0.2.35-py3-none-any.whl.metadata (26 kB) Using cached kaeris-0.2.35-py3-none-any.whl (131 kB) Installing collected packages: kaeris Successfully installed kaeris-0.2.35 $ kaeris check --source locales/en.json --langs de,fr --ci ✓ de: complete & placeholder-safe ✓ fr: complete & placeholder-safe ✓ all locales complete & placeholder-safe Job succeeded exit code: 0
$ pip install kaeris
Requirement already satisfied: kaeris in C:\Users\Inzagi\AppData\Local\Temp\claude\C--Users-Inzagi-projects-kaeris\bfeebe69-3cfd-4f28-bbe7-e5600be082b9\scratchpad\venv-gl2\Lib\site-packages (0.2.35)
$ kaeris check --source locales/en.json --langs de,fr --ci
✗ 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
ERROR: Job failed: exit code 1
exit code: 1
Configurez-le en trois étapes
Ajouter le job
Collez le job dans
.gitlab-ci.ymlet définissez vos propres--sourceet--langs.Ouvrir une requête de fusion
Modifiez un fichier de langue sur une branche et ouvrez une requête de fusion. Le job s'exécute et affiche toutes les anomalies dans son journal.
Exiger le pipeline
Dans les paramètres du projet sous requêtes de fusion, activez l'option selon laquelle les pipelines doivent réussir. 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é.
Ce qui a été exécuté
Les deux lignes
script, extraites du YAML analysé et exécutées l'une après l'autre dans un environnement virtuel Python propre, s'arrêtent à la première ligne échouée, comme le fait un job GitLab.pip install kaerisa téléchargé kaeris 0.2.35 depuis PyPI. Fichiers propres : code de sortie 0. Lede.jsoncorrompu : code de sortie 1.Ce qui n'a pas été exécuté
Aucun runner GitLab ni aucune image Docker n'ont été utilisés (le journal ci-dessus provient d'un PC Windows avec Python 3.14, et non de
python:3.12-slim). Le blocrulesetchangesa seulement été analysé comme YAML ; GitLab ne l'a pas évalué. Le package déclare Python 3.8 ou plus récent.
Options à connaître
Échouer aussi sur les clés obsolètes
--strictéchoue également lorsqu'une traduction a des clés que la source n'a plus.Conserver les noms de marque tels quels
--glossary 'KAERIS,GitHub'fait échouer une cible qui a supprimé l'un des termes. La même liste peut se trouver souskeepdanskaeris.json.Disposition de fichiers différente
--outest le dossier contenant les traductions et--pattern '{lang}/common.json'leurs noms de fichiers. Par défaut : la disposition quekaeris translateécrit.Aucun drapeau du tout
Avec un fichier
kaeris.jsondans le projet (kaeris initen écrit un),kaeris checkrécupère la source, les langues et le dossier à partir de celui-ci.
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é.
Que détecte la vérification ?
Un placeholder perdu ou inventé ({name}, %s, {{x}}, pluriels ICU), une clé manquante et un fichier de langue absent. La comparaison est locale et statique. Ce qu'il vérifie, avec chaque drapeau
Puis-je sauvegarder le résultat dans un fichier ?
Oui : --json affiche le résultat en JSON et --sarif PATH écrit un rapport SARIF. Ajoutez le fichier sous artifacts si vous souhaitez le conserver. Les deux drapeaux sont dans l'aide de kaeris check ; nous n'avons pas effectué de téléversement d'artefact sur GitLab.
Continuer
Autres recettes : GitHub Actions · 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