Viele Odoo-Installationen bedienen Anwender und Kunden in verschiedenen Sprachen: ein Vertriebsteam in Frankreich, ein Lager in Deutschland, ein Kundenportal auf Spanisch. Damit alle Beteiligten dieselben Datensätze sehen, aber in ihrer jeweiligen Sprache, braucht Odoo eine Möglichkeit, Feldinhalte mehrsprachig zu speichern. Genau dafür gibt es übersetzbare Felder.
Ein übersetzbares Feld kann pro aktiver Sprache einen eigenen Textwert halten. Öffnet ein französischer Nutzer einen Produktdatensatz, sieht er den französischen Namen; ein deutscher Nutzer sieht dieselbe Datensatzzeile mit dem deutschen Namen. Die Datenbank bleibt einheitlich, die Darstellung ist sprachabhängig.
Diese Anleitung beschreibt die technischen Grundlagen der übersetzbaren Felder im Odoo ORM, zeigt, wie man sie anlegt und verwaltet, und nennt Praxisfälle, in denen sie echten Nutzen bringen.
Was sind übersetzbare Felder in Odoo
Kurz gesagt: Ein übersetzbares Feld ist ein textbasiertes Feld im Datenmodell, das für jede aktivierte Sprache einen separaten Wert speichern kann. Für Anwender ist das transparent — sie sehen automatisch den Text in ihrer Sprache, ohne Einstellungen ändern zu müssen.
Auf welche Feldtypen sich Übersetzungen anwenden lassen
- Char: kurze Einzeiler wie Produktnamen, Kategorien oder Titel
- Text: mehrzeilige Beschreibungen oder interne Notizen
- Html: formatierter Inhalt für Webseiten oder E-Mail-Templates
Zahlen, Datumsangaben, Many2one-Relationen oder Booleans lassen sich nicht übersetzen. Übersetzungen sind nur für menschenlesbare Texte gedacht.
Wie es in der Oberfläche aussieht
Ist ein Feld übersetzbar, zeigt Odoo im Bearbeitungsmodus ein kleines Sprach- oder Flaggen-Symbol neben dem Feld. Über dieses Icon öffnet sich ein Dialog, in dem Sie alle Sprachvarianten eines Feldes pflegen können — praktisch für Redakteure und Übersetzer.
Im Lesemodus sieht der Anwender einfach den Wert in seiner Sprache. Ist für die aktive Sprache noch kein Eintrag vorhanden, greift Odoo auf die Basis-Sprache (oft Englisch) zurück, statt ein leeres Feld anzuzeigen.
Wie übersetzbare Felder funktionieren
Wer die internen Mechanismen kennt, trifft bessere Entscheidungen darüber, wann Übersetzungen sinnvoll sind und wie man sie skalierbar verwaltet.
Das translate=True-Flag
Im Odoo ORM schalten Sie Übersetzungen ein, indem Sie dem Feld die Eigenschaft translate=True geben. Das ist die einfache und empfehlenswerte Methode.
Beispiel: In einem Python-Modell fügen Sie ein neues Char-Feld mit Übersetzung so hinzu:
Mit diesem einzigen Parameter weiß Odoo, dass für dieses Feld sprachabhängige Werte gespeichert und je nach Kontext zurückgegeben werden sollen. Das macht die Handhabung sehr elegant.
Wo die Übersetzungen gespeichert werden
Die Ablage hat sich mit Odoo-Versionen verändert:
- Bis Odoo 15: Übersetzungen lagen in der separaten Tabelle ir.translation. Jede Übersetzung war eine eigene Zeile mit Verweis auf Modell, Feld, Datensatz und Sprachcode.
- Ab Odoo 16: Übersetzungen werden als JSONB-Feld direkt in der Tabellenspalte des Modells gespeichert. Ein Feld name mit translate=True kann dann z. B. so aussehen: {"en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable", "de_DE": "Laptopständer"}.
Der Wechsel zu JSONB hat Abfragen deutlich beschleunigt und teure Joins zur Übersetzungstabelle eliminiert — besonders bei großen Datensätzen spürbar.
Wie der Sprachkontext wirkt
Beim Lesen eines übersetzbaren Feldes prüft Odoo den aktiven Sprachkontext. Ein als Französisch eingestellter Nutzer bekommt automatisch die fr_FR-Version. Bei API-Aufrufen steuern Sie die Sprache über den Kontext.
Beispiel: Per XML-RPC oder JSON-RPC geben Sie in der Anfrage den Kontext 'lang': 'fr_FR' mit, damit die französische Version zurückkommt.
Das ist wichtig für Integrationen und Exporte — ohne explizite Sprachangabe bekommen Sie möglicherweise nicht die erwarteten Texte.
translate als Callable
Das translate-Argument kann auch eine Funktion akzeptieren. Häufig wird translate=_ verwendet, um statische Strings (z. B. Auswahlbeschriftungen) für den Übersetzungs-Export zu markieren — das ist eher eine Entwicklungspraktik für Modultexte als für Datensatzinhalte.
Fallback-Verhalten
Fehlt eine Übersetzung für die aktive Sprache, liefert Odoo standardmäßig den Wert der Basis-Sprache zurück. So sehen Anwender immer einen sinnvollen Text, auch wenn die Übersetzung noch nicht existiert.
Typische Business-Anwendungen
Übersetzbare Felder sind kein reines Technikspielzeug — sie lösen praktische Probleme in mehrsprachigen Unternehmen. Nachfolgend fünf typische Einsatzszenarien.
1. E‑Commerce: Produktnamen und Beschreibungen in mehreren Sprachen
Für Onlineshops erwarten Kunden eine Oberfläche in ihrer Sprache. Produktname und Beschreibung sind daher häufig übersetzbar. So können Sie einen zentralen Katalog pflegen und Inhalte lokalisiert ausspielen, ohne die Produktstammdaten zu duplizieren.
Ein französischer Besucher sieht französische Texte, Lagerbestand und Preise bleiben für alle Besucher identisch — nur die angezeigte Sprache ändert sich.
2. E‑Mail‑Vorlagen für internationale Kommunikation
E‑Mail‑Templates nutzen HTML‑Felder mit translate=True. Beim Versand wählt Odoo automatisch die passende Sprachversion der Vorlage, sofern diese gepflegt ist — zum Beispiel für Bestellbestätigungen oder Rechnungs‑E‑Mails.
Damit genügt eine Vorlage für mehrere Länder, ohne dass Sie für jede Sprache eigene Template‑Datensätze anlegen müssen.
3. Webseiten und Blog-Beiträge mehrsprachig betreiben
Odoo‑Webseiten arbeiten nativ mit übersetzbaren HTML‑Feldern. Redakteure können jede Seite in mehreren Sprachen pflegen — das ermöglicht mehrsprachige Websites ohne zusätzliche Plugins.
Aus SEO‑Sicht lassen sich so für jede Sprache eigene Title‑ und Meta‑Beschreibungen vergeben, was die Auffindbarkeit in lokalen Suchmaschinen verbessert.
4. Auswahlfelder und Labels für internationale Teams
Bei Selection‑Feldern markieren Entwickler die Options‑Bezeichnungen mit _ für die Übersetzung. Ein Dropdown mit „In Progress“, „On Hold“, „Completed“ wird so je nach Sprache automatisch lokalisiert.
Das ist besonders nützlich in HR‑ oder Projektprozessen, wenn Teams an verschiedenen Standorten in ihrer eigenen Sprache arbeiten sollen.
5. Individuelle Felder in mehrsprachigen Reports
Wenn Sie kundenspezifische Felder (z. B. Servicekategorien, Risikoklassen) erstellt haben, sorgt translate=True dafür, dass Dashboards und Reports in der jeweiligen Nutzersprache lesbar bleiben.
Ohne Übersetzung sehen französische Anwender vielleicht englische Labels in Berichten — das verwirrt und senkt die Akzeptanz.
Übersetzbare Felder anlegen oder anpassen
So legen Sie Übersetzungen an — je nachdem, ob Sie Code oder No‑Code-Tools nutzen, gibt es unterschiedliche Wege.
Per Python (empfohlen für Entwickler)
Der sauberste Weg ist, das Feld im Python‑Modell mit translate=True zu definieren. Das ist die Standardempfehlung für Entwickler.
Beispiel: Sie erweitern product.template um ein hervorgehobenes Kurzfeld und eine HTML‑Notiz, beide mit Übersetzung:
Das Hinzufügen von translate=True genügt. Odoo kümmert sich anschließend um die UI‑Markierung, Speicherung und Fallback‑Logik.
Mit Odoo Studio erstellte Felder
Studio zeigt die Option translate nicht in der Feldkonfiguration an. Ein in Studio erzeugtes Char‑ oder Textfeld ist daher zunächst nicht übersetzbar.
Sie können Übersetzung aber nachträglich per API aktivieren: Ermitteln Sie das Feld in ir.model.fields und setzen Sie dessen translate‑Attribut.
Beispiel: Finden Sie das Feld per search_read und schreiben Sie dann translate=True per write über XML‑RPC/JSON‑RPC.
Dieser Weg ist praktisch für Anpassungen per Skript, wenn kein direkter Zugriff auf den Quellcode möglich ist.
Übersetzungen verwalten: Export/Import
Odoos Übersetzungsworkflow ist einfach und für große Volumen praktisch:
- Exportieren Sie unübersetzte Strings über Einstellungen → Übersetzungen → Übersetzung exportieren als .po oder .csv.
- Lassen Sie die Datei übersetzen oder bearbeiten Sie sie intern.
- Importieren Sie die fertige Datei wieder über Einstellungen → Übersetzungen → Übersetzung importieren.
Für einzelne Feldwerte (z. B. Produktnamen) ist die Pflege direkt über das Sprach‑Icon in der Oberfläche oft komfortabler.
Übersetzen per API
Beim Schreiben übersetzbarer Felder via API geben Sie die Sprache über den Kontext mit:
Beispiel: Setzen Sie per write die französische Übersetzung, indem Sie context: {'lang': 'fr_FR'} mitsenden.
Die Schreiboperation aktualisiert nur die angegebene Sprache; andere Sprachversionen bleiben unverändert — das ist die saubere Methode für Synchronisationen von außen.
Bewährte Vorgehensweisen
Ein paar Gewohnheiten machen den Umgang mit Übersetzungen deutlich einfacher.
Immer zuerst den Basiswert setzen
Pflegen Sie zuerst den Wert in der Basis‑Sprache vollständig. Alle weiteren Übersetzungen bauen darauf auf. Änderungen am Basiswert aktualisieren bestehende Übersetzungen nicht automatisch und führen sonst leicht zu Inkonsistenzen.
Nur Felder übersetzen, die es wirklich brauchen
Nicht jedes Feld sollte translate=True bekommen. Interne Codes, IDs oder Felder, die nur in einer Sprache genutzt werden, verursachen unnötigen Pflegeaufwand, wenn sie übersetzbar sind.
Für große Kataloge: Export/Import nutzen
Bei Hunderten oder Tausenden von Produkten ist die Einzelpflege per UI mühsam. Exportieren Sie die Strings, übersetzen Sie im Batch und importieren Sie wieder — das ist schneller und weniger fehleranfällig.
Bei API‑Zugriffen immer die Sprache mitschicken
Lesen und Schreiben via API sollten stets den Kontext 'lang': 'xx_XX' enthalten. Andernfalls verwendet Odoo die Sprache des API‑Users und Werte landen ggf. in der falschen Sprachspalte.
Änderungen am Quelltext nachhalten
Wenn sich der Basiswert ändert, informieren Sie Übersetzer und planen Sie Updates ein. Ohne Review bleiben Übersetzungen veraltet.
Häufige Fehlerquellen
Auch erfahrene Berater stolpern über diese Fallen. Vorausdenken spart Zeit beim Debugging.
Sprachkontext bei API‑Writes vergessen
Der häufigste Fehler: Ein externes System schreibt Texte ohne Sprachkontext — dann überschreiben Sie unter Umständen die Basis‑Sprache anstatt die gewünschte Übersetzung. Seien Sie explizit.
Annahme, dass Suchanfragen alle Sprachversionen berücksichtigen
Suche läuft standardmäßig in der aktiven Sprache. Wenn für Französisch keine Übersetzung existiert, erscheint ein Produkt mit englischem Namen nicht in französischen Suchergebnissen — stellen Sie Übersetzungen vor Such‑Abfragen sicher.
Gemischte Felder in Reports
Mischen Sie übersetzte und nicht übersetzte Felder in Exporten, wirkt der Bericht uneinheitlich. Überlegen Sie vorher, welche Felder lokalisiert sein müssen.
Übersetzungsaufwand bei berechneten Feldern beachten
Berechnete Strings, die aus mehreren übersetzten Feldern zusammengesetzt werden, werden im aktuellen Sprachkontext erzeugt, aber nicht automatisch pro Sprache gespeichert. Für sprachspezifische Berechnungen müssen Sie die Logik entsprechend erweitern.
Sprache entfernen, ohne Übersetzungen aufzuräumen
Beim Deaktivieren einer Sprache bleiben je nach Odoo‑Version Übersetzungsdaten im System zurück. Das ist meist unproblematisch, kann aber auf Dauer Datenchaos verursachen — kontrollieren Sie die Übersetzungsdaten nach dem Entfernen.
Fazit
Übersetzbare Felder zählen zu den praktischsten Funktionen in Odoo für internationale Unternehmen. Mit translate=True können Sie lokalisierten Content für Produkte, E‑Mails, Webseiten und individuelle Felder pflegen, ohne Datensätze zu duplizieren.
Wichtig ist, gezielt zu übersetzen: nur dort, wo es Anwendern oder Kunden wirklich hilft. Bei großem Umfang arbeiten Sie mit Export/Import und geben bei API‑Operationen immer die Sprache explizit mit.
Ob Sie einen mehrsprachigen Shop einrichten, Odoo international ausrollen oder ein Modul entwickeln — ein solides Verständnis übersetzbarer Felder führt zu saubereren, nutzerfreundlicheren Lösungen.
Arbeiten Sie an einer mehrsprachigen Odoo‑Einführung und brauchen Hilfe bei der Feldkonfiguration oder den Übersetzungsabläufen? Kontaktieren Sie das Dasolo‑Team wir unterstützen Sie gern dabei, die Einrichtung richtig umzusetzen.