Sistema de traducciones de una tienda online Magento
Magento es una plataforma con base en lengua inglesa, por lo que para realizar cualquier proyecto de tienda online Magento siempre hay que tener en cuenta que habrá que traducir mucho texto, del “core” de Magento, de los módulos que instalemos y en su caso, del tema que utilicemos.
Dentro de las plantillas y código podemos ver llamadas para traducir texto.
Las traducciones se separan en los diferentes módulos que componen una tienda online Magento, así una misma cadena de texto puede tener diferente traducción dependiendo del módulo en que la utilicemos. El Ejemplo de código anterior pertenece a una plantilla del módulo “Mage_Catalog” por lo que esta traducción saldrá de ahí.
Magento saca las traducciones de varios lugares con orden de prioridad, en este orden, de la base de datos, de los ficheros de traducción en el tema y de los ficheros de traducción de los módulos.
Traducción de los módulos de tu tienda online Magento
Magento utiliza fichero CSV para guardar las traducciones. Las traducciones de los módulos se encuentran en app/locale/*/*.csv y cada uno de estos ficheros es cargado cuando se analizan los ficheros de configuración de cada módulo etc/config.xml.
Imaginamos que Magento encuentra este fichero config.xml
en /app/code/core/Mage/Catalog/etc/config.xml
… <frontend> <translate> <modules> <Mage_Catalog> <files> <default>Mage_Catalog.csv</default> </files> </Mage_Catalog> </modules> </translate> </frontend> …
Sabemos entonces que Magento cargará el fichero de traducción Mage_Catalog.csv e imaginemos que dentro de este fichero existe esta traducción.
"AAA","BBB"
Bajo estas circunstancias Magento creará el siguiente vector de traducción dentro de tu tienda online.
array( "AAA" => "BBB", "Mage_Catalog::AAA" => "BBB" )
El segundo valor es la traducción de ámbito del módulo. El nombre del módulo que añade antes de la traducción se coge del nodo del fichero de configuración XML que contiene el nombre del fichero de traducción.
Si la misma traducción se encuentra en otro fichero de traducción, por ejemplo en Otro_Modulo.csv se traduce «AAA»,»CCC», esta última traducción no sobrescribe la traducción anterior, en lugar de ello sólo añade un nuevo valor al vector de traducción con el nombre del segundo módulo «Otro_Modulo::AAA» => «CCC».
Traducción en el tema de tu tienda online Magento.
Después de cargar los ficheros de traducción de los temas, Magento carga el fichero translate.csv dentro del tema que estamos utilizando, este fichero se encuentra por ejemplo para el tema modern en:
app/design/frontend/default/modern/locale/es_Es/translate.csv
Los valores contenidos en este fichero, simplemente remplazan a los valores anteriormente cargados, y si no existían los crea. Si seguimos el ejemplo anterior, un registro en el fichero translate.csv así «AAA»,»DDD»
nos llevaría a este vector de traducción:
array( "AAA" => "DDD", // Este valor se ha reescrito por translate.csv "Mage_Catalog::AAA" => "BBB", "Otro_Modulo::AAA" => "CCC" )
Podríamos también incluir en nuestro fichero, la traducción específica de un módulo en concreto, por ejemplo «Otro_Modulo::AAA»,»CCC» y sólo se sobrescribiría la traducción de ese módulo.
Traducción en línea (Base de datos) de tu tienda online Magento
Magento guarda en la base de datos este tipo de traducción, en la tabla “core_translate” y es la que más prioridad tiene.
Habilitándolo a través del panel de administración, en Sistema > Configuración > Desarrollador > Traducción en línea podemos realizar las traducciones desde las mismas páginas del frontal de la tienda.
Al habilitarlo los textos traducidos de nuestra página de la tienda online Magento, saldrán con un borde rojo y al pinchar en el texto se nos abrirá un diálogo emergente dónde podremos cambiar la traducción.
Las cadenas de texto originales se guardan en la base de datos con el formato “Nombre_Modulo::Cadena de texto” como en la imagen de abajo.
Así Magento cargará estas traducciones de la base de datos igual que si del fichero translate.csv se tratara.
Escenario de ejemplo en una tienda online Magento
Por ejemplo, supongamos que desde una plantilla se ejecuta $this->__(‘AAA’). Si esta plantilla tiene como bloque asociado el tipo Mage_Core_Block_Template enconces, Magento buscará en el vector de traducción el registro Mage_Core::AAA. Si no lo encuentra, entonces buscará el valor por defecto AAA.
En este escenario en concreto la traducción se resolverá como DDD
Sacada del fichero translate.csv.
Otro ejemplo dónde el bloque asociado a nuestra plantilla fuera Mage_Catalog_Block_Product_View Magento buscaría la traducción para Mage_Catalog::AAA y encontraría en nuestro vector de traducciones el valor AAA.
¿Qué hacer si una traducción no funciona en tu tienda online Magento?
Si las traducciones del fichero translate.csv no están funcionando, sigue las acciones de esta lista:
- Borra/desactiva la caché.
- Comprobar que el fichero translate.csv está realmente en la carpeta del tema que se está utilizando y locale correspondiente.
- Puede que haya un conflicto con las traducciones de la base de datos, comprobar la tabla core_translate si tiene esta traducción.
Por último prueba añadir a tu traducción el ámbito del módulo si no lo tenías puesto, cambiar AAA por Nombre_Modulo::AAA.
En Magento connect, puede encontrar una traducción oficial en español para Magento, aunque por desgracia está bastante des-actualizada y deberás seguir los consejos de este post.
Como expertos de Magento en Valencia, en Gsoft sabemos la importancia de tener perfecta tu tienda online Magento, así como ofrecer la mejor solución para nuestros clientes y, por ello, se debe traducir correctamente el core, los módulos y también el tema de tu tienda online en Magento. En Gsoft como expertos en Magento de la Comunidad Valenciana, ofrecemos nuestros servicios para la traducción de tu tienda online Magento a valenciano, catalán y al resto de dialectos del territorio español. Además, si quieres empezar un proyecto de venta online, no dudes en ponerte en contacto con nosotros.