Übersetze i18next und JSON-Locale-Dateien
Locale-JSON ist verschachtelt und seine Strings enthalten Variablen wie {{name}}. Ein Tool, das nur Text sieht, kann einen Schlüssel umbenennen, die Verschachtelung abflachen oder die Variable übersetzen. KAERIS gibt die Datei in derselben Struktur zurück, mit jeder Variable an ihrem ursprünglichen Ort.
KAERIS hat diese Seite übersetzt und jede Zeile durch Rückübersetzung geprüft. Ein Muttersprachler hat sie noch nicht überprüft. Englisches Original
Wie eine Locale-JSON-Datei aufgebaut ist
Eine Datei pro Sprache (en.json, de.json) oder eine pro Namespace (locales/en/common.json). Die Schlüssel sind der Vertrag mit Ihrem Code, daher werden nur die Werte übersetzt. i18next schreibt Pluralformen als separate Schlüssel (inbox_one, inbox_other); next-intl, Vue I18n und FormatJS fassen sie in einen ICU-String zusammen.
{
"nav": { "greeting": "Welcome back, {{name}}!" },
"inbox_one": "{{count}} new message",
"inbox_other": "{{count}} new messages"
}
Worauf Sie bei JSON-Übersetzungen achten sollten
Variablen in drei Schreibweisen
{{name}}in i18next,{name}in ICU-ähnlichen Bibliotheken,%soder${x}anderswo. Wenn eine fehlt, erscheint sie in der laufenden Anwendung als Leerfeld, nicht als Fehler.Pluralformen benötigen in einigen Sprachen mehr Varianten
Englisch hat zwei Formen. Russisch, Polnisch und Arabisch benötigen drei bis sechs. Bei ICU-Strings kennzeichnet die kostenlose Prüfung eine fehlende Form für ru, uk, pl, cs, sk, hr, sr, lt, ro, ar, lv, sl und he sowie einen fehlenden exakten Zweig wie
=0. Bei i18next-Suffixschlüsseln benötigt Ihre Datei die zusätzlichen Schlüssel, die die Sprache hat; KAERIS übersetzt die gefundenen Schlüssel.Referenzen und Markup innerhalb eines Werts
i18next
$t(nav.cart), vue-i18n@:nav.shop,<0>…</0>-Tags der Trans-Komponente und reines HTML müssen erhalten bleiben. Das folgende Beispiel zeigt einen realen Verlust genau dieser Art.Notizen für sich selbst
Ein Schlüssel, dessen Pfad ein Segment hat, das mit
_beginnt (_comment,_status), wird als Dienstschlüssel behandelt und standardmäßig nicht übersetzt, in JSON, YAML und ARB.
Ein realer Durchlauf, vorher und nachher
Ein realer Durchlauf: unsere Testdatei mit 97 Zeichenketten, Deutsch, 26. Oktober 2026, gekürzt auf vier Schlüssel. Die letzte Zeile zeigt einen Verlust, den die Prüfung bei diesem Durchlauf erfasst hat.
{
"ph": {
"mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
"reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
"nesting": "$t(nav.cart) has been updated"
},
"icu": {
"copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
}
}
{
"ph": {
"mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
"reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
"nesting": "Der Warenkorb wurde aktualisiert"
},
"icu": {
"copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
}
}
error ph.nesting: lost placeholder $t(nav.cart)
Was KAERIS damit macht
Gleiche Datei, gleiche Struktur
Schlüssel, Verschachtelung und Reihenfolge bleiben wie in Ihrer Quelldatei erhalten; nur die Werte ändern sich. Funktioniert mit i18next-, Vue I18n-, next-intl- und FormatJS-Dateien.
Variablen werden ohne KI gezählt
Nach der Übersetzung vergleicht eine einfache Zählprüfung jede Variable und jeden Tag mit dem Original. Eine Zeile, bei der eine fehlt, wird markiert und oben angezeigt.
Jede Zeile zurückübersetzt
Mit
--verifywird jedes Ergebnis zurück in Ihre Sprache übersetzt und ein zweites Modell beurteilt, ob sich die Bedeutung geändert hat. Sie lesen, was jede Zeile jetzt sagt.Nur die neuen Schlüssel
kaeris translate --only-newübersetzt neue und bearbeitete Schlüssel;kaeris.lockneben der Quelle merkt sich den Rest. JSON und ARB.
In drei Schritten ausführen
Installieren Sie die CLI
Führen Sie
pip install kaerisaus. Für die kostenlosen Limits ist kein Konto erforderlich.Übersetzen Sie die Datei
Führen Sie
kaeris translate en.json --langs de,ja --verifyaus. Die Dateiende.jsonundja.jsonerscheinen neben der Quelle.Überprüfen Sie das Ergebnis
Führen Sie
kaeris check --source en.json --langs de,jaaus. Das Programm wird mit Code 1 beendet, wenn eine Variable, eine Zahl oder ein Schlüssel falsch ist, sodass CI den Merge stoppen kann.
pip install kaeris kaeris init --preset i18next kaeris translate en.json --langs de,ja --verify kaeris check --source en.json --langs de,ja
Fragen
Welche JSON-Layouts funktionieren?
Flache und verschachtelte Schlüssel-Wert-Dateien, wie sie von i18next, Vue I18n, next-intl und FormatJS verwendet werden. Die oberste Ebene muss ein Objekt sein, wie {"greeting": "Hello"}. Arrays von Zeichenketten werden ebenfalls übersetzt.
Behält {{count}} und $t(…) Referenzen bei?
Variablen und Referenzen werden nach der Übersetzung mit der Quelle verglichen. Eine Zeile, bei der eine fehlt, wird markiert; das obige Beispiel zeigt einen realen Durchlauf, bei dem $t(nav.cart) weggelassen wurde und die Prüfung dies erfasste.
Ist es kostenlos?
Ja, ohne Konto: 10.000 Zeichen pro Datei und bis zu 8 Sprachen pro Lauf. Ein kostenloser API-Schlüssel erhöht das Dateilimit auf 50.000 Zeichen. Lebenslang kostet es einmalig 79 $, mit deinem eigenen OpenRouter-Schlüssel; monatliche Pläne beginnen bei 19 $. Preise
Kann ich es vom Terminal oder in CI ausführen?
Ja. pip install kaeris, dann kaeris translate en.json --langs de,ja. Die GitHub Action führt dieselbe Übersetzung in einem Pull Request aus. CLI-Dokumentation · GitHub Action
Weiter geht's
CLI-Referenz · Check-Referenz · Im Browser übersetzen · Kostenlose Prüfung · Formate konvertieren · Pseudo-Lokalisierung
Andere Formate: YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML