i18n tikrintuvas
Tikrinkite vertimo failus dėl trūkstamų raktų, sugadintų vietos rezervavimo ženklų ir daugiskaitos neatitikimų. Viena komanda. 9 patikros. 32 formatai. Jokios konfigūracijos.
Problema
Vertimo problemos nematomos, kol su jomis nesusiduria naudotojai. Dėl trūkstamo rakto vietoje tikro teksto rodomas neapdorotas kelias, pavyzdžiui, „settings.billing.title“. Dėl sugadinto vietos rezervavimo ženklo „{price}“ rodomas kaip paprastas tekstas, o ne „9,99 USD“. Netinkamai suformuota daugiskaita nulaužia programą, kai skaičius lygus nuliui. Šios klaidos praslysta pro kodo peržiūrą, nes niekas rankomis nelygina 15 lokalės failų.
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
Sprendimas
i18n-validate vienu kartu nuskaito visus vertimo failus. Jis automatiškai aptinka katalogų išdėstymą ir failų formatą, palygina kiekvieną kalbą su etalonu ir tiksliai nurodo, kas ir kur netinkama. Jokių papildinių, konfigūracijos ar pasirinktinio testų kodo.
| 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 failedDiegimas
Įdiekite kaip visuotinį CLI įrankį naudodami pageidaujamą paketų tvarkytuvę. npm pakete yra savasis Rust dvejetainis failas, todėl nereikia kompiliuoti ar diegti vykdymo priklausomybių.
npm install -g @i18n-agent/i18n-validateNaudojimas
Nurodykite įrankiui lokalių katalogą. Jis automatiškai aptinka etaloninę kalbą, katalogų išdėstymą ir failų formatą. Daugumoje projektų konfigūruoti nereikia.
# 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
Pridėkite vertimų tikrinimą prie sujungimo užklausų konvejerio. Įrankis pateikia JUnit XML išvestį, kuri integruojama su GitHub Actions testų ataskaitomis, GitLab CI artefaktais ir bet kuria JUnit palaikančia CI sistema.
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.Palaikomi formatai
i18n-convert pagrįstas tikrintuvas iškart palaiko 32 i18n failų formatus. Nereikia konkretiems formatams skirtų papildinių ar konfigūracijos – įrankis automatiškai aptinka formatą pagal failo plėtinį ir turinį.
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
Konfigūracija
Daugumoje projektų viskas veikia be konfigūracijos. Kai reikia daugiau kontrolės – pakeisti patikros svarbą, nustatyti numatomas kalbas ar neįtraukti kuriamų kalbų – projekto šaknyje sukurkite .i18n-validate.toml failą.
# .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 validationIšbandykite i18n Agent dabar
Nuvilkite vertimo failą čia
JSON, YAML, PO, XML, CSV, Markdown, Properties
arba spustelėkite norėdami pasirinkti
Tikslinės kalbos