欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Struts实现多国语言切换 StrutsJSPBeanApacheHTML 

程序员文章站 2022-07-16 13:37:42
...

1 准备资源文件。资源文件命名格式:filename_language_country.properties.

中文文件名为index_zh_CN.properties

日文文件名为 index_ja_JP.properties

英文文件名为 index_en.properties

英文文件内容:

index.jsp.welcome=Colimas Library Management System

index.jsp.name=Name

index.jsp.userid=User ID

index.jsp.pass=Password

中文文件内容:

index.jsp.welcome=\u4f60\u597d

index.jsp.name=\u59d3\u540d

index.jsp.userid=\u7528\u6237\u540d

index.jsp.pass=\u5bc6\u7801

日文文件内容:

index.jsp.welcome=\u3044\u3089\u3063\u3057\u3083\u3044\u307e\u305b

index.jsp.name=\u59d3\u540d

index.jsp.userid=\u30e6\u30fc\u30b6\u30fcID

index.jsp.pass=\u30d1\u30b9\u30ef\u30fc\u30c9

\uxxxx是中文被转换后的ASCII码。可以使用native2ascii.exe工具转换。

2 struts-config.xml里配置资源文件

<message-resources parameter="resources.config.index" />

resources.config.indexclasses目录下的resources/config子目录的index__xx_xx.properties文件.

struts根据你的浏览器的语言设置调用不同语言的资源文件。

例如:如果你的IE默认语言为中文则。Struts将使用index_zh_CN.properties。而在struts-config.xml里只需写出“index”即可

ActionMapping

<form-beans>

<!--1 Multi-Lanuage support formbean-->

<form-bean

name="SelectLanguageForm"

type="com.nova.colimas.web.form.SelectLanguageForm"/>

</form-beans>

<!-- =========================================== Global Forward Definitions -->

<global-forwards>

<!-- Default forward to "Welcome" action -->

<!-- Demonstrates using index.jsp to forward -->

<forward

name="index"

path="/pages/index.jsp"/>

</global-forwards>

<!-- =========================================== Action Mapping Definitions -->

<action-mappings>

<!-- 1 select language action -->

<action path="/SelectLanguageAction"

type="com.nova.colimas.web.action.SelectLanguageAction"

name="SelectLanguageForm"

scope="request">

</action>

</action-mappings>

3 jsp

<%@ page contentType="text/html; charset=UTF-8"%>

<%@ taglib uri="/tags/struts-bean" prefix="bean"%>

<%@ taglib uri="/tags/struts-html" prefix="html"%>

<%@ taglib uri="/tags/struts-logic" prefix="logic"%>

<html:html>

<Title><bean:message key="index.jsp.welcome"/></Title>

<body>

<logic:present name="user">

<H3>Welcome <bean:write name="LoginForm" property="userID" />!</H3>

</logic:present>

<logic:notPresent scope="session" name="user">

<H3>Welcome Colimas!</H3>

</logic:notPresent>

<html:errors />

<html:form action="/SelectLanguageAction.do">

<html:select property="language">

<html:option value="0">中文</html:option>

<html:option value="1">日本語</html:option>

<html:option value="2">English</html:option>

</html:select>

<html:submit>Select</html:submit>

</html:form>

<html:form action="/LoginAction.do">

<p><bean:message key="index.jsp.userid"/><input type="text" name="userID" value="tyrone1979" /><br>

<bean:message key="index.jsp.pass"/><input type="password" name="password" value="197913"/><br>

<html:submit><bean:message key="index.jsp.login"/></html:submit>

</p>

</html:form>

</body>

</html:html>

<bean:message key="index.jsp.welcome"/>引用资源文件的index.jsp.welcome属性

SelectLanguageAction.do调用Action实现语言转换。

4 Action

package com.nova.colimas.web.action;

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.ActionMessages;

//import org.apache.struts.upload.FormFile;

import com.nova.colimas.web.form.SelectLanguageForm;

import org.apache.struts.Globals;

import java.util.Locale;

public class SelectLanguageAction extends Action {

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception{

SelectLanguageForm myform=(SelectLanguageForm)form;

String lan=myform.getLanguage();

switch((new Integer(lan)).intValue()){

case 0 :

request.getSession().setAttribute(Globals.LOCALE_KEY,Locale.CHINA);

break;

case 1:

request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.JAPAN);

break;

case 2:

request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);

break;

default:

request.getSession().setAttribute(Globals.LOCALE_KEY, Locale.ENGLISH);

break;

}

return mapping.findForward("index");

}

}

Form

/*

* Created on 2005/06/18

*

* TODO To change the template for this generated file go to

* Window - Preferences - Java - Code Style - Code Templates

*/

package com.nova.colimas.web.form;

import org.apache.struts.action.ActionForm;

/**

* @author tyrone

**/

public class SelectLanguageForm extends ActionForm {

private String language;

public void Reset() {

MsoNorm