Skip to Content

Oversatte felt i Odoo: Komplett guide for utviklere og brukere

Forstå hvordan flerspråklige felt i Odoo lagrer data i ORM‑laget, og lær praktiske måter å bruke dette på i bedriften din.
6. mars 2026 etter
Oversatte felt i Odoo: Komplett guide for utviklere og brukere
Dasolo
| No comments yet

Mange Odoo-oppsett betjener brukere på flere språk samtidig — for eksempel et salgsteam i Frankrike, lager i Tyskland og kunder i Spania. For at alle skal se riktige navn og beskrivelser uten flerfoldige produktkort, trenger systemet felt som kan holde flere språkversjoner samtidig. Det er akkurat det et oversatt felt gjør: lagrer flere tekstvarianter for samme felt, slik at hver bruker ser innholdet på sitt språk.


Et oversatt felt inneholder egentlig en slags flerspråklig verdi: én tekst per aktivt språk. Når en fransk bruker åpner produktkortet får vedkommende den franske versjonen, en tysk bruker får tysk versjon — men bak kulissene er det fortsatt én databasepost. Resultatet er enkel datamodell med lokalisert visning for hver bruker.

Denne guiden gir deg det praktiske rammeverket: hvilke felttyper som kan oversettes, hvordan Odoo lagrer og henter disse verdiene, hvordan du legger til oversettelser fra kode eller via grensesnittet, og når dette virkelig gir verdi i en flerspråklig drift.

Hva er et oversatt felt i Odoo


Teknisk sett er et oversatt felt en tekstbasert kolonne i datamodellen som kan inneholde en egen streng per aktivt språk. For sluttbrukeren er dette usynlig — de ser automatisk teksten på sitt språk uten ekstra grep.


Hvilke felttyper som støtter oversettelse

  • Char: korte tekstfelt som produktnavn eller kategorinavn
  • Text: lengre fritekstfelt som produktbeskrivelser eller notater
  • Html: riktekst med markup, brukt til nettsidetekst eller e-postmaler

Tallfelt, datoer, relasjonsfelt (Many2one) og booleanske felt lar seg ikke oversette — oversettelse gir mening kun for menneske-lesbar tekst.


Slik vises det i brukergrensesnittet

Når et felt er merket som oversettbart, viser Odoo et lite språkflagg ved redigering. Klikker du dette får du en dialog som viser og lar deg redigere verdien for hver installert språkversjon samlet på ett sted.


I lesemodus ser brukeren alltid verdien i sitt aktive språk. Hvis en språkversjon mangler, faller Odoo tilbake til databasen sitt basis-språk (ofte engelsk) slik at feltet ikke står tomt.

Slik fungerer et oversatt felt


Å forstå hvordan dette fungerer under panseret hjelper deg å velge riktig felter å oversette og å forvalte innholdet når det vokser i volum.


Parameteren translate=True

I Odoo ORM slår du på oversettelse ved å sette translate=True på feltdefinisjonen. Det er nok for at feltet skal håndtere språkspesifikke verdier.

Eksempelutdrag i en modul viser vanligvis noe slikt på en Char:

Med translate=True vet Odoo at feltet skal gi ulike tekster avhengig av aktivt språk. Rammeverket tar seg av lagring, visning og fallback uten ekstra kode fra deg.


Hvor oversettelsene lagres

Lagringsmåten har utviklet seg mellom Odoo-versjoner:

  • I Odoo 15 og eldre lå alle oversettelser i tabellen ir.translation. Hver språkversjon var én rad knyttet til modell, felt, post-ID og språkkode.
  • Fra Odoo 16 og fremover lagres oversettelser ofte i modelltabellen selv, for eksempel som en JSONB-kolonne som inneholder et objekt med nøkler per språkkode (f.eks. {"en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable"}).

Overgangen til JSONB har gjort søk og oppslag raskere og mer ressursvennlig fordi man slipper dyre joins mot en sentral oversettelsestabell, spesielt i modeller med mange rader.


Hvordan språkkontekst styrer hva du får tilbake

Når Odoo leser et oversatt felt, sjekker den hvilken språk-kontekst som er aktiv. Hvis brukeren har fransk som språk, returneres fransk tekst. I API-kall styrer du språket ved å sette lang i konteksten.

Et API-kall kan for eksempel spesifisere {'context': {'lang': 'fr_FR'}} for å få fransk tekst i svaret.

Dette er viktig i integrasjoner og eksportskript — send alltid riktig språk i konteksten for å hente ønsket oversettelse.


translate som callable

Parameteren translate kan også være en callable i utviklingsscenarier. Dette brukes ofte for å merke statiske valgtekster eller modulstrenger for oversettelse via Odoos internasjonaliseringsverktøy, og skiller seg fra postnivå-oversettelser som lagres per record.


Fallback-logikk

Hvis et språk mangler en verdi, returnerer Odoo ikke tomt felt — det bruker basis-språket for databasen. Dette sikrer at brukeren alltid ser meningsfull tekst selv ved ufullstendige oversettelser.

Forretningsscenarier der det hjelper


Oversatte felt løser konkrete problemer i drift på tvers av språk. Her er typiske tilfeller hvor funksjonen virkelig utgjør forskjellen.


1. Nettbutikk: flerspråklige produktnavn og beskrivelser

Når du selger via Odoo-nettstedet, forventer kundene å lese produktinformasjonen på sitt språk. Produktenes name og description er oversettbare som standard, så du kan ha én katalog med lokaliserte tekster uten å måtte duplisere produkter.

En fransk kunde får franske navn og beskrivelser i butikken, samtidig som lagerbeholdning og priser er de samme på tvers av språk — bare teksten som vises endres.


2. E-postmaler i flerspråklige selskaper

E-postmaler i Odoo bruker Html-felt med oversettelse for innholdet. Når du sender en ordrebekreftelse til en tysk kunde vil systemet automatisk bruke den tyske varianten av malen hvis den finnes.


Det gjør at én mal kan håndtere flere markeder uten å lage conditional-branches eller egne malsett per språk.


3. Nettsider og blogginnlegg

Nettsideinnhold i Odoo er oversettbart via Html-felter, slik at redaktørene kan vedlikeholde separate tekster for hver språkversjon av samme side uten tredjepartsmoduler.


Fra et SEO-perspektiv betyr dette at hver språkversjon kan få egne meta-titler og beskrivelser, noe som forbedrer synlighet i lokale søk.


4. Valgfelt (Selection) for internasjonale team

Når du definerer Selection-felt i Python kan etikettene merkes for oversettelse med _(underscore)-funksjonen. Et dropdown som viser «In Progress», «On Hold» og «Completed» på engelsk vil for andre brukere vise de tilsvarende oversettelsene.


Dette er spesielt nyttig i HR, prosjektstyring og andre prosesser der team i ulike land bruker samme poster men trenger lokal terminologi.


5. Egne felter i flerspråklige rapporter

Hvis du har tilpassede felt for kategorisering (f.eks. servicedeler, risikonivå, produktsegment), sørg for at disse er oversettbare slik at dashboards og rapporter viser riktig etikett for alle brukere.


Uten oversettelse kan en fransk medarbeider få engelske etiketter i rapportene, noe som vekker forvirring og reduserer brukernes tillit til systemet.

Slik oppretter eller gjør du feltet oversettbart


Metoder for å opprette oversatte felt


Valgmetode avhenger om du jobber med kode eller via Odoo Studio.

I Python (anbefalt for utviklere)


Den mest robuste måten er å definere feltet i en modul med translate=True, både for Char og Html-felter — det er standard praksis i Odoo-utvikling.

Når translate=True er satt, tar Odoo seg av UI-indikatorer, lagring og fallbackautomatikk uten ekstra implementasjonsarbeid.


I Odoo Studio

Studio lar deg opprette felt raskt, men tilbyr ikke alltid et synlig valg for translate i feltkonfigurasjonen. Felt opprettet via Studio er ofte ikke oversettbare som standard.


Du kan likevel aktivere oversettelse på et Studio-felt ved å oppdatere ir.model.fields-posten via API eller script etter at feltet er opprettet.


Et typisk workflow er å finne feltet i ir.model.fields og sette translate=True med XML-RPC eller XML/ORM-oppdatering.

Denne teknikken er praktisk for tilpasningsteam som jobber uten direkte tilgang til kodebasen, men trenger å gjøre feltene flerspråklige.


Administrere oversettelser: eksport og import

Odoos oversettelsesarbeidsflyt er enkel og skalerbar: eksport, oversett, import.


  1. Gå til Settings > Translations > Export Translation for å laste ned en .po eller .csv med strengene som skal oversettes for et språk.
  2. Oversetter filen selv eller send den til en språkleverandør som fyller inn oversettelsene.
  3. Deretter går du til Settings > Translations > Import Translation og laster opp filen for å integrere oversettelsene tilbake i systemet.

For enkeltposter, som enkelte produktnavn, er det ofte raskest å bruke språkflagg-ikonet i grensesnittet og redigere direkte for hver språkversjon.


Oversettelse via API

Når du skriver til et oversatt felt gjennom XML-RPC eller annen API, må du sende språket i konteksten for å lagre riktig språkversjon.


Et eksempel er å oppdatere produktnavnet i fransk ved å sette {'context': {'lang': 'fr_FR'}} i write-kallet.

Skriving med språk i konteksten oppdaterer kun den angitte språkverdien og endrer ikke andre språkversjoner — dette er den riktige måten å integrere oversatt innhold fra eksterne systemer.

Beste fremgangsmåter


Gode vaner som sparer tid


Sett basisverdien først

Før du begynner å oversette til flere språk: sørg for at basis-språket (kilden) er korrekt og komplett. Oversettelser baseres på denne teksten, og endringer i kilden oppdaterer ikke automatisk eksisterende oversettelser.


Oversett kun det som gir verdi

Ikke alle felt trenger å være oversatt. Interne koder, tekniske ID-er og felt som kun brukes i ett språk i bedriften skaper unødvendig vedlikeholdsarbeid om de merkes oversettbare.


Bruk eksport/import for store jobber

Ved store kataloger eller mange sider er det upraktisk å redigere én og én post i UI. Eksporter, oversett i bulk og importer tilbake — det er langt mer effektivt og mindre feilutsatt.


Angi språk i alle API-kall

Når du leser eller skriver oversatte felt via API, spesifiser alltid {'lang': 'xx_XX'} i konteksten. Uten dette kan data lagres i feil språkversjon og gi vanskelig ettersporing av feil.


Ta vare på oversettelsene ved kildendring

Endrer du basisverdien må du ha en prosess som varsler oversettere slik at oversettelsene oppdateres. Ellers kommer ulike språk fort ut av synk.

Vanlige fallgruver


Typiske feil utviklere og konsulenter gjør


Glemme språk i API-skrivinger

Den vanligste feilen ved integrasjoner er å oppdatere tekst uten å sette språk i konteksten. Da kan du ved et uhell overskrive basis-språket i stedet for å legge til en ny oversettelse.


Forvente at søk dekker alle språk automatisk

Søk i Odoo skjer typisk i det aktive språket. Hvis en post kun har en engelsk label og brukeren er satt til fransk, vil den ikke dukke opp i søkeresultatet for franske brukere før oversettelsen finnes.


Blande oversatte og ikke-oversatte felt i rapporter

Rapporter som blander oversatte og faste felt kan gi ujevnhet: noen etiketter på brukerens språk, andre på basis-språket. Planlegg feltvalget for rapporter slik at output blir konsistent for mottakerne.


Ignorere oversettelseskostnader for beregnede felt

Hvis du bygger et computed-felt som kombinerer flere oversatte felt, blir resultatet beregnet i den aktive språk-konteksten ved kjøring, og lagres ikke automatisk per språk. Hvis du trenger språk-spesifikke sammensetninger må dette håndteres eksplisitt i koden.


Fjerne språk uten å rydde opp

Når et språk deaktiveres kan gamle oversettelsesverdier bli liggende i databasen. Det er ofte ufarlig, men gir rot. Rydd opp i oversettelsesdata etter at du fjerner språk i produksjon om det er viktig for databasehygiene.

Oppsummering


Konklusjon om nytten


Oversatte felt er et av Odoos mest praktiske verktøy for selskaper som opererer på tvers av språk. Med én enkel parameter, translate=True, kan du administrere lokaliserte produkttekster, e-postmaler, nettsider og egne felt uten å duplisere poster eller ha egne systemer per språk.


Viktigst er å bruke funksjonen målrettet: oversett det som faktisk forbedrer brukeropplevelsen, håndter store volum via eksport/import, og vær alltid eksplisitt på språk-konteksten når du arbeider via API.

Trenger du hjelp med en flerspråklig Odoo-utrulling, feltkonfigurasjon eller oversettelsesflyt? Ta kontakt med Dasolo-teamet så hjelper vi deg gjerne med å få løsningene på plass.

Oversatte felt i Odoo: Komplett guide for utviklere og brukere
Dasolo 6. mars 2026
Share this post
Logg inn to leave a comment