Skip to main content
Open Source CLI Tool

i18n Validator

Проверите да ли у датотекама превода недостају кључеви, да ли су чувари места неисправни и да ли су множине недоследне. Једна команда. 9 провера. 32 формата. Без конфигурације.

9 checks 32 formats Zero config Native Rust binary

Проблем

Проблеми са преводом невидљиви су док корисници не наиђу на њих. Недостајући кључ приказује необрађену путању као што је "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

Већина алатки за валидацију везана је за одређени формат (само JSON, само YAML) и захтева прилагођени код тестова за сваки пројекат. Грешке у преводу често се открију тек током извршавања, када корисници виде неисправан кориснички интерфејс.

Решење

i18n-validate скенира све Ваше датотеке превода у једном пролазу. Аутоматски открива распоред директоријума и формат датотеке, пореди сваки језик са референтним и тачно пријављује шта није у реду и где. Без додатака, конфигурације и прилагођеног кода тестова.

CheckSeverityWhat it catches
missing-keyserrorKey exists in reference but is absent in a translation
extra-keyserrorKey exists in translation but not in the reference
placeholderserror{price}, {{name}}, %s differ between languages
plural-structureerrorPlural forms are malformed or missing required categories
missing-languageserrorExpected language has no files or directory
orphaned-languageserrorLanguage files exist but are not in the expected list
parse-errorserrorFile fails to parse (broken JSON, XML, YAML, etc.)
empty-valueswarningKey is present but the translation is an empty string
untranslatedwarningTranslation is identical to the reference language
Terminal output
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 бинарну датотеку — нису потребни компајлирање ни зависности окружења за извршавање.

Terminal
npm install -g @i18n-agent/i18n-validate
npm пакет садржи унапред компајлирану изворну бинарну датотеку за macOS, Linux и Windows. Rust toolchain није потребан.

Употреба

Усмерите алатку на директоријум локала. Она аутоматски открива референтни језик, распоред директоријума и формат датотеке. За већину пројеката није потребна конфигурација.

Terminal
# 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.xml

CI/CD интеграција

Додајте валидацију превода у pipeline за pull request. Алатка ствара JUnit XML који се интегрише са извештавачима о тестовима за GitHub Actions, артефактима GitLab CI система и сваким CI системом који подржава JUnit.

.github/workflows/validate-i18n.yml
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
The tool exits with code 1 when errors are found, so it naturally fails CI. Use --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
# .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

или кликните за избор

Циљни језици

Регистрација није потребнаТренутна процена

Честа питања