Herencias en locales en Magento2

Traducciones

Claramente, el tema de las traducciones no es menor, y esto no se debe solamente a que mi idioma primario sea el español.

Más de uno se sorprendería con la cantidad de tiendas en otros idiomas (diferentes al español, claro) que terminan abriendo websites o store views en algunas de las variantes de nuestra lengua materna.

A diferencia de Magento 1, Magento 2 introduce un detalle extra a las traducciones, el cual resulta más que interesante y práctico al mismo tiempo: las herencias.

Supongamos que tenemos instalado nuestro paquete de idioma es_AR, que es el diccionario que queremos usar para cada una de nuestras tiendas, pero tenemos una tienda que sólo aplicará algunas diferencias en algunas palabras o frases (y no en toda la tienda, el resto seguirá siendo lo que tenemos definido como traducción base).

A partir de ahora, podemos crear un segundo paquete de idioma es_AR (si, más de un módulo de tipo lenguaje par el mismo locale) en el cual indicaremos la jerarquía en la cual deberán leerse.

Como decía, supongamos que tenemos el móduldo de paquete de idioma.

Barbanet/es_ar

Y naveguemos hacia el login del customer.

Login del Comprador

La frase «Corro electrónico» está traducida en el locale.

Ahora voy a crear un segundo locale, al cual, claramente, por orden (o neurosis), llamaré igual pero con otro vendor name.

JohnDoe/es_ar

Dentro del paquete, voy a tener los mismo archivos que tengo en el primer módulo.

A mi archivo es_ar.csv le agregaré una sola línea:

"Email","Correo electrónico segunda traducción",module,Magento_Customer

Y en language.xml habrá una diferencia:

<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>es_AR</code>
    <vendor>johndoe</vendor>
    <package>es_ar</package>
    <sort_order>20</sort_order>
    <use vendor="barbanet" package="es_ars"/>
</language>

Lo que ha cambiado es que he agregado el nodo <use>. Allí indicamos el orden de lo que se cargará antes que este paquete de idioma.

Ahora, nos vamos a la consola:

bin/magento cache:flush

Y si refrescamos la misma pantalla de login, tendría que verse que el texto de «Correo electrónico» cambió con el nuevo paquete de idioma pero el «¿Olvidaste tu contraseña?» se mantuvo intacto desde el paquete padre.

Login del Comprador con traducciones

Por suerte ya no tendremos que estar viendo qué proyecto tiene la traducción más sana. Podremos dedicarnos a mantener una traducción lo más correcta posible y luego hacer las pequeñas adaptaciones en base a lo que necesitemos con un módulo de paquete de idioma hijo.