Traducciones .po: entender el orden de carga en Odoo - coopdevs/handbook GitHub Wiki


:warning: ATENCIÓ
Aquest handbook està descontinuat. La nova adreça és: https://handbook.coopdevs.org/ca/home

El código que muestra la jerarquía de carga de los .po está en odoo/addons/base/models/ir_translation.py

image

En comentarios podemos ver las diferentes jerarquías:

  • Step 1: for sub-languages, load base language first (e.g. es_CL.po is loaded over es.po)
  • i18n_extra folder is for additional translations handle manually (eg: for l10n_be)
  • Step 2: then load the main translation file, possibly overriding the terms coming from the base language

En resumen:

  • los strings/cadenas no traducidos (msgstr "") dentro del .po se ignoran y se buscan traducciones en el siguiente nivel de .po
  • si por ejemplo tenemos "ca_ES" como idioma activo en nuestro odoo, el orden de mayor a menor prioridad de búsqueda de cadenas es:

i18n/ca_ES.po -> i18n_extra/ca.po -> i18n/ca.po

Ejemplo: si ca_ES.po contiene una cadena vacía, se coge la cadena de ca.po :

Selección_209

Selección_208

pero si ca_ES.po contiene la misma cadena también traducida, entonces esta tendrá prioridad frente a la de ca.po :

Selección_211 Selección_210

Hay que apuntar que a la hora de recargar traducciones, se deberá marcar el checkbox de sobrescribir las cadenas/condiciones existentes:

Selección_213

Esta forma de cargar las traducciones de Odoo es útil para no tener que rellenar el 100% de las cadenas dentro de un .po que contenga solo variaciones para alguna traducción genérica, ejemplo, aquí vemos algunas modificaciones para la variante mexicana(es_MX.po) de odoo sobre la genérica española "es.po" :

Selección_215