Al realizar nuestros portlet puede ser interesante que estos sean multiidioma. Si esto no nos convence, con la solución que proponemos aquí tenemos un fichero donde están localizadas todos los nombres de todos los elementos del HTML.
Para que esto sea más sencillo vamos a verlo con un ejemplo. En un post anterior creamos un portlet con un formulario como este:
Si ahora quisiésemos modificar el elemento First Name y ponerle otro nombre por ejemplo Nombre deberíamos modificar todas las páginas en las que apareciese dicho elemento.
Para evitar que estos cambios afecten a nuestro desarrollo, vamos a explicar como añadir archivos .properties.
Lo primero que haremos será crear una carpeta dentro de WEB_INF a la que llamaremos resources. Dentro de esa carpeta vamos a crear tantos archivos .properties como idiomas queramos poner en nuestro portlet (de momento vamos a empezar solo con 1)
Este archivo solo contiene pares (clave, valor) de la siguiente manera:
hello-world=Hello World title-error=Please Enter A Valid Title Name
Una vez que hallamos creado esta carpeta y este archivo, es necesario añadir dicha carpeta (resources) al Builth Path.
Para ello tan solo tenemos que hacer clic en la carpeta con el botón derecho y pulsar sobre builth path:
Ahora solo nos queda configurar el archivo portlet.xml en este archivo le indicamos al portlet que «tenemos un archivo multiidioma localizado en..» Esto lo hacemos de la siguiente manera:
<supported-locale>es</supported-locale> <resource-bundle>content.Language</resource-bundle>
Ya podemos utilizar estos pares clave-valor en nuestras páginas JSP.
Para ello en cada JSP debemos indicar donde se encuentra el archivo .properties de la siguiente manera al principio del archivo. Aquí dejo el archivo help.jsp del portlet que desarrollamos en un post anterior (este JSP muestra un texto de ayuda)
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> <fmt:setBundle basename="content.Language"/> <table width="200px"> <tr> <td> <fmt:message key="help.message"/> </td> </tr> </table>
<fmt:setBundle basename=»content.Language»/>
Con la declaración en azul indicamos donde se encuentra el archivo .properties Ahora cada mensaje que queramos mostrar (o cada nombre) se declara como el contenido coloreado en amarillo.
Ahora si necesitamos modificar el mensaje, tan solo lo tenemos que modificar en un fichero, y no en todos los JSP.
Referencias
- Portlet Localization – Outside Liferay: http://www.liferay.com/es/community/wiki/-/wiki/Main/Localization+of+Portlets+Outside+of+Liferay
– Multiidioma en el desarrollo de portlets Liferay: http://www.albertcoronado.com/2011/10/15/multiidioma-en-el-desarrollo-de-portlets-liferay/