El código que muestra la jerarquía de carga de los .po está en odoo/addons/base/models/ir_translation.py
En comentarios podemos ver las diferentes jerarquías:
En resumen:
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 :
pero si ca_ES.po contiene la misma cadena también traducida, entonces esta tendrá prioridad frente a la de ca.po :
Hay que apuntar que a la hora de recargar traducciones, se deberá marcar el checkbox de sobrescribir las cadenas/condiciones existentes:
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” :