Pengesah i18n
Lint fail terjemahan untuk mengesan kekunci hilang, ruang letak rosak, dan ketidaktekalan bentuk jamak. Satu perintah. 9 pemeriksaan. 32 format. Tanpa konfigurasi.
Masalahnya
Masalah terjemahan tidak kelihatan sehingga dialami pengguna. Kekunci yang hilang memaparkan laluan mentah seperti "settings.billing.title", bukan teks sebenar. Ruang letak rosak memaparkan "{price}" sebagai teks harfiah, bukan "$9.99". Bentuk jamak tidak sah menyebabkan aplikasi terhenti apabila bilangannya sifar. Pepijat ini terlepas semakan kod kerana tiada sesiapa membandingkan 15 fail bahasa secara manual.
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
Penyelesaiannya
i18n-validate mengimbas semua fail terjemahan dalam satu proses. Alat mengesan susun atur direktori dan format fail secara automatik, membandingkan setiap bahasa dengan rujukan, serta melaporkan masalah dan lokasinya dengan tepat. Tiada pemalam, konfigurasi, atau kod ujian tersuai.
| Check | Severity | What it catches |
|---|---|---|
| missing-keys | error | Key exists in reference but is absent in a translation |
| extra-keys | error | Key exists in translation but not in the reference |
| placeholders | error | {price}, {{name}}, %s differ between languages |
| plural-structure | error | Plural forms are malformed or missing required categories |
| missing-languages | error | Expected language has no files or directory |
| orphaned-languages | error | Language files exist but are not in the expected list |
| parse-errors | error | File fails to parse (broken JSON, XML, YAML, etc.) |
| empty-values | warning | Key is present but the translation is an empty string |
| untranslated | warning | Translation is identical to the reference language |
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 failedPemasangan
Pasang sebagai alat CLI global menggunakan pengurus pakej pilihan anda. Pakej npm menyertakan binari Rust natif—tiada kompilasi atau kebergantungan masa jalan diperlukan.
npm install -g @i18n-agent/i18n-validatePenggunaan
Halakan alat kepada direktori bahasa. Alat mengesan bahasa rujukan, susun atur direktori, dan format fail secara automatik. Kebanyakan projek tidak memerlukan konfigurasi.
# 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.xmlPenyepaduan CI/CD
Tambahkan pengesahan terjemahan pada saluran permintaan tarik. Alat menghasilkan JUnit XML yang bersepadu dengan pelapor ujian GitHub Actions, artifak GitLab CI, dan sebarang sistem CI yang menyokong JUnit.
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--strict to also fail on warnings.Format yang Disokong
Dengan sokongan i18n-convert, pengesah mengendalikan 32 format fail i18n secara langsung. Tiada pemalam atau konfigurasi khusus format diperlukan—alat mengesan format secara automatik daripada sambungan fail dan kandungan.
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
Konfigurasi
Tanpa konfigurasi sudah mencukupi untuk kebanyakan projek. Apabila anda memerlukan kawalan—menggantikan tahap keterukan pemeriksaan, menetapkan bahasa yang dijangka, atau mengecualikan bahasa WIP—cipta fail .i18n-validate.toml pada akar projek.
# .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 validationCuba i18n Agent Sekarang
Lepaskan fail terjemahan anda di sini
JSON, YAML, PO, XML, CSV, Markdown, Properties
atau klik untuk semak imbas
Bahasa sasaran