Skip to main content
Open Source CLI Tool

i18n Validator

Lintelje a fordításfájlokat hiányzó kulcsok, hibás helyőrzők és következetlen többes számú alakok után. Egy parancs. 9 ellenőrzés. 32 formátum. Nulla beállítás.

9 checks 32 formats Zero config Native Rust binary

A probléma

A fordítási problémák láthatatlanok, amíg a felhasználók nem találkoznak velük. Egy hiányzó kulcs valódi szöveg helyett nyers útvonalat, például „settings.billing.title” értéket jelenít meg. Egy hibás helyőrző a „{price}” szöveget írja ki a „$9.99” helyett. Egy hibás többesszám-forma összeomlik, amikor a szám nulla. Ezek a hibák átcsúsznak a kódellenőrzésen, mert senki sem hasonlít össze kézzel 15 területifájlt.

🔑

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

A legtöbb ellenőrzőeszköz formátumspecifikus (csak JSON vagy csak YAML), és minden projekthez egyéni tesztkódot igényel. A fordítási hibák gyakran csak futásidőben derülnek ki, amikor a felhasználók hibás felületet látnak.

A megoldás

Az i18n-validate egyetlen menetben átvizsgálja az összes fordításfájlt. Automatikusan észleli a könyvtárszerkezetet és a fájlformátumot, minden nyelvet összehasonlít a referenciával, és pontosan jelzi, mi és hol hibás. Nincs bővítmény, beállítás vagy egyéni tesztkód.

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

Telepítés

Telepítse globális parancssori eszközként a választott csomagkezelővel. Az npm-csomag natív Rust-binárist tartalmaz — nincs szükség fordításra vagy futásidejű függőségre.

Terminal
npm install -g @i18n-agent/i18n-validate
Az npm-csomag előre lefordított natív binárist tartalmaz macOS, Linux és Windows rendszerhez. Nincs szükség Rust-eszközláncra.

Használat

Irányítsa az eszközt a területi könyvtárra. Automatikusan észleli a referencianyelvet, a könyvtárszerkezetet és a fájlformátumot. A legtöbb projektnél nincs szükség beállításra.

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

Integrating with CI/CD

Adjon fordításellenőrzést a pull request folyamatához. Az eszköz JUnit XML-kimenetet készít, amely együttműködik a GitHub Actions tesztjelentéseivel, a GitLab CI műtermékeivel és minden JUnitot támogató CI-rendszerrel.

.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.

Támogatott formátumok

Az i18n-convert révén az ellenőrző alapból 32 i18n-fájlformátumot támogat. Nincs szükség formátumspecifikus bővítményekre vagy beállításra — az eszköz a fájlkiterjesztésből és a tartalomból automatikusan felismeri a formátumot.

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

Beállítás

A legtöbb projektnél a nulla beállítás működik. Ha vezérlésre van szüksége — felülírná az ellenőrzések súlyosságát, megadná az elvárt nyelveket vagy kizárná a fejlesztés alatt álló nyelveket —, hozzon létre .i18n-validate.toml fájlt a projekt gyökerében.

.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

Try i18n Agent Now

Drop your translation file here

JSON, YAML, PO, XML, CSV, Markdown, Properties

or click to browse

Target languages

No signup requiredInstant estimate

Gyakran Ismételt Kérdések