Hoppa till innehåll

Översatta Fält i Odoo: En Fullständig Guide

Lär dig hur Odoo översatta fält lagrar flerspråkig data i ORM och hur du effektivt kan använda dem i ditt företag
6 mars 2026 av
Översatta Fält i Odoo: En Fullständig Guide
Dasolo
| Inga kommentarer ännu

Många Odoo-implementationer betjänar användare eller kunder på mer än ett språk. Ett franskt försäljningsteam, ett tyskt lager, en spansk kundportal. För att allt detta ska fungera sömlöst behöver Odoo ett sätt att lagra fältvärden på flera språk samtidigt. Det är precis vad översatta fält gör.


Ett översatt fält har ett värde per språk. När en fransk användare öppnar en produktpost ser de det franska produktnamnet. När en tysk användare öppnar samma post ser de det tyska namnet. En post i databasen, flera representationer beroende på vem som tittar.

Denna guide förklarar hur översatta fält fungerar i Odoo ORM, hur man skapar och hanterar dem, och de praktiska situationer där de gör en verklig skillnad i hur ditt företag fungerar.

Vad är ett översatt fält i Odoo


Ett översatt fält är ett textbaserat fält i Odoo-datamodellen som kan lagra ett annat värde för varje aktivt språk i systemet. Översättningen är transparent för användaren: de ser alltid värdet på sitt eget språk utan att behöva göra något speciellt.


När det gäller Odoo-fälttyper stöds översättning på:

  • Char: kort enradig text (produktnamn, kategorilabels, jobbtitlar)
  • Text: längre fleradig text (beskrivningar, anteckningar)
  • Html: rikt text med HTML-markup (webbplatsinnehåll, e-postmallar)

Numeriska fält, datumfält, Many2one-fält och booleska fält kan inte översättas. Översättning gäller endast fält som innehåller läsbar text.


Så här ser det ut i gränssnittet

När ett översatt fält är aktivt i Odoo visas en liten språkflagga bredvid fältet i redigeringsläge. Genom att klicka på den öppnas en dialogruta som visar värdet för varje installerat språk, vilket gör att auktoriserade användare kan hantera alla översättningar från en plats.


I läsläge ser användaren helt enkelt värdet på sitt eget språk. Om ingen översättning har ställts in för deras språk ännu, faller Odoo tillbaka till bas språkets värde (vanligtvis engelska) istället för att visa ett tomt fält.

Hur det översatta fältet fungerar


Att förstå de interna aspekterna av översatta fält hjälper dig att fatta bättre beslut om när du ska använda dem och hur du ska hantera dem i stor skala.


Parametern translate=True

I Odoo ORM aktiverar du översättning på ett fält genom att lägga till translate=True i fältdefinitionen. Här är ett enkelt exempel på ett anpassat Char-fält:

from odoo import models, fields

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    x_marketing_tagline = fields.Char(
        string='Marketing Tagline',
        translate=True
    )

Med denna enda parameter vet Odoo att lagra och hämta olika värden för detta fält beroende på den aktiva språk kontexten. Detta är en av de mest eleganta funktionerna i Odoo-ramverket.


Där översättningar lagras

Lagringsmekanismen har förändrats över Odoo-versioner:

  • Odoo 15 och tidigare: Översättningar lagrades i en separat ir.translation-tabell. Varje översatt värde var en rad i den tabellen, kopplad till modellen, fältnamnet, post-ID och språkkod.
  • Odoo 16 och senare: Översättningar lagras direkt i modellens egen databas-tabell som en JSONB-kolumn. Till exempel lagras ett name-fält med translate=True som ett JSON-objekt som {"en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable", "de_DE": "Laptopständer"}.

Övergången till JSONB i Odoo 16 var en betydande förbättring. Den eliminerar dyra joins med översättningstabellen och gör frågning mycket snabbare, särskilt på modeller med många poster.


Hur språkets kontext fungerar

När Odoo läser ett översatt fält kontrollerar det den aktiva språket i kontexten. Om du är inloggad som en fransk användare hämtar ORM automatiskt det franska värdet. Om du gör ett API-anrop kontrollerar du språket genom att skicka det i kontexten:

models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'product.template', 'read',
    [[product_id]],
    {'fields': ['name'], 'context': {'lang': 'fr_FR'}}
)

Detta är viktigt när du bygger integrationer eller exportskript. Skicka alltid det korrekta språket i kontexten för att få rätt översatt värde.


Översättningsparametern med en callable

Parametern translate accepterar också en callable för avancerade användningsfall. Det vanligaste exemplet är att använda translate=_ för att markera statiska strängvärden (som valetiketter) för översättning via den standardiserade Odoo-översättningsexportmekanismen. Detta är skilt från översättningar på postnivå och används främst i Odoo-utveckling för att översätta modulsträngar.


Fallback-beteende

Om en översättning inte har ställts in för det aktiva språket, returnerar Odoo inte ett tomt värde. Det faller tillbaka till grundspråket i databasen (vanligtvis engelska). Denna smidiga återgång innebär att dina användare alltid ser något meningsfullt, även i delvis översatta miljöer.

Affärsanvändningsfall


Översatta fält är inte bara en teknisk funktion. De löser verkliga problem som uppstår i företag som verkar över språk. Här är fem vanliga scenarier.


1. E-handel: Flerspråkiga produktnamn och beskrivningar

Om du säljer via Odoo-webbplatsen eller butiken, förväntar sig dina kunder att kunna bläddra på sitt eget språk. Fälten name och descriptionproduct.template är översättningsbara som standard. Detta innebär att du kan upprätthålla en enda produktkatalog och tillhandahålla lokaliserade namn, försäljningsargument och tekniska specifikationer utan att duplicera poster.

En kund som besöker din franska webbplats ser franska produktnamn och franska beskrivningar. Den underliggande produkten är densamma, lagernivåerna är desamma, prissättningsreglerna är desamma. Endast den visade texten ändras.


2. E-postmallar i flerspråkiga företag

Odoos e-postmallar använder översatta Html-fält för sitt innehåll. När du skickar en orderbekräftelse till en tysk kund, använder Odoo automatiskt den tyska versionen av mallens innehåll om en sådan har ställts in. Detta fungerar eftersom mallfälten har translate=True.


För företag med kunder i flera länder innebär detta att en enda mall kan betjäna alla marknader på ett rent sätt utan villkorlig logik eller separata mallposter per språk.


3. Webbplats sidor och blogginnehåll

Odoo-webbplatssidor använder översättningsbara Html-fält för sitt innehåll. När din webbplats har flera språk aktiverade kan redaktörer underhålla olika texter för varje språkverson av samma sida. Så här fungerar flerspråkiga Odoo-webbplatser inbyggt, utan någon tredjepartsplugin.


Ur ett SEO-perspektiv innebär detta också att varje språkversion av sidan kan ha sin egen meta-titel och meta-beskrivning, vilket hjälper dig att ranka i lokala sökresultat över olika marknader.


4. Valfältsetiketter för internationella team

När du definierar ett urvalsfält i Odoo Python-kod kan alternativetiketterna markeras för översättning med hjälp av den standard _ översättningsfunktionen. Detta innebär att en rullgardinsmeny som visar "Pågående", "På vänt" och "Avslutad" för en engelsk användare kommer att visa de korrekt översatta motsvarigheterna för användare på andra språk.


Detta är särskilt användbart inom HR, projektledning och alla arbetsflöden där team på olika kontor behöver arbeta med samma poster men på sitt eget språk.


5. Anpassade fält i flerspråkig rapportering

Om du har skapat anpassade fält med hjälp av Odoo-anpassning eller Odoo Studio-fält för intern kategorisering (tjänstekategorier, risknivåer, produktsegment), säkerställer översättning av dessa fält att rapporter och instrumentpaneler visas korrekt för alla användare, oavsett deras språkinställning.


Utan översättning på dessa fält kan en fransk användare se engelska etiketter i sina rapporter, vilket skapar förvirring och minskar antagandet.

Skapa eller anpassa översatta fält


Det finns några sätt att skapa eller aktivera översättning på ett fält i Odoo, beroende på om du arbetar i en kodlös miljö eller direkt i Python.


Använda Python (Rekommenderas för utvecklare)

Det renaste sättet att skapa ett översatt fält i Odoo ORM är att definiera det i en Python-modell med translate=True. Detta är den standardmetod som anges i alla Odoo-utvecklarhandböcker eller Odoo tekniska handledningar:


from odoo import models, fields

class ProductTemplate(models.Model):
    _inherit = 'product.template'

    x_product_highlight = fields.Char(
        string='Produktmarkering',
        translate=True
    )

    x_product_note = fields.Html(
        string='Produktanteckning',
        translate=True
    )

Att lägga till translate=True är allt som krävs. Från den punkten hanterar Odoo allt: språkflaggan i användargränssnittet, översättningslagringen, fallback-logiken.


Använda Odoo Studio-fält

Odoo Studio exponerar inte translate alternativet i sin fältkonfigurationspanel. När du skapar ett Char- eller Text-fält i Studio är det inte översättningsbart som standard.


Men du kan aktivera översättning på ett Studio-fält via XML-RPC API:et efter att det har skapats. Hitta fältets ID i ir.model.fields och uppdatera dess translate-egenskap:


# Hitta Studio-fältet
field = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'search_read',
    [[[('name', '=', 'x_my_field'), ('model', '=', 'product.template')]]],
    {'fields': ['id', 'name', 'translate']}
)[0]

# Aktivera översättning
models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'write',
    [[field['id']], {'translate': True}]
)

Denna metod fungerar bra för team som gör Odoo-anpassningar via skript eller anteckningsböcker utan tillgång till källkoden.


Hantera översättningar: Exportera och importera

När de översatta fälten är på plats är översättningsarbetsflödet i Odoo enkelt:


  1. Gå till Inställningar > Översättningar > Exportera översättning för att ladda ner en .po- eller .csv-fil med alla oöversatta strängar för ett givet språk.
  2. Fyll i översättningarna i filen (eller skicka den till en översättare).
  3. Gå till Inställningar > Översättningar > Importera översättning för att ladda upp den färdiga filen tillbaka till Odoo.

För översättningar på postnivå (som produktnamn) kan du också redigera dem direkt i gränssnittet med hjälp av språkflaggan bredvid fältet. Detta är mer praktiskt för små volymer av innehåll.


Översätta via API:et

När du skriver eller uppdaterar ett översatt fält via XML-RPC API:et, skicka språket i kontexten:


# Skriv den franska översättningen för ett produktnamn
models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'product.template', 'write',
    [[product_id], {'name': 'Ordinateur Portable Ultra'}],
    {'context': {'lang': 'fr_FR'}}
)

Att skriva med ett specifikt språk i kontexten uppdaterar endast översättningen för det språket. Andra språkvärden förblir oförändrade. Detta är det rena sättet att trycka översatt innehåll till Odoo från ett externt system.

Bästa praxis


Översatta fält är raka och tydliga när de används korrekt, men några vanor kommer att spara dig mycket tid och förvirring.


Ställ alltid in grundspråkets värde först

Innan du lägger till översättningar för andra språk, se till att grundspråkets värde är korrekt och komplett. Alla andra översättningar härstammar från denna grund. Om du ändrar grundvärdet senare, uppdateras inte de andra översättningarna automatiskt och kommer att vara ur synk.


Översätt endast fält som verkligen behöver det

Inte varje textfält behöver vara översättningsbart. Interna referenskoder, tekniska identifierare och fält som endast är synliga för back-office-personal i ett enspråkigt företag drar inte nytta av översättning. Att lägga till translate=True till för många fält ökar komplexiteten och volymen av översättningar som behöver underhållas.


Använd export/import-arbetsflödet för stora översättningsjobb

För stora kataloger (hundratals eller tusentals produkter) är det opraktiskt att redigera översättningar en och en i gränssnittet. Använd översättningsexportfunktionen för att generera en fil, översätta i bulk och importera tillbaka. Detta är mycket snabbare och mindre benäget för fel.


Skicka språkets kontext i alla API-anrop

När du läser eller skriver översatta fält via Odoo API, skicka alltid 'lang': 'xx_XX' i kontexten. Utan det, standardiserar API:t till användarens språk, vilket kanske inte är vad du avser. Att vara tydlig undviker subtila buggar där data hamnar lagrad under fel språk.


Upprätthåll översättningar när källan ändras

När du uppdaterar grundspråkets värde för ett översatt fält, uppdateras inte översättningarna på de andra språken automatiskt. Bygg in en granskningsprocess i ditt innehållsarbetsflöde så att översättare meddelas när källinnehållet ändras och översättningar behöver uppdateras.

Vanliga fallgropar


Även erfarna Odoo-konsulter stöter på dessa misstag. Att vara medveten om dem i förväg kommer att spara dig mycket tid på felsökning.


Att glömma att ange språkets kontext vid API-skrivningar

Detta är det vanligaste misstaget när man integrerar externa system med Odoo. Om du skriver ett produktnamn via API:et utan att specificera ett språk, skriver Odoo det på användarens standardspråk. Om den användaren råkar vara konfigurerad på engelska, men du ville ställa in den franska översättningen, har du skrivit över det engelska värdet istället. Var alltid tydlig med språkets kontext.


Att anta att översatta fält filtreras i sökningar

När du söker på ett översatt fält (till exempel, söker efter en produkt efter namn), söker Odoo i det aktiva språket som standard. En produkt som heter "Laptop Ställ" på engelska kommer inte att visas i sökresultaten om användaren är på franska och den franska översättningen ännu inte har ställts in. Se till att översättningarna är på plats innan du förväntar dig att sökningar ska fungera över språk.


Att blanda översatta och icke-översatta fält i rapporter

Om en anpassad Odoo-rapport eller export använder en blandning av översatta och icke-översatta textfält kan resultatet bli inkonsekvent: vissa etiketter visas på användarens språk, andra visas alltid på grundspråket. Granska noggrant dina rapportfält och bestäm i förväg om varje fält ska vara översättningsbart.


Att inte ta hänsyn till översättningsöverhäng i beräknade fält

Om du har ett Odoo-beräknat fält som bygger en sträng från flera översatta fält, körs beräkningen på det aktiva språket vid tidpunkten för begäran. Resultatet lagras inte automatiskt per språk. Om du behöver en beräknad sammanfogning av översatta värden på flera språk, måste du hantera den språk-specifika beräkningen uttryckligen.


Att ta bort ett språk utan att städa upp översättningar

När du inaktiverar eller tar bort ett språk i Odoo kan översättningsvärdena för det språket förbli i databasen beroende på din version. Detta är vanligtvis ofarligt, men det kan skapa oreda. Kontrollera alltid dina översättningsdata efter att ha inaktiverat ett språk i en produktionsmiljö.

Slutsats


Översatta fält är en av de mest praktiska funktionerna i Odoo-ramverket för företag som arbetar över flera språk. En enda parameter, translate=True, låser upp möjligheten att upprätthålla lokaliserat innehåll för produktkataloger, e-postmallar, webbplats sidor och anpassade fält utan att duplicera poster eller hantera separata system.


Nyckeln är att vara medveten om vilka fält som faktiskt behöver översättning. Använd det där det gör skillnad för dina användare eller kunder, hantera översättningar genom export/import-arbetsflödet för skala, och var alltid tydlig med språkets kontext när du arbetar med Odoo API.


Oavsett om du sätter upp en flerspråkig e-handelsbutik, rullar ut Odoo till internationella team, eller gör Odoo-utveckling på en anpassad modul, kommer förståelse för översatta fält att hjälpa dig att bygga renare, mer användarvänliga lösningar.

Arbetar du med en flerspråkig Odoo-implementering och behöver vägledning om fältkonfiguration eller översättningsarbetsflöden? Kontakta Dasolo-teamet och vi hjälper gärna till att få det rätt.

Översatta Fält i Odoo: En Fullständig Guide
Dasolo 6 mars 2026
Dela detta inlägg
Logga in att lämna en kommentar