In veel Odoo-projecten werken mensen of klanten met verschillende talen: een Franstalig verkoopteam, een Duits magazijn, een Nederlandstalige webshop. Om dat soepel te laten verlopen moet Odoo tekstvelden kunnen bewaren in meerdere talen tegelijk. Dat doet het met zogenoemde vertaald velden.
Een vertaald veld bewaart per taal een aparte tekstwaarde. Open je hetzelfde product als Nederlandstalige gebruiker, dan zie je de Nederlandse naam; als Duitstalige gebruiker zie je de Duitse naam. Het blijft één database-record, maar de weergegeven tekst verschilt volgens wie er kijkt.
Deze gids geeft een praktisch beeld van hoe vertaald velden in de Odoo-ORM functioneren, hoe je ze aanmaakt en beheert, en in welke situaties ze echt meerwaarde leveren voor je organisatie.
Wat is een vertaald veld in Odoo
Technisch gezien is een vertaald veld een tekstveld in het datamodel dat per actieve taal een andere waarde kan bevatten. Voor de gebruiker is dat transparant: hij of zij ziet altijd de tekst in de ingestelde taal zonder extra handelingen.
Vertaling is in Odoo van toepassing op de volgende veldtypes:
- Char: korte éénregelige teksten, bijvoorbeeld productnamen, categorieën of functietitels
- Text: langere, meerregelige tekst zoals productbeschrijvingen of notities
- Html: rijke tekst met markup, gebruikt voor website-inhoud of e-mailtemplates
Numerieke velden, datums, Many2one-relaties en booleans zijn niet vertaald. Alleen velden met menselijke leesbare tekst komen in aanmerking.
Hoe het eruitziet in de interface
In bewerkmodus verschijnt er bij een vertaald veld een klein vlag-icoon. Dat opent een venster waarin je de waarde per geïnstalleerde taal kunt bekijken en bewerken—handig voor wie vertalingen mag beheren.
In leesmodus krijgt de gebruiker gewoon de waarde in zijn/haar taal te zien. Is er geen vertaling ingesteld voor die taal, dan gebruikt Odoo de basistaalwaarde (meestal Engels) als fallback, in plaats van een leeg veld te tonen.
Hoe een vertaald veld werkt
Als je weet hoe vertaald velden intern werken, kun je betere keuzes maken over wanneer ze zinvol zijn en hoe je ze op schaal onderhoudt.
De translate=True parameter
In de Odoo-ORM schakel je vertaling in door aan het veld de eigenschap translate=True toe te voegen. Zo geef je aan dat het veld per taal verschillende waarden mag bevatten.
Voorbeeld: in een aangepast veld op product.template definieer je eenvoudigweg een Char met translate=True in de Python-modeldefinitie.
Met die ene parameter weet Odoo dat het bij lezen en schrijven rekening moet houden met de actieve taalcontext. Voor ontwikkelaars is dit een van de elegantste, meest directe features van het framework.
Waar de vertalingen worden bewaard
De opslagmethode verschilt per Odoo-versie:
- Odoo 15 en ouder: vertalingen gingen naar een aparte ir.translation-tabel. Elke vertaalde waarde was één rij met verwijzing naar model, veld, record-id en taalcode.
- Odoo 16 en later: vertalingen worden in de eigen tabel van het model bewaard, meestal in een JSONB-kolom. Een name-veld met translate=True bevat dan een JSON-object met sleutels per taal, bijvoorbeeld {"nl_NL": "Laptopstandaard", "fr_FR": "Support ordinateur portable"}.
De overstap naar JSONB in Odoo 16 bracht snellere queries en minder zware joins met ir.translation, wat vooral merkbaar is bij grote datasets.
Hoe de taalcontext werkt
Bij het uitlezen van een vertaald veld kijkt Odoo naar de actieve taal in de context. Als je als Nederlandstalige bent ingelogd, levert de ORM automatisch de Nederlandse waarde. Bij API-calls bepaal je de taal door die mee te geven in de context.
Een API-aanroep waarin je 'context': {'lang': 'fr_FR'} meegeeft zorgt er bijvoorbeeld voor dat je de Franse waarden krijgt.
Dit is cruciaal bij integraties of exportscripts: geef altijd expliciet de gewenste taal door, anders lees of schrijf je mogelijk de verkeerde taalwaarde.
Het translate-argument als callable
translate kan ook een callable zijn voor geavanceerde gevallen. Een veelgebruikte pattern is translate=_ om statische keuzeteksten te markeren voor vertaling via het standaard Odoo-exportmechanisme. Dat is iets anders dan recordniveau-vertalingen en wordt vooral bij moduleontwikkeling toegepast.
Fallback-gedrag
Als er voor de actieve taal geen vertaling bestaat, levert Odoo standaard de basistaalwaarde terug. Daardoor zien gebruikers altijd een zinvolle tekst, ook als niet alles vertaald is.
Praktische bedrijfsgevallen
Vertaald velden zijn geen puur technische luxe; ze lossen concrete problemen op in meertalige organisaties. Hieronder vijf duidelijke toepassingsgebieden.
1) E‑commerce: meertalige productnamen en -beschrijvingen
Verkoop je via de Odoo-website, dan verwachten klanten content in hun taal. De velden name en description op product.template zijn standaard vertaalbaar, zodat je één catalogus kunt beheren met gelokaliseerde namen en productteksten zonder duplicaatrecords te maken.
Voor de bezoeker verandert alleen de weergegeven tekst; voorraad, prijzen en logica blijven identiek voor alle talen.
2) E‑mailtemplates in meertalige bedrijven
E‑mailtemplates gebruiken vertaald Html-veld voor hun body. Stuur je een orderbevestiging aan een Duitse klant, dan gebruikt Odoo automatisch de Duitse templateversie indien beschikbaar.
Zo volstaat één template voor meerdere markten, zonder ingewikkelde conditional logic of aparte records per taal.
3) Websitepagina’s en blogcontent
Odoo’s websitemodule werkt met vertaald Html-veld. Redacteurs onderhouden zo per taal een aparte tekstversie van dezelfde pagina—zonder externe plugins.
Voor SEO betekent dit dat elke taalversie eigen meta-titel en meta-omschrijving kan krijgen, wat helpt bij lokale zoekresultaten.
4) Keuzelabels (Selection) voor internationale teams
Selection-opties kunnen in Python gemarkeerd worden voor vertaling met de functie _. Een dropdown met ‘In Progress’, ‘On Hold’ en ‘Done’ toont zo aan een Nederlandstalige gebruiker de juiste vertalingen.
Dit is bijzonder nuttig in HR, projecten en workflows waar teams in verschillende landen met dezelfde records werken maar in hun eigen taal willen werken.
5) Aangepaste velden in meertalige rapporten
Als je custom velden gebruikt voor interne classificatie (dienstencategorie, risiconiveau, productsegment), maak die velaar vertaalbaar zodat rapporten en dashboards voor alle gebruikers leesbaar zijn in hun taal.
Zonder vertaling ziet een Franstalige gebruiker mogelijk Engelse labels in zijn rapporten, wat verwarring en minder acceptatie veroorzaakt.
Een vertaald veld aanmaken of aanpassen
Er zijn meerdere manieren om vertaling op een veld aan te zetten, afhankelijk van of je no-code werkt of rechtstreeks in Python.
In Python aanmaken (aanbevolen voor ontwikkelaars)
De netste manier is het veld in het Python-model te definiëren met translate=True. Dat is de standaardpraktijk in technische documentatie en modules.
Voorbeeld: voeg een Char of Html veld toe met translate=True in je modelextensie van product.template.
Die ene toevoeging is voldoende: Odoo regelt daarna de UI‑vlag, opslag en fallback-logica automatisch.
Met Odoo Studio velden
Studio toont standaard geen optie om translate in te schakelen. Velden die je in Studio aanmaakt zijn dus niet vertaald per default.
Na creatie kun je echter via de XML‑RPC API de eigenschap van het veld in ir.model.fields aanpassen en translate inschakelen.
Procesvoorbeeld: zoek het Studio-veld in ir.model.fields en update het attribuut translate naar True via de API.
Dit is handig voor teams die via scripts of externe automatisering aanpassen zonder toegang tot de broncode.
Vertalingen beheren: export en import
De vertaalworkflow in Odoo is eenvoudig en schaalbaar:
- Ga naar Instellingen > Vertalingen > Export Translation om een .po of .csv bestand te downloaden met strings voor een bepaalde taal.
- Laat dat bestand vertalen door een vertaler of vul de vertalingen zelf in.
- Importeer het voltooide bestand terug via Instellingen > Vertalingen > Import Translation.
Voor recordniveau-vertalingen (zoals productnamen) is het ook mogelijk om ze direct in de interface te bewerken via het vlag-icoon—handig bij kleinere aantallen.
Vertalen via de API
Bij schrijven of updaten via XML‑RPC geef je de taal mee in de context zodat de wijziging de juiste taalwaarde raakt.
Voorbeeld: schrijf de Franse productnaam door in de context 'lang': 'fr_FR'.
Een write met taalcontext werkt alleen op die taal; andere vertalingen blijven onaangeroerd. Dit is de correcte manier om extern vertaalde content in te laden.
Aanbevolen werkwijzen
Een paar gewoonten maken het werken met vertaald velden veel eenvoudiger en voorkomen frustratie.
Zet altijd eerst de basistaalwaarde goed neer
Voordat je andere talen aanvult, zorg dat de basistekst correct en definitief is. Andere vertalingen zijn afgeleid van die bron; als je de basis later verandert werken bestaande vertalingen niet automatisch mee en raken ze inconsistent.
Vertaal alleen wat echt nodig is
Niet elk tekstveld moet vertaalbaar zijn. Interne referenties, technische codes of velden voor een eentalig backoffice hoeven geen translate=True—teveel vertaalvelden verhoogt onderhoud en kosten.
Gebruik export/import bij grote vertaalprojecten
Bij grote catalogi red je het niet met handmatig invullen per record. Exporteer, vertaal in bulk en importeer terug; veel efficiënter en minder foutgevoelig.
Geef in API‑calls altijd de taalcontext mee
Bij lezen en schrijven via API’s altijd expliciet 'lang': 'xx_XX' in de context zetten. Anders wordt de standaardtaal van de gebruiker gebruikt en ontstaan subtiele fouten waarbij tekst in de verkeerde taal terechtkomt.
Houd vertalingen bij wanneer de bron verandert
Wijzigingen in de basistekst worden niet automatisch doorgetrokken naar bestaande vertalingen. Implementeer een review- en notificatieproces zodat vertalers weten wanneer content herzien moet worden.
Veelvoorkomende valkuilen
Zelfs ervaren implementatoren lopen tegen dezelfde valkuilen aan; voorkennis scheelt uren debugging.
Vergeten de taalcontext mee te geven bij API‑writes
Dit is de meest voorkomende fout bij integraties. Zonder context schrijft Odoo vaak in de standaardtaal van de gebruiker—waardoor je per ongeluk de verkeerde taalwaarde overschrijft. Wees altijd expliciet over de taal.
Verwachten dat vertaald velden automatisch in zoekresultaten verschijnen
Zoeken op een vertaald veld draait in de actieve taal. Een product met alleen een Engelse naam verschijnt niet voor een Nederlandstalige gebruiker als er nog geen Nederlandse vertaling is. Zorg dat zoekrelevante velden vertaald zijn voordat je search-verwachtingen formuleert.
Gemixte vertaald/niet-vertaald velden in rapporten
Als een rapport zowel vertaalde als niet-vertaalde velden gebruikt kan de output inconsistent zijn: sommige labels tonen in de gebruikers‑taal, andere altijd in de basistaal. Bepaal vooraf per veld of vertaling nodig is.
Rekenkosten van vertaling mee bij berekende velden
Bereken je een veld dat strings uit meerdere vertaald velden combineert, dan gebeurt die berekening in de actieve taal en wordt dat resultaat niet per taal opgeslagen. Als je meertalige concatenaties nodig hebt, moet je de taal-specifieke berekeningen expliciet implementeren.
Verwijder een taal niet zonder vertalingen op te ruimen
Bij het deactiveren van een taal kunnen vertaalwaarden in de database blijven staan afhankelijk van de versie. Dat is meestal onschuldig maar kan rommel opleveren—controleer vertalingen na taalwijzigingen in productie.
Samenvatting
Vertaald velden zijn een van de meest praktische mechanismen in Odoo voor multinationale bedrijven. Met één parameter, translate=True, kun je gelokaliseerde inhoud beheren voor productcatalogi, e-mails, websitepagina’s en custom velden zonder records te dupliceren.
Belangrijk is om doelgericht te zijn: zet vertaling alleen in waar het voordeel voor gebruikers of klanten duidelijk is, gebruik export/import voor grote volumes en wees altijd expliciet over de taalcontext in API‑werk.
Of je nu een meertalige webwinkel opzet, Odoo uitrolt naar internationale teams, of een maatmodule ontwikkelt: het inzicht in vertaald velden helpt je om nettere, gebruiksvriendelijkere oplossingen te bouwen.
Werk je aan een meertalige Odoo-implementatie en wil je advies over veldconfiguratie of vertaalprocessen? Neem contact op met het Dasolo-team We helpen je graag om het meteen goed in te richten.