Ir al contenido

Campos Traducidos en Odoo: Guía Completa

Aprenda cómo Odoo traduce los campos para almacenar datos multilingües en el ORM y cómo usarlos de manera efectiva en su negocio
6 de marzo de 2026 por
Campos Traducidos en Odoo: Guía Completa
Dasolo
| Sin comentarios aún

Muchas implementaciones de Odoo sirven a usuarios o clientes en más de un idioma. Un equipo de ventas francés, un almacén alemán, un portal de clientes español. Para que todo esto funcione sin problemas, Odoo necesita una forma de almacenar los valores de los campos en múltiples idiomas a la vez. Eso es exactamente lo que hacen los campos traducidos.


Un campo traducido contiene un valor por idioma. Cuando un usuario francés abre un registro de producto, ve el nombre del producto en francés. Cuando un usuario alemán abre el mismo registro, ve el nombre en alemán. Un registro en la base de datos, múltiples representaciones dependiendo de quién esté mirando.

Esta guía explica cómo funcionan los campos traducidos en el ORM de Odoo, cómo crearlos y gestionarlos, y las situaciones prácticas donde hacen una diferencia real en cómo opera su negocio.

¿Qué es un campo traducido en Odoo?


Un campo traducido es un campo basado en texto en el modelo de datos de Odoo que puede almacenar un valor diferente para cada idioma activo en el sistema. La traducción es transparente para el usuario: siempre ven el valor en su propio idioma sin necesidad de hacer nada especial.


En términos de tipos de campos de Odoo, la traducción es compatible con:

  • Char: texto corto en una sola línea (nombres de productos, etiquetas de categoría, títulos de trabajo)
  • Text: texto más largo en varias líneas (descripciones, notas)
  • Html: texto enriquecido con marcado HTML (contenido de sitios web, cuerpos de plantillas de correo electrónico)

Los campos numéricos, los campos de fecha, los campos Many2one y los campos booleanos no se pueden traducir. La traducción solo se aplica a los campos que contienen texto legible por humanos.


Cómo se ve en la interfaz

Cuando un campo traducido está activo en Odoo, aparece un pequeño icono de bandera de idioma junto al campo en modo de edición. Al hacer clic en él, se abre un diálogo que muestra el valor para cada idioma instalado, permitiendo a los usuarios autorizados gestionar todas las traducciones desde un solo lugar.


En modo de lectura, el usuario simplemente ve el valor en su propio idioma. Si aún no se ha establecido ninguna traducción para su idioma, Odoo recurre al valor del idioma base (generalmente inglés) en lugar de mostrar un campo vacío.

Cómo funciona el campo traducido


Entender los detalles internos de los campos traducidos te ayuda a tomar mejores decisiones sobre cuándo usarlos y cómo gestionarlos a gran escala.


El parámetro translate=True

En el ORM de Odoo, habilitas la traducción en un campo añadiendo translate=True a la definición del campo. Aquí hay un ejemplo simple en un campo Char personalizado:

from odoo import models, fields

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

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

Con este único parámetro, Odoo sabe almacenar y recuperar diferentes valores para este campo dependiendo del contexto del idioma activo. Esta es una de las características más elegantes del marco de Odoo.


Dónde se almacenan las traducciones

El mecanismo de almacenamiento ha cambiado a lo largo de las versiones de Odoo:

  • Odoo 15 y anteriores: Las traducciones se almacenaban en una tabla ir.translation separada. Cada valor traducido era una fila en esa tabla, vinculada al modelo, nombre del campo, ID del registro y código de idioma.
  • Odoo 16 y posteriores: Las traducciones se almacenan directamente en la propia tabla de base de datos del modelo como una columna JSONB. Por ejemplo, un campo name con translate=True se almacena como un objeto JSON como {"en_US": "Laptop Stand", "fr_FR": "Support pour ordinateur portable", "de_DE": "Laptopständer"}.

El cambio a JSONB en Odoo 16 fue una mejora significativa. Elimina uniones costosas con la tabla de traducción y hace que las consultas sean mucho más rápidas, especialmente en modelos con muchos registros.


Cómo funciona el contexto del idioma

Cuando Odoo lee un campo traducido, verifica el idioma activo en el contexto. Si estás conectado como un usuario francés, el ORM obtiene automáticamente el valor en francés. Si haces una llamada a la API, controlas el idioma pasándolo en el contexto:

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

Esto es importante al construir integraciones o scripts de exportación. Siempre pasa el idioma correcto en el contexto para obtener el valor traducido correcto.


El parámetro translate con un callable

El parámetro translate también acepta un callable para casos de uso avanzados. El ejemplo más común es usar translate=_ para marcar valores de cadena estáticos (como etiquetas de selección) para traducción a través del mecanismo estándar de exportación de traducción de Odoo. Esto es distinto de las traducciones de campo a nivel de registro y se utiliza principalmente en el desarrollo de Odoo para traducir cadenas de módulos.


Comportamiento de retroceso

Si no se ha establecido una traducción para el idioma activo, Odoo no devuelve un valor vacío. Vuelve al idioma base de la base de datos (típicamente inglés). Este retroceso elegante significa que tus usuarios siempre ven algo significativo, incluso en entornos parcialmente traducidos.

Casos de uso empresarial


Los campos traducidos no son solo una característica técnica. Resuelven problemas reales que surgen en empresas que operan en diferentes idiomas. Aquí hay cinco escenarios comunes.


1. Comercio electrónico: Nombres y Descripciones de Productos Multilingües

Si vendes a través del sitio web o tienda de Odoo, tus clientes esperan navegar en su propio idioma. Los campos name y description en product.template son traducibles por defecto. Esto significa que puedes mantener un único catálogo de productos y proporcionar nombres localizados, argumentos de venta y especificaciones técnicas sin duplicar registros.

Un cliente que visita tu sitio web en francés ve nombres de productos en francés y descripciones en francés. El producto subyacente es el mismo, los niveles de stock son los mismos, las reglas de precios son las mismas. Solo cambia el texto mostrado.


2. Plantillas de Correo Electrónico en Empresas Multilingües

Las plantillas de correo electrónico de Odoo utilizan campos Html traducidos para su contenido. Cuando envías una confirmación de pedido a un cliente alemán, Odoo utiliza automáticamente la versión en alemán del cuerpo de la plantilla si se ha establecido una. Esto funciona porque los campos de la plantilla tienen translate=True.


Para las empresas con clientes en múltiples países, esto significa que una única plantilla puede servir a todos los mercados de manera limpia sin lógica condicional o registros de plantilla separados por idioma.


3. Páginas Web y Contenido de Blog

Las páginas web de Odoo utilizan campos Html traducibles para su contenido. Cuando tu sitio web tiene múltiples idiomas activados, los editores pueden mantener diferentes textos para cada versión de idioma de la misma página. Así es como funcionan nativamente los sitios web multilingües de Odoo, sin ningún complemento de terceros.


Desde una perspectiva de SEO, esto también significa que cada versión de idioma de la página puede tener su propio título meta y descripción meta, ayudándote a posicionarte en los resultados de búsqueda locales en diferentes mercados.


4. Etiquetas de Campos de Selección para Equipos Internacionales

Cuando defines un campo de Selección en el código Python de Odoo, las etiquetas de las opciones pueden ser marcadas para traducción utilizando la función de traducción estándar _. Esto significa que un menú desplegable que muestra "En Progreso", "En Espera" y "Completado" a un usuario de habla inglesa mostrará los equivalentes traducidos correctamente a los usuarios en otros idiomas.


Esto es especialmente útil en recursos humanos, gestión de proyectos y cualquier flujo de trabajo donde equipos de diferentes oficinas necesiten trabajar con los mismos registros pero en su propio idioma.


5. Campos Personalizados en Informes Multilingües

Si has creado campos personalizados utilizando la personalización de Odoo o campos de Odoo Studio para categorización interna (categorías de servicio, niveles de riesgo, segmentos de productos), hacer que esos campos sean traducibles asegura que los informes y paneles se muestren correctamente para todos los usuarios, independientemente de su configuración de idioma.


Sin traducción en estos campos, un usuario francés podría ver etiquetas en inglés en sus informes, lo que crea confusión y reduce la adopción.

Creación o personalización de campos traducidos


Hay varias formas de crear o habilitar la traducción en un campo en Odoo, dependiendo de si estás trabajando en un entorno sin código o directamente en Python.


Usando Python (Recomendado para Desarrolladores)

La forma más limpia de crear un campo traducido en el ORM de Odoo es definirlo en un modelo de Python con translate=True. Este es el enfoque estándar en cualquier guía de desarrollador de Odoo o tutorial técnico de Odoo:


from odoo import models, fields

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

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

    x_product_note = fields.Html(
        string='Nota del Producto',
        translate=True
    )

Agregar translate=True es todo lo que se necesita. A partir de ese momento, Odoo se encarga de todo: la bandera de idioma en la interfaz de usuario, el almacenamiento de traducciones, la lógica de retroceso.


Usando Campos de Odoo Studio

Odoo Studio no expone la opción translate en su panel de configuración de campos. Cuando creas un campo Char o Text en Studio, no es traducible por defecto.


Sin embargo, puedes habilitar la traducción en un campo de Studio a través de la API XML-RPC después de que se haya creado. Encuentra el ID del campo en ir.model.fields y actualiza su propiedad translate:


# Encontrar el campo de Studio
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]

# Habilitar traducción
models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'write',
    [[field['id']], {'translate': True}]
)

Este enfoque funciona bien para equipos que realizan personalizaciones de Odoo a través de scripts o notebooks sin acceso al código fuente.


Gestión de Traducciones: Exportar e Importar

Una vez que los campos traducidos están en su lugar, el flujo de trabajo de traducción en Odoo es sencillo:


  1. Ve a Configuración > Traducciones > Exportar Traducción para descargar un archivo .po o .csv con todas las cadenas no traducidas para un idioma dado.
  2. Completa las traducciones en el archivo (o envíalo a un traductor).
  3. Ve a Configuración > Traducciones > Importar Traducción para subir el archivo completado de nuevo a Odoo.

Para traducciones a nivel de registro (como nombres de productos), también puedes editarlos directamente en la interfaz utilizando el icono de bandera de idioma junto al campo. Esto es más práctico para volúmenes pequeños de contenido.


Traduciendo a través de la API

Al escribir o actualizar un campo traducido a través de la API XML-RPC, pasa el idioma en el contexto:


# Escribir la traducción al francés para un nombre de producto
models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'product.template', 'write',
    [[product_id], {'name': 'Ordinateur Portable Ultra'}],
    {'context': {'lang': 'fr_FR'}}
)

Escribir en un idioma específico en el contexto solo actualiza la traducción de ese idioma. Los valores de otros idiomas permanecen intactos. Esta es la forma limpia de introducir contenido traducido en Odoo desde un sistema externo.

Mejores prácticas


Los campos traducidos son sencillos cuando se utilizan correctamente, pero algunos hábitos te ahorrarán mucho tiempo y confusión.


Siempre establece primero el valor del idioma base

Antes de añadir traducciones para otros idiomas, asegúrate de que el valor del idioma base sea correcto y completo. Todas las demás traducciones se derivan de esta base. Si cambias el valor base más tarde, las otras traducciones no se actualizan automáticamente y quedarán desincronizadas.


Solo traduce los campos que realmente lo necesiten

No todos los campos de texto necesitan ser traducibles. Los códigos de referencia internos, identificadores técnicos y campos visibles solo para el personal de oficina en una empresa de un solo idioma no se benefician de la traducción. Añadir translate=True a demasiados campos aumenta la complejidad y el volumen de traducciones que deben mantenerse.


Utiliza el flujo de trabajo de exportación/importación para trabajos de traducción grandes

Para catálogos grandes (cientos o miles de productos), editar traducciones una por una en la interfaz es poco práctico. Utiliza la función de exportación de traducciones para generar un archivo, traducir en bloque e importar de nuevo. Esto es mucho más rápido y menos propenso a errores.


Pasa el contexto del idioma en todas las llamadas a la API

Al leer o escribir campos traducidos a través de la API de Odoo, siempre pasa 'lang': 'xx_XX' en el contexto. Sin ello, la API utiliza el idioma del usuario por defecto, que puede no ser lo que pretendes. Ser explícito evita errores sutiles donde los datos terminan almacenados bajo el idioma incorrecto.


Mantén las traducciones cuando la fuente cambie

Cuando actualizas el valor del idioma base de un campo traducido, las traducciones en otros idiomas no se actualizan automáticamente. Construye un proceso de revisión en tu flujo de trabajo de contenido para que los traductores sean notificados cuando el contenido fuente cambie y las traducciones necesiten ser actualizadas.

Errores comunes


Incluso los consultores experimentados de Odoo cometen estos errores. Ser consciente de ellos de antemano te ahorrará mucho tiempo de depuración.


Olvidar pasar el contexto del idioma en las escrituras de la API

Este es el error más común al integrar sistemas externos con Odoo. Si escribes un nombre de producto a través de la API sin especificar un idioma, Odoo lo escribe en el idioma predeterminado del usuario. Si ese usuario está configurado en inglés, pero querías establecer la traducción al francés, has sobrescrito el valor en inglés. Siempre sé explícito sobre el contexto del idioma.


Asumir que los campos traducidos están filtrados en las búsquedas

Cuando buscas en un campo traducido (por ejemplo, buscar un producto por nombre), Odoo busca en el idioma activo por defecto. Un producto llamado "Soporte para Laptop" en inglés no aparecerá en los resultados de búsqueda si el usuario está en francés y la traducción al francés aún no se ha establecido. Asegúrate de que las traducciones estén en su lugar antes de esperar que las búsquedas funcionen en varios idiomas.


Mezclar campos traducidos y no traducidos en informes

Si un informe o exportación personalizada de Odoo utiliza una mezcla de campos de texto traducidos y no traducidos, la salida puede ser inconsistente: algunas etiquetas aparecen en el idioma del usuario, otras siempre aparecen en el idioma base. Revisa tus campos de informe cuidadosamente y decide de antemano si cada uno debe ser traducible.


No tener en cuenta la sobrecarga de traducción en campos computados

Si tienes un campo computado de Odoo que construye una cadena a partir de múltiples campos traducidos, la computación se ejecuta en el idioma activo en el momento de la solicitud. El resultado no se almacena automáticamente por idioma. Si necesitas una concatenación computada de valores traducidos en múltiples idiomas, debes manejar la computación específica del idioma de manera explícita.


Eliminar un idioma sin limpiar las traducciones

Cuando desactivas o eliminas un idioma en Odoo, los valores de traducción para ese idioma pueden permanecer en la base de datos dependiendo de tu versión. Esto suele ser inofensivo, pero puede añadir desorden. Siempre verifica tus datos de traducción después de desactivar un idioma en un entorno de producción.

Conclusión


Los campos traducidos son una de las características más prácticas en el marco de Odoo para empresas que trabajan en múltiples idiomas. Un solo parámetro, translate=True, desbloquea la capacidad de mantener contenido localizado para catálogos de productos, plantillas de correo electrónico, páginas web y campos personalizados sin duplicar registros ni gestionar sistemas separados.


La clave es ser deliberado sobre qué campos necesitan realmente traducción. Úsalo donde marque la diferencia para tus usuarios o clientes, gestiona las traducciones a través del flujo de trabajo de exportación/importación para escalar, y siempre sé explícito sobre el contexto del idioma al trabajar con la API de Odoo.


Ya sea que estés configurando una tienda de comercio electrónico multilingüe, implementando Odoo para equipos internacionales, o desarrollando Odoo en un módulo personalizado, entender los campos traducidos te ayudará a construir soluciones más limpias y amigables para el usuario.

¿Estás trabajando en una implementación multilingüe de Odoo y necesitas orientación sobre la configuración de campos o flujos de trabajo de traducción? Contacta al equipo de Dasolo y estaremos encantados de ayudarte a hacerlo bien.

Campos Traducidos en Odoo: Guía Completa
Dasolo 6 de marzo de 2026
Compartir esta publicación
Iniciar sesión para dejar un comentario