Ir al contenido

Odoo 19: traducción con IA y revisión cruzada – módulo ai_translation_consensus, en el que varias IA se revisan entre sí

3 de noviembre de 2026 | Odoo 19 Community | Desarrollo propio
3 de noviembre de 2026 por
Odoo 19: traducción con IA y revisión cruzada – módulo ai_translation_consensus, en el que varias IA se revisan entre sí

Módulo ai_translation_consensus para Odoo 19: varias IA traducen, se evalúan de forma anónima y una persona da el visto bueno

Traducir un sitio web a diez, veinte o cuarenta idiomas es rápido con una sola IA. Lo difícil es saber si se puede confiar en el resultado. Un modelo de lenguaje a veces inventa palabras, traduce nombres de productos o modifica una cifra sin darse cuenta. Por eso hemos desarrollado un módulo para Odoo 19 en el que varias IA y servicios de traducción trabajan sobre el mismo texto y evalúan mutuamente sus resultados de forma anónima para acordar una formulación que sea a la vez fiel y natural. Cuando no hay un resultado claro, una persona toma la decisión.

El módulo se llama ai_translation_consensus y está disponible en GitHub como software libre bajo la licencia AGPL-3:

github.com/Alex0176/odoo-ai-translation-consensus

Die Idee: Gegenprüfung statt Vertrauen

El módulo puede hacer dos cosas:

  • Traducir: completar las traducciones que faltan o actualizar las obsoletas de cualquier campo traducible de Odoo: artículos de blog, páginas web, menús, productos y cualquier otro contenido que Odoo almacene en varios idiomas. Las IA no ven solo la frase aislada, sino también los bloques adyacentes y un fragmento de la página completa. Así pueden interpretar cada palabra en su contexto.
  • Revisar: comprobar el texto en su propio idioma y proponer mejoras de redacción o correcciones. El original siempre es una de las opciones candidatas. Si gana el original, no se cambia nada.

La clave es la revisión mutua. Cada IA es buena evaluando textos ajenos, aunque a veces se equivoque al escribir los suyos. El módulo aprovecha esta capacidad: varios proveedores redactan una versión cada uno y después esos mismos proveedores evalúan todas las versiones sin saber de quién son. Ningún proveedor evalúa su propia versión.

Cómo se genera una propuesta

Proceso: traducir, comprobar, evaluar, alcanzar un consenso y obtener la aprobación humana

  1. Traducir. Cada traductor redacta una versión en paralelo.
  2. Comprobaciones fijas. Sin recurrir a la IA, se comprueba que las etiquetas HTML, las entidades, los marcadores de posición como %s o {}, los números y los enlaces se mantengan intactos. Una versión que incumpla este requisito nunca puede ganar, por muy fluida que suene.
  3. Evaluar. Las demás versiones se mezclan y se anonimizan. Cada revisor puntúa la fidelidad y la naturalidad de cada una (del 1 al 10), elige una favorita y puede proponer una mejora.
  4. Alcanzar un consenso. La puntuación de una versión es 0,5 × nota media + 5 × proporción de votos como favorita. Se considera que hay consenso si la mejor versión obtiene al menos el 60 % de los votos como favorita y una nota media mínima de 7,0.
  5. Segunda ronda. Si no hay consenso, las mejores versiones vuelven a evaluarse junto con las sugerencias de mejora de los revisores.
  6. Intervención humana. Si el resultado sigue sin ser claro, la propuesta queda a la espera de una decisión.

Si solo hay servicios de traducción sin función de revisión (por ejemplo, DeepL), un resultado solo se considera consensuado cuando al menos dos servicios han producido exactamente el mismo texto. En la revisión, los resultados deben mantener una similitud reconocible con el original (similitud mínima de 0,6 y los mismos números). En ocasiones, los modelos pequeños gratuitos responden a un lote con textos desordenados o ajenos a él. Esas respuestas se descartan en lugar de someterse a votación. Un glosario fija los nombres de marca y los términos establecidos.

Proveedores: con y sin clave

Los servicios gratuitos y de pago pueden participar en la misma votación. El módulo incluye configuraciones predeterminadas para muchos proveedores; todos están desactivados tras la instalación.

TipoTraduceRevisa / corrigeEjemplos
Interfaz compatible con OpenAIsísíOpenAI, Mistral, DeepSeek, xAI, Groq, Together, OpenRouter, Cerebras, Qwen, Moonshot, GitHub Models, Hugging Face, Ollama, LM Studio, vLLM, llama.cpp
Compatible con OpenAI sin clavesísíOllama en un servidor propio, Pollinations
AnthropicsísíClaude
Google Gemini, Coheresísí
Comando localsísíclaude -p o cualquier programa que lea de stdin y devuelva la respuesta
Servicios de traducciónsínoDeepL, Google Translate, Azure Translator, LibreTranslate, MyMemory, Lingva

Se introduce la clave (o el nombre de una variable de entorno que la contenga), se pulsa Probar conexión y se activa el proveedor. Los nombres de modelo de la configuración predeterminada son un punto de partida; quien los utilice debe cotejarlos con la lista actual del proveedor. Con dos o más proveedores hay una auténtica revisión cruzada; con uno solo, nadie revisa su trabajo. El asistente lo advierte.

Un sitio web entero de una vez

Un asistente de inicio (menú Traducción con IA → Empezar aquí) explica los pasos y crea la primera regla. Si está instalado el módulo website, también se instala automáticamente el módulo de integración ai_translation_consensus_website. Este añade la opción de alcance «Un sitio web entero con todo su contenido»: se selecciona el sitio web y se solicitan sugerencias de contenido. El módulo examina todos los modelos con campos traducibles que pertenecen al sitio web (páginas, menús, blogs, productos, eventos, foros, cursos y más) y propone una regla por tipo de contenido, con los idiomas del sitio web como destino.

Asistente de inicio con el alcance de sitio web completo y los tipos de contenido propuestos

  • Lo que no esté instalado (foros, cursos, galerías) no aparece y se incorpora más adelante, en cuanto se instala.
  • Los modelos de la tienda solo se proponen si el sitio web tiene una tienda. Solo se incluyen registros publicados.
  • El módulo excluye deliberadamente los contactos, las empresas, los proveedores de pago, las listas de precios, los métodos de entrega, los programas de fidelización y los filtros de fragmentos.
  • Los nombres que forman parte de las URL de las páginas (seo_name) no se traducen.
  • Los tipos de contenido que no se deseen se pueden eliminar antes de crear las reglas.

La creación y la búsqueda no tienen coste: la regla solo enumera los textos que necesitan trabajo. Los proveedores solo se invocan al procesarlos, y es entonces cuando se generan costes.

Panel de control, costes e inicio automático

El panel muestra, para cada regla, cuántos textos están terminados, pendientes de confirmación o de intervención humana, en cola o con errores. También incluye un desglose por idioma y proveedor, los costes acumulados y previstos, el tiempo restante estimado y el interruptor para activar el procesamiento programado.

Panel con el progreso, los costes, los tokens y los idiomas. Datos de ejemplo.

Las cifras de esta imagen son datos de ejemplo y no reflejan costes reales.

  • Los costes se calculan a partir de los datos que comunican los proveedores: tokens (OpenAI, Anthropic, Gemini, Cohere) o caracteres (DeepL, Google, Azure). Los tokens se muestran siempre; los importes monetarios, solo si ha introducido en la configuración del proveedor el precio por millón de tokens o caracteres. La configuración predeterminada no incluye precios, ya que pueden cambiar. En los servicios que no comunican el número de tokens, este se estima a partir de la longitud del texto y se indica como estimación.
  • Previsión: el coste y el tiempo de procesamiento medios por texto se multiplican por el número de textos en cola. Es una estimación que se va afinando con los primeros lotes.
  • Inicio automático: las reglas con la opción Iniciar automáticamente cuando cambie un registro buscan, en cada ejecución de la acción programada, únicamente los registros modificados desde la última búsqueda. Así, con la acción programada activada, una página web modificada se vuelve a traducir sin intervención manual.
  • Consumo de las suscripciones: En el caso de los proveedores que funcionan mediante un programa de línea de comandos con sesión iniciada (Antigravity, Codex), el módulo consulta cada diez minutos qué proporción de la cuota del período se ha consumido y cuándo se restablece. El panel muestra una barra por cada proveedor activo con la hora de restablecimiento, junto con las solicitudes de las últimas 24 horas y el motivo de cualquier pausa en curso. Un botón permite actualizar los valores al instante. Así se puede ver que una cuota semanal puede agotarse en pocas horas, antes de que empiecen a rechazarse las solicitudes. Los proveedores que no informan del consumo (por ejemplo, MyMemory) lo indican expresamente en lugar de inventarse una cifra.
  • Aviso de finalización: cuando se termina el último texto pendiente de una regla, aparece una sola vez el mensaje «Todos los idiomas traducidos» (o «Todos los textos revisados» en el caso de la revisión) en el canal AI Translation.

Aprobación humana

De forma predeterminada, el módulo no escribe nada en sus registros sin su aprobación. Cada propuesta muestra las versiones, sus autores, las puntuaciones y los comentarios de los revisores. Puede aceptar la propuesta, elegir otra versión, escribir su propia redacción o rechazarla.

Propuesta con tres versiones candidatas, puntuaciones, votos de preferencia y decisión humana. Texto de ejemplo inventado.

El texto y los nombres de los proveedores de esta imagen son ficticios y sirven para ilustrar la vista.

Si confía en una regla, puede activar Aplicar automáticamente si hay consenso. Las propuestas sin consenso seguirán pendientes de intervención humana. Al aplicar una propuesta, el módulo vuelve a comprobar si el texto original ha cambiado, repite las comprobaciones del marcado y guarda el resultado sin registrar el cambio en el seguimiento ni notificar a los seguidores.

Seguridad y protección de datos

  • Tras la instalación, todo está desactivado. Los proveedores y la acción programada están desactivados. No se envía nada sin que usted intervenga.
  • Los textos salen de su servidor en cuanto interviene un servicio alojado externamente. Puede marcar una regla como Confidencial; en ese caso, solo tendrán acceso al texto los proveedores identificados como ejecutados en infraestructura propia.
  • Las claves se guardan en un campo que solo pueden ver los administradores o en una variable de entorno a la que se hace referencia únicamente por su nombre. Se ocultan en los mensajes de error y se envían en las cabeceras. Excepción: la clave opcional de MyMemory solo puede enviarse como parámetro de consulta.
  • Comando local ejecuta un programa y, por ello, está bloqueado hasta que el parámetro del sistema ai_translation_consensus.allow_command se establece en True. El comando se invoca sin shell y se ejecuta en un directorio temporal vacío.
  • Inyección de instrucciones: las solicitudes identifican el texto como datos. No se siguen las instrucciones contenidas en el texto que se traduce, y se descarta cualquier resultado que altere las etiquetas o los marcadores de posición.
  • Los servicios gratuitos tienen límites. Pollinations permite una respuesta anónima cada 45 segundos. La opción del proveedor min_interval respeta ese intervalo, y se atienden las respuestas que indican que se vuelva a intentar más tarde.

Instalación

git clone https://github.com/Alex0176/odoo-ai-translation-consensus.git
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus /pfad/addons/
ln -s /pfad/odoo-ai-translation-consensus/ai_translation_consensus_website /pfad/addons/
odoo-bin -c odoo.conf -d <datenbank> -i ai_translation_consensus --stop-after-init

Se necesitan Odoo 19 y el paquete de Python requests. Se incluye una traducción al alemán. El módulo de integración ai_translation_consensus_website se instala automáticamente si está presente website. Tras la instalación, es necesario reiniciar el servicio de Odoo porque el módulo contiene código Python. Si trabaja con un sistema en producción, instale primero el módulo en una copia de la base de datos.

Primeros pasos: abra el menú Traducción con IA → Proveedores, pruebe y active los servicios y, a continuación, vaya a Empezar aquí y cree la primera regla. Buscar textos genera las propuestas, y Procesar un lote realiza las llamadas a los proveedores. Empiece con una regla de alcance reducido, por ejemplo, una sola entrada de blog y dos idiomas, y revise el resultado y los costes antes de poner en cola un sitio web completo.

Limitaciones

  • Die Qualität hängt von den Modellen ab, die Sie einschalten. Die Gegenprüfung verringert Fehler einzelner Modelle, macht aber keine Garantie. Für rechtlich oder sicherheitskritische Texte ersetzt das Modul keinen Muttersprachler.
  • Los costes aumentan rápidamente. Cada texto requiere una llamada por traductor, una llamada de evaluación por revisor y, si no hay consenso en la votación, una segunda ronda. El contexto de la página aumenta la entrada de cada llamada. Una regla con 45 idiomas de destino multiplica el número de textos. Limite las ejecuciones con Registros por búsqueda, Nuevas propuestas por búsqueda y Propuestas por ejecución de cron, y añada modelos económicos o locales como revisores.
  • Solo campos con translate=True. El texto con formato se procesa por bloques mediante el mecanismo de términos de Odoo.
  • Los precios y los nombres de los modelos cambian. La configuración predeterminada no es una lista de precios actualizada.
  • Desarrollado para Odoo 19.0 Community. No se ofrece soporte para otras versiones.

Preguntas frecuentes

¿Se traduce o sobrescribe algo sin mi aprobación?

No, mientras no active Aplicar automáticamente si hay consenso. Incluso con esta opción activada, solo se guardan las propuestas con consenso. Los proveedores y la acción programada están desactivados tras la instalación.

¿Necesito claves para los proveedores de pago?

Solo para los proveedores que las exijan. Con Pollinations, MyMemory o un modelo ejecutado localmente, como Ollama, puede trabajar sin ellas. Los servicios gratuitos suelen tener limitaciones y ser lentos; para un sitio web completo, normalmente solo sirven como complemento.

¿Cuánto cuesta una traducción?

Depende del proveedor, el modelo, la longitud del texto y el número de idiomas, por lo que el módulo no establece cifras fijas. El panel muestra el consumo y los costes en cuanto introduce los precios, y estima el coste restante de los textos en cola.

¿Puedo mantener la confidencialidad de los textos?

Sí, con la opción Confidencial de la regla. En ese caso, solo intervienen los proveedores identificados como ejecutados en su propia infraestructura, por ejemplo, una instancia local de Ollama.

¿Sustituye al sistema de traducción de Odoo?

No. El módulo utiliza las funciones multilingües de Odoo y guarda los resultados en las mismas traducciones que normalmente mantiene a mano.

¿Qué licencia tiene?

Se distribuye bajo la licencia AGPL-3. Puede comunicar errores y proponer mejoras abriendo una incidencia en el repositorio de GitHub ; sus aportaciones son bienvenidas.

Asistencia de Biricon IT Services

Nos encargamos de instalaciones de Odoo para pequeñas y medianas empresas: desde la implantación hasta el funcionamiento diario, pasando por adaptaciones y migraciones. Si quiere ofrecer su sitio web de Odoo en varios idiomas, mejorar la fiabilidad de las traducciones con IA o incorporar un módulo a su instancia de producción de forma segura, estaremos encantados de ayudarle. Otros desarrollos propios: Archivar una empresa junto con sus usuarios del portal, Numeración de documentos con prefijo, año y contador y Registro Mercantil y verificación de direcciones para clientes de Austria.

Contactar ahora

Información actualizada a 8 de noviembre de 2026. Versión del módulo: 19.0.1.2.0. Las imágenes muestran datos de ejemplo ficticios.