Ver Mensaje Individual
  #2 (permalink)  
Antiguo 15/05/2009, 03:14
juankarnet
 
Fecha de Ingreso: agosto-2008
Mensajes: 57
Antigüedad: 16 años, 3 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!