Preverjevalnik i18n
Preverite manjkajoče ključe, poškodovane označbe mest in nedosledne množinske oblike. En ukaz. 9 preverjanj. 32 oblik. Brez konfiguriranja.
Težava
Težave s prevodi ostanejo nevidne, dokler nanje ne naletijo uporabniki. Zaradi manjkajočega ključa se namesto pravega besedila prikaže neobdelana pot, kot je »settings.billing.title«. Poškodovana označba mesta se prikaže kot dobesedno besedilo »{price}« namesto »9,99 €«. Napačna množinska oblika povzroči zrušitev, ko je število nič. Te napake uidejo pregledu kode, ker nihče ročno ne primerja 15 jezikovnih datotek.
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
Rešitev
i18n-validate v enem prehodu pregleda vse Vaše prevajalske datoteke. Samodejno zazna postavitev imenikov in obliko datotek, primerja vsak jezik z referenčnim ter natančno sporoči, kaj in kje je narobe. Brez vtičnikov, konfiguracije ali testne kode po meri.
| 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 failedNamestitev
Namestite ga kot globalno orodje CLI s priljubljenim upravljalnikom paketov. Paket npm vključuje izvorno binarno datoteko Rust, zato prevajanje ali izvajalne odvisnosti niso potrebni.
npm install -g @i18n-agent/i18n-validateUporaba
Orodje usmerite v imenik z jeziki. Samodejno zazna referenčni jezik, postavitev imenikov in obliko datotek. Večina projektov ne potrebuje konfiguracije.
# 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.xmlIntegracija CI/CD
Preverjanje prevodov dodajte v pipeline zahtevkov za vključitev. Orodje ustvari JUnit XML, ki se poveže s poročevalniki testov GitHub Actions, artefakti GitLab CI in vsemi sistemi CI s podporo za 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.Podprte oblike
Preverjevalnik s pomočjo i18n-convert brez dodatne nastavitve podpira 32 oblik datotek i18n. Vtičniki ali konfiguracija za posamezno obliko niso potrebni — orodje obliko samodejno zazna iz pripon datotek in vsebine.
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čino projektov konfiguracija ni potrebna. Če potrebujete več nadzora — želite preglasiti resnost preverjanj, nastaviti pričakovane jezike ali izključiti jezike v delu — v korenu projekta ustvarite datoteko .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 validationPreizkusite i18n Agent zdaj
Spustite prevajalsko datoteko sem
JSON, YAML, PO, XML, CSV, Markdown, Properties
ali kliknite za izbiro
Ciljni jeziki