Struts的国际化示例

本示例很简单:在一个页面上有一个下拉框,框中有2个国家的语言选项,包括“英语”和“简体中文”,用户点击它,页面的文字就会发生相应的变化。(需要把工作的环境的字符集设置为 UTF-8 )
如果程序运行有问题,请在评论里通知我,谢谢!

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
 xmlns="http://java.sun.com/xml/ns/j2ee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
 http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
    <servlet>
   <!-- Standard Action Servlet Configuration (with debugging) -->
  <servlet-name>action</servlet-name>
  <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
  <init-param>
   <param-name>config</param-name>
   <param-value>/WEB-INF/config/struts-config.xml</param-value>
  </init-param>
  <load-on-startup>2</load-on-startup>
 </servlet>
 
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>

    <welcome-file-list>
  <welcome-file>i18n.jsp</welcome-file>
 </welcome-file-list>
 
 <jsp-config>
  <taglib>
   <taglib-uri>/tags/struts-bean</taglib-uri>
   <taglib-location>/WEB-INF/tld/struts-bean.tld</taglib-location>
  </taglib>
  <taglib>
   <taglib-uri>/tags/struts-html</taglib-uri>
   <taglib-location>/WEB-INF/tld/struts-html.tld</taglib-location>
  </taglib>
 </jsp-config>
</web-app>

struts-config.xml

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">
<struts-config>

 

    <form-beans>
        <form-bean name="languageForm" type="i18n.form.LanguageForm"/>
    </form-beans>

    <global-exceptions>
        <!-- sample exception handler
        <exception
            key="expired.password"
            type="app.ExpiredPasswordException"
            path="/changePassword.jsp"/>
        end sample -->
    </global-exceptions>

    <global-forwards>
        <!-- Default forward to "Welcome" action -->
        <!-- Demonstrates using index.jsp to forward -->
    </global-forwards>

    <action-mappings>
        <action path="/i18nAction" name="languageForm" type="i18n.action.I18nAction">
            <forward name="success" path="/i18n.jsp"/>
        </action>
    </action-mappings>

    <controller
       processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>

    <message-resources parameter="I18N"/>

    <plug-in className="org.apache.struts.tiles.TilesPlugin" >

      <!-- Path to XML definition file -->
      <set-property property="definitions-config"
                       value="/WEB-INF/config/tiles-defs.xml" />
      <!-- Set Module-awareness to true -->
      <set-property property="moduleAware" value="true" />
    </plug-in>

  <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property
        property="pathnames"
        value="/WEB-INF/config/validator-rules.xml,/WEB-INF/config/validation.xml"/>
  </plug-in>

</struts-config>

资源文件1:I18N_en_US.properties

 # -- 英语版本 --
form.language1=SIMPLIFIED_CHINESE
form.language2=ENGLISH
form.language0=Please choose your language...
form.languageF=Language

资源文件2:I18N_zh_CN.properties
中文编码需要通过JDK自带的native2ascii命令将其转码为UTF-8,也可以下载Eclipse的插件实现即写即转来转为UTF-8,名字好像叫:PropertiesEditor 。

# -- 简体中文版本 --
form.language1=简体中文
form.language2=英语
form.language0=请选择您的语言...
form.languageF=语言

i18n.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="bean" uri="/WEB-INF/tld/struts-bean.tld"%>
<%@ taglib prefix="html" uri="/WEB-INF/tld/struts-html.tld"%>

<html>
<head>
  <title><bean:message key="form.languageF"/></title>
  <script language="javascript">
  function sub(){
    if(document.all("language").value!="0"){
      document.langform.submit();
    }
  }
  </script>
</head>
<body>
<form name="langform" action="i18nAction.do" method="post">
  <bean:message key="form.languageF"/><br/>
  <select name="language" οnchange="sub();">
    <option value="0" selected="selected">
      <bean:message key="form.language0"/>
    </option>
    <option value="1">
      <bean:message key="form.language1"/>
    </option>
    <option value="2">
      <bean:message key="form.language2"/>
    </option>
  </select>
</form>
</body>
</html>

LanguageForm.java

package i18n.form;

import org.apache.struts.action.ActionForm;

@SuppressWarnings("serial")
public class LanguageForm extends ActionForm{
 String language;

 public String getLanguage() {
  return language;
 }

 public void setLanguage(String language) {
  this.language = language;
 }
 
}

I18nAction.java

package i18n.action;

import java.util.Locale;

import i18n.form.LanguageForm;

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;

public class I18nAction extends Action{
 public ActionForward execute(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response)
   throws Exception {
  LanguageForm lf = (LanguageForm)form;
  Locale locale = null;
  
  if(lf.getLanguage().equals("1")){
   locale = Locale.SIMPLIFIED_CHINESE;
  }
  if(lf.getLanguage().equals("2")){
   locale = Locale.US;
  }
  
  request.getSession().setAttribute(Globals.LOCALE_KEY,locale);
  
  return mapping.findForward("success");
 }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值