Skip to main content
Open Source CLI Tool

i18n Validator

Kontroller oversettelsesfiler for manglende nøkler, ødelagte plassholdere og inkonsistente flertallsformer. Én kommando. 9 sjekker. 32 formater. Ingen konfigurasjon.

9 checks 32 formats Zero config Native Rust binary

Problemet

Oversettelsesproblemer er usynlige helt til brukerne støter på dem. En manglende nøkkel viser en rå sti som "settings.billing.title" i stedet for ekte tekst. En ødelagt plassholder gjengir "{price}" som bokstavelig tekst i stedet for "$9.99". En feilformatert flertallsform krasjer når antallet er null. Disse feilene glipper gjennom kodegjennomgangen fordi ingen sammenligner 15 språkfiler manuelt.

🔑

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

De fleste valideringsverktøy er formatspesifikke (kun JSON, kun YAML) og krever tilpasset testkode for hvert prosjekt. Oversettelsesfeil oppdages ofte først ved kjøretid, når brukerne ser et ødelagt brukergrensesnitt.

Løsningen

i18n-validate skanner alle oversettelsesfilene dine i én omgang. Verktøyet oppdager automatisk katalogstrukturen og filformatet, sammenligner hvert språk mot referansen, og rapporterer nøyaktig hva som er galt og hvor. Ingen plugin-moduler, ingen konfigurasjon, ingen tilpasset testkode.

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

Installasjon

Installer som et globalt CLI-verktøy med pakkebehandleren du foretrekker. npm-pakken inneholder en forhåndskompilert Rust-binærfil — ingen kompilering eller kjøretidsavhengigheter kreves.

Terminal
npm install -g @i18n-agent/i18n-validate
npm-pakken inneholder en forhåndskompilert binærfil for macOS, Linux og Windows. Ingen Rust-verktøykjede er nødvendig.

Bruk

Pek verktøyet mot locales-katalogen din. Det oppdager automatisk referansespråket, katalogstrukturen og filformatet. Ingen konfigurasjon kreves for de fleste prosjekter.

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

Legg til oversettelsesvalidering i pull request-pipelinen din. Verktøyet genererer JUnit XML som kan brukes med testrapportering i GitHub Actions, GitLab CI-artefakter og alle CI-systemer som støtter 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.

Støttede formater

Validatoren bruker i18n-convert og har innebygd støtte for 32 i18n-filformater. Det kreves ingen formatspesifikke utvidelser eller konfigurasjon — verktøyet oppdager automatisk formatet ut fra filendelser og innhold.

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

Konfigurasjon

For de fleste prosjekter fungerer verktøyet uten konfigurasjon. Når du trenger mer kontroll — for eksempel for å overstyre alvorlighetsgraden for sjekker, angi forventede språk eller ekskludere språk under arbeid — oppretter du en .i18n-validate.toml-fil i prosjektets rotmappe.

.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

Prøv i18n Agent nå

Slipp oversettelsesfilen din her

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

eller klikk for å bla gjennom

Målspråk

Ingen registrering krevesUmiddelbart estimat

Ofte stilte spørsmål