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

Cambiar idioma en Struts

Estas en el tema de Cambiar idioma en Struts en el foro de Java en Foros del Web. Hola alguién sabe cuál es la configurcion para que el usuario de mi aplicación seleccione el idioma Ingles o español ??? Hasta ahora lo que ...
  #1 (permalink)  
Antiguo 14/05/2009, 10:25
Avatar de Bellabys  
Fecha de Ingreso: abril-2009
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
Cambiar idioma en Struts

Hola alguién sabe cuál es la configurcion para que el usuario de mi
aplicación seleccione el idioma Ingles o español ???

Hasta ahora lo que he investigado es la conrifugración del aplicactions resorces para ambos de la siguiente manera:


aplicacion.properties

# -- generales --
generales.logo=LOGO + TITULO
generales.fecha=Aqui va la fecha
generales.seleccione= -- Seleccione --
# -- index --
index.titulo=Aplicacion en Struts
index.encabezado=Hola Mundo!
index.mensaje=Este es "hola mundo" de struts
# -- login --
login.mensaje=Ejemplo de un formulario en Struts
login.login=ID de usuario (login)
login.clave=Clave

aplicacion_en.properties


# -- generales --
generales.logo=LOGO + TITLE
generales.fecha=Date is here
generales.seleccione= -- Select --
# -- index --
index.titulo= Struts Application
index.encabezado=Hello World!
index.mensaje=This is Struts Hello World!
# -- login --
login.mensaje=Struts Form Example
login.login=User ID(login)
login.clave=Password

Me gustaria generar un link en el index de mi aplicación para Inglés y otro
para Español, alguien sabe cómo???
  #2 (permalink)  
Antiguo 15/05/2009, 03:14
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Cambiar idioma en Struts

Creo que ya esta por ahi resuelto el problema pero bueno te pongo como lo tengo...

tienes que crear un bean en el strut config:
Código PHP:
    <form-bean name="localeForm" type="org.apache.struts.action.DynaActionForm">
      <
form-property name="lang" type="java.lang.String"/>
    </
form-bean
definir alli el action
Código PHP:
    <action path="/locale" name="localeForm" type="com.ruta.action.LocaleAction" scope="request" validate="false">
      <
forward name="vale" path="action o pagina donde quieras redirigir"/>
    </
action
y mas abajo definir donde estaran tus mensajes
Código PHP:
<message-resources parameter="com.ruta.propiedades.mensajes"/> 
en esta ultima ruta tendras que tener los ficheros. properties con el nombre "mensajes" barra baja y lo del idioma que quieras, por ejemplo
mensajes_en.properties
para el valor por defecto con mensajes.properties es suficiente
, despues tienes que crear ese action en com.ruta.action.LocaleAction

Código PHP:
package com.ruta.action;

import java.lang.reflect.InvocationTargetException;
import java.util.Locale;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;


import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.Globals;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;


public class 
LocaleAction extends Action {

    @
Override
    
public ActionForward execute(ActionMapping mappingActionForm form,
            
HttpServletRequest requestHttpServletResponse response)
            
throws IllegalAccessExceptionInvocationTargetException,
            
NoSuchMethodException {

        
String language = (String) PropertyUtils.getSimpleProperty(form"lang");
        if (
language != null && language.length() > 0) {
            
Locale locale = new java.util.Locale(language"");
            
HttpSession session request.getSession();
            
session.setAttribute(Globals.LOCALE_KEYlocale);
        }

        return 
mapping.findForward("vale");
    }

y para donde quieras lo de los idiomas, pones un link
Código PHP:
<html:link action="/locale?lang=es"o lang=en para ingles o ya dependiendo de los idiomas 
Asi para acceder a las etiquetas en tus idiomas, donde mensaje sera una llave del archivo mensajes.properties:
mensaje= hola que tal
<bean:message key="mensaje"/>


creo que no me dejo nada, un saludo y suerte!
  #3 (permalink)  
Antiguo 15/05/2009, 10:23
Avatar de Bellabys  
Fecha de Ingreso: abril-2009
Mensajes: 70
Antigüedad: 15 años
Puntos: 1
De acuerdo Respuesta: Cambiar idioma en Struts

juankarnet mil gracias!!!!!

La solución que me diste es perfecta, esactamente lo que estaba buscando.
Gracias por que tu explicación es muy detallada y me fue fácil comprender.
Que bueno que existan personas como tu que compartan sus conocimientos.

Te agradezco mucho!
  #4 (permalink)  
Antiguo 06/01/2010, 04:25
Avatar de navarone86  
Fecha de Ingreso: octubre-2009
Mensajes: 62
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Cambiar idioma en Struts

hola

googleando llegue hasta aquí, y he intentado seguir esos pasos, pero no me funciona (tampoco es todo exactamente igual)

para empezar, los ficheros de idiomas los tengo dentro de la carpeta "conf", y se llaman "proyecto.properties" y "proyecto_en.properties". por tanto, y segun he entendido, en el struts.xml deberia poner lo siguiente:

Código HTML:
Ver original
  1. <message-resources parameter="conf.proyecto"/>

no me queda claro, si tengo que poner solo la carpeta, o si tambien como se llaman los ficheros

por otro lado, el action que tengo es el siguiente:

Código PHP:
Ver original
  1. public class ChangeLangAction extends ActionSupport {
  2.  
  3.     private static final long serialVersionUID = 1L;
  4.  
  5.     private String lang = null;
  6.    
  7.     public String execute(){
  8.         ActionContext.getContext().getSession().put(Globals.LOCALE_KEY, new Locale(lang));
  9.         return SUCCESS;
  10.     }
  11.  
  12.     public String getLang() {
  13.         return lang;
  14.     }
  15.  
  16.     public void setLang(String lang) {
  17.         this.lang = lang;
  18.     }
  19. }


y la declaración del action es la siguiente:

Código HTML:
Ver original
  1. <action name="changeLang" class="ruta.paquete.ChangeLangAction">
  2.             <result name="success" type="redirectAction">showInit</result>
  3.         </action>

de todas formas, también me gustaría saber, como puedo hacer para que el action me deje en el mismo jsp, sea cual sea el jsp desde el que se llame al action, ya que mi intención es poner en todas las cabeceras estos enlaces para cambiar de idioma

y la llamada al action es esta:

Código HTML:
Ver original
  1. <table class="lang">
  2.         <td>
  3.             <s:url id="urlEs" action="changeLang" escapeAmp="false">
  4.                 <s:param name="lang" value="es"/>
  5.             </s:url>
  6.             <a class="langURL" href="<s:property value="#urlEs"/>">es</a>
  7.         </td>
  8.         <td>
  9.             <s:url id="urlEn" action="changeLang" escapeAmp="false">
  10.                 <s:param name="lang" value="en"/>
  11.             </s:url>
  12.             <a class="langURL" href="<s:property value="#urlEn"/>">en</a>
  13.         </td>
  14.     </table>

en vez botones, uno enlaces, pero supongo que debería funcionar igual

el error que me suelta es el siguiente:

Código:
El recurso requerido () no está disponible.
se que es por el struts.xml, donde le indico donde deberían encontrarse los ficheros de idiomas, pero la verdad que no se como seguir

a ver si podéis echarme una mano

muchas gracias
  #5 (permalink)  
Antiguo 07/01/2010, 11:28
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Cambiar idioma en Struts

Con lo de la dirección existe en el action algo llamado forward

<forward name="Success" path=".tuPath"/>

que te debería valer
  #6 (permalink)  
Antiguo 08/06/2010, 11:34
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Cambiar idioma en Struts

Hola a todos.

Yo he seguido muchos ejemplos de internacionalización pero el que mas me ha gustado es el que a sugerido juankarnet ya que, por lo menos la primera vez me funcionó. Pero mi problema no queda ahí.


Resulta que tras distribuir la aplicación y arrancar tomcat, voy a mi index, sigo el enlace de la traducción al ingles y no me hace caso. Por el log se que se está estableciendo en la session el locale en LocaleForm. El caso es que tras seguir el link, unas páginas se muestran en el idioma por defecto y otras en el que se ha establecido.


Estoy empezando a pensar que ya no tiene que ver solo con el código, sino que pueda ser problema de Firefox, de tomcat o de qué se yo...

¿Alguna idea?

PD: Mi código implicado esta copiado y pegado del ejemplo de juankarnet, a excepción de "action o pagina donde quieras redirigir" donde he puesto un global-forward.

Se agradece cualquier ayuda

Última edición por kortinaceo; 08/06/2010 a las 11:39
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 05:06.