Curso odoo (Módulos)
6.1. Traducciones en Odoo: ¿para qué sirven?
En un entorno empresarial global, es común que se requiera mostrar la información en más de un idioma. Con la funcionalidad de i18n (internacionalización) de Odoo, puedes:
- Traducir textos estáticos (etiquetas de campos, nombres de menús, mensajes de alerta, etc.).
- Cambiar textos dinámicos (que se generen según la lógica de negocio o datos del usuario).
- Adaptar formatos de fecha, hora y moneda en función del idioma o región.
Esto hace que tu módulo sea mucho más flexible y fácil de adoptar por usuarios de distintos idiomas.
6.2. Cómo habilitar varios idiomas en Odoo
-
Instala los paquetes de idioma:
Desde la interfaz, ve a Configuración → Traducciones → Cargar un nuevo idioma (puede variar dependiendo de la versión de Odoo). Allí eliges el idioma que desees activar. -
Configura el idioma en el usuario:
Cada usuario puede tener asignado un idioma distinto, de modo que la interfaz y textos se mostrarán según sus preferencias. -
Comprueba las traducciones:
Una vez cargado el idioma, Odoo traerá muchas traducciones predeterminadas. Aun así, deberás asegurarte de que los textos específicos de tu módulo también estén traducidos.
6.3. Archivos .po para traducciones
En Odoo, las traducciones se almacenan en archivos con extensión .po, que siguen el formato de los catálogos de gettext. Estos archivos suelen ubicarse en una carpeta i18n/ dentro de tu módulo.
-
Estructura de un archivo
.po:1msgid "Hello World" 2msgstr "Hola Mundo"msgides el texto original (generalmente en inglés o el idioma base).msgstres la traducción al idioma correspondiente (por ejemplo, español).
-
Creación o actualización de archivos de traducción:
- Desde la línea de comandos, puedes usar
odoo --i18n-exportpara extraer textos y generar un archivo.pot(plantilla de traducción). - Luego, lo renombras según el idioma y codificación que corresponda, por ejemplo
es.po,fr.po, etc. - También puedes hacer esto desde la interfaz web en Configuración → Traducciones → Exportar / Importar traducciones.
- Desde la línea de comandos, puedes usar
-
Carga de traducciones:
- Al instalar o actualizar tu módulo, Odoo tomará los archivos
.pode la carpetai18n/y los aplicará. - Si quieres aplicar cambios en caliente, puedes hacerlo desde el módulo de traducciones en la interfaz de Odoo.
- Al instalar o actualizar tu módulo, Odoo tomará los archivos
6.4. Uso de _() en Python (traducciones en el código)
Cuando tengas textos en tu código Python que quieras traducir, puedes usar la función _() provista por Odoo. Por ejemplo:
1from odoo import models, fields, api, _ 2 3class LibraryBook(models.Model): 4 _name = 'library.book' 5 6 name = fields.Char(string=_("Title")) 7 8 @api.model 9 def my_method(self): 10 message = _("This is an important message.") 11 # Lógica adicional... 12 return message
_("Title"): Permite que “Title” sea identificado como un texto traducible.- Durante la generación de archivos de traducción, Odoo detectará estas cadenas y te permitirá proporcionar su equivalente en otros idiomas.
6.5. Uso de t-esc en vistas QWeb
En los reportes QWeb o en plantillas de correo electrónico, puedes usar t-esc y t-translate para marcar cadenas como traducibles. Por ejemplo:
1<t t-name="my_module.report_example"> 2 <t t-translate="yes"> 3 <div> 4 <p>This is a translatable paragraph.</p> 5 </div> 6 </t> 7</t>
O si quieres mostrar el valor de una variable traducida:
1<span t-esc="'Welcome to ' + _('Library')"/>
t-translate="yes"indica que todo el texto contenido en ese bloque está disponible para traducir._('Library')en una plantilla QWeb funciona de forma similar a como funciona en Python: marca “Library” como un texto traducible.
6.6. Buenas prácticas de traducción
- Mantén un idioma base consistente (normalmente inglés). Es la referencia para otros idiomas.
- Utiliza nombres significativos: Asegúrate de usar textos claros y contextuales para que los traductores entiendan el significado.
- Evita concatenar textos: A veces, mezclar strings dificulta la traducción por temas de orden de palabras en otros idiomas.
- Actualiza las traducciones tras hacer cambios: Cada vez que modifiques o añadas cadenas en tu módulo, genera o actualiza los archivos
.popara reflejar esos cambios.
Conclusión de la Parte 6
- La internacionalización permite que tu módulo se adapte a distintos idiomas y formatos de región.
- Los archivos
.pocontienen las traducciones y se ubican en la carpetai18n/. - El uso de
_()en Python yt-translate,t-escen QWeb hace que tus textos sean detectados y traducidos correctamente. - Con unas buenas prácticas, evitarás problemas a la hora de mantener o añadir nuevos idiomas a tu módulo.
Tras esta sección, tu aplicación podrá ser utilizada por personas que hablen diferentes idiomas, mejorando su accesibilidad y alcance. En la siguiente parte del curso, hablaremos de cómo personalizar la lógica de negocio, cubriendo automatizaciones, decoradores de Odoo y wizards. ¡Adelante!
- Loading...