Get it on Google Play

Liferay Faces: Multiidioma en portlets con Liferay Faces

19-10-2015
 

Idiomas

Idiomas


Liferay ha implementado su UI(User Interface) como componentes de JSF(JavaServer Faces) y le ha llamado Liferay Faces(http://www.liferayfaces.org/).

JavaServer Faces(JSF) es un Framework que implementa la parte de Vista-Controlador del patrón MVC. Tecnología de vista de JavaEE(Java Enterprise Edition), permite desarrollar UI de alta calidad, rápidamente y con una estructura de código muy elegante. Ideal para el desarrollo de software de gestión sobre Web.

Liferay, en la implementación de sus componentes, ha implementado una forma peculiar de hacer sus portlet multiidioma:

Implementando multiidioma con Liferay Faces

Cuando usamos el ‘Wizard’ para la creación de un portlet con JSF liferay incorpora un hook en el mismo proyecto donde podemos definir los distintos idiomas(Por defecto viene solo inglés americano). Si queremos que nuestro proyecto esté, por ejemplo, en inglés, castellano y catalán modificaremos el fichero ‘liferay-hook.xml’:

<?xml version="1.0"?>
<!DOCTYPE hook PUBLIC "-//Liferay//DTD Hook 6.2.0//EN" "http://www.liferay.com/dtd/liferay-hook_6_2_0.dtd">

<hook>
	<language-properties>Language_en_US.properties</language-properties>
	<language-properties>Language_es_ES.properties</language-properties>
	<language-properties>Language_ca_ES.properties</language-properties>
</hook>

Después ya podemos crear los distintos fichero de literales ‘Language_.properties’ en la carpeta ‘src’:

hello_world=Hello World
second_string=This is my second String

Y ya podremos hacer uso en nuestros ficheros de vista de JSF:

...
<h1 class="header-title">#{i18n['hello_world']}</h1>
...

Implementando multiidioma a la manera tradicional

También podemos implementar el multiidioma usando el mecanismo tradicional de JSF. Es decir, configurando nuestro fichero ‘faces-config.xml’ con los idiomas que soporta nuestro portlet y configurando donde encontrará nuestro fichero de literales y el nombre de la variable que se va a injectar con los literales:

<application>
  <locale-config>
     <default-locale>en</default-locale>
     <supported-locale>es</supported-locale>
     <supported-locale>ca</supported-locale>
  </locale-config>
  <resource-bundle>
     <base-name>Language</base-name>
     <var>msg</var>
  </resource-bundle>
</application>

Implementamos nuestros ficheros de literales exactamente como lo hemos hecho arriba y ya podemos hacer uso de los literales en nuestra aplicación:

...
<h1 class="header-title">#{msg['hello_world']}</h1>
...

Conclusiones

Supongo que la gente de Liferay a implementado este nuevo sistema para que resulte mas rápido hacer nuestros portlets multiidioma. Pero la verdad es que yo perdí como dos o tres horas hasta que no lo descubrí(Intentando configurar el multiidioma de JSF de la manera tradicional usando la variable i18n).
En fin, espero que os sirva para que no perdáis las horas como yo.

Interesado en formación Liferay?

 

Comments

2 Responses to “Liferay Faces: Multiidioma en portlets con Liferay Faces”
  1. Hola Alberto. Gracias por el post!

    Temiendo que esto no fuera fácil de encontrar he visto que la página de la Developer Network sale como 2º o 3er resultado:

    https://dev.liferay.com/develop/tutorials/-/knowledge_base/6-2/localizing-jsf-portlets

    Simplemente para que lo sepáis.

    Gracias!

  2. Jajaja, un poco tarde para mi 😀

Leave a Reply

© Albert Coronado Calzada