Skip to main content
Open Source CLI Tool

i18n-validaattori

Tarkista käännöstiedostojen puuttuvat avaimet, rikkoutuneet paikkamerkit ja monikkomuotojen epäjohdonmukaisuudet. Yksi komento. 9 tarkistusta. 32 muotoa. Ei määrityksiä.

9 checks 32 formats Zero config Native Rust binary

Ongelma

Käännösongelmat ovat näkymättömiä, kunnes käyttäjät kohtaavat ne. Puuttuva avain näyttää oikean tekstin sijaan käsittelemättömän polun, kuten "settings.billing.title". Rikkoutunut paikkamerkki hahmontaa "{price}" tekstinä arvon "9,99 $" sijaan. Virheellinen monikkomuoto kaatuu määrän ollessa nolla. Nämä virheet läpäisevät koodintarkistuksen, koska kukaan ei vertaa 15 kieliversiotiedostoa käsin.

🔑

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

Useimmat validointityökalut ovat muotokohtaisia (vain JSON tai vain YAML) ja vaativat mukautettua testikoodia jokaiseen projektiin. Käännösvirheet löytyvät usein vasta suorituksen aikana, kun käyttäjät näkevät rikkoutuneen käyttöliittymän.

Ratkaisu

i18n-validate tarkistaa kaikki käännöstiedostosi yhdellä ajolla. Se tunnistaa hakemistorakenteen ja tiedostomuodon automaattisesti, vertaa jokaista kieltä viitekieleen ja ilmoittaa täsmälleen, mikä on vialla ja missä. Ei lisäosia, määrityksiä tai mukautettua testikoodia.

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

Asennus

Asenna yleiseksi CLI-työkaluksi haluamallasi pakettienhallinnalla. npm-paketti sisältää natiivin Rust-binääritiedoston — kääntämistä tai suorituksenaikaisia riippuvuuksia ei tarvita.

Terminal
npm install -g @i18n-agent/i18n-validate
npm-paketti sisältää valmiiksi käännetyn natiivin binääritiedoston macOS:lle, Linux:ille ja Windows:ille. Rust-työkaluketjua ei tarvita.

Käyttö

Osoita työkalu kieliversiohakemistoosi. Se tunnistaa viitekielen, hakemistorakenteen ja tiedostomuodon automaattisesti. Useimmat projektit eivät tarvitse lainkaan määrityksiä.

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

Lisää käännösvalidointi pull request -putkeesi. Työkalu tuottaa JUnit XML -tulosteen, joka integroituu GitHub Actions:in testiraportoijiin, GitLab CI -artefakteihin ja kaikkiin JUnit:ia tukeviin CI-järjestelmiin.

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

Tuetut muodot

i18n-convert:in avulla validaattori tukee heti 32:ta i18n-tiedostomuotoa. Muotokohtaisia lisäosia tai määrityksiä ei tarvita — työkalu tunnistaa muodon automaattisesti tiedostopäätteestä ja sisällöstä.

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

Määritykset

Useimmille projekteille määrityksetön käyttö toimii. Kun tarvitset enemmän hallintaa — tarkistusten vakavuustason ohittamista, odotettujen kielten määrittämistä tai keskeneräisten kielten jättämistä pois — luo projektin juureen .i18n-validate.toml-tiedosto.

.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

Kokeile i18n Agent:ia nyt

Pudota käännöstiedostosi tähän

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

tai valitse napsauttamalla

Kohdekielet

Rekisteröitymistä ei tarvitaVälitön arvio

Usein kysytyt kysymykset