Los Diccionarios de traducción y Paquetes de Idiomas en Magento2 nos permiten personalizar y localizar nuestra tienda en múltiples regiones y mercados.
Introducción
Magento2 permite de forma sencilla la creación y actualización de diccionarios de traducciones y evitando la duplicidad de contenido entre todos ellos.
En Magento podemos gestionar los Idiomas usando:
- Paquetes de Idiomas que nos permitirán la traducción de cualquier palabra o frase de la aplicación de Magento.
- Diccionarios de Traducción para temas y módulos personalizados.
Diccionarios de Traducción
La función de un diccionario de traducción es poder traducir cadenas o frases en nuestros módulos o temas.
Para crear un fichero de idiomas necesitamos en primer lugar coleccionar frases del módulo o tema por lo que usaremos el comando i18n:collect-phrases
1 |
php ./bin/magento i18n:collect-phrases -o ./app/code/<vendor>/<module>/i18n/en_US.csv ./app/code/<vendor>/<module>/ |
- -o ./app/code/<vendor>/<module>/i18n/en_US.csv
La opción -o (output) nos permite indicar el path donde será localizado nuestro fichero de traducción. En este mi modulo tiene las palabras y frases en inglés - app/code/<vendor>/<module>/ es el Path del módulo de donde extraeremos las frases para la traducción.
Una vez tenemos este fichero de traducciones ya podremos realizar la traducción al Español.
Bastaría con copiar el fichero y cambiarle el nombre por su equivalente local.
1 2 |
cd ./app/code/<vendor>/<module>/i18n/ cp us_US.csv es_ES.csv |
Para poder traducir las frases o cadenas generadas al español debemos traducir siempre la segunda columna.
Ten en cuenta que Magento usa marcadores de posición para insertar valores provenientes de nuestra aplicación por lo que nos encontraremos frases del tipo:
1 |
"Are you sure you wan't to delete a: %1 record?","Are you sure you wan't to delete a: %1 record?" |
Siempre que realicemos una modificación en cualquier fichero de traducción tendremos que empaquetarlo de nuevo para que Magento los combine de nuevo usando el comando i18n:pack.
1 |
php ./bin/magento i18n:pack app/code/<vendor>/<module>/i18n/es_ES.csv -d es_ES |
- la opción -d nos permite incluir duplicados porque si encuentra la misma frase en otra traducción provocará un error .
Paquetes de Idiomas
Si queremos traducir todas las palabras o frases de nuestra aplicación usaremos traducciones de paquetes de idiomas.
Los paquetes de idioma de Magento son localizados en la carpeta app/i18n/Magento/
Si queremos crear un paquete de idioma personalizado lo crearemos en app/i18n/<vendor>/
Todos los paquetes de idioma requieren un fichero:
- registration.php
- language.xml
- composer.json
Vamos a crear el fichero language.xml en app/i18n/<vendor>/es_ES/
1 2 3 4 5 6 |
<?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_ES</code> <vendor>artegrafico</vendor> <package>es_ES</package> </language> |
El fichero registration.php lo creamos en app/i18n/<vendor>/es_ES/
1 2 3 4 5 6 |
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::LANGUAGE, 'artegrafico_es_es', __DIR__ ); |
Y por último creamos un composer.json por si queremos distribuirlo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
{ "name": "artegrafico/magento2-spanish", "description": "Spanish language package", "homepage": "https://www.artegrafico.ent", "require": { "magento/framework": "100.0.*" }, "type": "magento2-language", "version": "1.0", "license": [ "MIT" ], "authors": [ { "name": "artegrafico", "email": "jose@artegrafico.ent", "homepage": "https://www.artegrafico.net", "role": "Leader" } ], "autoload": { "files": [ "registration.php" ] } } |
Vamos a crear el directorio donde queremos generar todas las palabras generadas
1 |
mkdir -p ./app/i18n/<vendor>/es_ES/ |
Con la opción -m indicamos que coleccione todas las frases de la aplicación de Magento.
1 |
php ./bin/magento i18n:collect-phrases -o ./app/i18n/<vendor>/es_ES/es_ES.csv -m |
Y una vez creado ya podremos empezar a realizar una traducción completa de Magento.
Descarga de Paquete de Idioma
Traducir todo Magento es una a labor tediosa y requiere el trabajo de toda una comunidad ya que son miles de palabras, por lo que lo suyo es descargar un paquete de idioma ya preparado.
Veamos como hacerlo de un paquete de idiomas ya descargado para ahorrarnos tiempo y dinero.
Haz click aquí para ir a la descarga del paquete de Magento2 en español.
Copiamos la carpeta vendor y sus ficheros ya descargados a app/i18n/. Reemplazamos el paquete de idiomas actual por el que acabamos de descargar.
1 |
php ./bin/magento i18n:pack -m replace ./app/i18n/<vendor>/es_ES/es_ES.csv es_ES |
Y si estamos en producción hacemos deploy y limpiamos la caché
1 2 |
php ./bin/magento setup:static-content:deploy es_ES php ./bin/magento cache:flush |