i18n-i validaator
Leia tõlkefailidest puuduvad võtmed, katkised kohatäitjad ja mitmusevormide vastuolud. Üks käsk. 9 kontrolli. 32 vormingut. Seadistamist pole.
Probleem
Tõlkeprobleemid jäävad nähtamatuks, kuni kasutajad nendeni jõuavad. Puuduv võti kuvab päris teksti asemel töötlemata rada, näiteks "settings.billing.title". Katkine kohatäitja renderdab väärtuse "9,99 $" asemel sõnasõnalise teksti "{price}". Vigane mitmusevorm põhjustab nullkoguse korral krahhi. Need vead lipsavad koodiülevaatusest läbi, sest keegi ei võrdle 15 lokaadifaili käsitsi.
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
Lahendus
i18n-validate skannib kõik tõlkefailid ühe käiguga. See tuvastab automaatselt kataloogipaigutuse ja failivormingu, võrdleb iga keelt võrdluskeelega ning annab täpselt teada, mis ja kus on valesti. Pluginaid, seadistamist ega kohandatud testikoodi pole vaja.
| 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 failedPaigaldamine
Paigalda globaalse CLI-tööriistana eelistatud paketihalduriga. npm-pakett sisaldab omamaist Rusti binaari — kompileerimist ega käitusaegseid sõltuvusi pole vaja.
npm install -g @i18n-agent/i18n-validateKasutamine
Suuna tööriist oma lokaadikataloogile. See tuvastab automaatselt võrdluskeele, kataloogipaigutuse ja failivormingu. Enamik projekte ei vaja seadistamist.
# 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 lõiming
Lisa tõlkevalideerimine pull request'i konveierisse. Tööriist väljastab JUnit XML-i, mis lõimub GitHub Actions'i testiraportite, GitLab CI artefaktide ja kõigi JUnit'i toetavate CI-süsteemidega.
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.Toetatud vormingud
i18n-convert'i toel toetab validaator kohe 32 i18n-failivormingut. Vormingupõhiseid pluginaid ega seadistamist pole vaja — tööriist tuvastab vormingu automaatselt faililaiendi ja sisu järgi.
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
Seadistamine
Enamiku projektide puhul töötab seadistamiseta kasutus. Kui vajad rohkem kontrolli — kontrolli raskusastme alistamist, oodatud keelte määramist või pooleliolevate keelte välistamist — loo projekti juurtasemel fail .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 validationProovi i18n Agent'i kohe
Kukuta tõlkefail siia
JSON, YAML, PO, XML, CSV, Markdown, Properties
või klõpsa faili valimiseks
Sihtkeeled