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" 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_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=u7B80u4F53u4E2Du6587
form.language1=u82F1u8BED
form.language2=u7E41u4F53u4E2Du6587
form.language999=u8BF7u9009u62E9u6240u9700u8BEDu8A00u7684u79CDu7C7B
form.languagefamily=u8BEDu8A00

application_zh_TW.properties的内容例如以下:

form.language0=u7C21u9AD4u4E2Du6587
form.language1=u82F1u8A9E
form.language2=u7E41u9AD4u4E2Du6587
form.language999=u8ACBu9078u64C7u6240u9700u8A9Eu8A00u7684u7A2Eu985E
form.languagefamily=u8A9Eu8A00



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


 

原文地址:https://www.cnblogs.com/zsychanpin/p/6755895.html