i18n Validator
Détectez les clés manquantes, les espaces réservés cassés et les incohérences de pluriels dans vos fichiers de traduction. Une seule commande. 9 vérifications. 32 formats. Aucune configuration.
Le problème
Une clé manquante affiche un chemin brut comme "settings.billing.title" au lieu du texte réel. Un espace réservé cassé affiche "{price}" tel quel au lieu de "$9.99". Un pluriel mal formé provoque un plantage lorsque le nombre est égal à zéro. Ces bugs passent inaperçus lors des revues de code, car personne ne compare manuellement 15 fichiers de locales.
Missing keys
Blank text or key paths shown to users
Broken placeholders
{price} displays as literal text instead of $9.99
Orphaned files
Outdated translations confuse the build system
Malformed files
Runtime crashes when users switch languages
La solution
i18n-validate analyse tous vos fichiers de traduction en une seule passe. Il détecte automatiquement la structure de vos répertoires et le format de fichier, compare chaque langue à la langue de référence, et indique précisément ce qui ne va pas et où. Aucun plugin, aucune configuration, aucun code de test personnalisé.
| Check | Severity | What it catches |
|---|---|---|
| missing-keys | error | Key exists in reference but is absent in a translation |
| extra-keys | error | Key exists in translation but not in the reference |
| placeholders | error | {price}, {{name}}, %s differ between languages |
| plural-structure | error | Plural forms are malformed or missing required categories |
| missing-languages | error | Expected language has no files or directory |
| orphaned-languages | error | Language files exist but are not in the expected list |
| parse-errors | error | File fails to parse (broken JSON, XML, YAML, etc.) |
| empty-values | warning | Key is present but the translation is an empty string |
| untranslated | warning | Translation is identical to the reference language |
i18n-validate v0.1.0 — validating ./locales
Reference: en (2 files: translation.json, apiTester.json)
Languages: de, ja, fr, es, zh-Hans, pt-BR, ko (7 found, 7 expected)
Layout : directory (auto-detected)
Formats : i18next JSON (auto-detected)
────────────────────────────────────────────────
ERRORS (5)
✗ missing-keys │ translation.json
Key "settings.billing.title"
missing in: ja, ko
✗ placeholders │ translation.json
Key "pricing.total" — expected: {price}, {currency}
de: found {price} only — missing {currency}
────────────────────────────────────────────────
WARNINGS (2)
⚠ empty-values │ translation.json
Key "onboarding.step3.hint"
empty in: de, fr
────────────────────────────────────────────────
5 errors, 2 warnings across 7 languages
✗ Validation failedInstallation
Installez-le comme outil CLI global avec le gestionnaire de paquets de votre choix. Le paquet npm inclut un binaire natif Rust — aucune compilation ni dépendance d'exécution requise.
npm install -g @i18n-agent/i18n-validateUtilisation
Indiquez à l'outil le chemin de votre répertoire de locales. Il détecte automatiquement la langue de référence, la structure des répertoires et le format de fichier. Aucune configuration n'est nécessaire pour la plupart des projets.
# Zero-config validation
i18n-validate ./locales
# JSON output for scripting
i18n-validate ./locales --format json | jq '.summary'
# CI/CD with JUnit XML
i18n-validate ./locales --format junit -o i18n-report.xmlIntégration CI/CD
Ajoutez la validation des traductions à votre pipeline de pull requests. L'outil génère un rapport JUnit XML compatible avec les rapporteurs de tests GitHub Actions, les artefacts GitLab CI et tout système CI prenant en charge JUnit.
name: Validate Translations
on:
pull_request:
paths: ['locales/**', 'public/locales/**']
jobs:
validate:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Validate translations
run: npx @i18n-agent/i18n-validate ./locales --format junit -o i18n-report.xml
- uses: dorny/test-reporter@v1
if: always()
with:
name: i18n validation
path: i18n-report.xml
reporter: java-junit--strict to also fail on warnings.Formats pris en charge
Propulsé par i18n-convert, le validateur prend en charge 32 formats de fichiers i18n dès l'installation. Aucun plugin ni configuration spécifique au format n'est nécessaire — l'outil détecte automatiquement le format à partir de l'extension et du contenu du fichier.
Mobile & Desktop
Android XML, Xcode String Catalog, iOS Strings, iOS Stringsdict, Flutter ARB, Qt Linguist
Web & Frameworks
Structured JSON, i18next JSON, JSON5, HJSON, YAML (Rails), YAML (Plain), JavaScript, TypeScript, PHP/Laravel, NEON
Standards & Exchange
XLIFF 1.2, XLIFF 2.0, Gettext PO, TMX, .NET RESX, Java Properties
Data & Other
CSV, Excel (.xlsx), TOML, INI, SRT Subtitles, Markdown, Plain Text
Configuration
Pour la plupart des projets, l'absence de configuration suffit. Si vous avez besoin de plus de contrôle — modifier la sévérité d'une vérification, définir les langues attendues ou exclure les langues en cours de traduction — créez un fichier .i18n-validate.toml à la racine de votre projet.
# .i18n-validate.toml
ref = "en"
expect = ["de", "ja", "fr", "es", "zh-Hans", "pt-BR", "ko"]
[checks]
missing-keys = "error"
extra-keys = "error"
placeholders = "error"
empty-values = "warning"
untranslated = "warning"
[languages.ko]
missing-keys = "warning" # Korean is WIP
[languages.ar]
skip = true # Exclude from validationEssayez i18n Agent maintenant
Déposez votre fichier de traduction ici
JSON, YAML, PO, XML, CSV, Markdown, Properties
ou cliquez pour parcourir
Langues cibles