Validátor i18n
Skontrolujte chýbajúce kľúče, poškodené zástupné symboly a nezrovnalosti množného čísla. Jeden príkaz. 9 kontrol. 32 formátov. Žiadna konfigurácia.
Problém
Problémy s prekladmi zostávajú neviditeľné, kým na ne nenarazia používatelia. Pri chýbajúcom kľúči sa namiesto textu zobrazí nespracovaná cesta ako "settings.billing.title". Poškodený zástupný symbol vykreslí "{price}" doslovne namiesto "9,99 €". Nesprávne množné číslo spôsobí zlyhanie pri nulovom počte. Tieto chyby uniknú kontrole kódu, pretože nikto manuálne neporovnáva 15 lokalizačných súborov.
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
Riešenie
i18n-validate skontroluje všetky prekladové súbory naraz. Automaticky rozpozná rozloženie adresárov a formát súborov, porovná každý jazyk s referenciou a presne oznámi miesto a príčinu chyby. Bez doplnkov, konfigurácie a vlastného testovacieho kódu.
| 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 failedInštalácia
Nainštalujte nástroj globálne cez CLI pomocou svojho správcu balíkov. Balík npm obsahuje natívny binárny súbor Rust — bez kompilácie a závislostí počas prevádzky.
npm install -g @i18n-agent/i18n-validatePoužitie
Nasmerujte nástroj na adresár lokalít. Automaticky rozpozná referenčný jazyk, rozloženie adresárov a formát súborov. Väčšina projektov nepotrebuje žiadnu konfiguráciu.
# 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.xmlIntegrácia CI/CD
Pridajte kontrolu prekladov do pipeline pull requestov. Nástroj vytvára JUnit XML kompatibilný s reportérmi testov GitHub Actions, artefaktmi GitLab CI a každým systémom CI s podporou 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.Podporované formáty
Validátor využíva i18n-convert a bez ďalšieho nastavenia podporuje 32 formátov súborov i18n. Nepotrebuje doplnky ani konfiguráciu pre jednotlivé formáty — rozpozná ich automaticky podľa prípon a obsahu.
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
Konfigurácia
Väčšine projektov stačí nulová konfigurácia. Ak potrebujete väčšiu kontrolu — zmeniť závažnosť kontrol, nastaviť očakávané jazyky alebo vylúčiť rozpracované jazyky — vytvorte v koreňovom adresári projektu súbor .i18n-validate.toml.
# .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 validationVyskúšajte i18n Agent teraz
Potiahnite súbor na preklad sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
alebo kliknite a vyberte súbor
Cieľové jazyky