Skip to main content
Open Source CLI Tool

Preverjevalnik i18n

Preverite manjkajoče ključe, poškodovane označbe mest in nedosledne množinske oblike. En ukaz. 9 preverjanj. 32 oblik. Brez konfiguriranja.

9 checks 32 formats Zero config Native Rust binary

Težava

Težave s prevodi ostanejo nevidne, dokler nanje ne naletijo uporabniki. Zaradi manjkajočega ključa se namesto pravega besedila prikaže neobdelana pot, kot je »settings.billing.title«. Poškodovana označba mesta se prikaže kot dobesedno besedilo »{price}« namesto »9,99 €«. Napačna množinska oblika povzroči zrušitev, ko je število nič. Te napake uidejo pregledu kode, ker nihče ročno ne primerja 15 jezikovnih datotek.

🔑

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

Večina preverjevalnikov podpira samo določeno obliko, na primer le JSON ali YAML, in za vsak projekt zahteva testno kodo po meri. Napake prevodov se pogosto odkrijejo šele med izvajanjem, ko uporabniki vidijo pokvarjen vmesnik.

Rešitev

i18n-validate v enem prehodu pregleda vse Vaše prevajalske datoteke. Samodejno zazna postavitev imenikov in obliko datotek, primerja vsak jezik z referenčnim ter natančno sporoči, kaj in kje je narobe. Brez vtičnikov, konfiguracije ali testne kode po meri.

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

Namestitev

Namestite ga kot globalno orodje CLI s priljubljenim upravljalnikom paketov. Paket npm vključuje izvorno binarno datoteko Rust, zato prevajanje ali izvajalne odvisnosti niso potrebni.

Terminal
npm install -g @i18n-agent/i18n-validate
Paket npm vključuje vnaprej prevedeno izvorno binarno datoteko za macOS, Linux in Windows. Veriga orodij Rust ni potrebna.

Uporaba

Orodje usmerite v imenik z jeziki. Samodejno zazna referenčni jezik, postavitev imenikov in obliko datotek. Večina projektov ne potrebuje konfiguracije.

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

Integracija CI/CD

Preverjanje prevodov dodajte v pipeline zahtevkov za vključitev. Orodje ustvari JUnit XML, ki se poveže s poročevalniki testov GitHub Actions, artefakti GitLab CI in vsemi sistemi CI s podporo za 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.

Podprte oblike

Preverjevalnik s pomočjo i18n-convert brez dodatne nastavitve podpira 32 oblik datotek i18n. Vtičniki ali konfiguracija za posamezno obliko niso potrebni — orodje obliko samodejno zazna iz pripon datotek in vsebine.

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

Konfiguracija

Za večino projektov konfiguracija ni potrebna. Če potrebujete več nadzora — želite preglasiti resnost preverjanj, nastaviti pričakovane jezike ali izključiti jezike v delu — v korenu projekta ustvarite datoteko .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

Preizkusite i18n Agent zdaj

Spustite prevajalsko datoteko sem

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

ali kliknite za izbiro

Ciljni jeziki

Registracija ni potrebnaTakojšnja ocena

Pogosta vprašanja