Cambiar de idioma según demanda con Struts
Artículo por Club Developers · 21 julio 2006
3159 vistas
Para cambiar de idioma según demanda, tendremos que crear una action que actualice la locale en el objeto request.
La locale forma parte de los atributos de una consulta http y, por lo tanto, se conserva durante la navegación.
Además, la JVM carga todos los bundles al arrancar. Por lo tanto, todos los idiomas definidos están accesibles.
Imaginemos tres enlaces:
Estos enlaces apuntan a una Action "SwitchAction" definida en el mapping por el alias "switch".
Atención: ciertos servidores no trasmiten el referer. En este caso tendremos que recuperarlo de forma explÃcita (en un ActionForm por ejemplo).
La locale forma parte de los atributos de una consulta http y, por lo tanto, se conserva durante la navegación.
Además, la JVM carga todos los bundles al arrancar. Por lo tanto, todos los idiomas definidos están accesibles.
Imaginemos tres enlaces:
xml
<html:link page='/switch.do?lang=fr&cty=FR'>FR</html:link> <html:link page='/switch.do?lang=en&cty=EN'>EN</html:link> <html:link page='/switch.do?lang=es&cty=ES'>ES</html:link>
Estos enlaces apuntan a una Action "SwitchAction" definida en el mapping por el alias "switch".
java
{  public ActionForward execute(ActionMapping mapping,                         ActionForm form,                         HttpServletRequest request,                         HttpServletResponse response)    throws IOException, ServletException  {    // recuperación de los parámetros pasados y de la url del referer    HttpSession session = request.getSession();    ActionForward forward = null;     // definición de la locale    // redirección hacia una página definida por defecto    if( referer==null )    {     forward = (mapping.findForward("success"));    }    // redirección hacia la url del referer    else    {     forward = new RedirectingActionForward();     forward.setPath( referer );    }    return forward;  } }
Atención: ciertos servidores no trasmiten el referer. En este caso tendremos que recuperarlo de forma explÃcita (en un ActionForm por ejemplo).