Carpetas Locale dentro de los skins en Magento

Hace ya un tiempo hablamos sobre cómo crear nuestras propias traducciones para Magento, utilizando los archivos csv. Cuando hablamos de traducciones en la plataforma, no sólo tenemos como recurso esos archivos.

Si prestan atención, dentro de los themes, ya sea para el Backend como para el Frontend, vamos a encontrar una carpeta llamada, casualmente, locale. Dentro sólo veremos un único archivo.

Las ubicaciones son:

  • adminhtml: /app/design/adminhtml/default/default/locale/en_US/translate.csv
  • frontend: /app/design/frontend/default/default/locale/en_US/translate.csv

Antes de seguir, unas pequeñas aclaraciones.

  • En ambos casos, estoy considerando que se trabajaba con el paquete Default y el tema Default.
  • Sólo para el ejemplo, y utilizando lo que provee la plataforma por defecto, el locale usado es en_US.
  • El nombre del paquete, tema o locale; deberá ser aquel al que quieran aplicarle ésta regla de traducción.
  • El archivo que deben usar es el indicado, solamente.

Hasta ahora sabemos dónde están estos archivos adicionales, entendimos que los valores de skin e idioma son de ejemplo, ¿pero para que sirve?.

La objetivo de éste archivo es sobrescribir la traducción que tengamos definida en el Locale principal. Para hacer un poco más claro esto, vamos a referirnos con Locale principal al que se ubica en /app/locale y por Locale específicos a los ubicados dentro de cada skin.

Bien, entonces, sabemos que podemos pisar una traducción del Locale principal con una del Locale específico. Vamos a poner un poco de color con algunas capturas de pantalla.

Si accedemos a la home de una instalación limpia, esto es lo que vemos en el cuadro del Carrito.

Skin Default sin traducción específica en Magento

Lo que vamos a probar, y en esto radica ésta funcionalidad, es implementar una traducción específica para un template, sin tocar las traducciones del Locale principal.

Esto podría permitirnos, además de no perder nuestras traducciones por idioma, darle mayor personalización a cada template.

Para continuar con el ejemplo, voy a sobreescribir la key de traducción «You have no items in your shopping cart.» que se encuentra en el archivo /app/locale/en_US/Mage_Checkout.csv, en la línea 222.

Como supondrán, la traducción no la voy a hacer en ese archivo, sino en /app/design/frontend/default/default/locale/en_US/translate.csv.

Cuando abramos el archivo translate.csv sólo vamos a encontrar una key, que se utiliza para ejemplo. Alcanza con agregar debajo nuestra traducción. En mi caso, ésto es lo que agrego:

"You have no items in your shopping cart.","You have 0 items."

Siempre el primer valor contenido por las comillas, funciona como la clave a traducir, y el segundo, como el valor a mostrar.

Grabamos el archivo, limpiamos el caché de Magento (o borramos a mano la carpeta /var/cache) y recargamos la página.

Skin Default aplicando traducción a nivel template en Magento

Ya el cambio se hizo efectivo. Tenemos una traducción específica para nuestro template, sin por eso afectar a la traducción principal.