一个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
我这里有代码,你可以查考下:
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");}