Skip to main content
Open Source CLI Tool

i18n validators

Pārbaudiet tulkošanas failus, lai atrastu trūkstošās atslēgas, bojātus vietturus un daudzskaitļa neatbilstības. Viena komanda. 9 pārbaudes. 32 formāti. Bez konfigurēšanas.

9 checks 32 formats Zero config Native Rust binary

Problēma

Tulkošanas problēmas nav redzamas, līdz ar tām saskaras lietotāji. Trūkstošas atslēgas dēļ īsta teksta vietā tiek rādīts neapstrādāts ceļš, piemēram, „settings.billing.title“. Bojāta viettura dēļ „{price}“ tiek rādīts kā parasts teksts, nevis „9,99 USD“. Nepareizi veidots daudzskaitlis izraisa avāriju, kad skaits ir nulle. Šīs kļūdas izslīd cauri koda pārskatīšanai, jo neviens manuāli nesalīdzina 15 lokalizācijas failus.

🔑

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

Vairums validācijas rīku ir formātam specifiski (tikai JSON vai tikai YAML) un katram projektam prasa pielāgotu testu kodu. Tulkošanas kļūdas bieži atklāj tikai izpildlaikā, kad lietotāji redz bojātu UI.

Risinājums

i18n-validate vienā reizē skenē visus tulkošanas failus. Tas automātiski nosaka direktoriju izkārtojumu un failu formātu, salīdzina katru valodu ar atsauci un precīzi ziņo, kas un kur nav pareizi. Bez spraudņiem, konfigurācijas vai pielāgota testu koda.

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

Instalēšana

Instalējiet kā globālu CLI rīku ar vēlamo pakotņu pārvaldnieku. npm pakotnē ir vietējais Rust binārais fails, tādēļ nav vajadzīga kompilēšana vai izpildlaika atkarības.

Terminal
npm install -g @i18n-agent/i18n-validate
npm pakotnē ir iepriekš kompilēts vietējais binārais fails macOS, Linux un Windows. Rust rīku ķēde nav vajadzīga.

Lietošana

Norādiet rīkam lokalizāciju direktoriju. Tas automātiski nosaka atsauces valodu, direktoriju izkārtojumu un failu formātu. Vairumam projektu konfigurēšana nav vajadzīga.

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 integrācija

Pievienojiet tulkojumu validāciju izmaiņu pieprasījumu konveijeram. Rīks izvada JUnit XML, kas integrējas ar GitHub Actions testu ziņotājiem, GitLab CI artefaktiem un jebkuru CI sistēmu, kas atbalsta 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.

Atbalstītie formāti

Ar i18n-convert darbinātais validators uzreiz atbalsta 32 i18n failu formātus. Nav vajadzīgi formātiem specifiski spraudņi vai konfigurācija — rīks automātiski nosaka formātu pēc faila paplašinājuma un satura.

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

Konfigurācija

Vairumam projektu viss darbojas bez konfigurēšanas. Ja vajadzīga lielāka kontrole — mainīt pārbaudes nopietnību, iestatīt paredzētās valodas vai izslēgt izstrādes stadijā esošās valodas — projekta saknē izveidojiet .i18n-validate.toml failu.

.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

Izmēģiniet i18n Agent tūlīt

Nometiet tulkošanas failu šeit

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

vai noklikšķiniet, lai izvēlētos

Mērķa valodas

Reģistrācija nav vajadzīgaTūlītēja tāme

Bieži uzdotie jautājumi