i18n Validator
I-lint ang mga translation file para sa nawawalang keys, sirang placeholders, at plural inconsistencies. Isang utos. 9 na check. 32 na format. Zero config.
Ang Suliranin
Hindi nakikita ang mga isyu sa pagsasalin hangga't hindi ito nararanasan ng mga user. Ang nawawalang key ay nagpapakita ng raw path tulad ng "settings.billing.title" sa halip na totoong teksto. Ang sirang placeholder ay nagre-render ng "{price}" bilang literal na teksto sa halip na "$9.99". Ang malformed na plural ay nagka-crash kapag zero ang count. Nakakalusot ang mga bug na ito sa code review dahil walang nagma-manual diff ng 15 locale file.
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
Ang Solusyon
Sini-scan ng i18n-validate ang lahat ng inyong translation file sa isang pasada. Awtomatiko nitong nade-detect ang directory layout at file format, ikinukumpara ang bawat wika laban sa reference, at ini-uulat nang eksakto kung ano ang mali at kung saan. Walang plugin, walang configuration, walang custom test code.
| 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 failedPag-install
I-install ito bilang global CLI tool gamit ang inyong paboritong package manager. Nagba-bundle ang npm package ng native Rust binary—walang kailangang compilation o runtime dependencies.
npm install -g @i18n-agent/i18n-validatePaggamit
Ituro ang tool sa inyong locales directory. Awtomatiko nitong nade-detect ang reference language, directory layout, at file format. Hindi kailangan ng configuration sa karamihan ng mga proyekto.
# 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.xmlIntegrasyon sa CI/CD
Idagdag ang translation validation sa inyong pull request pipeline. Nag-o-output ang tool ng JUnit XML na nai-integrate sa GitHub Actions test reporters, GitLab CI artifacts, at anumang CI system na sumusuporta sa 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.Mga Sinusuportahang Format
Pinapagana ng i18n-convert, sinusuportahan ng validator ang 32 i18n file format out of the box. Walang kailangang format-specific na plugin o configuration—awtomatikong nade-detect ng tool ang format mula sa file extensions at nilalaman.
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
Pag-configure
Para sa karamihan ng mga proyekto, gumagana ang zero config. Kapag kailangan ninyo ng kontrol—i-override ang check severity, itakda ang inaasahang mga wika, o i-exclude ang WIP na mga wika—gumawa ng .i18n-validate.toml file sa project root.
# .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 validationSubukan ang i18n Agent Ngayon
I-drop dito ang inyong translation file
JSON, YAML, PO, XML, CSV, Markdown, Properties
o i-click para mag-browse
Mga target language