掲示板

LanguageUtil desde clase Java

13年前 に Oriol Canalias によって更新されました。

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
13年前 に Oriol Canalias によって更新されました。

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
11年前 に Gabriel Palacios によって更新されました。

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