PrestaShop: Módulos

Haciendo que el módulo sea multi-idioma

¡Prueba gratis durante 10 días

nuestros 1267 cursos !

Prueba gratis Mostrar modalidades de suscripción
Uno de los contextos que más se usa es el del lenguaje. En este vídeo aprenderemos a aplicar traducciones a los textos que aparecen en el módulo y veremos cómo se crean automáticamente los archivos de traducción.

Transcripción

Un módulo bien construido debería de estar siempre pensado para que trabaje con varios idiomas, o sea que sea multidioma. PrestaShop tiene un sistema muy inteligente para trabajar con el multidioma. Y es que su planteamiento es: podemos tener infinidad de idiomas, con lo cual yo los módulos no puedo crearlos con todos los idiomas posibles, pero lo que sí puedo hacer es ofrecer una interfaz muy simple para que, por un lado, pueda pasar módulos con algunos idiomas ya creados y para, por otro lado, los idiomas que no estén, pues que se puedan añadir a través de esa interfaz muy fácilmente cuando se instala el módulo. Vamos a ver cómo hacer que este módulo sea multidioma. Para ello necesitamos, lo primero de todo, que nuestra tienda sea multidioma, así que voy a tener que añadir un nuevo idioma. Dentro de Localización, en Localización, puedo añadir nuevos idiomas. Voy a buscar en concreto United Kingdom para añadir el inglés, voy a permitir que descargue toda su información y voy a pulsar en Importar. Podemos descargar cualquier idioma, en realidad no tiene importancia. Ese idioma ya ha sido descargado, y de hecho si me voy a Localización, Idiomas, pues vemos que tenemos ambos idiomas. Por este lado, ya está listo. Ahora me voy a volver otra vez al módulo. Tenemos un montón de textos distintos, que todos ellos deberían de ser traducibles. No solamente textos dentro de las plantillas Smarty, que por supuesto también deberían de ir traducidos, como por ejemplo este comentario o esta foto, sino también dentro de la programación del propio módulo, pues por ejemplo los distintos mensajes de error que estoy enviando. E incluso también el nombre y la descripción de este módulo. Pues para poder trabajar con una descripción, para que el sistema devuelva en vez de un texto normal la traducción concreta de ese texto, lo que se utiliza es '$this->'. Tan fácil como eso. Ese método "ele" lo que hace es pasar un parámetro con el texto, digamos, base y me va a devolver la traducción de ese texto en caso de que exista. Y en caso de que no exista, pues me devuelve directamente ese texto. Es interesante pararse a mirar antes de continuar con ello que dentro de Foto cliente ahora mismo no tenemos ningún archivo de configuración de los idiomas, tenemos solamente el de configuración en castellano en que vienen los textos en castellano, pero no tenemos ningún otro. Bueno, pues vamos a ver como según vayamos añadiendo contenidos, van a ir apareciendo nuevos archivos dentro de la carpeta Foto cliente. Voy a copiar de nuevo este '$this->' y lo voy a aplicar en diferentes partes del módulo, básicamente donde necesito que haya traducciones, o sea, en el 'display name', en la descripción, luego más adelante en los distintos errores que voy a mostrar. En este caso, yo estoy haciendo que pase un texto a Smarty, pero este texto lo puedo pasar traducido de nuevo. Y entonces añado este '$this->', exactamente lo mismo que haría un poco más abajo, y por la parte de lo que es el módulo estaría ya correctamente montado. Pero estas traducciones también las puedo aplicar no solo dentro del módulo, sino que también, como decía, las puedo aplicar dentro de las plantillas. En este caso, es un poquito más complejo, aunque no mucho más. Por ejemplo en el caso de esta foto, ¿cómo lo haremos? Bueno, en principio necesitamos Smarty, así que voy a rodear con las llaves directamente esa palabra 'foto', la voy a poner entre comillas y en vez de utilizar ese 'this s', lo que voy a usar es más bien la 'L', para indicar que es una traducción, luego 's' igual al identificador de ese texto, que en realidad va a ser el texto en castellano. Hasta aquí es todo más o menos igual que en el módulo, pero con una sintaxis diferente, pero aquí vamos a necesitar un parámetro más y es el módulo al que pertenece. Eso es debido a que en la plantilla podría utilizar traducciones de diferentes módulos, y por otro lado a que las distintas traducciones van a ir asociadas a los distintos módulos, lo vamos a ver en breve. Entonces, por ello, aquí tendré que añadir el nombre del módulo, pero el nombre de máquina del módulo. Así que añadiré dentro de ese 'mod' este 'fotocliente'. Esto mismo lo puedo copiar y lo puedo repetir para la parte del comentario. Lo cortaría y lo pegaría. Y exactamente esto mismo pues lo puedo añadir en los distintos sitios donde vaya a añadir traducciones, por ejemplo en este 'Fotos de clientes'. Obviamente, en el 'getContents' debería de hacer exactamente lo mismo, pero por no extenderme, voy a volver ahora a la tienda. Y vamos a ver que ha sucedido algo muy interesante, y es que cuando me mueva ahora hasta la configuración de mi módulo –cuando aparece un error de este estilo es que he cometido algún pequeño fallo dentro de la programación. Vamos a observar dónde está ese error de código. Vale, es básicamente que me falta un paréntesis aquí, un paréntesis aquí y por cierto que también me faltaría añadir una traducción dentro de este error– bien, pues lo guardo, recargo la página en la que aparecen los módulos, voy a buscar mi propio módulo, voy a pulsar en Configurar y dentro de Configurar, en la parte de arriba tenemos un botón Traducir. Ahora en este botón Traducir, me permite elegir el idioma en el que quiero que se realice la traducción, voy a poner que en inglés, y veremos que aparecen los distintos elementos que he ido añadiendo. Aparecen estos errores de "no se ha podido grabar la foto", de "formato de imagen no válido" y de "error moviendo la imagen". Podría añadir aquí cualquiera de esos errores, pulso en Guardar y permanecer, y eso me devuelve a la parte traducciones, donde en realidad aparecen las traducciones de todos los módulos. Aquí podemos verlas. Es otra forma de acceder directamente a todas esas traducciones. Y dentro de ellas, tiene que aparecer mi 'Fotocliente', aunque también podemos tener acceso a él directamente desde la configuración de esas traducciones. Otra cuestión importante también es que, bueno, pues aquí estamos viendo los distintos textos que aparecen como errores, los textos que he definido dentro del módulo. Pero, sin embargo, no están apareciendo los textos que he configurado dentro de los TPL, eso es debido a que hace falta hacer un refresco de caché para que aparezcan en ese momento, pues ya tendré acceso a ellos y podré traducirlos exactamente igual que el resto. Y otra cosa que también es interesante es que una vez que yo he hecho estas traducciones, ha aparecido dentro de la carpeta Fotocliente una carpeta Transations y, dentro de esa carpeta Translations, aparecen los distintos idiomas en los que se han hecho las traducciones y los textos con esa traducción. Y esto es interesante, porque así gracias a ello, cuando yo pueda pasar mi módulo a otros usuarios, pueden ir ya con algunas de las traducciones ya correctamente preparadas.

PrestaShop: Módulos

Introdúcete en la programación de módulos de Prestashop, empezando por conceptos básicos imprescindibles para crear bloques funcionales dentro de este CMS de comercio electrónico.

2:49 horas (33 Videos)
Actualmente no hay comentarios.
 
Software:
Fecha de publicación:12/10/2016

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.