Struts框架的国际化

     本文将通过一个具体的实例来展示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 {
	//下拉框的value
	String 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>
						<select	name="languageSelect" οnchange="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_CHINESE
form.language1=ENGLISH
form.language2=TRADITIONAL_CHINESE
form.language999=Please Choose your language
form.languagefamily=Language


application_zh_CN.properties的内容如下:

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

application_zh_TW.properties的内容如下:

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



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


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值