Liferay 6 1, Internacionalización en nuestros desarrollos

19
Liferay 6.1 para desarrolladores I18n en nuestros desarrollos

description

 

Transcript of Liferay 6 1, Internacionalización en nuestros desarrollos

Page 1: Liferay 6 1, Internacionalización en nuestros desarrollos

Liferay 6.1 para desarrolladoresI18n en nuestros desarrollos

Page 2: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Índice de contenidos

‣ Introducción.

‣ Añadir entradas dentro de los ficheros de properties.

‣ Etiquetas jsp para i18n.

‣ La clase LanguageUtil.

‣ I18n en Velocity.

‣ I18n en los temas de Liferay.

Page 3: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Introducción

‣ Como ya sabemos la internacionalización en Liferay es muy importante y es manejada en muy diferentes ámbitos por defecto. Por ejemplo, la gestión de contenidos web:

Page 4: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Introducción

‣ También se utiliza en la gestión de categorías y muchos otros entornos:

Page 5: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Introducción

‣ Los procesos de internacionalización en Liferay Portal se manejan de forma simple e intuitiva. Trabaja con ficheros de propiedades para todos sus componentes.

‣ La infraestructura Liferay nos permite modificar los mensajes I18n que ya maneja el sistema o añadir nuevas entradas.

‣ El desarrollador está obligado a conocer cómo manejar la internacionalización programáticamente en sus desarrollos.

‣ Pasamos a comentarlo a continuación.

Page 6: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Introducción

‣ Los ficheros de propiedades definidos en la plataforma, podemos encontrarlos en el fichero portal-impl.jar. Si se descomprime o se accede al código fuente, el usuario encontrará la siguiente estructura de directorios: portal-impl/content.

Page 7: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Existen diferentes estrategias para añadir nuevas entradas en los ficheros de propiedades de nuestra instalación de Liferay.

‣ Plugin Ext.

‣ Hooks.

‣ Portlets de usuario.

Page 8: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Plugin Ext:

‣ Dentro de la carpeta ext-impl/src debe crearse una carpeta content donde se almacenan los ficheros de propiedades siguiendo la siguiente notación.

Page 9: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Hooks:

‣ Los ficheros de propiedades deben darse de alta en el fichero liferay-hook.xml:

<?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.properties</language-properties>! <language-properties>

content/Language_en.properties</language-properties>! <language-properties>

content/Language_es.properties</language-properties></hook>

Page 10: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Hooks:

‣ La entrada xml language-properties permite definir las rutas donde se encuentran los ficheros i18n.

‣ Si se define la ruta content/Language.properties, el fichero debe encontrarse en la carpeta docroot/WEB-INF/src/content. Se muestra la estructura de un proyecto ejemplo:

Page 11: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Portlets de usuario:

‣ Si el desarrollador desea crear portlets internacionalizados tendrá que incluir una entrada resource-bundle dentro de la entrada xml portlet del portlet en cuestión.

<?xml version="1.0"?><portlet>...<resource-bundle>content/Language</resource-bundle>

</portlet>

Page 12: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Añadir entradas dentro de los ficheros de properties

‣ Portlets de usuario:

‣ Esto implica la siguiente ruta:

‣ Nota: Eclipse en la versión Helios genera la configuración para I18n de forma incorrecta.

Page 13: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

Etiquetas jsp para i18n

‣ La etiqueta liferay-ui:message muestra un mensaje internacionalizado asociado a una determinada clave.

‣ El atributo key identifica la clave i18n. Por ejemplo:

<%@ taglib uri="http://liferay.com/tld/ui" prefix="liferay-ui" %>

<liferay-ui:message key="my-friends"/ >

Page 14: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

La clase LanguageUtil

‣ Si necesitamos aplicar I18n en Java tendremos que apoyarnos en la clase LanguageUtil que se encuentra en el paquete com.liferay.portal.kernel.language:

Page 15: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

La clase LanguageUtil

‣ El método getLanguageId nos permite recuperar el lenguaje utilizado:

‣ Por ejemplo:

public static String getLanguageId(HttpServletRequest request)

public static String getLanguageId(PortletRequest portletRequest)

public static String getLanguageId(Locale locale)

String languageId = LanguageUtil.getLanguageId(request);

Page 16: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

La clase LanguageUtil

‣ El método get() nos permite la recuperación de un mensaje i18n:

‣ Lo habitual será utilizarlo en una página JSP, siempre se encuentra disponible el contexto de la página, por ejemplo:

public static String get(javax.servlet.jsp.PageContext pageContext,String key)

<label class="aui-field-label"><liferay-ui:message key="absence-type"></liferay-ui:message>

</label><span><%=LanguageUtil.get(pageContext,event.getType()) %>

</span>

Page 17: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

La clase LanguageUtil

‣ El método format() nos permite recuperar un mensaje parametrizado:

‣ El fichero de propiedades:

public static String format( javax.servlet.jsp.PageContext pageContext, String pattern, Object[] arguments)

x-needs-to-approve-you-as-her-friend={0} necesita su aprobación para convertirse en su amigo.

Page 18: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

I18n en Velocity

‣ Velocity define variables que podemos utilizar en las plantillas. Incluir en la plantilla init.vm.

#set ($language_id = $user.getLanguageId())

#language("KEY-NAME")

$languageUtil.get($company_id, $locale, "add-application"))

Page 19: Liferay 6 1, Internacionalización en nuestros desarrollos

I18n en nuestros desarrollos

Preparado por Jesús Salinas Revelles

I18n en los temas de Liferay

‣ Estamos desarrollando las plantillas de nuestros temas mediante la tecnología Velocity, ¿cómo podemos incluir i18n en nuestros temas?

‣ Para resolver este problema nos apoyamos en la variable predefinida de Velocity, languageUtil:

...<section><div class="footer-title">! <h5>$languageUtil.format($locale, "about-us-title")</h5></div><p class="footer-text">$languageUtil.format($locale, "about-us-description")

</p></section>...