Zum Inhalt springen

Docs / Erste Schritte / Schnellstart

Maschinell übersetzte Seite

Diese Seite wurde automatisch übersetzt und kann daher Fehler oder seltsame Formulierungen enthalten. Die englische Version ist die maßgebliche Quelle. Das englische Original lesen.

Schnellstart mit Next.js

Übersetze die next-intl-Locale-Dateien deiner Next.js-App mit verbatra, von der Installation bis zum ersten deutschen Text auf dem Bildschirm.

Am Ende dieser Seite zeigt deine Next.js-App einen deutschen Text, den verbatra aus messages/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 Next.js-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/cli

verbatra 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 messages/en.json schon, überspringst du diesen Schritt. Sonst legst du die Datei mit zwei Texten an, einer davon mit Platzhalter:

messages/en.json
{
  "greeting": "Hello, {name}!",
  "cart": {
    "empty": "Your cart is empty."
  }
}

Erzeuge eine Konfiguration

npx @verbatra/cli init --format next-intl-json --provider gemini --yes

--format next-intl-json ist das Dateiformat von next-intl. init findet deine Locale-Dateien oder schreibt das Muster messages/{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-run
Ausgabe
verbatra: 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_API_KEY= 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 translate

verbatra schickt die zwei Texte an Gemini, prüft, dass jeder Platzhalter erhalten bleibt, und schreibt messages/de.json. Der Wortlaut hängt vom Modell ab, zum Beispiel:

messages/de.json
{
  "greeting": "Hallo, {name}!",
  "cart": {
    "empty": "Dein Warenkorb ist leer."
  }
}

Prüfe, ob jede Locale synchron ist

npx @verbatra/cli check
Ausgabe
[ok] checking the locales (0.0s)
verbatra check
  de: 0 missing, 0 stale, 2 up-to-date (in sync)
all locales in sync

check 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 next-intl hinzu:

npm install next-intl

Dann lädst du beide Dateien und zeigst die Begrüßung an:

next.config.ts
import type { NextConfig } from "next";
import createNextIntlPlugin from "next-intl/plugin";

const nextConfig: NextConfig = {};

export default createNextIntlPlugin()(nextConfig);
i18n/request.ts
// with a src/ folder: src/i18n/request.ts, importing ../../messages
import { getRequestConfig } from "next-intl/server";

export default getRequestConfig(async () => {
  const locale = "de";
  return {
    locale,
    messages: (await import(`../messages/${locale}.json`)).default,
  };
});
app/page.tsx
import { useTranslations } from "next-intl";

export default function Home() {
  const t = useTranslations();
  return <p>{t("greeting", { name: "Ada" })}</p>;
}

Starte deine App: Die Begrüßung lautet Hallo, Ada!.

Was gerade passiert ist

  • verbatra.lock.json speichert 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 --agent

Mit 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:

Zu VS Code hinzufügen

Nächste Schritte

Auf GitHub bearbeiten

Auf dieser Seite