i18n Validator
Provjerite nedostaju li u datotekama prijevoda ključevi, jesu li rezervirana mjesta oštećena i jesu li množine nedosljedne. Jedna naredba. 9 provjera. 32 formata. Bez konfiguracije.
Problem
Problemi s prijevodom nevidljivi su dok korisnici ne naiđu na njih. Ključ koji nedostaje prikazuje neobrađenu putanju poput "settings.billing.title" umjesto stvarnog teksta. Oštećeno rezervirano mjesto prikazuje "{price}" kao doslovan tekst umjesto "$9.99". Neispravno oblikovana množina uzrokuje rušenje kada je broj jednak nuli. Te pogreške prolaze pregled koda jer nitko ručno ne uspoređuje 15 datoteka lokaliteta.
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
Rješenje
i18n-validate pregledava sve Vaše datoteke prijevoda u jednom prolazu. Automatski otkriva raspored direktorija i format datoteke, uspoređuje svaki jezik s referentnim te točno prijavljuje što nije u redu i gdje. Bez dodataka, konfiguracije i prilagođenog testnog koda.
| 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 failedInstalacija
Instalirajte ga kao globalni CLI alat putem željenog upravitelja paketa. npm paket uključuje nativnu binarnu datoteku napisanu u Rustu — nije potrebno prevođenje izvornog koda ni instaliranje ovisnosti izvođenja.
npm install -g @i18n-agent/i18n-validateUpotreba
Usmjerite alat na direktorij lokaliteta. Automatski će otkriti referentni jezik, raspored direktorija i format datoteke. Za većinu projekata nije potrebna konfiguracija.
# 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 integracija
Dodajte provjeru prijevoda u proces za zahtjeve za povlačenje. Alat generira JUnit XML koji se integrira s izvjestiteljima o testovima za GitHub Actions, artefaktima GitLab CI-ja i svakim CI sustavom koji podržava 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.Podržani formati
Zahvaljujući alatu i18n-convert, validator odmah podržava 32 formata i18n datoteka. Nisu potrebni dodaci ni zasebna konfiguracija formata — alat automatski otkriva format na temelju datotečnog nastavka i sadržaja.
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
Konfiguracija
Za većinu projekata radi bez konfiguracije. Kada Vam je potrebna veća kontrola — kako biste promijenili razinu ozbiljnosti provjere, postavili očekivane jezike ili izuzeli jezike na kojima se još radi — izradite datoteku .i18n-validate.toml u korijenu projekta.
# .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 validationIsprobajte i18n Agent odmah
Povucite datoteku za prijevod ovdje
JSON, YAML, PO, XML, CSV, Markdown, Properties
ili kliknite za odabir
Ciljni jezici