i18n Validator
Проверите да ли у датотекама превода недостају кључеви, да ли су чувари места неисправни и да ли су множине недоследне. Једна команда. 9 провера. 32 формата. Без конфигурације.
Проблем
Проблеми са преводом невидљиви су док корисници не наиђу на њих. Недостајући кључ приказује необрађену путању као што је "settings.billing.title" уместо стварног текста. Неисправан чувар места приказује "{price}" као дослован текст уместо "9,99 USD". Неисправно обликована множина изазива пад када је број нула. Ове грешке пролазе преглед кода јер нико ручно не упоређује 15 датотека локала.
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
Решење
i18n-validate скенира све Ваше датотеке превода у једном пролазу. Аутоматски открива распоред директоријума и формат датотеке, пореди сваки језик са референтним и тачно пријављује шта није у реду и где. Без додатака, конфигурације и прилагођеног кода тестова.
| 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 failedИнсталација
Инсталирајте га као глобалну CLI алатку помоћу омиљеног менаџера пакета. npm пакет садржи изворну Rust бинарну датотеку — нису потребни компајлирање ни зависности окружења за извршавање.
npm install -g @i18n-agent/i18n-validateУпотреба
Усмерите алатку на директоријум локала. Она аутоматски открива референтни језик, распоред директоријума и формат датотеке. За већину пројеката није потребна конфигурација.
# 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 интеграција
Додајте валидацију превода у pipeline за pull request. Алатка ствара JUnit XML који се интегрише са извештавачима о тестовима за GitHub Actions, артефактима GitLab CI система и сваким CI системом који подржава 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.Подржани формати
Захваљујући алатки i18n-convert, validator одмах подржава 32 формата i18n датотека. Нису потребни додаци или конфигурација за појединачне формате — алатка аутоматски открива формат на основу наставка датотеке и садржаја.
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
Конфигурација
За већину пројеката ради без конфигурације. Када Вам је потребна контрола — да промените озбиљност провере, поставите очекиване језике или изузмете језике на којима се још ради — направите датотеку .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 validationИспробајте i18n Agent сада
Пустите датотеку за превођење овде
JSON, YAML, PO, XML, CSV, Markdown, Properties
или кликните за избор
Циљни језици