i18n-validator
Kontrollera översättningsfiler efter saknade nycklar, trasiga platshållare och inkonsekventa pluralformer. Ett kommando. 9 kontroller. 32 format. Ingen konfiguration.
Problemet
Översättningsproblem syns inte förrän användarna stöter på dem. En saknad nyckel visar en rå sökväg som "settings.billing.title" i stället för riktig text. En trasig platshållare återger "{price}" som bokstavlig text i stället för "9,99 USD". En felaktig pluralform får appen att krascha när antalet är noll. De här felen slinker igenom kodgranskningen, eftersom ingen jämför 15 språkfiler manuellt.
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
Lösningen
i18n-validate går igenom alla dina översättningsfiler i ett svep. Verktyget identifierar automatiskt katalogstrukturen och filformatet, jämför varje språk med referensen och visar exakt vad som är fel och var. Inga insticksprogram, ingen konfiguration och ingen anpassad testkod.
| 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
Installera verktyget globalt för kommandoraden med den pakethanterare du föredrar. npm-paketet innehåller en systemspecifik binärfil skriven i Rust – ingen kompilering eller några körningsberoenden krävs.
npm install -g @i18n-agent/i18n-validateAnvändning
Ange katalogen med dina språkfiler. Verktyget identifierar automatiskt referensspråket, katalogstrukturen och filformatet. För de flesta projekt krävs ingen konfiguration.
# 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.xmlCI/CD-integrering
Lägg till översättningsvalidering i ditt arbetsflöde för pull requests. Verktyget genererar JUnit XML som kan integreras med testrapportering i GitHub Actions, artefakter i GitLab CI och alla CI-system som stöder 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.Format som stöds
Med hjälp av i18n-convert stöder validatorn 32 i18n-filformat direkt. Inga formatspecifika insticksprogram eller någon konfiguration behövs – verktyget identifierar automatiskt formatet utifrån filändelser och innehåll.
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
Konfiguration
För de flesta projekt fungerar det utan konfiguration. När du behöver mer kontroll – till exempel ändra kontrollernas allvarlighetsgrad, ange förväntade språk eller utesluta pågående översättningar – skapar du filen .i18n-validate.toml i projektets rotkatalog.
# .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 validationProva i18n Agent nu
Släpp din översättningsfil här
JSON, YAML, PO, XML, CSV, Markdown, Properties
eller klicka för att välja en fil
Målspråk