El hook que vamos a desarrollar a continuación nos va a servir para llevar a cabo la internacionalización de todo el contenido que mostremos en nuestro portal.
Será un hook en el que definiremos pares de valores de la forma clave=valor las cuales definirán la traducción de una palabra. Se definirán los mismo pares en diferentes ficheros que corresponderán a los diferentes idiomas en los que queremos traducirlo. Vamos a ver de forma mas profunda en un ejemplo muy sencillo a continuación:
Para empezar debemos tener instalado tanto el IDE de Liferay para Eclipse como un Servidor Liferay 6.
Una vez tengamos todo instalado y configurado debemos de crearnos un nuevo Hook vacío que llamaremos "MisIdiomas".
En este caso, nuestro hook no va a sobreescribir ninguna jsp sino que va a definir un archivo de contenido y una serie de properties que haran referencia a los idiomas en los que nosotros queremos traducir los contenidos que nosotros querramos.
Lo primero que debemos de hacer es crear una nueva carpeta que debemos llamar "content" en la ruta "/idiomasVariables-hook/docroot/WEB-INF/src/content" como podemos ver en la imagen:
Ahora vamos a crear 2 archivos dentro de "content" que corresponderán a los idiomas a traducir. Estos archivos deben llamarse Language_en_EN.properties y Language_es_ES.properties . Debemos de usar estos nombre en concreto y no variarlos ya que liferay los usa por defecto cuando cambiamos el idioma desde el portlet de idiomas. En caso de querer otros idiomas se definiría de la misma forma Language_xx_XX.properties(pt_PT para portugués, fr_FR para francés, etc).
Para nuestro hook de ejemplo vamos a definir 2 pares de valores que dereran ir dentro de los 2 archivos properties que hemos creado correspondiendo su valor a cada idioma.
Esto es, en Language_es_ES.properties vamos a escribir:
mensaje1=Hola a todos mensaje2=Adios a todos
Y en Language_en_EN.properties vamos a escribir:
mensaje1=Hello everybody mensaje2=Goodbye everybody
Como vemos mantenemos la clave en ambas properties pero variamos el valor.
De esta manera tenemos definidos 2 mensajes que podremos usar donde queramos y que según el idioma que elijamos se podrá en un idioma u otro.
Lo último que nos queda para que todo funcione bien es definir la ruta de estas properties en la configuración del hook. Para ellos debemos ir a /idiomasVariables-hook/docroot/WEB-INF/liferay-hook.xml y dejarlo de la siguiente manera:
<?xml version="1.0"?> <!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.0.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_0_0.dtd"> <hook> <language-properties>content/Language_es_ES.properties</language-properties> <language-properties>content/Language_en_EN.properties</language-properties> </hook>
Con esto ya tendríamos listo el hook para usarse, solo nos queda desplegarlo en el servidor y listo.
Si queremos probar como funciona el hook podemos definir por ejemplo en el portal_normal.vm del tema de apariencia 2 líneas como las que siguen:
language("mensaje1") language("mensaje2")Y desplegar el tema también. Una vez desplegado el tema y el hook, debemos poner el portal en español o inglés mediante el portlet de idiomas y veremos como aparecen lo dos mensajes en el idioma seleccionado. En caso de seleccionar un idioma no definido en el hook los mensaje mostrarán el nombre de su clave siemplemente.
Podemos descargarnos el código completo del hook desde el siguiente enlace.
Espero que os sea de utilidad.