Übersetze nur, was sich geändert hat.

verbatra ist ein CLI und SDK, das deine i18n-Locale-Dateien synchron hält. Du pflegst die Quell-Locale; es füllt jede weitere Locale über den KI-Anbieter, den du wählst.

npm i -D @verbatra/cli
  • Neueste veröffentlichte @verbatra/cli-Version auf npm
  • Neueste veröffentlichte @verbatra/sdk-Version auf npm
  • Build-Status der Continuous Integration
  • Auf Codecov gemeldete Testabdeckung
  • Monatliche npm-Downloads
  • Veröffentlicht unter der MIT-Lizenz
~/acme-shop

An example verbatra command-line session.

  1. verbatra init
    • ✓ created verbatra.config.ts
    • source en · targets de, es, fr
    • provider gemini · key from GEMINI_API_KEY
  2. verbatra translate
    • diff en.json · 12 new · 0 changed · 108 unchanged
    • de 12 translated · 108 unchanged · 0 withheld
    • es 12 translated · 108 unchanged · 0 withheld
    • fr 12 translated · 108 unchanged · 0 withheld
    • ✓ 36 keys translated in 5.4s · 0 skipped · lock updated
  3. verbatra diff
    • en.json · 120 keys · source of truth
    • de 2 new · 1 changed · 117 up to date
    • es 0 new · 0 changed · 120 up to date
    • fr 5 new · 0 changed · 115 up to date
    • 8 keys would be sent · run verbatra translate to apply
  4. verbatra watch
    • watching en.json for changes
    • en.json changed · 1 new key
    • de 1 translated · 0 withheld
    • es 1 translated · 0 withheld
    • fr 1 translated · 0 withheld
    • ✓ 3 keys translated · waiting for changes

Ein Tool für den gesamten Übersetzungsablauf.

verbatra ist mehr als KI-Übersetzung. Es deckt maschinelle Übersetzung ab, die du steuerst, eine saubere Excel-Übergabe für menschliche Übersetzer und die Automatisierung, um jede Locale synchron zu halten.

KI-Übersetzung

Übersetze nur das, was sich geändert hat, über den Anbieter deiner Wahl: Anthropic, OpenAI, Gemini, DeepL oder jeden OpenAI-kompatiblen Server, den du selbst betreibst. Eine festgeschriebene Lock-Datei hält jeden Lauf inkrementell, und die Integrität von Platzhaltern und ICU wird überprüft, bevor etwas geschrieben wird.

Excel-Übergabe

Führe verbatra export aus, um eine gestylte .xlsx-Arbeitsmappe zu erzeugen, gib sie an ein Übersetzungsbüro oder interne Übersetzer, und verbatra import liest ihre Änderungen zurück in deine Locale-Dateien. Kombiniere maschinelle Übersetzung mit professioneller menschlicher Arbeit.

Automatisierung

Halte jede Locale synchron, während du arbeitest: verbatra watch übersetzt bei Änderungen, CI-freundliche Exit-Codes und --json-Ausgabe fügen sich in jede Pipeline ein, und eine GitHub Action führt es in deinem Workflow aus.

Ein Werkzeug, jedes Framework.

verbatra liest die Locale-Dateien, die dein Stack bereits verwendet: JSON für i18next, vue-i18n, next-intl und ngx-translate, sowie XLIFF, YAML, Flutter ARB und Java/Spring .properties-Dateien. Es füllt sie über den von dir gewählten Anbieter, ohne dass du ein neues Format übernehmen musst.

  • Frameworks und Formate:
  • React
  • Next.js
  • Vue
  • Nuxt
  • Angular
  • Node.js
  • SvelteKit
  • Astro
  • React Native
  • Flutter

Übersetze über das Modell, dem du vertraust.

Anthropic, OpenAI, Gemini, DeepL oder jeder OpenAI-kompatible Server, den du selbst hostest. Wähle einen in einer einzigen Konfigurationszeile aus und wechsle den Anbieter, ohne deine Locale-Dateien zu berühren.

  • Übersetzungsanbieter:
  • Anthropic
  • OpenAI
  • Gemini
  • DeepL

Ein Lauf ist eine kurze, vorhersehbare Pipeline.

Keine Magie, keine Hintergrundsynchronisierung: eine deterministische Abfolge, die du von oben nach unten lesen kannst.

  1. 01

    Konfigurieren

    Richte verbatra auf deine Quell-Locale, liste die Zielsprachen auf und wähle einen Anbieter. Die Konfiguration liegt in einer Datei; API-Schlüssel bleiben in deiner Umgebung.

  2. 02

    Vergleichen

    Jeder Lauf vergleicht deine Quell-Locale mit der eingecheckten Lock-Datei und sortiert jeden Schlüssel in neu, geändert, unverändert oder verwaist ein. Verwaiste Schlüssel, also solche, die nicht mehr in deiner Quelle stehen, werden gemeldet und bleiben erhalten: Aus deinen Locale-Dateien wird nichts entfernt, es sei denn, du aktivierst --prune.

  3. 03

    Übersetzen

    Nur die neuen und geänderten Schlüssel werden in Stapeln an deinen Anbieter gesendet, mit deinem Glossar und Tonfall. Alles andere bleibt unangetastet.

  4. 04

    Prüfen und schreiben

    Die Integrität von Platzhaltern und ICU wird bei jedem Ergebnis geprüft. Alles, was kaputtgeht, wird zurückgehalten; der Rest wird in deine Locale-Dateien geschrieben und die Lock-Datei wird aktualisiert.

Gebaut für Teams, die in vielen Sprachen ausliefern.

Jede Entscheidung begünstigt Vorhersehbarkeit: kleine Diffs, explizite Konfiguration und nichts, was nicht zuerst geprüft wurde, wird geschrieben.

Standardmäßig inkrementell

Eine eingecheckte Lock-Datei hält fest, was übersetzt wurde. Jeder Lauf vergleicht die Quelle und ruft den Anbieter nur für die Schlüssel auf, die sich geändert haben.

Der Anbieter deiner Wahl

Anthropic, OpenAI, Gemini, DeepL oder ein lokales OpenAI-kompatibles Modell, ausgewählt in einer Zeile der Konfiguration. Wechsle den Anbieter, ohne deine Locale-Dateien zu berühren.

Sicher durch Konstruktion

Die Integrität von Platzhaltern und ICU wird nach jeder Übersetzung geprüft. Ein Ergebnis, das einen Platzhalter kaputtmacht, wird zurückgehalten und nie geschrieben.

Schlüssel bleiben in deiner Umgebung

API-Schlüssel des Anbieters werden aus Umgebungsvariablen gelesen, nie aus der Konfigurationsdatei, nie aus CLI-Argumenten und nie protokolliert.

CLI und SDK, eine Engine

Der Befehl verbatra und @verbatra/sdk teilen sich einen einzigen Orchestrierungskern, sodass Skripte, CI und dein eigenes Werkzeug sich identisch verhalten.

Probeläufe und Watch-Modus

Sieh dir genau an, was ein Lauf ändern würde, ohne etwas zu schreiben, oder halte einen Watch-Modus am Laufen, der übersetzt, während sich deine Quell-Locale weiterentwickelt.

Häufig gestellte Fragen

Kurze, direkte Antworten auf die Fragen, die Teams vor der Einführung von verbatra stellen.

Es führt eine eingecheckte Lock-Datei, die festhält, was bereits übersetzt wurde. Jeder Lauf vergleicht deine Quell-Locale mit dieser Lock-Datei und sendet nur die neuen oder geänderten Schlüssel an deinen Anbieter. Unveränderte Schlüssel werden nie angefasst, sodass ein typischer Lauf eine Handvoll Strings kostet, nicht deinen ganzen Katalog.

Fünf, hinter einer Schnittstelle: Anthropic, OpenAI und Gemini (LLMs), DeepL (maschinelle Übersetzung) und openai-compatible, das verbatra auf einen lokalen oder selbst gehosteten Server wie Ollama, LM Studio oder vLLM verweist. Du wählst einen über seine ID in deiner Konfiguration aus und kannst später wechseln, indem du diese eine Zeile bearbeitest. Gemini hat einen echten kostenlosen Tarif, und ein lokales Modell kostet pro Aufruf nichts.

JSON für i18next, vue-i18n, next-intl und ngx-translate, sowie XLIFF, YAML, Flutter ARB und Java/Spring .properties-Dateien. Das deckt React, Next.js, Vue, Nuxt, Angular, SvelteKit, Astro, Node.js, Spring und Flutter ab. verbatra liest die Dateien, die du bereits hast; es gibt kein verbatra-spezifisches Format, zu dem du migrieren musst.

Ein lokales Web-Dashboard über deinem Projekt, das den Status jeder Locale live anzeigt, eine Review-Warteschlange markierter Einträge bereithält und dich Übersetzungen direkt korrigieren lässt. Starte es mit verbatra studio (installiere zuerst @verbatra/studio). Das Bearbeiten deiner eigenen Locale-Dateien funktioniert von Haus aus; ein Anbieter-Aufruf aus der Oberfläche ist optional und liegt hinter --allow-spend. Es läuft nur auf 127.0.0.1 und verlässt deinen Rechner nie.

Jedes Ergebnis durchläuft eine Prüfung der Platzhalter- und ICU-Integrität, bevor es geschrieben wird. Eine Übersetzung, die einen Platzhalter weglässt, erfindet oder umsortiert oder ungültige ICU-Nachrichtensyntax erzeugt, wird zurückgehalten, statt in deine Locale-Datei gespeichert zu werden. Dieselbe Prüfung gilt für Bearbeitungen und Neuübersetzungen in Verbatra Studio.

Schlüssel werden nur aus Umgebungsvariablen gelesen (ANTHROPIC_API_KEY, OPENAI_API_KEY, GEMINI_API_KEY, DEEPL_API_KEY), nie aus der Konfigurationsdatei, aus CLI-Argumenten oder aus Logs. Gesendet werden nur die Strings, die du gerade übersetzt, und nur an den Anbieter, den du gewählt hast. Wenn du den openai-compatible-Anbieter mit einem lokalen Modell nutzt, verlässt überhaupt nichts deinen Rechner oder dein Netzwerk.

Ja. Ein Probelauf meldet genau, welche Schlüssel gesendet und geschrieben würden, ohne deine Dateien anzufassen, und verbatra check und verbatra diff melden die Abweichung pro Locale, ohne einen Anbieter aufzurufen. Der Watch-Modus macht das Gegenteil: Er übersetzt weiter, während sich deine Quell-Locale ändert.

Ja. Das CLI ist ein dünner Wrapper um @verbatra/sdk, das dieselben translate-, watch-, check- und diff-Operationen für dein eigenes Werkzeug bereitstellt. Die Befehle liefern CI-freundliche Exit-Codes und unterstützen --json-Ausgabe, und eine offizielle GitHub Action führt verbatra in deinem Workflow aus.

verbatra selbst ist kostenlos und quelloffen unter der MIT-Lizenz. Der einzige Kostenfaktor ist die Nutzung deines Anbieters, die du steuerst: Es übersetzt nur, was sich geändert hat, und du kannst es kostenlos auf Geminis kostenlosem Tarif oder einem lokalen OpenAI-kompatiblen Modell betreiben.

Es ist jung und wird aktiv entwickelt, also pinne eine Version und lies das Changelog, wenn du ein Upgrade machst. Das Sicherheitsmodell ist bereits solide: Jeder Lauf gleicht mit einer festgeschriebenen Lock-Datei ab, überprüft bei jedem Ergebnis die Integrität von Platzhaltern und ICU und hält alles zurück, was kaputtgeht, anstatt es zu schreiben. Teams verwenden es heute in CI; pinne Versionen und du bist auf sicherem Terrain.

Schluss mit dem manuellen Synchronisieren von Locale-Dateien.

Füge verbatra hinzu, checke die Lock-Datei ein und lass jeden Lauf nur das anfassen, was sich geändert hat.