Struts框架的国际化

来源:互联网 发布:人类男捏脸具体数据 编辑:程序博客网 时间:2024/05/21 17:02

     本文将通过一个具体的实例来展示Struts框架的国际化,使用的版本是struts1.1。

案例:在一个页面上有一个下拉框,下拉框中有3个国家的语言选项,分别是“简体中文”、“繁体中文”、“英文”。使用者通过对这三个选项的改变,而实现3种语言的变化。效果如下:

  一、具体开发思想如下:

1)通过一个Action来获得JSP页面下拉框的选择项,根据这些选项来动态改变保存在Session中的Locale对象;

2)JSP页面的所有显示都会通过<bean:message>标签来读取资源配置文件,根据3种语言给出3个资源配置文件,资源配置文件的“键”不会改变,改变的是“值”,简体和繁体的“值”会使用UTF-8编码。

  二、 部分代码如下:

 a) 在Action中提供针对请求到来的Locale对象的动态变化,

package struts.sample.cap4.sample1.action;import java.util.Locale;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.struts.Globals;import org.apache.struts.action.Action;import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import struts.sample.cap4.sample1.form.LanguageSelectForm;public class I18SelectAction extends Action {public ActionForward execute(ActionMapping mapping, ActionForm actionForm,HttpServletRequest request, HttpServletResponse response)throws Exception {LanguageSelectForm languageSelectForm = (LanguageSelectForm) actionForm;Locale locale = null;//根据页面的下拉选择得到Locale对象的内容if (languageSelectForm.getLanguageSelect().equals("0")) {locale = Locale.SIMPLIFIED_CHINESE;}if (languageSelectForm.getLanguageSelect().equals("1")) {locale = Locale.US;}if (languageSelectForm.getLanguageSelect().equals("2")) {locale = Locale.TRADITIONAL_CHINESE;}//将Locale对象的内容存放到Session中request.getSession().setAttribute(Globals.LOCALE_KEY, locale);return mapping.findForward("success");}}


b) 提供一个ActionForm

   该Action没有检验的方法,仅仅是传递从页面到来的参数。

package struts.sample.cap4.sample1.form;import org.apache.struts.action.ActionForm;public class LanguageSelectForm extends ActionForm {//下拉框的valueString languageSelect;public String getLanguageSelect() {return languageSelect;}public void setLanguageSelect(String languageSelect) {this.languageSelect = languageSelect;}}


c) JSP页面

    JSP页面的部分只有一个下拉框和一些提示信息。

<%@ page contentType="text/html; charset=UTF-8"%><%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%><%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%><html><head><title>selectlanguage</title><script language="javascript">function selectsubmit() {  if (document.all("languageSelect").value != "9999") {  document.langform.submit();  } }</script></head><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><form name="langform" action="I18SelectAction.do" method="POST"><table border="0" width="486" cellpadding="6"><tr><td><bean:message key="form.languagefamily" /></td><td><selectname="languageSelect" onchange="selectsubmit();"><option value="9999" selected="selected"><bean:message key="form.language999" /></optioon><option value="0"><bean:message key="form.language0" /></optioon><option value="1"><bean:message key="form.language1" /></optioon><option value="2"><bean:message key="form.language2" /></optioon></select></td></tr></table></form></body></html>

三、3个不同语言的资源配置文件

    三种不同语言的配置文件分别为application_en_US.properties、application_zh_CN.properties、application_zh_TW.properties,对应了英文、简体中文和繁体中文3种不同的显示。

 application_en_US.properties内容如下:

form.language0=SIMPLIFIED_CHINESEform.language1=ENGLISHform.language2=TRADITIONAL_CHINESEform.language999=Please Choose your languageform.languagefamily=Language


application_zh_CN.properties的内容如下:

</pre><pre class="java" name="code">form.language0=\u7B80\u4F53\u4E2D\u6587form.language1=\u82F1\u8BEDform.language2=\u7E41\u4F53\u4E2D\u6587form.language999=\u8BF7\u9009\u62E9\u6240\u9700\u8BED\u8A00\u7684\u79CD\u7C7Bform.languagefamily=\u8BED\u8A00

application_zh_TW.properties的内容如下:

form.language0=\u7C21\u9AD4\u4E2D\u6587form.language1=\u82F1\u8A9Eform.language2=\u7E41\u9AD4\u4E2D\u6587form.language999=\u8ACB\u9078\u64C7\u6240\u9700\u8A9E\u8A00\u7684\u7A2E\u985Eform.languagefamily=\u8A9E\u8A00



完整代码地址:http://download.csdn.net/detail/sanqima/7479141
 


 

3 0