i18n-validator
Kontrollér oversættelsesfiler for manglende nøgler, ødelagte pladsholdere og uoverensstemmelser i flertalsformer. Én kommando. 9 kontroller. 32 formater. Ingen konfiguration.
Problemet
Oversættelsesproblemer er usynlige, indtil brugerne støder på dem. En manglende nøgle viser en rå sti som "settings.billing.title" i stedet for rigtig tekst. En ødelagt pladsholder gengiver "{price}" som bogstavelig tekst i stedet for "99,99 kr.". En ugyldig flertalsform får systemet til at gå ned, når antallet er nul. Disse fejl slipper gennem kodegennemgangen, fordi ingen manuelt sammenligner 15 landestandardfiler.
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 scanner alle dine oversættelsesfiler i én arbejdsgang. Værktøjet registrerer automatisk dit mappelayout og filformat, sammenligner hvert sprog med referencen og rapporterer præcist, hvad der er galt og hvor. Ingen plugins, ingen konfiguration og ingen tilpasset testkode.
| 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
Installer værktøjet som et globalt CLI-værktøj med din foretrukne pakkehåndtering. npm-pakken indeholder en oprindelig binær Rust-fil — der kræves ingen kompilering eller kørselstidsafhængigheder.
npm install -g @i18n-agent/i18n-validateBrug
Peg værktøjet på din mappe med landestandarder. Det registrerer automatisk referencesproget, mappelayoutet og filformatet. De fleste projekter kræver 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-integration
Føj oversættelsesvalidering til din pull request-pipeline. Værktøjet genererer JUnit XML, som kan integreres med testrapporter i GitHub Actions, GitLab CI-artefakter og alle CI-systemer, der understøtter 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.Understøttede formater
Validatoren drives af i18n-convert og understøtter 32 i18n-filformater direkte. Der kræves ingen formatspecifikke plugins eller konfiguration — værktøjet registrerer automatisk formatet ud fra filtypenavne og indhold.
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
De fleste projekter fungerer uden konfiguration. Når du har brug for mere kontrol — tilsidesættelse af kontrolniveauer, angivelse af forventede sprog eller udelukkelse af igangværende sprog — skal du oprette en .i18n-validate.toml-fil i projektets rodmappe.
# .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 validationPrøv i18n Agent nu
Slip din oversættelsesfil her
JSON, YAML, PO, XML, CSV, Markdown, Properties
eller klik for at vælge en fil
Målsprog