i18n validators
Pārbaudiet tulkošanas failus, lai atrastu trūkstošās atslēgas, bojātus vietturus un daudzskaitļa neatbilstības. Viena komanda. 9 pārbaudes. 32 formāti. Bez konfigurēšanas.
Problēma
Tulkošanas problēmas nav redzamas, līdz ar tām saskaras lietotāji. Trūkstošas atslēgas dēļ īsta teksta vietā tiek rādīts neapstrādāts ceļš, piemēram, „settings.billing.title“. Bojāta viettura dēļ „{price}“ tiek rādīts kā parasts teksts, nevis „9,99 USD“. Nepareizi veidots daudzskaitlis izraisa avāriju, kad skaits ir nulle. Šīs kļūdas izslīd cauri koda pārskatīšanai, jo neviens manuāli nesalīdzina 15 lokalizācijas failus.
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
Risinājums
i18n-validate vienā reizē skenē visus tulkošanas failus. Tas automātiski nosaka direktoriju izkārtojumu un failu formātu, salīdzina katru valodu ar atsauci un precīzi ziņo, kas un kur nav pareizi. Bez spraudņiem, konfigurācijas vai pielāgota testu 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 failedInstalēšana
Instalējiet kā globālu CLI rīku ar vēlamo pakotņu pārvaldnieku. npm pakotnē ir vietējais Rust binārais fails, tādēļ nav vajadzīga kompilēšana vai izpildlaika atkarības.
npm install -g @i18n-agent/i18n-validateLietošana
Norādiet rīkam lokalizāciju direktoriju. Tas automātiski nosaka atsauces valodu, direktoriju izkārtojumu un failu formātu. Vairumam projektu konfigurēšana nav vajadzīga.
# 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 integrācija
Pievienojiet tulkojumu validāciju izmaiņu pieprasījumu konveijeram. Rīks izvada JUnit XML, kas integrējas ar GitHub Actions testu ziņotājiem, GitLab CI artefaktiem un jebkuru CI sistēmu, kas atbalsta 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.Atbalstītie formāti
Ar i18n-convert darbinātais validators uzreiz atbalsta 32 i18n failu formātus. Nav vajadzīgi formātiem specifiski spraudņi vai konfigurācija — rīks automātiski nosaka formātu pēc faila paplašinājuma un satura.
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ācija
Vairumam projektu viss darbojas bez konfigurēšanas. Ja vajadzīga lielāka kontrole — mainīt pārbaudes nopietnību, iestatīt paredzētās valodas vai izslēgt izstrādes stadijā esošās valodas — projekta saknē izveidojiet .i18n-validate.toml failu.
# .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 validationIzmēģiniet i18n Agent tūlīt
Nometiet tulkošanas failu šeit
JSON, YAML, PO, XML, CSV, Markdown, Properties
vai noklikšķiniet, lai izvēlētos
Mērķa valodas