---
title: "Einführung"
description: "Was verbatra ist und welches Problem es löst: nur die geänderten Keys übersetzen. Dazu, wie CLI und SDK mit Studio und dem MCP-Server zusammenspielen."
type: "overview"
---
# Einführung

Was verbatra ist und welches Problem es löst: nur die geänderten Keys übersetzen. Dazu, wie CLI und SDK mit Studio und dem MCP-Server zusammenspielen.

<DocsHomeHeader
  eyebrow="Dokumentation"
  headline="Richte verbatra ein und halte jede Locale synchron."
  lead="Anleitungen und Referenz für die CLI, das SDK, Studio und den MCP-Server: Starte mit dem Schnellstart oder lass deinen Coding-Agenten verbatra einrichten."
>

<DocsHomeTabs
  label="Einstiege"
  tabs={[
    { label: "Schnellstart", href: "/docs/quickstart" },
    { label: "CLI", href: "/docs/cli" },
    { label: "SDK", href: "/docs/sdk" },
    { label: "GitHub Action", href: "/docs/github-action" },
    { label: "MCP-Server", href: "/docs/cli/mcp" },
    { label: "Studio", href: "/docs/review-in-studio" },
  ]}
/>

<DocsHomeAgentTip title="Arbeitest du mit einem Coding-Agenten?">
Kopiere den Prompt in Claude Code, Cursor oder einen anderen Coding-Agenten, und er richtet verbatra für dich ein; [Mit einem KI-Agenten einrichten](https://verbatra.kreitz-webdev.de/de/docs/start-with-ai.md) zeigt jeden Schritt. Damit er deine Übersetzungen direkt lesen und bearbeiten kann, verbinde den [MCP-Server](https://verbatra.kreitz-webdev.de/de/docs/cli/mcp.md).
</DocsHomeAgentTip>

</DocsHomeHeader>

<DocsHomeBody>

<DocsHomeSection title="Starte bei deinem Ziel" lead="Wähle, was du vorhast; jede Karte öffnet die Seite, die genau das zeigt.">

<DocsHomePaths
  cards={[
    {
      goal: "Ein Projekt übersetzen",
      page: "Schnellstart",
      body: "Installiere die CLI, sieh dir den Lauf ohne Schlüssel an und übersetze dann deine erste Datei.",
      href: "/docs/quickstart",
    },
    {
      goal: "Pull Requests absichern",
      page: "CI und Exit-Codes",
      body: "Lass einen Pull Request fehlschlagen, wenn eine Locale abdriftet, mit JSON-Ausgabe für Skripte.",
      href: "/docs/ci-and-exit-codes",
    },
    {
      goal: "An Übersetzer übergeben",
      page: "Menschliche Übersetzung",
      body: "Exportiere eine Arbeitsmappe, die ein Mensch übersetzt, und importiere sie wieder.",
      href: "/docs/manual-translation",
    },
  ]}
/>

</DocsHomeSection>

<DocsHomeSection id="pick-your-stack" title="Wähle deinen Stack" lead="Eine Karte mit Schnellstart öffnet eine Schritt-für-Schritt-Anleitung für diesen Stack; jede andere Karte öffnet den init-Befehl und das Dateilayout.">

<StackCards
  labelledBy="pick-your-stack"
  cards={[
    { label: "React", icon: "web", mark: "react", formats: ["i18next-json"], href: "/docs/quickstart/react", badge: "Schnellstart", description: "Übersetze i18next-JSON-Dateien in einer React-App." },
    { label: "Next.js", icon: "web", mark: "deviconNextjs", formats: ["next-intl-json"], href: "/docs/quickstart/nextjs", badge: "Schnellstart", description: "Halte next-intl-Nachrichtendateien in jeder Locale synchron." },
    { label: "Vue", icon: "web", mark: "fontawesomeVuejs", formats: ["vue-i18n-json"], href: "/docs/quickstart/vue", badge: "Schnellstart", description: "Übersetze vue-i18n-JSON-Nachrichten in einer Vue-App." },
    { label: "Nuxt", icon: "web", mark: "deviconNuxt", formats: ["vue-i18n-json"], href: "/docs/pick-your-stack#vue-und-nuxt-mit-vue-i18n", description: "Übersetze vue-i18n-JSON-Nachrichten in einer Nuxt-App." },
    { label: "Angular", icon: "web", mark: "angular", formats: ["ngx-translate-json"], href: "/docs/quickstart/angular", badge: "Schnellstart", description: "Übersetze ngx-translate-JSON-Dateien in einer Angular-App." },
    { label: "Flutter", icon: "mobile", mark: "fontawesomeFlutter", formats: ["arb"], href: "/docs/quickstart/flutter", badge: "Schnellstart", description: "Übersetze ARB-Dateien für gen-l10n von Flutter." },
    { label: "Android", icon: "mobile", mark: "android", formats: ["android-xml"], href: "/docs/pick-your-stack#android", description: "Übersetze strings.xml-Ressourcen, ein Ordner pro Locale." },
    { label: "iOS und macOS", icon: "mobile", mark: "fontawesomeApple", formats: ["apple-strings", "apple-xcstrings"], href: "/docs/pick-your-stack#ios-und-macos", description: "Übersetze .strings, .stringsdict und String Catalogs." },
    { label: "gettext", icon: "po", formats: ["gettext-po"], href: "/docs/pick-your-stack#gettext", description: "Übersetze PO-Dateien aus einer POT-Vorlage." },
    { label: "Java und Spring", icon: "server", mark: "deviconSpring", formats: ["properties"], href: "/docs/pick-your-stack#java-und-spring", description: "Übersetze .properties-Message-Bundles." },
    { label: ".NET", icon: "server", mark: "dotnet", formats: ["resx"], href: "/docs/pick-your-stack#net", description: "Übersetze .resx-Ressourcendateien." },
    { label: "YAML", icon: "yaml", formats: ["yaml"], href: "/docs/pick-your-stack#yaml", description: "Übersetze verschachtelte YAML-Locale-Dateien." },
    { label: "XLIFF", icon: "xliff", formats: ["xliff"], href: "/docs/pick-your-stack#xliff", description: "Übersetze XLIFF-Dateien, das Austauschformat von Übersetzungstools." },
    { label: "INI", icon: "ini", formats: ["ini"], href: "/docs/pick-your-stack#ini", description: "Übersetze flache INI-Locale-Dateien." },
  ]}
/>

<DocsHomeNote>
Dein Stack ist nicht dabei? Starte mit dem [allgemeinen Schnellstart](https://verbatra.kreitz-webdev.de/de/docs/quickstart.md) oder bring verbatra dein Format mit einem [eigenen Format-Adapter](https://verbatra.kreitz-webdev.de/de/docs/custom-format-adapters.md) bei.
</DocsHomeNote>

</DocsHomeSection>

<DocsHomeSection title="Jeder Lauf ist ein Diff, keine Neuübersetzung." lead="Was passiert, wenn du `verbatra translate` ausführst.">

Eine Quell-Locale von Hand zu pflegen bedeutet, dass jede andere Locale-Datei abdriftet: Neue Keys fehlen in den Zielen, bearbeitete Strings hinterlassen veraltete Übersetzungen, und gelöschte Keys bleiben als Waisen zurück. verbatra schließt diese Lücke, indem es jedes Ziel gegen eine committete Lock-Datei, `verbatra.lock.json`, vergleicht und nur das Geänderte an den von dir konfigurierten Provider sendet; ein zweiter Lauf, bei dem es nichts Neues zu übersetzen gibt, ruft den Provider überhaupt nicht auf. Jedes Ergebnis wird vor dem Schreiben geprüft, sodass ein kaputter Platzhalter zurückgehalten und erneut versucht wird, statt ausgeliefert zu werden. Siehe [Wie es funktioniert](https://verbatra.kreitz-webdev.de/de/docs/how-it-works.md) für die vollständige Pipeline.

<DocsHomeSteps />

verbatra liest und schreibt die gängigen Formate für Locale-Dateien, von JSON und YAML bis XLIFF, gettext sowie Android- und Apple-Katalogen, und übersetzt über jeden unterstützten LLM- oder Maschinenübersetzungs-Provider hinter einer einzigen Schnittstelle (oder über keinen, für einen [rein menschlichen Workflow](https://verbatra.kreitz-webdev.de/de/docs/human-only-workflow.md)); ein Format, das es nicht mitbringt, lässt sich als [eigener Adapter](https://verbatra.kreitz-webdev.de/de/docs/custom-format-adapters.md) ergänzen. Die vollständigen Listen findest du unter [Formate](https://verbatra.kreitz-webdev.de/de/docs/formats.md) und [Provider](https://verbatra.kreitz-webdev.de/de/docs/providers.md).

</DocsHomeSection>

<DocsHomeSection title="Die Pakete" lead="Ein Motor, vier Wege, ihn zu fahren.">

<DocsHomeFeatures
  features={[
    {
      title: "@verbatra/cli",
      pkg: "cli",
      body: "Das verbatra-Binary: jeder Befehl, von init und extract bis translate, check, export und studio, als dünner Wrapper über dem SDK. Starte hier.",
      href: "/docs/cli",
    },
    {
      title: "@verbatra/sdk",
      pkg: "sdk",
      body: "Der Motor darunter: translate, watch, check, diff, doctor, extract, Pseudolokalisierung, Typgenerierung sowie der Excel- und TMX-Roundtrip, alles aus Code.",
      href: "/docs/sdk",
    },
    {
      title: "@verbatra/studio",
      pkg: "studio",
      body: "Ein lokales Dashboard mit direkter Bearbeitung, Review-Warteschlange, einer Overview zu Abdeckung und Läufen und Browser-Agent-Tools. Provider-Ausgaben bleiben aus, bis du sie ausdrücklich aktivierst.",
      href: "/docs/review-in-studio",
    },
    {
      title: "@verbatra/mcp",
      pkg: "mcp",
      body: "Ein stdio-MCP-Server, der Übersetzungsstatus, Glossar und Bearbeitungs-Tools für Claude Code, Cursor oder einen beliebigen MCP-Client bereitstellt.",
      href: "/docs/cli/mcp",
    },
  ]}
/>

</DocsHomeSection>

</DocsHomeBody>
