日期:2014-05-18  浏览次数:20852 次

一个Struts的国际化问题!
我的一个国际化问题:
一个登陆界面,如下:




下面有一个“English”和“chinese”的链接,只要点击任何一个都能国际化,而不是要通过更改Internet的语言设置,再刷新来更改?

主页面中的:<li><html:link action="/Locale?language=en">English</html:link></li>
  <li><html:link action="/Locale?language=zh"useLocalEncoding="true">chinese</html:link></li>
要怎么写这个Action来完成啊?

请说的详细点啊!!!我是新手,很垃圾的~~~`帮帮忙啊~~~~~
我在这里谢过了!!!!

------解决方案--------------------
首先,你可以把索要设置的的语言写入cookie里比如:0代表China 1代表English
我这里有代码,你可以查考下:
Java code

import org.apache.struts.Globals;
import java.util.Locale;
import javax.servlet.http.Cookie;
  public   ActionForward   execute(ActionMapping   mapping,      
                                   ActionForm   form,  HttpServletRequest   request,       
                                    HttpServletResponse   response)   
    
                                      throws   Exception   {   

        LoginForm frm = (LoginForm) actionForm;                
        String param="0";
        Cookie[] allcookie=servletRequest.getCookies();               
        if(frm.getLanguage()==null){           //首先获取cookie
            for(int i=0;i<allcookie.length;i++){     
                if(allcookie[i].getName().equals("language")){                
                    param=allcookie[i].getValue();
                    break;
                }
                else{          //set cookie default 0
                    Cookie cookie=new Cookie("language",param);        
                    cookie.setMaxAge(60*60*24*365);          //一年     
                     servletResponse.addCookie(cookie);                                          
                }
            }
        }        
        else{               //set cookie            
            Cookie cookie=new Cookie("language",frm.getLanguage());        //设置 cookie 0
             cookie.setMaxAge(60*60*24*365);                     //30*60 半小时
            servletResponse.addCookie(cookie);             
            param=frm.getLanguage();            
        }       
   
        switch(new Integer(param).intValue()){
        case 0:
            servletRequest.getSession().setAttribute(Globals.LOCALE_KEY,Locale.CHINA);
            break;
        case 1:
            servletRequest.getSession().setAttribute(Globals.LOCALE_KEY,Locale.ENGLISH);
            break;   
        default:
            servletRequest.getSession().setAttribute(Globals.LOCALE_KEY,Locale.ENGLISH);
            break;                
        }     return actionMapping.findForward("index");
}