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:

  1. Traducir textos estáticos (etiquetas de campos, nombres de menús, mensajes de alerta, etc.).
  2. Cambiar textos dinámicos (que se generen según la lógica de negocio o datos del usuario).
  3. 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

  1. 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.

  2. 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.

  3. 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.

  1. Estructura de un archivo .po:

    1msgid "Hello World"
    2msgstr "Hola Mundo"
    • msgid es el texto original (generalmente en inglés o el idioma base).
    • msgstr es la traducción al idioma correspondiente (por ejemplo, español).
  2. Creación o actualización de archivos de traducción:

    • Desde la línea de comandos, puedes usar odoo --i18n-export para 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.
  3. Carga de traducciones:

    • Al instalar o actualizar tu módulo, Odoo tomará los archivos .po de la carpeta i18n/ y los aplicará.
    • Si quieres aplicar cambios en caliente, puedes hacerlo desde el módulo de traducciones en la interfaz de Odoo.

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 .po para reflejar esos cambios.

Conclusión de la Parte 6

  1. La internacionalización permite que tu módulo se adapte a distintos idiomas y formatos de región.
  2. Los archivos .po contienen las traducciones y se ubican en la carpeta i18n/.
  3. El uso de _() en Python y t-translate, t-esc en QWeb hace que tus textos sean detectados y traducidos correctamente.
  4. 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...