Skip to main content
Open Source CLI Tool

i18n-i validaator

Leia tõlkefailidest puuduvad võtmed, katkised kohatäitjad ja mitmusevormide vastuolud. Üks käsk. 9 kontrolli. 32 vormingut. Seadistamist pole.

9 checks 32 formats Zero config Native Rust binary

Probleem

Tõlkeprobleemid jäävad nähtamatuks, kuni kasutajad nendeni jõuavad. Puuduv võti kuvab päris teksti asemel töötlemata rada, näiteks "settings.billing.title". Katkine kohatäitja renderdab väärtuse "9,99 $" asemel sõnasõnalise teksti "{price}". Vigane mitmusevorm põhjustab nullkoguse korral krahhi. Need vead lipsavad koodiülevaatusest läbi, sest keegi ei võrdle 15 lokaadifaili käsitsi.

🔑

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

Enamik valideerimistööriistu on vormingupõhised (ainult JSON või ainult YAML) ning nõuavad igale projektile kohandatud testikoodi. Tõlkevead leitakse sageli alles käitusajal, kui kasutajad näevad katkist kasutajaliidest.

Lahendus

i18n-validate skannib kõik tõlkefailid ühe käiguga. See tuvastab automaatselt kataloogipaigutuse ja failivormingu, võrdleb iga keelt võrdluskeelega ning annab täpselt teada, mis ja kus on valesti. Pluginaid, seadistamist ega kohandatud testikoodi pole vaja.

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

Paigaldamine

Paigalda globaalse CLI-tööriistana eelistatud paketihalduriga. npm-pakett sisaldab omamaist Rusti binaari — kompileerimist ega käitusaegseid sõltuvusi pole vaja.

Terminal
npm install -g @i18n-agent/i18n-validate
npm-pakett sisaldab macOS-i, Linux'i ja Windows'i jaoks eelkompileeritud omamaist binaari. Rusti tööriistaahelat pole vaja.

Kasutamine

Suuna tööriist oma lokaadikataloogile. See tuvastab automaatselt võrdluskeele, kataloogipaigutuse ja failivormingu. Enamik projekte ei vaja seadistamist.

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 lõiming

Lisa tõlkevalideerimine pull request'i konveierisse. Tööriist väljastab JUnit XML-i, mis lõimub GitHub Actions'i testiraportite, GitLab CI artefaktide ja kõigi JUnit'i toetavate CI-süsteemidega.

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

Toetatud vormingud

i18n-convert'i toel toetab validaator kohe 32 i18n-failivormingut. Vormingupõhiseid pluginaid ega seadistamist pole vaja — tööriist tuvastab vormingu automaatselt faililaiendi ja sisu järgi.

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

Seadistamine

Enamiku projektide puhul töötab seadistamiseta kasutus. Kui vajad rohkem kontrolli — kontrolli raskusastme alistamist, oodatud keelte määramist või pooleliolevate keelte välistamist — loo projekti juurtasemel fail .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

Proovi i18n Agent'i kohe

Kukuta tõlkefail siia

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

või klõpsa faili valimiseks

Sihtkeeled

Registreerumine pole vajalikKohene hinnang

Korduma kippuvad küsimused