Skip to main content
Open Source CLI Tool

i18n-Validator

Prüfen Sie Übersetzungsdateien auf fehlende Schlüssel, beschädigte Platzhalter und inkonsistente Pluralformen. Ein Befehl. 9 Prüfungen. 32 Formate. Keine Konfiguration.

9 checks 32 formats Zero config Native Rust binary

Das Problem

Übersetzungsprobleme bleiben unsichtbar, bis Personen auf sie stoßen. Bei einem fehlenden Schlüssel erscheint ein unverarbeiteter Pfad wie „settings.billing.title“ statt echtem Text. Ein beschädigter Platzhalter zeigt „{price}“ als Literaltext statt „9,99 $“ an. Eine fehlerhafte Pluralform verursacht bei null einen Absturz. Diese Fehler entgehen der Codeprüfung, weil niemand 15 Locale-Dateien manuell vergleicht.

🔑

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

Die meisten Validierungswerkzeuge sind formatspezifisch (nur JSON oder nur YAML) und erfordern für jedes Projekt individuellen Testcode. Übersetzungsfehler werden häufig erst zur Laufzeit erkannt, wenn Personen eine beschädigte Benutzeroberfläche sehen.

Die Lösung

i18n-validate durchsucht alle Ihre Übersetzungsdateien in einem Durchgang. Es erkennt Verzeichnisstruktur und Dateiformat automatisch, vergleicht jede Sprache mit der Referenz und meldet exakt, was wo fehlerhaft ist. Keine Plug-ins, keine Konfiguration, kein individueller Testcode.

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

Installation

Installieren Sie das Werkzeug mit Ihrem bevorzugten Paketmanager als globale CLI. Das npm-Paket enthält eine native Rust-Binärdatei – Kompilierung oder Laufzeitabhängigkeiten sind nicht erforderlich.

Terminal
npm install -g @i18n-agent/i18n-validate
Das npm-Paket enthält eine vorkompilierte native Binärdatei für macOS, Linux und Windows. Eine Rust-Toolchain ist nicht erforderlich.

Verwendung

Verweisen Sie das Werkzeug auf Ihr Locales-Verzeichnis. Es erkennt Referenzsprache, Verzeichnisstruktur und Dateiformat automatisch. Für die meisten Projekte ist keine Konfiguration erforderlich.

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

Fügen Sie Ihrer Pull-Request-Pipeline eine Übersetzungsvalidierung hinzu. Das Werkzeug gibt JUnit-XML aus, das sich in Test-Reporter von GitHub Actions, GitLab-CI-Artefakte und jedes CI-System mit JUnit-Unterstützung integrieren lässt.

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

Unterstützte Formate

Der auf i18n-convert basierende Validator unterstützt sofort 32 i18n-Dateiformate. Formatspezifische Plug-ins oder Konfiguration sind nicht erforderlich – das Werkzeug erkennt das Format automatisch anhand von Dateierweiterung und Inhalt.

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

Konfiguration

Für die meisten Projekte funktioniert es ohne Konfiguration. Wenn Sie mehr Kontrolle benötigen – etwa die Schwere von Prüfungen überschreiben, erwartete Sprachen festlegen oder in Bearbeitung befindliche Sprachen ausschließen – erstellen Sie im Projektstamm eine Datei .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 jetzt testen

Legen Sie Ihre Übersetzungsdatei hier ab

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

oder zum Auswählen klicken

Zielsprachen

Keine Registrierung erforderlichSofortiges Angebot

Häufig gestellte Fragen