Warum ich damit angefangen habe
fixops.pro hat vier Sprachen: Englisch als Hauptsprache sowie Deutsch, Griechisch und Ukrainisch. Jede Seite, jede Formularbeschriftung und jeden Kategorienamen von Hand zu übersetzen dauert lange, und die automatische Übersetzung des Plugins klingt oft trocken und ungenau. Ich wollte einen anderen Ansatz ausprobieren: die Routinearbeit an einen KI-Agenten abgeben und die Kontrolle selbst behalten.
Diese Forschungsnotiz beschreibt, wie das funktioniert, was dabei herauskam und welche Fehler mir unterwegs aufgefallen sind.
Ein Experiment mit Claude
Ich nutze KI schon lange in meiner Arbeit und wollte sehen, wie weit ich mit Claude von Anthropic bei einer konkreten Aufgabe kommen kann: einer mehrsprachigen WordPress-Website. Mir ging es nicht darum, ein Modell „einen Absatz übersetzen“ zu lassen, sondern es in einen echten Prozess einzubinden: Es soll selbst unübersetzte Strings finden, das Ergebnis dorthin schreiben, wo das Plugin es erwartet, und dabei die Website nicht beschädigen.
Wie es technisch funktioniert
TranslatePress selbst registriert in WordPress nur einige wenige Einstellungsaktionen (zum Beispiel die Liste der Sprachen), und standardmäßig sind sie für Agenten über MCP nicht geöffnet. Aktionen zum Lesen und Schreiben der Übersetzungen selbst gibt es nicht. Diesen fehlenden Teil habe ich als kleines Plugin geschrieben: TranslatePress AI Bridge. Es fügt der Website „Abilities“ für die Arbeit mit dem Wörterbuch hinzu, und Agenten verbinden sich von dort aus.
Website-Ebene: WordPress Abilities
Seit WordPress 6.9 hat der Kern eine Abilities API: Ein Plugin deklariert kleine Operationen mit einer Beschreibung ihrer Ein- und Ausgaben. Mein Plugin deklariert sieben davon:
| Ability | Was sie tut |
|---|---|
get-strings | Gibt Wörterbuch-Strings einer gewählten Sprache seitenweise zurück. Standardmäßig nur unübersetzte. |
register-page-strings | Lädt eine Seite in der Zielsprache, damit TranslatePress ihre Strings ins Wörterbuch aufnimmt. |
save-translations | Schreibt Paare aus „ID und Übersetzung“ über die eigene Abfrageschicht von TranslatePress. |
get-excluded-selectors und update-excluded-selectors | Liest und ändert die Liste „Diese Selektoren nicht übersetzen“. |
purge-strings | Löscht unnütze unübersetzte Strings anhand von ID oder regulärem Ausdruck. |
translate-via-api | Übersetzt unübersetzte Strings mit Claude über den im Plugin hinterlegten API-Schlüssel. |
Verbindungsebene: MCP
Das Model Context Protocol verbindet solche Abilities als Werkzeuge mit einem KI-Agenten. Auf der Website läuft der MCP Adapter, der die markierten Abilities veröffentlicht. Der Agent fragt zuerst die Website, was sie kann und welche Parameter jede Aktion hat, und ruft sie erst dann auf.
Im Chat sage ich also zu Claude „Übersetze die Strings ins Griechische“, und er liest das Wörterbuch, übersetzt und schreibt das Ergebnis selbst. Ich muss nicht den visuellen TranslatePress-Editor öffnen und auf dessen admin-ajax Anfragewarteschlange warten.
Autonome Ebene: mein eigener Anthropic-API-Schlüssel
Die Arbeit über einen Chat bedeutet, dass ich dabeisitzen und zusehen muss. Damit die Website selbstständig übersetzen kann, ohne Client und ohne offene MCP-Sitzung, habe ich dem Plugin Unterstützung für die Anthropic API hinzugefügt, mit meinem eigenen Schlüssel (Anthropic stellt dem Schlüsselinhaber die Kosten in Rechnung). Es gibt drei Wege, einen Lauf zu starten:
- eine Schaltfläche in den Plugin-Einstellungen;
- ein WP-CLI-Befehl:
wp trpab translate --lang=de_DE --dry-run, danach derselbe ohne--dry-run; - die
translate-via-api-Funktion oder die integrierte Engine „Claude (Anthropic API)“ in der automatischen Übersetzung von TranslatePress.
Standardmäßig verwendet das Plugin das Modell claude-haiku-4-5 sendet 40 Strings pro Anfrage und höchstens 200 Strings pro Lauf. In den Einstellungen lassen sich ein Glossar und Stilhinweise festlegen, zum Beispiel „Website schreiben, nicht Webseite“. Der Schlüssel kann liegen in wp-config.php, in einer Umgebungsvariablen oder verschlüsselt in der Datenbank. Die letzte Option zeigt den Schlüssel nie wieder an.
Vertrauensmodell
Ich habe das Vertrauen so aufgebaut, dass der Agent Fehler machen kann, ohne große Folgen zu verursachen:
- Berechtigungen. Dieselben wie beim TranslatePress-Editor (
manage_optionsstandardmäßig). - Maschinenstatus.
save-translationsspeichert Übersetzungen mit dem Status „maschinell“ und überschreibt standardmäßig niemals Strings, die ein Mensch geprüft hat. - Testlauf. Schreiben, Löschen und API-Übersetzung laufen standardmäßig als Testläufe und zeigen, was passieren würde, ohne etwas zu ändern.
- Nur die eigene Website.
register-page-stringsruft nur URLs der eigenen Domain der Website auf. - Sicherung. Vor Massenoperationen brauchen Sie eine Kopie der
wp_trp_dictionary_*Tabellen.
Das Prinzip ist einfach: Der Agent schlägt vor und schreibt, ich lege die Regeln fest, prüfe das Ergebnis und treffe die Entscheidungen.
Was schiefgelaufen ist
Müll im Wörterbuch
Sobald der Agent die erste Seite registriert hatte, füllte sich das Wörterbuch mit viel Ballast:
- Symbolnamen (
check_circle,gpp_bad,volunteer_activism). Das ist die Schrift Material Symbols, bei der ein Symbol als Text angegeben wird, und das Plugin hielt ihn gewissenhaft für Wörter; - Vorlagentext von Divi wie Lorem ipsum und „Your content goes here“;
- Testbeiträge wie „Hello world!“;
- die Lauftextzeile in der Kopfzeile: Sie wird Buchstabe für Buchstabe getippt, und jede Zwischenversion (
checking client-c.io … res,… resp,… respo) wurde zu einem eigenen String; - Zahlen und eine Zeitzone wie
18msundGMT+2.
In jeder Sprache sammelten sich etwa fünfzig solcher Strings. Ich habe sie mit einem regulären Ausdruck entfernt, zuerst als Testlauf, der genau zeigt, was gelöscht würde, und erst dann wirklich.
Aber das Aufräumen des Wörterbuchs behandelt nur das Symptom. Die Ursache liegt woanders, deshalb habe ich zwei Dinge getan:
- Ich habe die Container mit dynamischem Inhalt zu den Ausnahmen des Plugins hinzugefügt (
#tickerText,[data-count-to],.notranslate); - Ich habe die Symbole aus dem Text ins CSS verlegt: Statt eines Wortes im Markup wird das Symbol jetzt per
contentim Stylesheet gezeichnet. Das Plugin sieht diesen Text nicht, deshalb tauchen die Strings nicht mehr auf.
IDs sind nicht gemeinsam
Derselbe englische Satz hat in jeder Sprache eine andere Nummer. Mein griechisches Wörterbuch war gegenüber dem deutschen um Dutzende IDs versetzt. Wendet man die ID-Liste einer Sprache auf eine andere an, wird die Übersetzung in die falschen Strings geschrieben. Deshalb holt sich der Agent für jede Sprache eine neue Liste.
Der Cache zeigt die alte Seite
Ich habe die Übersetzungen gespeichert, die Seite geöffnet und Englisch gesehen. Die Ursache war der LiteSpeed-Cache, der eine gespeicherte Kopie auslieferte. Um zu prüfen, ob die Übersetzungen vorhanden sind, habe ich die Seite mit einem beliebigen Parameter in der URL abgerufen, was den Cache umgeht. Nach dem Leeren des Caches passte alles.
Seiten ohne Beiträge werden nicht übersetzt
Die Kategorie „Off the Grid“ war angelegt, hatte aber noch keine Beiträge, und ihre Seite lieferte einen 404-Fehler. Strings mit ihrem Namen erschienen erst im Wörterbuch, als die Kategorie auf anderen Seiten angezeigt wurde.
Wo die KI Fehler gemacht hat
Das ist der wichtigste Teil. Die Übersetzungen wirkten flüssig, aber als ich sie sorgfältig noch einmal las, fand ich echte Fehler.
Im Griechischen:
- ein nicht existierendes Wort statt „ich habe angefangen“ (im Text stand „Ύργισα“ statt „Ξεκίνησα“);
- eine Formulierung, die „Websites, die wegen Hackern verloren gehen“ bedeutet, statt „Websites, die gehackt werden“;
- Listenpunkte endeten mit einem Semikolon. Im Griechischen ist das ein Fragezeichen, die Liste las sich also wie eine Kette von Fragen;
- das Wort für „Programm“ statt „Unternehmen“, wo eine Agentur gemeint war;
- mehrere Tippfehler und Kongruenzfehler.
Im Ukrainischen: ein Wort enthielt den lateinischen Buchstaben i mitten in kyrillischen Zeichen. Mit bloßem Auge ist das unsichtbar, aber eine Textsuche findet ein solches Wort nicht.
Ich habe etwa dreißig griechische Strings und einen ukrainischen String korrigiert. Das Deutsche habe ich nicht von Hand nachgelesen, und das ist eine ehrliche Schwachstelle.
Das Fazit: Eine KI-Übersetzung taugt als Entwurf, nicht als Endergebnis. Das gilt besonders für Sprachen, die man selbst nicht liest.
Wie ich die Qualität kontrolliere
- String-Status. Jede Übersetzung wird mit dem Status „maschinell“ gespeichert. Strings, die ein Mensch geprüft hat, erhalten den Status „geprüft“, und der Agent lässt sie standardmäßig in Ruhe.
- Testlauf. Jede Massenaktion, besonders das Löschen, läuft zuerst in einem Modus, der nichts ändert und nur eine Liste zeigt.
- Ein Muttersprachler als Leser. Für Sprachen, die Sie nicht kennen, brauchen Sie mindestens einen Leser. Für das Griechische ist das der Schritt, den ich beim nächsten Mal früher gehen würde.
- Prüfung der Live-Seite. Ich vertraue einem Schreibvorgang ins Wörterbuch erst, wenn ich die Übersetzung auf der Live-Seite sehe, bei umgangenem Cache.
Was Sie prüfen sollten, bevor Sie das wiederholen
- Lizenz und Bedingungen. Mein Plugin ist für das kostenlose TranslatePress gebaut und arbeitet über dessen eigene Abfrageschicht. Kostenpflichtige Versionen und Add-ons können eigene Nutzungsbedingungen haben. Lesen Sie diese also, bevor Sie einen KI-Agenten damit verbinden, und fragen Sie im Zweifel den Support.
- Wessen Texte es sind. Die Strings gehen an ein Modell. Für Ihre eigene Website ist das in Ordnung, aber Kundentexte dürfen Sie so nicht ohne Einwilligung senden.
- Wessen Rechnung es ist. Bei der API wird jeder Lauf über Ihren Schlüssel abgerechnet. Beginnen Sie mit einem Testlauf: Er zeigt, wie viele Strings und Tokens ein Lauf benötigen würde.
- Eine Sicherung. Machen Sie vor Massenoperationen eine Kopie der Wörterbuchtabellen.
Fazit
An einem Tag habe ich den Beitrag, die Oberfläche und die Kategorien in drei Sprachen übersetzt und das Wörterbuch in Ordnung gebracht. Von Hand hätte das viel länger gedauert.
Das Hauptergebnis ist aber ein anderes. Der Agent beschleunigt die Routine, die Verantwortung für die Genauigkeit bleibt beim Menschen. Ohne Prüfung wäre im griechischen Text ein Wort geblieben, das es nicht gibt.
Lassen Sie uns zusammenarbeiten
Wenn Sie eine mehrsprachige WordPress-Website brauchen, Hilfe mit TranslatePress oder einen sorgfältigen Weg, KI in solche Prozesse einzubinden, ohne an Qualität zu verlieren, melden Sie sich bei mir. Ich antworte schnell und ohne unnötige Anrufe.