Struts实现多国语言切换

来源:互联网 发布:歌曲剪切软件下载 编辑:程序博客网 时间:2024/05/01 09:06

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() {

                                this.language="";

                                return;

                }

 

                /**

                 * @return Returns the Language.

                 */

                public String getLanguage() {

                                return language;

                }

                /**

                 * @param language The Language to set.

                 */

                public void setLanguage(String property1) {

                                this.language = property1;

                }

}

结果

1 IE默认语言为中文:

启动画面

切换为日语

切换为英文

原创粉丝点击