liferay 6 1, internacionalización en nuestros desarrollos
DESCRIPTION
TRANSCRIPT
![Page 1: Liferay 6 1, Internacionalización en nuestros desarrollos](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/1.jpg)
Liferay 6.1 para desarrolladoresI18n en nuestros desarrollos
![Page 2: Liferay 6 1, Internacionalización en nuestros desarrollos](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.net/reader034/viewer/2022050808/546d9f77b4af9f7a2c8b54b2/html5/thumbnails/19.jpg)
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>...