1、struts国际化的配置
 * 在struts-config.xml文件中加入:<message-resources parameter="MessageResources" />
 
2、提供不同版本的国际化资源文件,中文需要采用native2ascii转换成unicode

3、在jsp中采用<bean:message>标签来读取国际化消息文本

4、了解利用struts默认将locale放到session中的特性,完成采用编程的方式切换语言设置
 * 参见:ChangeLanguageAction.java
 
5、消息文本的国际化处理,共有三个步骤:
 * 创建国际化消息
 * 传递国际化消息
 * 显示国际化消息
 
如何创建国际化消息?
 理解ActionMessage和ActionMessages两个对象的区别
 
如何传递国际化消息?
 * 调用saveMessage()传递普通消息,调用saveErrors传递错误消息
 
如何显示国际化消息?
 通过<html:messages>标签显示消息(可以显示普通消息和错误消息)
 通过<html:errors>显示消息(只能显示错误消息) 

当将国际化资源文件放入到一个包时,在struts-config.xml文件中加入:<message-resources parameter="包名.MessageResources" />

ChangeLanguageAction.java

 1import java.util.Locale;
 2
 3import javax.servlet.http.HttpServletRequest;
 4import javax.servlet.http.HttpServletResponse;
 5
 6import org.apache.struts.Globals;
 7import org.apache.struts.action.Action;
 8import org.apache.struts.action.ActionForm;
 9import org.apache.struts.action.ActionForward;
10import org.apache.struts.action.ActionMapping;
11
12public class ChangeLanguageAction extends Action {
13
14    @Override
15    public ActionForward execute(ActionMapping mapping, ActionForm form,
16            HttpServletRequest request, HttpServletResponse response)
17            throws Exception {
18        String lang = request.getParameter("lang");
19        
20        Locale currentLocale = Locale.getDefault(); 
21        if ("zh".equals(lang)) {
22            currentLocale = new Locale("zh""CN");
23        }
else if("en".equals(lang)) {
24            currentLocale = new Locale("en""US");
25        }

26        //request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
27        
28        this.setLocale(request, currentLocale);
29        return mapping.findForward("index");
30    }

31
32}