Docs / Erste Schritte / Schnellstart
Maschinell übersetzte Seite
Schnellstart mit React
Übersetze die i18next-Locale-Dateien deiner React-App mit verbatra, von der Installation bis zum ersten deutschen Text auf dem Bildschirm.
Am Ende dieser Seite zeigt deine React-App einen deutschen Text, den verbatra aus locales/en.json übersetzt hat, und eine Lock-Datei sorgt dafür, dass jeder spätere Lauf nur noch übersetzt, was sich geändert hat. Du brauchst Node.js ^22.18.0 || >=24, ein React-Projekt und etwa zehn Minuten. Die ersten vier Schritte brauchen weder ein Konto noch einen API-Schlüssel.
Du hast schon Locale-Dateien und einen Coding-Agenten? Gib ihm stattdessen den Prompt von verbatra mit einem KI-Agenten einrichten: Er richtet verbatra um die Dateien ein, die dein Projekt schon hat, und hält an, bevor er etwas ausgibt.
Schritte
Installiere die CLI
npm install --save-dev @verbatra/cliverbatra ist ein Entwicklungswerkzeug und landet nie in deiner App. Die Befehle unten nutzen npx; mit pnpm, yarn oder bun nimmst du stattdessen pnpm verbatra, yarn verbatra oder bun run verbatra.
Lege eine Quell-Locale-Datei an
Gibt es locales/en.json schon, überspringst du diesen Schritt. Sonst legst du die Datei mit zwei Texten an, einer davon mit Platzhalter:
{
"greeting": "Hello, {{name}}!",
"cart": {
"empty": "Your cart is empty."
}
}Erzeuge eine Konfiguration
npx @verbatra/cli init --format i18next-json --provider gemini --yes--format i18next-json ist das Dateiformat von react-i18next. init findet deine Locale-Dateien oder schreibt das Muster locales/{locale}.json, wenn es noch keine gibt. --yes übernimmt, was init erkannt hat, statt nachzufragen. Die neue verbatra.config.ts übersetzt von en nach de; für weitere Sprachen ergänzt du Codes in targetLocales.
Sieh dir den Lauf ohne Schlüssel an
npx @verbatra/cli translate --dry-runverbatra: dry run over 1 locale, no provider call
verbatra: de done, 2 would translate
verbatra translate (dry run)
de: 2 would translate, 0 unchanged
1 succeeded, 0 partial, 0 failed (dry run: nothing written)
[ok] dry run done in 0.0s, nothing written
next: verbatra translate (run it for real)Ein Probelauf baut keinen Provider, braucht also keinen Schlüssel, kostet nichts und schreibt nichts.
Übersetze
cp .env.example .envÖffne .env und füge deinen Schlüssel hinter GEMINI_ ein. Noch kein Schlüssel? Gemini hat eine kostenlose Stufe: Erstelle einen im Google AI Studio. Alle anderen Provider und ihre Variablen stehen unter Provider.
npx @verbatra/cli translateverbatra schickt die zwei Texte an Gemini, prüft, dass jeder Platzhalter erhalten bleibt, und schreibt locales/de.json. Der Wortlaut hängt vom Modell ab, zum Beispiel:
{
"greeting": "Hallo, {{name}}!",
"cart": {
"empty": "Dein Warenkorb ist leer."
}
}Prüfe, ob jede Locale synchron ist
npx @verbatra/cli check[ok] checking the locales (0.0s)
verbatra check
de: 0 missing, 0 stale, 2 up-to-date (in sync)
all locales in synccheck ruft keinen Provider auf und endet mit 1, sobald eine Locale nicht mehr synchron ist, und kann so einen Pull Request absichern.
Lade die Locales in deiner App
Füge react-i18next hinzu:
npm install i18next react-i18nextDann lädst du beide Dateien und zeigst die Begrüßung an:
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import de from "../locales/de.json";
import en from "../locales/en.json";
i18n.use(initReactI18next).init({
lng: "de",
fallbackLng: "en",
resources: { en: { translation: en }, de: { translation: de } },
});import { useTranslation } from "react-i18next";
export function Greeting() {
const { t } = useTranslation();
return <p>{t("greeting", { name: "Ada" })}</p>;
}import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import { Greeting } from "./Greeting";
import "./i18n";
createRoot(document.getElementById("root")!).render(
<StrictMode>
<Greeting />
</StrictMode>,
);Starte deine App: Die Begrüßung lautet Hallo, Ada!.
Was gerade passiert ist
verbatra.lock.jsonspeichert einen Hash jedes Quelltexts, damit der nächste Lauf nur neue und geänderte Texte schickt. Siehe Die Lock-Datei.- Ein Ergebnis, das einen Platzhalter verliert, wird zurückgehalten und nie geschrieben. Siehe Übersetzungssicherheit.
Committe die Locale-Dateien, verbatra.lock.json und verbatra.provenance.json zusammen.
Optional: Verbinde deinen Coding-Agenten Verfügbar ab 0.12.0
npx @verbatra/cli init --agentMit vorhandener Konfiguration behält init --agent sie und ergänzt nur die Agent-Dateien: die verbatra-Regeln in AGENTS.md (oder CLAUDE.md, wenn das deine einzige Anweisungsdatei ist) und den verbatra-MCP-Server ohne die Tools, die Geld kosten, in der Projektkonfiguration jedes Coding-Agenten, den es erkennt. Welche Dateien es für welchen Agenten schreibt und wie du mit --client die Agenten selbst nennst, steht unter Coding-Agenten einrichten. --dry-run zeigt die Dateien, ohne sie zu schreiben.
Oder füg ohne die CLI nur den MCP-Server zu deinem VS-Code-Benutzerprofil hinzu; nutze einen Weg, nie beide:
Nächste Schritte
Eine Sprache hinzufügen
Ergänze eine Ziel-Locale und lass einen Lauf sie füllen.
verbatra in der CI ausführen
Lass einen Pull Request fehlschlagen, wenn eine Locale abweicht.
Wähle deinen Stack
Die Format-ID und die Dateistruktur für jedes andere Framework.