留言板

LanguageUtil desde clase Java

Oriol Canalias,修改在13 年前。

LanguageUtil desde clase Java

Regular Member 帖子: 139 加入日期: 09-10-19 最近的帖子
Buenos días,

Estoy desarrollando un portlet en java. He añadido la siguiente línea en el portlet.xml:
<resource-bundle>content.Language</resource-bundle>

Me he creado un fichero Language.properties dentro del código en la carpeta content. Para mostrar un mensaje en una jsp, lo puedo hacer de dos formas distintas. La primera:
<liferay-ui:message key="clave-en-language" />

La segunda:
&lt;%=LanguageUtil.get(pageContext, "clave-en-language") %&gt;

En los dos casos funciona. Ahora viene mi problema. Cuando intento acceder a una clave y traducirla desde una clase java (desde un action por ejemplo) hago lo siguiente:
LanguageUtil.get(actionRequest.getLocale(), "clave-en-language")

En este último caso no funciona. ¿Alguien sabe porqué? ¿Puedo acceder al pageContext desde el ActionRequest?

Saludos,

Oriol
Oriol Canalias,修改在13 年前。

RE: LanguageUtil desde clase Java

Regular Member 帖子: 139 加入日期: 09-10-19 最近的帖子
He aplicado una solución aunque no me termina de gustarme.
La solución seria la siguiente.

Primero declaramos un objecto tipo ResourceBundle en nuestra clase:
private static ResourceBundle rb =  ResourceBundle.getBundle("content.Language");

A continuación, cuando haya una petición (action, render) se hace lo siguiente:
rb = ResourceBundle.getBundle("content.Language", request.getLocale());

Por último recuperamos las claves:
/*Sin parametros*/
rb.getString("clave-sin-parametros");
/*Con parámetros*/
MessageFormat.format(rb.getString("clave-con-parametros"),
				param1,...,paramN);

Lo que no entiendo es porque en una jsp me funciona correctamente LanguageUtil.get(...) cogiendo claves de mi fichero pero en una clase solo me recupera los del fichero de properties de liferay...

Saludos,

Oriol
Gabriel Palacios,修改在11 年前。

RE: LanguageUtil desde clase Java

Junior Member 帖子: 31 加入日期: 11-11-18 最近的帖子
Aunque el post ya tenga un tiempo, espero que a alguien le sirva.
En el enlace que adjunto, hay una solución para recuperar mensajes del fichero de internacionalización:

http://www.liferay.com/community/forums/-/message_boards/message/13481626