Eine Webseite in zehn, zwanzig oder vierzig Sprachen zu übersetzen, ist mit einer einzelnen KI schnell gemacht. Schwieriger ist die Frage, ob man dem Ergebnis trauen kann. Ein einzelnes Sprachmodell erfindet gelegentlich Wörter, übersetzt Produktnamen mit oder verändert eine Zahl, und es merkt es selbst nicht. Wir haben deshalb für Odoo 19 ein Modul geschrieben, bei dem mehrere KIs und Übersetzungsdienste am selben Text arbeiten, ihre Ergebnisse gegenseitig anonym bewerten und sich auf die Formulierung einigen, die gleichzeitig genau und natürlich klingt. Was nicht eindeutig ist, bekommt ein Mensch zur Entscheidung.
Das Modul heißt ai_translation_consensus und steht als freie Software unter der AGPL-3-Lizenz auf GitHub:
github.com/Alex0176/odoo-ai-translation-consensus
Inhalt dieses Beitrags
Die Idee: Gegenprüfung statt Vertrauen
Das Modul kann zwei Dinge:
- Übersetzen: fehlende (oder veraltete) Übersetzungen jedes übersetzbaren Feldes in Odoo ergänzen, also Blogbeiträge, Webseiten, Menüs, Produkte und alles andere, was Odoo mehrsprachig speichert. Die KIs sehen dabei nicht nur den einzelnen Satz, sondern die Nachbarblöcke und einen Ausschnitt der ganzen Seite. So werden einzelne Wörter im richtigen Zusammenhang verstanden.
- Korrekturlesen: den Text in seiner eigenen Sprache prüfen und bessere Formulierungen oder Korrekturen vorschlagen. Das Original ist dabei immer einer der Kandidaten. Gewinnt das Original, wird nichts geändert.
Der Kern ist die gegenseitige Prüfung. Jede KI ist gut darin, fremde Texte zu beurteilen, auch wenn sie selbst gelegentlich danebenliegt. Das nutzt das Modul: Mehrere Anbieter schreiben je eine Fassung, und dieselben Anbieter bewerten danach alle Fassungen, ohne zu wissen, von wem sie stammen. Die eigene Fassung bewertet ein Anbieter nicht mit.
So entsteht ein Vorschlag
- Übersetzen. Jeder Übersetzer schreibt parallel eine Fassung.
- Feste Prüfungen. Ohne KI wird kontrolliert, ob HTML-Tags, Entitäten, Platzhalter wie
%soder{}, Zahlen und Links unverändert geblieben sind. Eine Fassung, die das verletzt, kann nie gewinnen, auch wenn sie noch so flüssig klingt. - Bewerten. Die übrigen Fassungen werden gemischt und anonymisiert. Jeder Prüfer vergibt für jede eine Note für Genauigkeit und für Natürlichkeit (1 bis 10), nennt einen Favoriten und kann eine Verbesserung vorschlagen.
- Einigen. Der Rang einer Fassung ist 0,5 × Durchschnittsnote + 5 × Anteil der Favoritenstimmen. Als Einigung zählt, wenn die beste Fassung mindestens 60 % der Favoritenstimmen und eine Durchschnittsnote von mindestens 7,0 hat.
- Zweite Runde. Ohne Einigung gehen die besten Fassungen samt den Verbesserungsvorschlägen der Prüfer noch einmal in die Bewertung.
- Mensch. Wird es auch dann nicht eindeutig, wartet der Vorschlag auf eine Entscheidung.
Gibt es nur reine Übersetzungsdienste ohne Prüffunktion (zum Beispiel DeepL), gilt ein Ergebnis nur dann als vereinbart, wenn mindestens zwei Dienste exakt denselben Text geliefert haben. Beim Korrekturlesen müssen die Ergebnisse dem Original erkennbar ähnlich bleiben (Ähnlichkeit mindestens 0,6, gleiche Zahlen). Kleine kostenlose Modelle beantworten einen Stapel gelegentlich mit verschobenen oder fremden Texten. Solche Antworten werden verworfen, statt abgestimmt zu werden. Ein Glossar hält Markennamen und feste Begriffe fest.
Anbieter: mit und ohne Schlüssel
Kostenlose und kostenpflichtige Dienste können in derselben Abstimmung sitzen. Das Modul bringt Voreinstellungen für viele Anbieter mit; alle sind nach der Installation ausgeschaltet.
| Art | Übersetzt | Prüft / korrigiert | Beispiele |
|---|---|---|---|
| OpenAI-kompatible Schnittstelle | ja | ja | OpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp |
| OpenAI-kompatibel ohne Schlüssel | ja | ja | Ollama auf dem eigenen Server, Pollinations |
| Anthropic | ja | ja | Claude |
| Google Gemini, Cohere | ja | ja | |
| Lokaler Befehl | ja | ja | claude -p oder jedes Programm, das von stdin liest und die Antwort ausgibt |
| Übersetzungsdienste | ja | nein | DeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva |
Man trägt den Schlüssel ein (oder den Namen einer Umgebungsvariablen, die ihn enthält), drückt Verbindung testen und schaltet den Anbieter ein. Die Modellnamen in den Voreinstellungen sind Ausgangspunkte; wer sie nutzt, sollte sie mit der aktuellen Liste des Anbieters abgleichen. Mit zwei oder mehr Anbietern gibt es eine echte Gegenprüfung, mit nur einem prüft niemand dessen Arbeit. Der Assistent weist darauf hin.
Eine ganze Webseite auf einmal
Ein Startassistent (Menü KI-Übersetzung → Hier starten) erklärt die Schritte und legt die erste Regel an. Ist das Modul website installiert, kommt das Brückenmodul ai_translation_consensus_website automatisch mit. Es ergänzt den Umfang „Eine ganze Webseite mit allem, was darauf ist“: Man wählt die Webseite und lässt sich die Inhalte vorschlagen. Das Modul schaut sich alle Modelle mit übersetzbaren Feldern an, die zur Webseite gehören (Seiten, Menüs, Blogs, Produkte, Veranstaltungen, Foren, Kurse und mehr), und schlägt eine Regel je Inhaltsart vor, mit den Sprachen der Webseite als Ziel.
- Was nicht installiert ist (Foren, Kurse, Galerien), erscheint nicht und wird später aufgenommen, sobald es installiert ist.
- Shop-Modelle werden nur vorgeschlagen, wenn die Webseite einen Shop hat. Es werden nur veröffentlichte Datensätze erfasst.
- Kontakte, Firmen, Zahlungsanbieter, Preislisten, Lieferarten, Treueprogramme und Snippet-Filter bietet das Modul bewusst nicht an.
- Die Adressnamen der Seiten (
seo_name) werden nicht übersetzt. - Nicht gewünschte Arten kann man vor dem Anlegen entfernen.
Das Anlegen und das Suchen kosten nichts: Die Regel listet nur auf, welche Texte Arbeit brauchen. Erst beim Verarbeiten werden Anbieter aufgerufen und es entstehen Kosten.
Dashboard, Kosten und automatischer Start
Das Dashboard zeigt je Regel, wie viele Texte fertig sind, auf eine Bestätigung oder einen Menschen warten, eingereiht sind oder fehlgeschlagen. Dazu kommen die Aufschlüsselung nach Sprache und Anbieter, die bisherigen und die noch zu erwartenden Kosten, die geschätzte Restzeit und der Schalter für die geplante Verarbeitung.
Die Zahlen in dieser Abbildung sind Beispieldaten und sagen nichts über echte Kosten.
- Kosten werden aus dem berechnet, was die Anbieter tatsächlich melden: Tokens (OpenAI, Anthropic, Gemini, Cohere) oder Zeichen (DeepL, Google, Azure). Tokens werden immer gezeigt, Geld nur dann, wenn Sie den Preis je Million Tokens (oder Zeichen) beim Anbieter eingetragen haben. Die Voreinstellungen enthalten keine Preise, weil sich diese ändern. Dienste, die keine Tokens melden, werden aus der Textlänge geschätzt und als Schätzung gekennzeichnet.
- Prognose: durchschnittliche Kosten und Arbeitszeit je Text mal Zahl der eingereihten Texte. Das ist eine Schätzung, die mit den ersten Stapeln besser wird.
- Automatischer Start: Regeln mit der Option Von selbst starten, wenn sich ein Datensatz ändert suchen bei jedem Lauf der geplanten Aktion nur Datensätze, die seit dem letzten Suchlauf geändert wurden. Mit eingeschalteter geplanter Aktion wird eine bearbeitete Webseite also ohne Handgriff erneut übersetzt.
- Fertigmeldung: Ist der letzte offene Text einer Regel erledigt, erscheint einmalig die Nachricht „Alle Sprachen übersetzt“ (beim Korrekturlesen „Alle Texte geprüft“) im Kanal AI Translation.
Freigabe durch Menschen
Standardmäßig schreibt das Modul nichts ohne Zustimmung in Ihre Datensätze. Jeder Vorschlag zeigt die Fassungen, wer sie geschrieben hat, die Noten und die Anmerkungen der Prüfer. Sie können den Vorschlag übernehmen, eine andere Fassung wählen, eine eigene Formulierung eintippen oder ablehnen.
Der Text und die Anbieternamen in dieser Abbildung sind frei erfunden, um die Ansicht zu zeigen.
Wer einer Regel vertraut, kann Einigung automatisch übernehmen einschalten. Vorschläge ohne Einigung warten auch dann auf einen Menschen. Beim Übernehmen prüft das Modul noch einmal, ob sich der Quelltext inzwischen geändert hat, kontrolliert die Markup-Prüfungen erneut und schreibt ohne Verfolgung und ohne Benachrichtigung von Followern.
Sicherheit und Datenschutz
- Alles ist nach der Installation aus. Anbieter und geplante Aktion sind deaktiviert. Ohne Ihr Zutun wird nichts verschickt.
- Texte verlassen Ihren Server, sobald ein gehosteter Dienst beteiligt ist. Eine Regel lässt sich als Vertraulich markieren; dann sehen den Text nur Anbieter, die als auf eigener Infrastruktur laufend gekennzeichnet sind.
- Schlüssel stehen in einem Feld, das nur Administratoren sehen, oder in einer Umgebungsvariablen, auf die nur der Name verweist. In Fehlermeldungen werden sie maskiert und werden in Headern gesendet. Ausnahme: Der optionale Schlüssel von MyMemory kann dort nur als Abfrageparameter übergeben werden.
- Lokaler Befehl führt ein Programm aus und ist deshalb gesperrt, bis der Systemparameter
ai_translation_consensus.allow_commandaufTruegesetzt wird. Der Befehl wird ohne Shell aufgerufen und läuft in einem leeren temporären Verzeichnis. - Prompt-Injection: Die Aufträge kennzeichnen den Text als Daten. Anweisungen im übersetzten Text werden nicht befolgt, und ein Ergebnis, das Tags oder Platzhalter verletzt, wird verworfen.
- Freie Dienste haben Grenzen. Pollinations erlaubt anonym eine Antwort je 45 Sekunden. Die Anbieteroption
min_intervalhält den Abstand ein, und „Bitte später erneut“-Antworten werden beachtet.
Installation
git clone https://github.com/Alex0176/odoo-ai-translation-consensus.git
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus /pfad/addons/
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus_website /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i ai_translation_consensus --stop-after-init
Benötigt werden Odoo 19 und das Python-Paket requests. Eine deutsche Übersetzung liegt bei. Das Brückenmodul ai_translation_consensus_website wird automatisch mitinstalliert, wenn website vorhanden ist. Nach der Installation muss der Odoo-Dienst neu gestartet werden, weil das Modul Python-Code enthält. Wer ein produktives System betreibt, installiert das Modul zuerst auf einer Kopie der Datenbank.
Die ersten Schritte: Menü KI-Übersetzung → Anbieter öffnen, Dienste testen und einschalten, dann Hier starten und die erste Regel anlegen. Mit Nach Texten suchen werden die Vorschläge erzeugt, mit Einen Stapel verarbeiten werden die Anbieter aufgerufen. Beginnen Sie mit einer kleinen Regel, etwa einem einzelnen Blogbeitrag und zwei Sprachen, und sehen Sie sich Ergebnis und Kosten an, bevor Sie eine ganze Webseite einreihen.
Grenzen
- Die Qualität hängt von den Modellen ab, die Sie einschalten. Die Gegenprüfung verringert Fehler einzelner Modelle, macht aber keine Garantie. Für rechtlich oder sicherheitskritische Texte ersetzt das Modul keinen Muttersprachler.
- Kosten wachsen schnell. Ein Text kostet einen Aufruf je Übersetzer, einen Prüfaufruf je Prüfer und bei geteilter Abstimmung eine zweite Runde. Seitenkontext erhöht die Eingabe jedes Aufrufs. Eine Regel mit 45 Zielsprachen vervielfacht die Zahl der Texte. Begrenzen Sie die Läufe mit Datensätze je Suchlauf, Neue Vorschläge je Suchlauf und Vorschläge je Cron-Lauf, und nehmen Sie günstige oder lokale Modelle als Prüfer dazu.
- Nur Felder mit
translate=True. Formatierter Text wird je Block verarbeitet (Odoos Term-Mechanismus). - Preise und Modellnamen ändern sich. Die Voreinstellungen sind keine gepflegte Preisliste.
- Für Odoo 19.0 Community gebaut. Andere Versionen werden nicht unterstützt.
Häufige Fragen
Wird etwas ohne meine Zustimmung übersetzt oder überschrieben?
Nein, solange Sie Einigung automatisch übernehmen nicht einschalten. Auch dann werden nur Vorschläge mit Einigung geschrieben. Die Anbieter und die geplante Aktion sind nach der Installation aus.
Brauche ich Schlüssel für kostenpflichtige Anbieter?
Nur für die Anbieter, die einen verlangen. Mit Pollinations, MyMemory oder einem lokal betriebenen Modell (zum Beispiel Ollama) geht es ohne. Kostenlose Dienste sind oft begrenzt und langsam, für eine ganze Webseite sind sie meist nur als Ergänzung geeignet.
Was kostet eine Übersetzung?
Das hängt von Anbieter, Modell, Textlänge und Zahl der Sprachen ab, deshalb gibt das Modul keine festen Zahlen vor. Das Dashboard zeigt Verbrauch und Kosten, sobald Sie die Preise eingetragen haben, und schätzt die Restkosten der eingereihten Texte.
Kann ich Texte vertraulich halten?
Ja, mit der Regeloption Vertraulich. Dann arbeiten nur Anbieter, die als auf Ihrer eigenen Infrastruktur laufend markiert sind, etwa ein lokales Ollama.
Ersetzt das die Odoo-eigene Übersetzung?
Nein. Das Modul nutzt die Mehrsprachigkeit von Odoo und schreibt in dieselben Übersetzungen, die Sie sonst von Hand pflegen.
Unter welcher Lizenz steht es?
Unter der AGPL-3. Fehler und Verbesserungen sind als Issue im GitHub-Repository willkommen.
Unterstützung durch Biricon IT Services
Wir betreuen Odoo-Installationen für kleine und mittlere Unternehmen: von der Einführung über Anpassungen und Migrationen bis zum laufenden Betrieb. Wenn Sie Ihre Odoo-Webseite mehrsprachig betreiben, Übersetzungen mit KI absichern oder ein Modul sicher in Ihre Produktivinstanz bringen möchten, helfen wir gerne. Weitere Eigenentwicklungen: Firma archivieren samt Portalbenutzern, Belegnummern aus Präfix, Jahr und Zähler und Firmenbuch und Adressprüfung für österreichische Kunden.
Stand: 3. November 2026. Modulversion 19.0.1.0.0. Die Abbildungen zeigen erfundene Beispieldaten.