Vérifier les traductions avant la mise en production
S'exécute sur votre machine, ne demande aucune clé et n'envoie rien nulle part. La commande trouve les variables perdues comme {name}, les nombres modifiés, les clés manquantes et les lignes vides. En cas d'erreur, elle se termine avec le code 1 pour que la CI puisse bloquer la fusion ; une ligne vide n'est qu'un avertissement et ne donne le code 1 qu'avec --strict.
npx kaeris check --source en.json --langs de
Sans Python : npx lance le paquet npm avec Node 18 ou plus récent. Avec Python, pip install kaeris fournit la même commande kaeris check.
{
"greeting": "Hallo!",
"delete": "50 Dateien löschen",
"save": "",
"terms": "Lies unsere <b>AGB</b>"
}
✗ de: 1 placeholder mismatch(es): greeting: missing ['{name}'], added - ✗ de: 3 translation fault(s): greeting: lost placeholder {name} delete: number 50 appears in the translation but not the source delete: number 5 from the source is missing or changed in the translation ! de: 1 warning(s): save: empty translation — the source has text ✗ 1 placeholder mismatch, 3 translation faults
Source : {"greeting": "Hello, {name}!", "delete": "Delete 5 files", "save": "Save changes", …}
| Option | Signification |
|---|---|
--strict | Échouer aussi sur les avertissements (une traduction vide, par exemple) et sur les clés en trop, absentes de la source. |
--pattern '{lang}/common.json' | Emplacement des traductions. Par défaut : là où translate les écrit, à côté de la source (de.json, app_de.arb, values-de/strings.xml). |
--json | Résultat lisible par machine au lieu du rapport. |
--sarif kaeris.sarif | Écrit également un rapport SARIF 2.1.0 pour GitHub, voir ci-dessous. |
Fichier source : l'un des 13 formats (JSON, YAML, .strings, .xcstrings, Markdown/MDX, .po, ARB, Android XML, CSV, XLIFF, .properties, .resx, Fluent). Codes de sortie : 0 propre, 1 problèmes trouvés, 2 utilisation incorrecte ou fichier illisible.
Guides par format: JSON · YAML · PO · XLIFF · ARB · .strings · .xcstrings · Fluent · .properties · .resx · CSV · Markdown · Android XML
CI recipes (in English): GitHub Actions · GitLab CI · pre-commit · Make and npm scripts
Glossaire : un mot par terme et par langue
--keep laisse un mot tel quel. Quand un terme doit être traduit, mais toujours de la même façon, placez-le dans kaeris-glossary.json à côté de kaeris.json. translate transmet les mots convenus au modèle, et check échoue sur une traduction qui emploie un autre mot.
{"terms": [
{"term": "workspace", "pos": "noun",
"note": "the shared project area, not a desk",
"translations": {"de": "Arbeitsbereich",
"fr": "espace de travail",
"ru": "рабочее пространство"}},
{"term": "KAERIS", "keep": true}
]}
→ Glossary: 1 term(s), 1 kept as is ✗ fr: 1 translation fault(s): open: glossary: "workspace" should be "espace de travail" ! ru: 1 warning(s): leave: glossary: "workspace" should be "рабочее пространство" — not found, not even as an inflected form; check this line ✗ 1 translation fault
Source : {"open": "Open the workspace", "leave": "Leave the workspace"}. La traduction française dit « bureau », la russe « рабочей области ».
Un terme compte comme un mot entier : Pro n'est pas trouvé dans « product ». Une forme fléchie du mot convenu est acceptée. Là où les mots changent de forme ou se soudent en composés (russe, polonais, allemand et d'autres), une absence est un avertissement et non une erreur, car la grammaire peut quand même être correcte. Une liste de mots donne des variantes acceptées. Disponible sur toutes les offres, démo gratuite comprise.
Les résultats sur la ligne, dans la pull request
Avec --sarif, chaque résultat devient une note sur la ligne exacte du fichier de langue, à côté des commentaires de votre relecteur.
- uses: kaeris-io/kaeris-action@v1
with:
mode: check
source: locales/en.json
languages: de,fr,es
sarif-file: kaeris.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: kaeris.sarif
"greeting": "Hallo, {name}!",
- "delete": "5 Dateien löschen",+ "delete": "50 Dateien löschen",KAERIS i18n · delete: number 5 from the source is missing or changed in the translation "save": "Änderungen speichern"
Le rapport est écrit même quand tout est propre, car upload-sarif échoue si le fichier manque. Les notes sur la ligne sont gratuites sur les dépôts publics ; les dépôts privés nécessitent GitHub Advanced Security. Sans cela, la vérification fonctionne quand même : le job échoue et le journal liste chaque résultat.
KAERIS a traduit cette page et vérifié chaque ligne en la retraduisant. Un locuteur natif ne l'a pas encore revue. Original anglais