Struts框架的國際化

sanqima發表於2014-06-10

     本文將通過一個具體的例項來展示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=\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
 


 

相關文章