Struts1.x 國際化資源配置
一,基本的國際化
步驟1:配置struts國際化
在struts-config.xml中配置message-resources標籤
<message-resource parameter="MessageResource"/>
其中的參數是國際化配置文件MessageResource.properties的文件名。
步驟2:提供國際化配置文件
中文:MessageResource_zh_cn.properties
英文:MessageResource_en_us.properties
源文件:resource.properties表示中文信息
在源文件resource.properties中硬編碼中文信息
user.title=用戶登錄
user.username=用戶
user.password=密碼
user.button.login=登錄
然後用java中提供的工具把這些信息轉換爲unicode放到相應國際化文件中。
MessageResource_zh_cn.properties文件中
user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
MessageResource_en_us.properties文件中
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
步驟3:在jsp頁面上用struts標籤<bean:message>來讀取國際化消息文本
引入標籤:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<form action="login.do" method="post">
<bean:message key="user.username"/>:<input type="text" name="username"><br>
<bean:message key="user.password"/>:<input type="password" name="password"><br>
<input type="submit" value="<bean:message key="user.button.login"/>">
</form>
bean:message中的屬性key指的是國際化文件中的鍵。
一個local對應一個session
二,國際化的切換
jsp頁面:
<a href="changelang.do?lang=zh">中文</a>   <a href="changelang.do?lang=en">英文</a>
添加一個Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String lang = request.getParameter("lang");
//得到Locale
Locale currentLocale = Locale.getDefault();
if ("zh".equals(lang)) {
//自定義Locale
currentLocale = new Locale("zh", "CN");
}else if("en".equals(lang)) {
currentLocale = new Locale("en", "US");
}
//自己設置Locale
//request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
//調用struts中提供的方法設置Locale
this.setLocale(request, currentLocale);
return mapping.findForward("index");
}
配置國際化action:
<action path="/changelang"
type="com.bjsxt.struts.ChangeLanguageAction"
>
<forward name="index" path="/index.jsp"/>
</action>
<message-resources parameter="res.MessageResources" />
res.MessageResources表示的是res包下的MessageResources文件。
三,動態信息的國際化
如果是與後臺交互的數據,那麼在國際化文件中就用佔位符進行配置
resource.properties源文件:
user.login.success={0},登錄成功
user.not.found=用戶不能找到,用戶名稱=[{0}]
user.password.error=密碼錯誤
user.login.error=登錄失敗
MessageResource_zh_cn.properties文件:
user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25
MessageResource_en_us.properties文件:
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
Action中的代碼:
package com.bjsxt.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
/**
* 用戶登錄的Action
* @author Administrator
*
*/
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
ActionMessages messages = new ActionMessages();
try {
UserManager.getInstance().login(username, password);
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.login.success", username);
//ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});//其中Object數組表示的是佔位符
messages.add("loginSuccess1", message);
ActionMessage message1 = new ActionMessage("user.login.success", username);
messages.add("loginSuccess2", message1);
//傳遞國際化消息文本
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.not.found", username);
messages.add("error1", message);
//傳遞國際化消息文本
this.saveErrors(request, messages);
}catch(PasswordErrorException pee) {
pee.printStackTrace();
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.password.error");
messages.add("error2", message);
//傳遞國際化消息文本
this.saveErrors(request, messages);
}
return mapping.findForward("error");
}
}
一個ActionMessage表示一條國際化信息。
Action配置:
<message-resources parameter="res.MessageResources" />
步驟1:配置struts國際化
在struts-config.xml中配置message-resources標籤
<message-resource parameter="MessageResource"/>
其中的參數是國際化配置文件MessageResource.properties的文件名。
步驟2:提供國際化配置文件
中文:MessageResource_zh_cn.properties
英文:MessageResource_en_us.properties
源文件:resource.properties表示中文信息
在源文件resource.properties中硬編碼中文信息
user.title=用戶登錄
user.username=用戶
user.password=密碼
user.button.login=登錄
然後用java中提供的工具把這些信息轉換爲unicode放到相應國際化文件中。
MessageResource_zh_cn.properties文件中
user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55
MessageResource_en_us.properties文件中
user.title=User Login
user.username=User Name
user.password=Password
user.button.login=Login
步驟3:在jsp頁面上用struts標籤<bean:message>來讀取國際化消息文本
引入標籤:
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%>
<form action="login.do" method="post">
<bean:message key="user.username"/>:<input type="text" name="username"><br>
<bean:message key="user.password"/>:<input type="password" name="password"><br>
<input type="submit" value="<bean:message key="user.button.login"/>">
</form>
bean:message中的屬性key指的是國際化文件中的鍵。
一個local對應一個session
二,國際化的切換
jsp頁面:
<a href="changelang.do?lang=zh">中文</a>   <a href="changelang.do?lang=en">英文</a>
添加一個Action:
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
String lang = request.getParameter("lang");
//得到Locale
Locale currentLocale = Locale.getDefault();
if ("zh".equals(lang)) {
//自定義Locale
currentLocale = new Locale("zh", "CN");
}else if("en".equals(lang)) {
currentLocale = new Locale("en", "US");
}
//自己設置Locale
//request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
//調用struts中提供的方法設置Locale
this.setLocale(request, currentLocale);
return mapping.findForward("index");
}
配置國際化action:
<action path="/changelang"
type="com.bjsxt.struts.ChangeLanguageAction"
>
<forward name="index" path="/index.jsp"/>
</action>
<message-resources parameter="res.MessageResources" />
res.MessageResources表示的是res包下的MessageResources文件。
三,動態信息的國際化
如果是與後臺交互的數據,那麼在國際化文件中就用佔位符進行配置
resource.properties源文件:
user.login.success={0},登錄成功
user.not.found=用戶不能找到,用戶名稱=[{0}]
user.password.error=密碼錯誤
user.login.error=登錄失敗
MessageResource_zh_cn.properties文件:
user.login.success={0},\u767b\u5f55\u6210\u529f
user.not.found=\u7528\u6237\u4e0d\u80fd\u627e\u5230\uff0c\u7528\u6237\u540d\u79f0=[{0}]
user.password.error=\u5bc6\u7801\u9519\u8bef
user.login.error=\u767b\u5f55\u5931\u8d25
MessageResource_en_us.properties文件:
user.login.success={0},Login Success
user.not.found=User Not Found,UserName[{0}]
user.password.error=Password Error
user.login.error=Login Error
Action中的代碼:
package com.bjsxt.struts;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
/**
* 用戶登錄的Action
* @author Administrator
*
*/
public class LoginAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LoginActionForm laf = (LoginActionForm)form;
String username = laf.getUsername();
String password = laf.getPassword();
ActionMessages messages = new ActionMessages();
try {
UserManager.getInstance().login(username, password);
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.login.success", username);
//ActionMessage message = new ActionMessage("user.login.success", new Object[]{username});//其中Object數組表示的是佔位符
messages.add("loginSuccess1", message);
ActionMessage message1 = new ActionMessage("user.login.success", username);
messages.add("loginSuccess2", message1);
//傳遞國際化消息文本
this.saveMessages(request, messages);
return mapping.findForward("success");
}catch(UserNotFoundException unfe) {
unfe.printStackTrace();
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.not.found", username);
messages.add("error1", message);
//傳遞國際化消息文本
this.saveErrors(request, messages);
}catch(PasswordErrorException pee) {
pee.printStackTrace();
//創建國際化消息文本
ActionMessage message = new ActionMessage("user.password.error");
messages.add("error2", message);
//傳遞國際化消息文本
this.saveErrors(request, messages);
}
return mapping.findForward("error");
}
}
一個ActionMessage表示一條國際化信息。
Action配置:
<message-resources parameter="res.MessageResources" />
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.