Se rendre au contenu

Champs Traduit(s) dans Odoo : Guide Complet Pour les Maîtriser

Découvrez comment Odoo gère les champs multilingues dans son ORM et comment en tirer parti pour vos processus métier. Cet article explique, simplement et concrètement, où sont stockées les traductions, comment les consulter et les modifier, et quelles bonnes pratiques adopter pour que vos fiches produits, descriptions et interfaces respectent les attentes des clients francophones en Belgique. Vous apprendrez à activer et configurer la gestion des langues, à distinguer champs traduits et non traduits, et à automatiser ou superviser la propagation des traductions afin d’éviter incohérences et doublons dans votre base de données. Enfin, des conseils pratiques vous aideront à optimiser le référencement multilingue, l’expérience utilisateur et la maintenance des contenus dans Odoo.
6 mars 2026 par
Champs Traduit(s) dans Odoo : Guide Complet Pour les Maîtriser
Dasolo
| Aucun commentaire pour l'instant

Beaucoup d’implémentations Odoo doivent servir des utilisateurs ou des clients qui parlent différentes langues : une équipe commerciale francophone, un entrepôt germanophone, un portail client en espagnol. Pour que tout ça fonctionne sans friction, Odoo doit pouvoir conserver plusieurs versions textuelles d’un même champ. C’est précisément le rôle des champs traduisibles.


Un champ traduisible peut contenir une valeur distincte pour chaque langue activée. Un utilisateur en français verra le libellé en français, un collègue en allemand verra la version allemande. Il n’y a qu’un seul enregistrement en base, mais plusieurs représentations selon la langue de l’utilisateur.

Ce dossier décrit le mécanisme des champs traduisibles dans l’ORM Odoo, comment les créer et les administrer, et dans quelles situations ils apportent un vrai bénéfice opérationnel.

Qu’est-ce qu’un champ traduisible dans Odoo


Concrètement, un champ traduisible est un champ texte du modèle de données Odoo qui peut stocker une valeur différente pour chaque langue active du système. Pour l’utilisateur, la traduction est transparente : il voit automatiquement la version dans sa langue sans action supplémentaire.


Types de champs concernés par la traduction

  • Char — texte court sur une seule ligne : noms de produit, intitulés de catégories ou postes.
  • Text — texte long sur plusieurs lignes : descriptions détaillées, notes internes destinées aux utilisateurs multilingues.
  • Html — contenu enrichi (HTML) : blocs de page web, corps de modèles d’email, contenus éditoriaux.

Les champs non textuels — numériques, dates, Many2one, booléens — ne sont pas traduisibles. La traduction s’applique uniquement aux contenus lisibles par un humain.


Affichage dans l’interface

Quand un champ est défini comme traduisible, Odoo affiche une petite icône drapeau à côté du champ en mode édition. En cliquant dessus, on ouvre une fenêtre qui liste la valeur pour chaque langue installée et permet de les modifier depuis un même endroit.


En mode lecture, l’utilisateur voit simplement la valeur correspondant à sa langue. Si aucune traduction n’existe pour cette langue, Odoo affiche la valeur de la langue de base (souvent l’anglais) plutôt qu’un champ vide.

Principe de fonctionnement d’un champ traduisible


Comprendre le fonctionnement interne vous aide à choisir quand utiliser la traduction et à gérer correctement le volume de contenu traduit.


Le paramètre translate=True

Dans l’ORM Odoo, on active la traduction sur un champ en ajoutant translate=True à sa définition. C’est la seule option nécessaire pour dire à Odoo de traiter ce champ comme multilingue.

Exemple typique sur un champ Char défini dans un module personnalisé (exposé ici comme principe).

Avec ce simple paramètre, Odoo sait stocker et restituer des valeurs différentes selon la langue active — une fonctionnalité élégante et très utile du framework.


Où sont stockées les traductions

Le mécanisme de stockage a évolué selon les versions d’Odoo.

  • Odoo 15 et antérieures : les traductions étaient gardées dans une table dédiée ir.translation. Chaque valeur traduite occupait une ligne liée au modèle, au nom du champ, à l’ID d’enregistrement et au code langue.
  • Odoo 16 et versions suivantes : les traductions sont stockées dans la table du modèle lui‑même, via une colonne JSONB. Par exemple, un champ name avec translate=True peut contenir un objet JSON comme {"en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable", "de_DE": "Laptopständer"}.

Le passage au JSONB a apporté un vrai gain de performances en évitant des jointures coûteuses vers la table de traduction, surtout sur des modèles volumineux.


Contexte de langue et lecture des champs

Quand Odoo lit un champ traduisible, il regarde la langue active dans le contexte. Si vous êtes connecté en français, l’ORM retourne automatiquement la version française. En API, c’est vous qui contrôlez la langue via le contexte.

Exemple d’appel API où l’on précise le contexte de langue pour lire un produit en français.

C’est essentiel pour les intégrations et les exports : pensez toujours à transmettre la langue voulue dans le contexte pour récupérer la bonne valeur.


Le paramètre translate peut aussi être callable

Le paramètre translate accepte parfois une fonction callable pour des usages avancés. Par exemple, utiliser translate=_ sert à marquer des chaînes statiques (libellés de sélections, messages de module) pour l’export de traduction classique — ce n’est pas la même chose que les traductions au niveau des enregistrements.


Comportement de repli (fallback)

Si une traduction pour la langue active est absente, Odoo renvoie la valeur de la langue de base de la base de données (généralement l’anglais). Ce comportement garantit que l’utilisateur voit toujours un contenu compréhensible, même si tout n’est pas traduit.

Cas d’usage concrets en entreprise


Les champs traduisibles ne sont pas seulement une commodité technique : ils répondent à des besoins concrets des entreprises multilingues. Voici quelques scénarios typiques.


1) E‑commerce : noms et descriptions produits multilingues

Sur une boutique Odoo, les acheteurs attendent une navigation dans leur langue. Les champs name et description de product.template sont traduisibles par défaut, ce qui permet de maintenir un catalogue unique tout en offrant des contenus localisés pour le commerce en ligne.

Un client qui visite votre site en français verra les noms et descriptions en français, tandis que le stock, les prix et la gestion logistique restent identiques — seule la présentation textuelle change selon la langue.


2) Modèles d’e‑mail pour entreprises internationales

Les templates d’email utilisent des champs Html traduisibles. Lorsqu’une commande est confirmée pour un client allemand, Odoo peut envoyer le corps de mail en allemand si cette version existe, sans créer plusieurs templates par langue.


Cela simplifie énormément la maintenance : un seul modèle peut couvrir plusieurs marchés sans logique conditionnelle complexe.


3) Pages web et articles de blog multilingues

Les pages du site Odoo utilisent des champs Html traduisibles. Les éditeurs peuvent donc gérer des contenus distincts pour chaque langue de la même page, ce qui évite les extensions tierces et garde tout centralisé dans Odoo.


Côté référencement, chaque version linguistique peut avoir son propre meta title et meta description, améliorant la visibilité locale dans les résultats de recherche.


4) Libellés de Selection pour équipes internationales

Les options d’un champ Selection peuvent être marquées pour traduction via la fonction _ : un même menu déroulant affiche "En cours", "En attente", "Terminé" selon la langue de l’utilisateur.


C’est très utile en RH, gestion de projet ou partout où des équipes multiculturelles doivent manipuler des mêmes états métiers dans leur langue.


5) Champs personnalisés pour rapports multilingues

Si vous avez ajouté des champs personnalisés (via customization ou Studio) pour catégoriser produits, services ou risques, rendre ces champs traduisibles garantit que les rapports et tableaux de bord s’affichent correctement pour chaque utilisateur.


Sans traduction, un utilisateur francophone pourrait voir des libellés en anglais dans ses exports, ce qui nuit à l’adoption et provoque des erreurs de lecture.

Créer ou activer des champs traduisibles


Plusieurs méthodes existent pour activer la traduction d’un champ, selon que vous travaillez sans code ou en Python.


Méthode Python (recommandée pour les développeurs)

La manière la plus propre consiste à définir le champ dans un modèle Python avec translate=True. C’est la méthode standard dans le développement Odoo.


Exemple illustratif : ajout d’un Char et d’un Html traduisibles dans product.template (présenté ici à titre pédagogique).

Ajouter translate=True suffit : Odoo s’occupe ensuite de l’icône de langue dans l’UI, du stockage et des règles de fallback.


Utilisation des champs créés via Odoo Studio

Odoo Studio n’expose pas l’option translate dans son panneau de configuration. Un champ créé en Studio n’est pas traduisible par défaut.


En revanche, vous pouvez activer la traduction sur un champ Studio après coup via l’API XML‑RPC en mettant à jour la propriété translate dans ir.model.fields.


Exemple de script : recherche du champ dans ir.model.fields puis mise à jour de translate à True pour l’activer.

Cette méthode convient quand vous personnalisez Odoo sans accès direct au code source mais que vous pouvez exécuter des scripts d’administration.


Gérer les traductions : export et import

Le flux de traduction standard dans Odoo est simple et adapté aux volumes variables.


  1. Allez dans Settings > Translations > Export Translation pour télécharger un .po ou .csv contenant les chaînes à traduire pour une langue donnée.
  2. Remplissez les traductions dans le fichier ou confiez‑les à un traducteur professionnel.
  3. Puis importez le fichier via Settings > Translations > Import Translation pour réinjecter les traductions dans Odoo.

Pour les traductions au niveau des enregistrements (ex. noms de produits), il est souvent plus rapide de les corriger directement via l’icône drapeau pour de faibles volumes.


Traduire via l’API

Quand vous écrivez ou mettez à jour un champ traduisible via l’API XML‑RPC, pensez à transmettre la langue dans le contexte.


Exemple : écrire la traduction française d’un nom de produit en passant context: {'lang': 'fr_FR'}.

Écrire avec une langue précise dans le contexte modifie uniquement cette version linguistique ; les autres langues ne sont pas affectées. C’est la méthode recommandée pour synchroniser des contenus depuis des systèmes externes.

Bonnes pratiques


Quelques habitudes simples rendent l’utilisation des champs traduisibles bien plus fiable.


Toujours renseigner d’abord la valeur de base

Avant d’ajouter des traductions, vérifiez que la valeur dans la langue de base est correcte. Les autres traductions se basent sur cette source. Si vous modifiez la valeur de base ensuite, les traductions existantes ne se mettent pas à jour automatiquement.


Ne rendre traduisible que ce qui en a réellement besoin

Tous les champs texte n’ont pas à être traduits. Codes internes, identifiants techniques ou champs destinés exclusivement à un back‑office mono‑langue n’en bénéficient pas. Rendre trop de champs traduisibles augmente inutilement la charge de traduction.


Utiliser l’export/import pour les volumes importants

Pour des catalogues volumineux (centaines ou milliers de produits), évitez la saisie manuelle en UI. Exportez, traduisez en masse, puis réimportez : c’est plus rapide et réduit les erreurs.


Toujours passer le contexte langue dans les appels API

Lors d’opérations via l’API, spécifiez systématiquement 'lang': 'xx_XX' dans le contexte. Sans cela, l’API utilise la langue de l’utilisateur courant, ce qui peut entraîner des écritures dans la mauvaise langue.


Prévoir la maintenance des traductions quand la source change

Si vous modifiez la valeur de base d’un champ, les traductions existantes ne suivent pas automatiquement. Intégrez un processus de relecture ou de notification pour que les traducteurs mettent à jour les versions concernées.

Pièges récurrents


Même des consultants Odoo chevronnés tombent dans ces écueils. Les anticiper fait gagner beaucoup de temps en support.


Oublier de préciser le contexte langue lors d’écritures API

C’est l’erreur la plus fréquente en intégration. Sans contexte langue, une écriture via API peut réécrire la valeur dans la langue de l’utilisateur par défaut (souvent l’anglais) alors que vous souhaitiez mettre à jour la version française. Soyez explicite.


Penser que la recherche interroge toutes les langues

La recherche sur un champ traduisible s’effectue par défaut dans la langue active. Si la traduction française manque, un produit nommé "Laptop Stand" n’apparaîtra pas pour un utilisateur en français. Assurez‑vous que les traductions essentielles sont en place pour éviter des résultats manquants.


Mélanger champs traduisibles et non traduisibles dans des rapports

Un export ou un rapport qui combine des champs traduits et non traduits peut produire un rendu incohérent (certains libellés dans la langue utilisateur, d’autres en langue de base). Vérifiez chaque champ et décidez en amont de sa nécessité de traduction.


Sous‑estimer l’impact sur les champs calculés

Si un champ calculé concatène plusieurs champs traduisibles, le calcul est fait dans la langue active au moment de l’appel et n’est pas stocké par langue. Pour obtenir des concaténations distinctes par langue, il faut gérer explicitement la logique par contexte langue.


Supprimer une langue sans nettoyer les traductions associées

Quand vous désactivez une langue, ses valeurs traduites peuvent rester en base selon la version d’Odoo. Ce n’est généralement pas problématique mais cela alourdit les données : pensez à vérifier et nettoyer si nécessaire après la désactivation en production.

Conclusion


Les champs traduisibles sont l’un des outils les plus pragmatiques d’Odoo pour les organisations internationales. Un simple translate=True permet de proposer un contenu localisé pour catalogues produits, templates d’e‑mail, pages web et champs personnalisés, sans dupliquer les enregistrements.


La clef est de rester sélectif : activez la traduction pour les champs qui apportent une réelle valeur pour vos utilisateurs ou clients, gérez les gros volumes via export/import, et soyez toujours explicite sur la langue dans les appels API.


Que vous lanciez une boutique multilingue, déployiez Odoo à l’international ou développiez un module, maîtriser les champs traduisibles vous aidera à concevoir des solutions plus propres et plus faciles à utiliser.

Vous travaillez sur une implémentation Odoo multilingue et souhaitez des conseils sur la configuration des champs ou les workflows de traduction ? Contactez l’équipe Dasolo Nous serons ravis de vous accompagner pour mettre en place la bonne stratégie.

Champs Traduit(s) dans Odoo : Guide Complet Pour les Maîtriser
Dasolo 6 mars 2026
Partager cet article
Se connecter pour laisser un commentaire.