Get it on Google Play

Multiidioma en el desarrollo de portlets Liferay

15-10-2011
 

Uno de los requerimientos de todo portal corporativo es el multi-idioma, en el post “Tipos de contenidos y multidioma en Liferay” ya hablamos sobre como crear contenido multi-idioma. Ahora vamos a ver como hacer portlets multi-idioma en liferay.

Antes de empezar, todos los trozos de código que utilizo los he sacado del portlet “Todo Lists” disponible para su descarga en la web de Liferay http://www.liferay.com/es/downloads/liferay-portal/community-plugins/-/software_catalog/products/7763918

Lo primero es crearnos nuestros ficheros con los literales que vamos a usar en nuestro proyecto. Estos ficheros deben creare en la carpeta ‘/docroot/WEB-INF/src/content/’, primero hay que crear el fichero ‘Language.properties’ con los literales por defecto y luego un fichero por cada idioma, por ejemplo, ‘Language_fr.properties’ para francés o ‘Language_en.properties’ para inglés.

Una vez tenemos creados nuestros ficheros con los literales que vamos a usar en nuestro proyecto debemos modificar nuestro fichero ‘portlet.xml’ para añadir lo siguente:

<supported-locale>es</supported-locale>
<supported-locale>ca</supported-locale>
<supported-locale>en</supported-locale>
<supported-locale>eu</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>ja</supported-locale>
<resource-bundle>content.Language</resource-bundle>

Ahora ya podemos usar estas cadenas en nuestro proyecto. Para usarlo en los JSPs podemos hacerlo a partir del tag “message” de la libreria de tags “liferay-ui”. Por ejemplo, “<liferay -ui:message key='label' />” donde ‘label’ es el código del literal. En los JSPs también podemos usar multi-idioma a través de la classe ‘LanguageUtil’.

Atención, si queremos usar multi-idioma en nuestras classes no podemos usar la classe ‘LanguageUtil’. Para hacerlo tendremos que usar la classe java.util.ResourceBundle de Java:

ResourceBundle rb rb = ResourceBundle.getBundle( "content.Language", request.getLocale() );

A partir de que tenemos instanciada la classe podemos hacer uso de los literales, por ejemplo: rb.getString("home.header.publicar").

Interesado en formación Liferay?

 

Comments

One Response to “Multiidioma en el desarrollo de portlets Liferay”
  1. […] – Multiidioma en el desarrollo de portlets Liferay: http://www.albertcoronado.com/2011/10/15/multiidioma-en-el-desarrollo-de-portlets-liferay/ […]

Leave a Reply

© Albert Coronado Calzada