# TranslatePilot

KI-Übersetzungen für Joomla-Beiträge — mit Probe, Freigabe, Kosten-Tor und Spiegelung von Menüs und Modulen · Version 0.17.0 · Stand 13.09.2026

# TranslatePilot im Überblick

TranslatePilot übersetzt die Beiträge Ihrer Joomla-Website mit einem KI-Dienst in weitere Sprachen — und kümmert sich um alles, was eine mehrsprachige Website darüber hinaus braucht: Sprachverknüpfungen, Menü-Zwillinge, gespiegelte Module und, falls Sie YOOtheme Pro einsetzen, Footer und Beitrags-Templates je Sprache.

Der Kern ist eine einfache Zusage: **Es passiert nichts Teures und nichts Unumkehrbares, ohne dass Sie es vorher gesehen und gebilligt haben.**

## So arbeitet TranslatePilot

- **Ein Assistent führt.** Der Übersetzungs-Assistent leitet in acht Schritten durch alles — Zugang, Sprachen, Einrichtung, Profil, Umfang, Probe, Ausführung und Abschluss. Jeder Schritt prüft seinen Zustand selbst und sagt, was noch zu tun ist; erst dann lässt er Sie weiter. Übersetzt und gespiegelt wird in einem einzigen Schritt am Ende: Ein Knopf übersetzt die Beiträge und legt danach die Menü-, Modul- und Vorlagen-Zwillinge an. Die Reihenfolge müssen Sie nicht kennen — sie ist eine Abhängigkeit, keine Entscheidung.
- **Analyse als Bericht.** Eine eigene Ansicht zeigt, was ein Lauf tun würde: welche Beiträge neu sind, welche sich seit der letzten Übersetzung geändert haben, was übersprungen wird und was der Lauf voraussichtlich kostet. Die Analyse liest nur — sie schreibt nichts und gibt nichts aus.
- **Probe vor dem Echtlauf.** Bevor zum ersten Mal geschrieben wird, übersetzen Sie einige Beiträge zur Probe. Original und Übersetzung stehen nebeneinander; erst wenn der Ton passt, geben Sie das Übersetzungsprofil frei.
- **Fortschreibung statt Einmal-Aktion.** TranslatePilot merkt sich je Beitrag, in welchem Stand er übersetzt wurde. Ändert sich ein Beitrag, wird nur er neu übersetzt — von Hand oder automatisch über den Aufgabenplaner.
- **Mehrere Schutzmechanismen.** Kostengrenze je Lauf, Obergrenze übersetzter Beiträge je Lauf, Sicherungs-Bestätigung vor jedem Echtlauf und die Profil-Freigabe. Jeder dieser Mechanismen kann einen Lauf anhalten, bevor etwas geschieht.

## Was übersetzt wird — und was nicht

Übersetzt werden Beiträge der Quellsprache: Titel, Einleitungs- und Haupttext (bei YOOtheme-Builder-Seiten die Textbausteine des Seitenbaums, die Struktur bleibt unangetastet), Meta-Beschreibung und -Schlüsselwörter, Bild-Alternativtexte, Beschriftungen der weiterführenden Links sowie eigene Felder der Typen Text, Textbereich und Editor. Schlagwörter, Bilder, Link-Adressen und die Sichtbarkeit werden unverändert übernommen; die Sprachverknüpfung zum Original entsteht automatisch.

Nicht übersetzt werden Inhalte anderer Komponenten, Systemtexte und die Konfiguration. Module und Menüpunkte entstehen nicht beim Übersetzen, sondern über die Spiegelungs-Schritte — als Zwillinge der bereits übersetzten Inhalte. Die Analyse-Seite zeigt diese Abgrenzung vor jedem Lauf an.

## Woraus TranslatePilot besteht

- **Die Komponente** — Dashboard mit Bereitschafts-Prüfungen, Analyse, Probe/Freigabe/Echtlauf und die Spiegelungs-Schritte.
- **Das Aufgaben-Plugin** — übersetzt neue und geänderte Beiträge zeitgesteuert über Joomlas Aufgabenplaner, mit denselben Schutzmechanismen wie im Backend.

## Welche KI-Dienste unterstützt werden

TranslatePilot ist anbieteroffen: Claude (Anthropic), Mittwald AI Hosting oder ein anderer OpenAI-kompatibler Dienst. Die verfügbaren Modelle werden direkt beim Anbieter abgefragt und in den Optionen zur Auswahl angeboten. Einzelheiten auf der Seite „KI-Anbieter und Zugang".

<div class="callout info" id="bkmrk-yootheme-pro-und-jsi">YOOtheme Pro und JSitemap Pro sind **optional**. TranslatePilot funktioniert vollständig mit dem Joomla-Kern; sind die Erweiterungen vorhanden, werden sie zusätzlich berücksichtigt (Builder-Seiten, Meta-Überschreibungen, Footer- und Template-Spiegelung).

</div>[English version](https://docs.graup-it.de/link/278)

# Voraussetzungen und Installation

## Voraussetzungen

- Joomla 6.0 oder neuer
- PHP 8.3 oder neuer
- Ein Zugang zu einem unterstützten KI-Dienst (API-Schlüssel) — siehe „KI-Anbieter und Zugang"
- Mindestens zwei installierte Joomla-Sprachpakete (die Quellsprache und jede Zielsprache)

<div class="callout info" id="bkmrk-ihre-website-muss-be">Ihre Website muss beim Start **nicht** mehrsprachig konfiguriert sein. TranslatePilot richtet die Mehrsprachigkeit auf Wunsch selbst ein — Inhaltssprachen, Sprachenfilter, Startseiten je Sprache und den Sprachumschalter. Nur die Sprachpakete selbst installieren Sie vorher über *System → Sprachen installieren*; einen Download kann die Einrichtung nicht ehrlich in einer Vorschau abbilden und übernimmt ihn deshalb nicht.

</div>## Installation

1. Laden Sie das Paket `pkg_translatepilot-x.y.z.zip` herunter.
2. Installieren Sie es unter *System → Installieren → Erweiterungen*.
3. Das Paket installiert die Komponente und das Aufgaben-Plugin; das Plugin wird dabei aktiviert. Es bleibt untätig, bis Sie eine geplante Aufgabe anlegen.

Nach der Installation finden Sie TranslatePilot unter *Komponenten → TranslatePilot*. Das Dashboard zeigt sofort, wie es um die Mehrsprachigkeit der Installation steht und was vor der ersten Übersetzung noch fehlt.

## Aktualisieren

Updates erscheinen wie gewohnt unter *System → Aktualisieren → Erweiterungen*. Der Übersetzungs-Stand, die Freigabe und alle Einstellungen bleiben bei Updates erhalten.

## Deinstallieren

Die Deinstallation des Pakets entfernt Komponente und Plugin. Bereits übersetzte Beiträge, Menüpunkte und Module sind normale Joomla-Inhalte und bleiben selbstverständlich bestehen.

[English version](https://docs.graup-it.de/link/279)

# KI-Anbieter und Zugang

TranslatePilot übersetzt über den KI-Dienst Ihrer Wahl. Anbieter, Zugang und Modell stellen Sie in den Optionen der Komponente ein (*Komponenten → TranslatePilot → Optionen*, Reiter „Übersetzung").

## Die Anbieter

- **Claude (Anthropic).** Den API-Schlüssel erstellen Sie in der Anthropic-Konsole (`platform.claude.com`). Abgerechnet wird je Token; TranslatePilot zeigt vor jedem Lauf eine Kostenschätzung in USD und hält die Kostengrenze ein.
- **Mittwald AI Hosting.** Den API-Schlüssel erstellen Sie im mStudio im Bereich AI-Hosting. Die Modelle laufen auf europäischer Infrastruktur; abgerechnet wird pauschal je Monat mit einem Token-Kontingent. TranslatePilot zeigt deshalb keine USD-Schätzung, sondern wie viele Token ein Lauf voraussichtlich aus dem Kontingent nimmt.
- **OpenAI, Google Gemini, Mistral und DeepSeek.** Für diese Anbieter ist die Basis-Adresse fest hinterlegt — Sie tragen nur den API-Schlüssel des jeweiligen Dienstes ein. Abgerechnet wird je Token beim Anbieter; TranslatePilot zeigt die geschätzte Token-Menge je Lauf. Eine USD-Grenze ist möglich, indem Sie den Preis je Million Token in den Optionen eintragen — dann greift auch die Kostengrenze.
- **Benutzerdefiniert (OpenAI-kompatibel).** Für jeden weiteren Dienst, der die verbreitete OpenAI-Schnittstelle spricht. Tragen Sie zusätzlich die Basis-Adresse der API ein, samt Versionspfad — zum Beispiel `https://example.org/v1`.

## Modell wählen — die Liste kommt vom Anbieter

Sobald Anbieter und API-Schlüssel gespeichert sind, fragt TranslatePilot die verfügbaren Modelle direkt beim Anbieter ab und bietet sie im Modell-Feld zur Auswahl an. Sie wählen also immer aus dem aktuellen Angebot, ohne Modellnamen abtippen zu müssen.

<div class="callout info" id="bkmrk-die-liste-erscheint-">Die Liste erscheint erst **nach dem Speichern** von Anbieter und Schlüssel — einmal die Optionen speichern und wieder öffnen. Ist der Anbieter gerade nicht erreichbar, bleibt der zuletzt gespeicherte Modellwert wählbar; es geht nichts verloren.

</div>## Anbieter wechseln

Ein Wechsel ist jederzeit möglich: Anbieter umstellen, den passenden Schlüssel eintragen, speichern, Modell aus der frisch geladenen Liste wählen. Zwei Dinge sind dabei gewollt:

- **Die Freigabe gilt je Anbieter und Modell.** Nach einem Wechsel verlangt der erste Echtlauf eine neue gesichtete Probe — ein anderes Modell übersetzt anders, und das sollen Sie gesehen haben, bevor es in Ihre Inhalte schreibt.
- **Bestehende Übersetzungen bleiben unangetastet.** Der Wechsel allein übersetzt nichts neu; erst geänderte Beiträge werden mit dem neuen Anbieter fortgeschrieben.

## Sicherheit des Schlüssels

Der API-Schlüssel wird ausschließlich serverseitig verwendet, nie im Browser ausgegeben und nie in Protokolle geschrieben.

[English version](https://docs.graup-it.de/link/280)

# Mehrsprachigkeit einrichten

Bevor übersetzt wird, muss die Installation mehrsprachig arbeiten. Das Dashboard zeigt den Stand; die Einrichtung erledigt, was fehlt — mit kostenloser Vorschau, wiederholbar, und ohne etwas doppelt anzulegen.

## Das Dashboard: Bereitschafts-Prüfungen

*Komponenten → TranslatePilot* prüft bei jedem Aufruf:

- Inhaltssprachen: mindestens zwei veröffentlicht?
- Plugin „System - Sprachenfilter" aktiv, Elementzuordnungen eingeschaltet?
- Standardsprache der Website: deckt sie sich mit der Quellsprache? Wenn nicht, läge die Zielsprache an der Wurzel der Adressen und die Quellsprache hinter einem Sprachkürzel — das Dashboard warnt, bevor der erste Lauf Fakten schafft.
- Beiträge je Sprache und Beiträge auf Sprache „Alle" (die würden übersprungen)
- Zuordnungstabelle und Zugang zum KI-Anbieter

## Der Einrichtungs-Schritt

Die Einrichtung ist **Schritt 3 des Assistenten** (*Komponenten → TranslatePilot → Assistent*); sie übersetzt nichts und braucht deshalb keine Freigabe. „Vorschau (kostenlos)" zeigt, was geschehen würde; „Ausführen" tut es. Im Einzelnen:

- **Inhaltssprachen** für Quell- und Zielsprachen anlegen und veröffentlichen.
- **Sprachenfilter und Sprachcode** aktivieren; im Sprachenfilter die Elementzuordnungen einschalten (verknüpfen Übersetzung und Original beim Speichern) und das Sprachkürzel der Quellsprache weglassen (bestehende Adressen bleiben unverändert — wichtig für Verweise und Suchmaschinen).
- **Eine Startseite je Sprache** sicherstellen — ohne sie zeigt der Sprachumschalter nichts an.
- **Den Sprachumschalter** anlegen oder veröffentlichen. Auf YOOtheme-Websites wird er automatisch in die Position `navbar` gestellt, weil YOOtheme die klassische Position `header` nicht rendert.
- Auf Wunsch (Häkchen): **Beiträge und Kategorien der Sprache „Alle"** auf die Quellsprache umstellen. Inhalte auf „Alle" erscheinen zwar in jeder Sprache, werden aber nie übersetzt — für eine wirklich mehrsprachige Website gehören sie in die Quellsprache.

<div class="callout info" id="bkmrk-jeder-schritt-pr%C3%BCft-">Jeder Schritt prüft zuerst, wie es steht, und überspringt, was schon passt. Die Einrichtung mehrfach auszuführen ist ausdrücklich unbedenklich.

</div>## Reihenfolge beim ersten Mal

1. Sprachpakete installieren (*System → Sprachen installieren*).
2. In den Optionen Anbieter, Schlüssel, Modell, Quell- und Zielsprachen festlegen.
3. Den Assistenten öffnen und den Schritten folgen: Einrichtung (Vorschau, dann ausführen), Übersetzungsprofil, Umfang, Probe und Freigabe — siehe die nächsten Seiten.
4. **Schritt 7 führt aus**: Er übersetzt die Beiträge und legt danach von selbst die Menü- und Modul-Zwillinge an, damit die Zielsprache eine eigene Navigation bekommt. Schritt 8 zeigt das Ergebnis und was gegebenenfalls noch fehlt.

[English version](https://docs.graup-it.de/link/281)

# Das Übersetzungsprofil

Das Übersetzungsprofil ist der seitenspezifische Teil der Anweisungen an den KI-Dienst. Es entscheidet darüber, ob die Übersetzung nach Ihrer Website klingt — oder nach einer beliebigen. Sie finden es in den Optionen im Reiter „Übersetzungsprofil".

## Die Felder

- **Über die Website.** Wessen Website ist das? Ein bis zwei Sätze, zum Beispiel: „Website eines EDV-Dienstleisters für kleine Unternehmen im Rhein-Main-Gebiet."
- **Zielgruppe.** Für wen wird geschrieben? Etwa: „Inhaber kleiner Betriebe ohne eigene IT-Abteilung."
- **Ton.** Der gewünschte Ton der Übersetzung. Leer bedeutet: sachlich und klar, nah am Original.
- **Glossar.** Begriffe, die *nie* übersetzt werden — einer je Zeile oder durch Kommas getrennt.
- **Zusatzanweisungen.** Freitext für alles, was die Felder oben nicht abdecken.

## Das Glossar ernst nehmen

Ins Glossar gehören der Firmenname, Ihre Produktnamen und Fremdmarken. Ohne Glossar übersetzt das Modell auch gut gemeinte Dinge: Aus einem Firmennamen mit beschreibendem Bestandteil wird sonst eine englische Beschreibung, aus „Backend Booking" ein kleingeschriebenes „backend booking". Alles, was ein Eigenname ist, gehört in die Liste.

## Profiländerungen übersetzen den Bestand neu

<div class="callout warning" id="bkmrk-jede-%C3%84nderung-am-pro">Jede Änderung am Profil — auch ein einzelner Glossar-Eintrag — lässt den **gesamten Bestand als geändert gelten**: Der nächste Lauf übersetzt alle Beiträge neu, in Stapeln bis zur eingestellten Obergrenze. Das ist gewollt (die alte Übersetzung entstand ohne die neue Vorgabe), kostet bei tokenbasierten Anbietern aber Geld. Das Profil deshalb früh festlegen und danach nur noch bewusst ändern.

</div>Aus demselben Grund ist die Freigabe an das Profil gebunden: Nach einer Profiländerung verlangt der nächste Echtlauf eine neue gesichtete Probe.

[English version](https://docs.graup-it.de/link/282)

# Analyse, Probe und Echtlauf

Der Weg zur ersten Übersetzung führt immer über drei Stationen: Umfang ansehen, Probe sichten und freigeben, dann der Lauf — der **Assistent** führt der Reihe nach hindurch (Schritte 5, 6 und 8). Danach genügt der Lauf allein, oder die geplante Aufgabe übernimmt ihn. Die Analyse-Seite zeigt denselben Befund jederzeit als reinen Bericht.

## Der Umfang (und die Analyse-Seite)

Schritt 5 des Assistenten — und ausführlicher die Analyse-Seite — liest nur und zeigt je Zielsprache:

- Was **neu** ist, was sich seit der letzten Übersetzung **geändert** hat, was **unverändert** aktuell ist und was **übersprungen** wird (Sprache „Alle", ausgeschlossene Beiträge) — samt Begründung je Beitrag.
- Die **Kostenschätzung** für den nächsten Stapel: bei tokenbasierten Anbietern in USD, bei Pauschaltarifen als Token gegen das Monatskontingent.
- **Verwaiste Übersetzungen** — Übersetzungen, deren Original nicht mehr existiert. Sie werden nur gemeldet, nie gelöscht: Ein Original kann auch nur vorübergehend im Papierkorb liegen.
- Die Karte „Was dieser Lauf übersetzt — und was nicht".

## Die Probe

Die Qualitätsprobe übersetzt einige Beiträge (wählbar, 1–10) wirklich über den eingestellten Anbieter, **schreibt aber nichts**. Original und Übersetzung erscheinen nebeneinander: Titel, Einleitung, Meta-Beschreibung. Sichten Sie die Probe auf Ton, Terminologie und Glossar-Treue — genau dafür ist sie da.

## Die Freigabe

Trifft die Probe den Ton, klicken Sie „Profil freigeben". Die Freigabe gilt für genau diese Kombination aus Übersetzungsprofil, Anbieter und Modell. Ändert sich eines davon, erlischt sie — und der nächste Echtlauf verlangt eine neue Probe. So kann keine unbesehene Konfiguration in Ihre Inhalte schreiben, auch nicht über die geplante Aufgabe.

## Schritt 7: Prüfen und ausführen

Schritt 7 zeigt alle Entscheidungen auf einer Seite — Anbieter und Modell, Sprachen, Profil, Umfang, Freigabe — und nennt darunter, was der Lauf der Reihe nach tun wird. Von dort starten Sie wahlweise den **Trockenlauf** (zeigt vollständig, was geschähe — kostenlos, ohne API-Aufrufe, es wird nichts geschrieben) oder die **Ausführung**.

Die Ausführung erledigt beides in einem Zug: Sie übersetzt zuerst alle offenen Beiträge und legt danach von selbst die Menü-, Modul- und — bei YOOtheme — Footer- und Vorlagen-Zwillinge an. Die Reihenfolge ist keine Wahl, sondern eine Abhängigkeit: Gespiegelt werden kann nur, was schon übersetzt ist. Deshalb erledigt das der Assistent und nicht Sie.

<div class="callout info" id="bkmrk-l%C3%A4uft-die-zeit-aus-o">Läuft die Zeit aus oder halten Sie an, geht nichts verloren — der nächste Start macht genau dort weiter. Was bereits übersetzt ist, wird nicht noch einmal übersetzt.

</div>## Die Ausführung

Der Echtlauf übersetzt den nächsten Stapel und schreibt die Übersetzungen als reguläre Joomla-Beiträge — mit Sprachverknüpfung zum Original, korrekten Rechten und, wo vorhanden, übertragenen Feldwerten und Schlagwörtern. Vorher greifen drei Mechanismen:

- **Sicherungs-Bestätigung:** Je Echtlauf bestätigen Sie per Häkchen, dass eine aktuelle Sicherung der Website vorliegt.
- **Kosten-Tor:** Übersteigt die Schätzung des Laufs die Kostengrenze aus den Optionen, bricht der Lauf ab, bevor etwas übersetzt wird. Die Grenze schützt vor dem teuersten Unfall — einer ungewollten Neuübersetzung des gesamten Bestands.
- **Stapelgrenze:** Höchstens die eingestellte Zahl Beiträge je Lauf (Voreinstellung 20).

## Große Bestände: einfach weiterklicken

Ein Weblauf hat ein Zeitbudget. Läuft es aus, hält der Lauf sauber an — der Stand ist je Beitrag festgeschrieben, und der nächste Klick auf „Nächsten Stapel übersetzen" macht genau dort weiter. Nichts geht verloren, nichts wird doppelt übersetzt.

## Die Protokolle

Jeder Lauf schreibt ein Protokoll. Seit 0.17.0 lassen sie sich im Backend lesen, ohne auf den Server zu gehen: In der Übersicht führt der Eintrag **Protokolle** zu einer Liste der abgeschlossenen Läufe; ein Klick zeigt den vollen Wortlaut daneben.

Trockenläufe und Echtläufe stehen nebeneinander, jüngste zuerst. Sehr lange Protokolle werden nach 500 KB abgeschnitten — die vollständige Datei liegt weiterhin im Protokollordner.

## Fortschreibung

Nach der Erstübersetzung erkennt TranslatePilot Änderungen von selbst: Ein geänderter Titel, Text, eine geänderte Meta-Angabe oder ein geänderter Feldwert lassen genau diesen Beitrag als „geändert" erscheinen; der nächste Lauf schreibt seine Übersetzung fort. Unveränderte Beiträge kosten nichts.

[English version](https://docs.graup-it.de/link/283)

# Menüs, Module, Footer und Templates spiegeln

Übersetzte Beiträge allein machen noch keine mehrsprachige Website: Ohne eigene Menüpunkte ist die Zielsprache nicht navigierbar, sprachgebundene Module fehlen auf den übersetzten Seiten, und YOOtheme-Footer wie -Templates kennen nur die Quellsprache. Die Spiegelungen schließen diese Lücken: jede mit kostenloser Vorschau, jede wiederholbar, jede überspringt, was schon passt.

<div class="callout info" id="bkmrk-sie-m%C3%BCssen-sie-nicht">**Sie müssen sie nicht einzeln starten.** Die Spiegelungen sind Teil von **Schritt 7**: Der Lauf übersetzt zuerst die Beiträge und hängt sie danach von selbst an, in der richtigen Reihenfolge. Zwillinge entstehen nämlich nur für Ziele, deren Übersetzung schon existiert — vorher fänden sie nichts. Diese Seite beschreibt, was dabei im Einzelnen geschieht.

Muss später ein Teil nachgebessert werden, ohne den ganzen Lauf zu wiederholen, stehen die vier Abschnitte einzeln unter *Einzelne Abschnitte nachziehen* in Schritt 7. Alle übersetzen Texte und stehen deshalb hinter derselben Profil-Freigabe wie die Beiträge.

</div>## Menü-Spiegelung

Legt je Zielsprache Menü-Zwillinge an — für jeden Menüpunkt, dessen Ziel (Beitrag oder Kategorie) bereits übersetzt ist:

- Titel und Kurzname des Zwillings kommen vom übersetzten Inhalt; bei Kategorie-Menüpunkten mit eigenem Menütitel wird dieser Titel übersetzt.
- Die Zwillinge werden in die Struktur der Quellsprache einsortiert — die Navigation beider Sprachen sieht gleich aus.
- Die Startseiten werden geraderückt: Die echte Startseite wird Home je Sprache, die bei der Einrichtung angelegten Ersatz-Startseiten werden zurückgezogen.
- Gespiegelte Quell-Menüpunkte auf Sprache „Alle" wechseln zur Quellsprache.
- Menüpunkte **ohne** übersetzbares Ziel — Anmeldung, Mitgliederbereich, externe Verweise — bekommen seit 0.17.0 ebenfalls einen Zwilling: gleicher Verweis, gleicher Typ, übersetzter Titel. Vorher blieben sie auf „Alle" und trugen damit in jeder Sprache denselben Titel. Ausgenommen sind Aliaspunkte, deren Ziel keinen Zwilling hat.
- Auf YOOtheme-Websites werden die Menü-Einstellungen des Customizers (etwa Dropdown-Breiten) auf die Zwillinge übertragen.
- Zum Abschluss läuft die **Link-Nacharbeit**: Interne Verweise in den übersetzten Beiträgen werden auf die Übersetzungen umgebogen, und Meta-Adressen (JSitemap) werden auf die nun echten Routen umgestellt.

## Menüs je Sprache

Verteilt die Menüpunkte auf **ein Menü je Sprache** und legt je Sprache ein eigenes Menü-Modul an. Das ist der Aufbau, den Joomla selbst vormacht und den YOOtheme Pro für mehrsprachige Websites ausdrücklich verlangt.

- Aus einem Menü werden mehrere: `mainmenu-de-de`, `mainmenu-en-gb` und so fort. Die Menüpunkte werden *umgehängt*, nicht kopiert — Verknüpfungen, Adressen und Einstellungen bleiben erhalten.
- Je Sprache und Anzeigeort entsteht ein Menü-Modul, das genau das Menü dieser Sprache zeigt.
- Erst wenn **alle** neuen Module stehen, wird die bisherige Anzeige abgeschaltet. Bricht etwas vorher ab, bleibt die alte Navigation in Betrieb.
- Auf YOOtheme-Websites wird dabei die Menü-Einstellung der Customizer-Position gelöst — angezeigt wird ab dann über die Module. Der bisherige Stand des Customizers wird vorher als Datei im Protokollordner gesichert.
- Ein Menü, das **kein** Modul und keine Template-Position anzeigt, wird nicht angefasst und im Protokoll genannt.

**Reihenfolge:** Dieser Durchgang gehört *hinter* die Menü-Spiegelung. Er verteilt die Zwillinge, die dort entstehen — vorher fände er nichts vor.

Am Ergebnis ändert sich für Besucher nichts: Die Navigation sieht in jeder Sprache aus wie zuvor. Gewonnen ist, dass jede Sprache ihr Menü von nun an eigenständig gestalten kann.

## Modul-Spiegelung

Module auf Sprache „Alle" erscheinen ohnehin in jeder Sprache und bleiben unangetastet. Module mit fester Quellsprache würden auf den übersetzten Seiten fehlen — die Analyse listet sie auf, und die Spiegelung legt je Zielsprache einen übersetzten Zwilling an: Titel und Inhalt übersetzt, Position und Sichtbarkeit übernommen, die Seitenzuweisung auf die Menü-Zwillinge umgestellt. Modul-Einstellungen werden unverändert kopiert.

Die Spiegelung legt nur an; spätere Änderungen am Quellmodul wandern nicht automatisch in den Zwilling.

## Footer-Spiegelung (nur YOOtheme)

Der Footer-Baukasten von YOOtheme kennt keine Sprachvarianten. Der von YOOtheme selbst dokumentierte Weg sind Baukasten-Module in der Position `bottom`, eines je Sprache — genau das baut dieser Schritt: das Footer-Layout aus dem Customizer wird je Sprache in ein Modul überführt, die Texte übersetzt, interne Verweise umgebogen. Erst wenn alle Module stehen, wird der Customizer-Footer geleert; die alte Fassung wird vorher als Datei gesichert.

## Template-Spiegelung (nur YOOtheme)

YOOtheme rendert Beitrags-Detailseiten über Templates mit Zuweisungsbedingungen — und die nennen die Kategorien der Quellsprache. Übersetzte Beiträge fielen deshalb auf die schmucklose Standard-Ansicht zurück. Dieser Schritt legt je Zielsprache eine Kopie jedes Templates an: Kategorien auf die übersetzten Zwillinge umgestellt, Beschriftungen übersetzt, Verweise umgebogen. Templates, deren Kategorien keine Übersetzung haben, werden übersprungen.

Ohne YOOtheme melden Footer- und Template-Spiegelung schlicht, dass es nichts zu tun gibt.

[English version](https://docs.graup-it.de/link/284)

# Mitgliedschaften übersetzen (OS Membership)

Wer Mitgliedschaften über **OS Membership** verkauft, hat Inhalte, die auf keiner Beitragsseite stehen: die Mitgliedschaftspläne mit ihren Beschreibungen, die Kategorien darüber, die Felder im Bestellvorgang und die E-Mail-Vorlagen, die nach einem Abschluss verschickt werden. Bleiben die deutsch, endet die englische Fassung der Website an der Preisliste.

TranslatePilot kann sie mitübersetzen. **Im Auslieferungszustand tut es das nicht**— es ist eine fremde Erweiterung, und in deren Daten zu schreiben soll eine Entscheidung sein, keine Voreinstellung.

## Einschalten

In den Optionen der Komponente gibt es den Reiter *OS Membership* mit fünf Schaltern:

- **OS Membership mitübersetzen** — der Hauptschalter. Solange er aus ist, sieht TranslatePilot die Erweiterung gar nicht an.
- **Pläne und Kategorien** — Titel, Kurz- und Langbeschreibung, Seitentitel und Meta-Beschreibung. Das ist, was ein Besucher liest, und der übliche Fall.
- **Formularfelder** — Beschriftungen, Platzhaltertexte, Hilfetexte, Fehlermeldungen und Auswahlwerte der Felder im Bestellvorgang.
- **E-Mail-Vorlagen und Systemmeldungen** — die Texte der Bestätigungs-, Erinnerungs- und Verlängerungsmails.

Ist OS Membership installiert, der Hauptschalter aber aus, weist der Assistent in Schritt 5 einmal darauf hin. Ausgeführt wird die Übersetzung dann als weiterer Abschnitt von **Schritt 7**, zusammen mit den übrigen Spiegelungen.

## Wo OS Membership Übersetzungen ablegt

OS Membership verwaltet seine Mehrsprachigkeit selbst, und zwar anders als Joomla: Es legt für jede zusätzliche Sprache **eigene Felder** in seinen Tabellen an. Die Grundfelder tragen die Standardsprache der Website, die zusätzlichen Felder die Übersetzungen. Im Backend sehen Sie das als Reiter *Übersetzungen* bei jedem Plan und jeder Kategorie.

Diese Felder legt **OS Membership an, nicht TranslatePilot** — und zwar in dem Moment, in dem Sie sein Backend öffnen. Solange sie fehlen, gibt es nichts, wohinein übersetzt werden könnte.

<div class="callout warning" id="bkmrk-fehlen-die-felder%2C-s">**Fehlen die Felder, sagt der Assistent es in Schritt 7 — mit dieser Reihenfolge:**

1. Öffnen Sie einmal das Backend von OS Membership (*Komponenten → Membership Pro*). Dabei legt es die Sprachfelder an, vollständig und passend zu seiner Version.
2. Bleiben danach Felder aus: in OS Membership unter *Werkzeuge* die Reparatur für die Zeilengröße beziehungsweise für fehlende Mehrsprachigkeitsfelder ausführen.
3. Meldet OS Membership dabei einen Datenbankfehler über einen ungültigen Vorgabewert: Die Plan-Tabelle trägt Datumsvorgaben, die der Datenbankserver in seiner strengen Einstellung ablehnt. Das ist einmalig an der Tabelle oder an der Servereinstellung zu richten — von Ihnen oder Ihrem Hoster.
 
In aller Regel genügt der erste Schritt. Auf der Referenzinstallation legte ein einziger Aufruf des OS-Membership-Backends alle Sprachfelder an — 26 bei den Plänen, 3 bei den Kategorien, 9 bei den Formularfeldern. Das Schema gehört OS Membership; TranslatePilot greift ihm dort bewusst nicht vor, weil es die Erweiterung sonst daran hindern könnte, künftige Felder selbst zu ergänzen.

</div>## Was übersetzt wird — und was nicht

Übersetzt werden Titel und Beschreibungen der Pläne und Kategorien, auf Wunsch die Formularfelder und die E-Mail-Vorlagen. Der Adresszusatz jeder Sprache wird aus dem übersetzten Titel *abgeleitet*, nicht übersetzt — sonst entstünde eine Adresse aus einem ganzen Satz.

Bewusst unangetastet bleiben:

- **Meta-Schlüsselwörter.** Eine übersetzte Stichwortliste ist keine Übersetzung, sondern eine neue Recherche — maschinell übersetzt entstehen Wörter, nach denen niemand sucht.
- **Kartenlayouts und Steuerwerte** der Formularfelder. Das ist keine Prosa, sondern Technik; übersetzt bricht das Formular still.
- **Ländernamen.** OS Membership liefert sie in der Regel bereits in der Zielsprache mit.
- **Abonnenten und Rechnungen.** TranslatePilot fasst keine Kundendaten an.

## Von Hand Übersetztes bleibt stehen

Haben Sie im Backend von OS Membership schon englische Texte gepflegt, bleiben sie unangetastet. TranslatePilot führt Buch darüber, was es selbst geschrieben hat; findet es in einem Sprachfeld etwas, das nicht von ihm stammt, meldet es das und lässt die Finger davon — ganz gleich, wie alt die Übersetzung ist. Dasselbe gilt, wenn Sie eine von TranslatePilot erzeugte Übersetzung später nachbessern: Ab dann gilt sie als Ihre.

## Welche Vorlagen überhaupt eine Übersetzung brauchen

OS Membership liefert seine E-Mail-Vorlagen **auf Englisch** aus. Übersetzt sind nur die, die Sie selbst angefasst haben — auf einer typischen deutschen Website sind das eine Handvoll von mehreren Dutzend. Auf der Referenzinstallation waren es **6 von 61**.

Das ist wichtig, weil der Zähler in Schritt 7 etwas anderes zählt: *alle* Schlüssel, die OS Membership als übersetzbar führt. „61 von 61 offen“ heißt also nicht, dass 61 Texte in der falschen Sprache stehen — sondern dass es 61 Schlüssel gibt, von denen die meisten längst englisch sind.

<div class="callout info" id="bkmrk-bei-den-vorlagen-f%C3%A4l">**Bei den Vorlagen fällt OS Membership zurück — anders als bei den Feldern.** Gibt es zu einem Schlüssel keinen Text in der Zielsprache, nimmt es den Grundtext. Eine Vorlage, die ohnehin englisch ist, braucht deshalb *gar keine* englische Fassung.

Bei den Sprachfeldern der Pläne und Kategorien ist es genau umgekehrt: Dort heißt leer auch leer, und die englische Seite bleibt an der Stelle weiß.

</div>Praktisch heißt das: Lassen Sie die Vorlagen ruhig mitlaufen — der Durchgang schreibt für englische Vorlagen eine identische Kopie, was nichts kaputt macht. Wollen Sie sparen, übersetzen Sie sie einmal gezielt und schalten den Schalter danach wieder aus. Welche Vorlagen in Ihrer Sprache verfasst sind, sehen Sie in OS Membership unter *Konfiguration → Nachrichten*.

## Platzhalter in den E-Mail-Vorlagen

Die Mailtexte enthalten Platzhalter, die OS Membership beim Versand ersetzt — den Namen des Empfängers, den Titel des Plans, das Ablaufdatum. Ein Übersetzer, der so einen Platzhalter als Text vor sich hat, hat allen Anlass, ihn mitzuübersetzen; die Mail geht dann mit einem Platzhalter hinaus, den OS Membership nicht mehr kennt, und der Empfänger liest eckige Klammern.

Deshalb werden die Platzhalter vor der Übersetzung herausgenommen und danach wieder eingesetzt. Fehlt anschließend auch nur einer, wird **die Übersetzung verworfen**und die Vorlage bleibt, wie sie war. Eine deutsche Mail ist die falsche Sprache; eine Mail ohne den Namen des Empfängers ist an niemanden gerichtet.

<div class="callout info" id="bkmrk-fahren-sie-vor-dem-e">Fahren Sie vor dem ersten Echtlauf einen **Trockenlauf** in Schritt 7. Er zeigt vollständig, was geschähe — wie viele Pläne, Felder und Vorlagen betroffen sind —, kostet nichts und schreibt nichts.

</div>[English version](https://docs.graup-it.de/link/291)

# Automatisch übersetzen (geplante Aufgabe)

Nach der Erstübersetzung kann TranslatePilot den Alltag übernehmen: Das mitgelieferte Aufgaben-Plugin übersetzt neue und geänderte Beiträge zeitgesteuert über Joomlas Aufgabenplaner — mit exakt denselben Schutzmechanismen wie im Backend.

## Aufgabe anlegen

1. *System → Geplante Aufgaben → Neu* und den Typ **„TranslatePilot: Beiträge übersetzen"** wählen.
2. Eine Ausführungsregel festlegen — etwa stündlich oder täglich zur Nachtzeit.
3. Die Aufgaben-Parameter ausfüllen (unten) und speichern.

Ausgeführt wird die Aufgabe, wie Joomla es vorsieht: über den eingebauten Web-Auslöser, einen Cron-Aufruf von `cli/joomla.php scheduler:run` oder den Knopf „Testlauf" in der Aufgabenliste.

## Die Aufgaben-Parameter

- **Benutzer für geplante Läufe** (Pflicht). Unter diesem Benutzer werden die Übersetzungen gespeichert, wenn kein Backend-Benutzer angemeldet ist. Er braucht das Recht, Beiträge anzulegen und zu bearbeiten.
- **„Regelmäßige automatische Sicherungen sind eingerichtet."** Die Sicherungs-Bestätigung, die im Backend je Klick erfolgt, wird für geplante Läufe zur Daueransage: Solange hier nicht bewusst „Ja" steht, läuft die Aufgabe nicht.
- **Sicherungsdatei** (optional) mit **Höchstalter**. Tragen Sie den Pfad zur jeweils neuesten Sicherungsdatei ein, prüft die Aufgabe vor jedem Lauf, dass die Datei existiert, nicht leer und jung genug ist. Ein still ausgefallener Sicherungsjob stoppt dann auch die Übersetzung — statt dass wochenlang ohne Netz geschrieben wird.

## Was die Automatik nicht aushebelt

- **Die Freigabe.** Ohne gesichtete Probe des aktuellen Profils, Anbieters und Modells bricht die Aufgabe mit einer klaren Meldung ab. Ändern Sie das Profil, hält der Cron an, bis ein Mensch neu freigegeben hat.
- **Kosten- und Stapelgrenze** gelten je Lauf wie im Backend.
- **Die Spiegelungs-Schritte** (Menü, Footer, Templates) laufen bewusst nie zeitgesteuert — das sind seltene Struktur-Eingriffe mit Vorschau, kein Dauerbetrieb.

## Verhalten bei großen Beständen

Jeder Lauf übersetzt höchstens einen Stapel und hält sich an ein Zeitbudget. Was nicht mehr in den Lauf passt, übernimmt der nächste — der Stand ist je Beitrag festgeschrieben. Ein großer Bestand wird so über mehrere Läufe abgearbeitet, ohne dass etwas verloren geht.

Das Protokoll jedes Laufs finden Sie in der Aufgabenliste beim jeweiligen Eintrag; zusätzlich schreibt TranslatePilot sein eigenes Protokoll ins Joomla-Logverzeichnis.

[English version](https://docs.graup-it.de/link/285)

# Häufige Fragen

## Warum wird ein Beitrag übersprungen?

Die häufigsten Gründe stehen in der Analyse direkt beim Beitrag: Er steht auf Sprache „Alle" (nur Inhalte der Quellsprache werden übersetzt — die Einrichtung kann das umstellen), oder er ist in den Optionen ausdrücklich ausgeschlossen.

## Die Modellliste in den Optionen ist leer beziehungsweise nicht ladbar

Die Liste kommt direkt vom Anbieter und braucht dafür den gespeicherten API-Schlüssel: erst Anbieter und Schlüssel eintragen, speichern, dann die Optionen erneut öffnen. Bleibt die Liste nicht ladbar, ist meist der Schlüssel ungültig oder der Anbieter gerade nicht erreichbar — der gespeicherte Modellwert bleibt in beiden Fällen wählbar.

## Der Echtlauf-Knopf ist ausgegraut

Dann fehlt die Freigabe: erst eine Probe fahren und sichten, dann „Profil freigeben". Nach jeder Änderung an Profil, Anbieter oder Modell ist eine neue Probe fällig — das ist der Qualitätsschutz, kein Fehler.

## Was kostet die Übersetzung?

Das hängt vom Anbieter ab. Bei tokenbasierten Anbietern (Claude) zeigt die Analyse eine USD-Schätzung je Stapel; typische Textbeiträge kosten Bruchteile eines Cents bis wenige Cent pro Beitrag. Bei Pauschaltarifen (Mittwald AI Hosting) kostet der einzelne Lauf nichts; die Token zählen gegen das Monatskontingent, und die Analyse zeigt, wie viele. Die Kostengrenze je Lauf schützt zusätzlich vor Ausreißern.

## Eine Übersetzung wurde von Hand nachbearbeitet — überschreibt der nächste Lauf sie?

Nur, wenn sich das *Original* seither geändert hat: Dann gilt der Beitrag als geändert und wird fortgeschrieben — Ihre Handarbeit an der Übersetzung geht dabei verloren. Solange das Original unverändert bleibt, rührt TranslatePilot die Übersetzung nicht an. Wer eine Übersetzung dauerhaft von Hand pflegen will, nimmt den Beitrag in die Ausschlussliste der Optionen auf.

## Was bedeutet die Meldung über verwaiste Übersetzungen?

Eine Übersetzung existiert, deren Original gelöscht oder in den Papierkorb verschoben wurde. TranslatePilot löscht grundsätzlich nichts — es meldet den Fund, und Sie entscheiden, ob die Übersetzung bleiben soll.

## Ändert die Neuübersetzung Adressen?

Ja, das kann passieren: Wird ein Bestands-Beitrag neu übersetzt (etwa nach einer Profiländerung), entsteht der Kurzname der Übersetzung neu aus dem frischen Titel. Interne Verweise arbeitet die Link-Nacharbeit nach; externe Verweise auf die alte Adresse der Übersetzung tun das nicht. Bei geplanten Profiländerungen an gut verlinkten Seiten lohnt ein Blick auf die wichtigsten Adressen.

## Brauche ich YOOtheme Pro oder JSitemap Pro?

Nein. Beide sind optional. Mit dem Joomla-Kern allein funktioniert alles: Übersetzung, Einrichtung, Menü- und Modul-Spiegelung. YOOtheme bringt zusätzlich Builder-Seiten, Footer- und Template-Spiegelung ins Spiel; JSitemap Pro dessen Meta-Überschreibungen.

## Schreibt TranslatePilot bei offenem YOOtheme-Customizer?

Das sollte es nicht: Schreibt ein Lauf in eine Builder-Seite, während dieselbe Seite im Customizer geöffnet ist, zeigt YOOtheme dort einen Konfliktdialog. Geplante Läufe deshalb außerhalb der Redaktionszeiten legen.

[English version](https://docs.graup-it.de/link/286)

# Änderungsprotokoll

Von TranslatePilot ist noch keine Version veröffentlicht.

[English version](https://docs.graup-it.de/link/287)