Foros del Web » Programación para mayores de 30 ;) » Java »

multilenguaje en java struts2

Estas en el tema de multilenguaje en java struts2 en el foro de Java en Foros del Web. Hola a todos, Soy novato en jsp-struts2, y buscando por google no he encontrado respuesta a mi duda por tanto lo expongo a ver si ...
  #1 (permalink)  
Antiguo 13/01/2012, 05:55
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
multilenguaje en java struts2

Hola a todos,

Soy novato en jsp-struts2, y buscando por google no he encontrado respuesta a mi duda por tanto lo expongo a ver si alguien se a encontrado en la misma situación y me puede echar un cable!

El tema es, quiero montar una pagina multi lenguaje, con formulario login y varios enlaces para el cambio de idioma por ejemplo español e ingles que una vez logueado se establecera como idioma de session.

index.jsp

<s:text name="lbl_MensajeBienvenida"></s:text>

<li>
<s:url id="en" action="locale">
<s:param name="request_locale">en</s:param>
</s:url>
<s:a href="%{en}">English</s:a>
</li>
<li>
<a href="<s:url action="locale">
<s:param name="request_locale">ca</s:param>
</s:url>">Catalan</a>
</li>
<li>
<s:url id="es" action="locale">
<s:param name="request_locale">es</s:param>
</s:url>
<s:a href="%{es}">Español</s:a>
</li>

<s:form action="index">
<s:textfield key="lbl_Usuario" name="usuario"></s:textfield>
<s:password key="lbl_Clave" name="password"></s:password>
<s:submit key="lbl_Enviar"/>
</s:form>


Donde las etiquetas lbl_.* hacen referencia a los ficheros .properties



struts.xml

<struts>
<!-- enable constant intenrnacionale -->
<constant name="struts.custom.i18n.resources" value="global-messages, image-messages" />
<!-- Configuration for the default package. -->
<package name="default" namespace="/" extends="struts-default">
<action name="index" class="paginas.index">
<result name="success" type="redirect" >
<param name="location">/home/?u=${usuario}</param>
</result>
<result name="error">/index.jsp</result>
</action>

<action name="locale" class="idiomas.locale">
<result name="success">/index.jsp</result>
</action>
</package>
</struts>

El tema es cuando cargo la pagina por primera vez.

Me aparecen las etiquetas lbl_.* de index.jsp de esta manera:

lbl_MensajeBienvenida

* English
* Catalan
* Español


lbl_Usuario: input
lbl_Clave: input


Una vez cargada la pagina si hago click en los enlaces English,Catalan o Español
las etiquetas lbl_.* cogen su valor correcto del fichero properties.

Welcome to Cash

* English
* Catalan
* Español


User: input
Key: input

Por mas que le doy vueltas, no consigo establecer un idioma por defecto.. y que cargue las properties(keys) por defecto en el jsp ...

Saludos y gracias por vuestro tiempo.
  #2 (permalink)  
Antiguo 13/01/2012, 10:30
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 9 meses
Puntos: 78
Respuesta: multilenguaje en java struts2

Hola,
prueba a establecer de inicio el idioma en: ActionContext.getContext().setLocale("es/en/....");

Un saludo.
  #3 (permalink)  
Antiguo 13/01/2012, 11:24
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: multilenguaje en java struts2

Buenas!

Ante todo gracias por responder.

Si entendí bien,, probé en la página index.jsp
el scriplet ;

<%@page import="com.opensymphony.xwork2.ActionContext;"%>

<%ActionContext.getContext().setLocale(Locale.ENGL ISH);%>

+ mi código..

y nada las etiquetas html o de struts siguen sin coger los valores de las .properties

----

No lo entiendo, la única manera de que estableza el idioma en mi caso es haciendo pasar la página por el action locale.
Seguro q se debe poder configurar de alguna manera me estoy partiendo la y luego como siempre será una tonteria!

Hice una chapuza temporal para que la página de inicio sea un redirect hacia el action locale de index y funciona
pero me gustaría encontrar la manera adecuada...

Saludos
  #4 (permalink)  
Antiguo 16/01/2012, 04:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 9 meses
Puntos: 78
Respuesta: multilenguaje en java struts2

Hola febri,
la constante Locale.ENGLISH no se que String contendrá, pero yo me he encontrado que el Locale de algunos navegadores son distintos, por ejemplo, en navegadores que no son Internet Explorer he recogido "es_ES", en cambio en Internet Explorer "es".

Te aconsejo que recogas lo primero de todo el idioma del navegador, veas que idioma recoges y luego lo fuerces tú al iniciar la aplicación para que sea ese el que se use antes de que eligan el idioma. Esto puedes hacerlo con un HTTP REDIRECT a un action nada más empezar la aplicación y ahí forzarlo, o directamente crearte un interceptor para todos los actions.

Un saludo.
  #5 (permalink)  
Antiguo 16/01/2012, 11:35
 
Fecha de Ingreso: enero-2012
Mensajes: 4
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: multilenguaje en java struts2

Hola ElAthlit,

De acuerdo lo tendre en cuenta en caso de usar la constante predefinida en java, aunque
lo uso de esta manera(desconozco si es la mejor):

Locale oLocale = getLocale();
ActionContext.getContext().setLocale(oLocale);

Ya he solucionado el problema lo comentaré por si alguien se encuentra igual.

web.xml del Configuration Files:

<context-param>
<param-name>locale-language</param-name>
<param-value>es</param-value>
</context-param>
context-param>
<param-name>locale-country</param-name>
<param-value>ES</param-value>
</context-param>

struts.xml del Configuration Files:

<constant name="struts.custom.i18n.resources" value="package" />

(Donde value package es el nombre del fichero package.properties que usaremos por defecto, en mi caso fichero global que podrá ser utilizado en cualquier JSP)

Los ficheros package.properties,package_ca.properties n
hay que situarlos en el paquete predeterminado y de esta manera podran ser usados de manera global.

Ahora me toca mantener el idioma ya que pasando de una pagina a otra obtengo el idioma predeterminado pero ya voy avanzando más.

Gracias y ya se puede cerrar el tema.

Saludos
  #6 (permalink)  
Antiguo 17/01/2012, 10:37
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 9 meses
Puntos: 78
Respuesta: multilenguaje en java struts2

Hola debri,
para mantener tu idioma entre paginas solo debes settear el Locale vía GET, por ejemplo:

Código Java:
Ver original
  1. <s:url id="idio_es" action="home">
  2. <s:param name="request_locale">es</s:param>
  3. </s:url>

Código Java:
Ver original
  1. <s:a href="%{idio_es}">ESPAÑOL</s:a>

De esta manera, habrás setteado de forma indefinida para esa sesión el Locale por "es", y tu package.properties se irá a package_es.properties.

Un saludo!
  #7 (permalink)  
Antiguo 29/07/2015, 05:48
 
Fecha de Ingreso: julio-2015
Mensajes: 1
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: multilenguaje en java struts2

Hola buenas.

Yo tengo un reto que por más que le doy vueltas no consigo resolver... a ver si algún iluminado sabe responder. Todos los ejemplos que veo son pasando por un action. Esto me parece muy bien si al cambiar el idioma siempre recargas la pantalla de login, o una predefinida.
Pero... y si quieres cambiar el idioma dinámicamente (como en el ultimo ejemplo de este foro) pero desde cualquier pantalla de la aplicación? Te tendrías que crear un forward para cada pantalla de la aplicación en la accion de CambiarIdioma (home en el ejemplo)? Seguro que hay una manera más sencilla, como usar un interceptor o algo parecido. Pero para mí, lo ideal sería poder cambiar el idioma sin necesidad de una acción, ya que se formaría un embudo a la hora de saber qué página o acción cargar a la vuelta.
Alguna idea?

Etiquetas: formulario, jsp, multilenguaje, struts2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:57.