Εργαλείο επικύρωσης i18n
Ελέγξτε στατικά τα αρχεία μετάφρασης για ελλείποντα κλειδιά, κατεστραμμένα placeholders και ασυνέπειες πληθυντικού. Μία εντολή. 9 έλεγχοι. 32 μορφές. Χωρίς ρυθμίσεις.
Το πρόβλημα
Τα προβλήματα μετάφρασης παραμένουν αόρατα μέχρι να τα συναντήσουν οι χρήστες. Ένα ελλείπον κλειδί εμφανίζει μια ανεπεξέργαστη διαδρομή όπως «settings.billing.title» αντί για πραγματικό κείμενο. Ένα κατεστραμμένο placeholder αποδίδει το «{price}» ως κυριολεκτικό κείμενο αντί για «9,99 $». Μια λανθασμένη μορφή πληθυντικού προκαλεί κατάρρευση όταν το πλήθος είναι μηδέν. Αυτά τα σφάλματα ξεφεύγουν από τον έλεγχο κώδικα, επειδή κανείς δεν συγκρίνει χειροκίνητα 15 αρχεία γλώσσας.
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
Η λύση
Το i18n-validate σαρώνει όλα τα αρχεία μετάφρασης σε ένα πέρασμα. Εντοπίζει αυτόματα τη διάταξη των καταλόγων και τη μορφή των αρχείων σας, συγκρίνει κάθε γλώσσα με τη γλώσσα αναφοράς και αναφέρει ακριβώς το πρόβλημα και τη θέση του. Χωρίς πρόσθετα, χωρίς ρυθμίσεις, χωρίς προσαρμοσμένο κώδικα δοκιμών.
| 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 failedΕγκατάσταση
Εγκαταστήστε το ως καθολικό εργαλείο CLI με τον διαχειριστή πακέτων της επιλογής σας. Το πακέτο npm περιλαμβάνει ένα εγγενές εκτελέσιμο αρχείο Rust — δεν απαιτείται μεταγλώττιση ούτε εξαρτήσεις χρόνου εκτέλεσης.
npm install -g @i18n-agent/i18n-validateΧρήση
Δώστε στο εργαλείο τη διαδρομή του καταλόγου γλωσσών σας. Εντοπίζει αυτόματα τη γλώσσα αναφοράς, τη διάταξη των καταλόγων και τη μορφή αρχείων. Για τα περισσότερα έργα δεν απαιτείται καμία ρύθμιση.
# 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
Προσθέστε την επικύρωση μεταφράσεων στο pipeline των pull requests. Το εργαλείο παράγει JUnit XML που ενσωματώνεται με test reporters του GitHub Actions, artifacts του GitLab CI και οποιοδήποτε σύστημα CI υποστηρίζει 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.Υποστηριζόμενες μορφές
Με την υποστήριξη του i18n-convert, το εργαλείο επικύρωσης υποστηρίζει εξαρχής 32 μορφές αρχείων i18n. Δεν απαιτούνται πρόσθετα ή ρυθμίσεις για συγκεκριμένες μορφές — το εργαλείο εντοπίζει αυτόματα τη μορφή από τις επεκτάσεις και το περιεχόμενο των αρχείων.
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
Ρυθμίσεις
Για τα περισσότερα έργα δεν απαιτούνται ρυθμίσεις. Όταν χρειάζεστε περισσότερο έλεγχο — για να αλλάξετε το επίπεδο σοβαρότητας ενός ελέγχου, να ορίσετε τις αναμενόμενες γλώσσες ή να εξαιρέσετε γλώσσες WIP — δημιουργήστε ένα αρχείο .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
Αφήστε εδώ το αρχείο μετάφρασής σας
JSON, YAML, PO, XML, CSV, Markdown, Properties
ή κάντε κλικ για να επιλέξετε αρχείο
Γλώσσες-στόχοι