Skip to main content
Open Source CLI Tool

i18n doğrulayıcı

Eksik anahtarlar, bozuk yer tutucular ve tutarsız çoğul biçimleri için çeviri dosyalarını denetleyin. Tek komut. 9 denetim. 32 biçim. Sıfır yapılandırma.

9 checks 32 formats Zero config Native Rust binary

Sorun

Kullanıcılar karşılaşana kadar çeviri sorunları görünmez. Eksik bir anahtar, gerçek metin yerine "settings.billing.title" gibi ham bir yol gösterir. Bozuk bir yer tutucu, "$9.99" yerine "{price}" ifadesini düz metin olarak görüntüler. Hatalı biçimlendirilmiş bir çoğul ifade, sayı sıfır olduğunda çökmeye yol açar. Hiç kimse 15 yerel ayar dosyasındaki farkları elle karşılaştırmadığı için bu hatalar kod incelemesinden kaçar.

🔑

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

Çoğu doğrulama aracı belirli bir biçime özeldir (yalnızca JSON veya yalnızca YAML) ve her proje için özel test kodu gerektirir. Çeviri hataları çoğu zaman ancak kullanıcılar bozuk bir arayüz gördüğünde, çalışma sırasında yakalanır.

Çözüm

i18n-validate tüm çeviri dosyalarınızı tek geçişte tarar. Klasör düzeninizi ve dosya biçiminizi otomatik olarak algılar, her dili referans dille karşılaştırır ve sorunun ne olduğunu ve nerede bulunduğunu tam olarak bildirir. Eklenti, yapılandırma veya özel test kodu gerekmez.

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

Kurulum

Tercih ettiğiniz paket yöneticisini kullanarak genel bir CLI aracı olarak yükleyin. npm paketi yerel bir Rust ikili dosyası içerir; derleme veya çalışma zamanı bağımlılığı gerekmez.

Terminal
npm install -g @i18n-agent/i18n-validate
npm paketi macOS, Linux ve Windows için önceden derlenmiş yerel bir ikili dosya içerir. Rust araç zinciri gerekmez.

Kullanım

Araca yerel ayar klasörünüzü gösterin. Referans dili, klasör düzenini ve dosya biçimini otomatik olarak algılar. Çoğu proje için yapılandırma gerekmez.

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 entegrasyonu

Pull request işlem hattınıza çeviri doğrulaması ekleyin. Araç; GitHub Actions test raporlayıcıları, GitLab CI yapıtları ve JUnit'i destekleyen tüm CI sistemleriyle bütünleşen JUnit XML çıktısı üretir.

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

Desteklenen biçimler

i18n-convert ile çalışan doğrulayıcı, kullanıma hazır olarak 32 i18n dosya biçimini destekler. Biçime özgü eklenti veya yapılandırma gerekmez; araç biçimi dosya uzantılarından ve içerikten otomatik olarak algılar.

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

Yapılandırma

Çoğu projede yapılandırma olmadan çalışır. Denetim önem derecesini değiştirmek, beklenen dilleri belirlemek veya geliştirilmekte olan dilleri hariç tutmak istediğinizde proje kökünde bir .i18n-validate.toml dosyası oluşturun.

.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'ı şimdi deneyin

Çeviri dosyanızı buraya bırakın

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

veya göz atmak için tıklayın

Hedef diller

Kayıt gerekmezAnında fiyat tahmini

Sık sorulan sorular