12--struts--国际化

1.硬编码国际化

  编程步骤

(1)在struts-config.xml文件中指定资源属性文件的位置和名称【参考struts提供的空项目中】:

<message-resources parameter="MessageResources" />

其中的MessageResources就是资源文件命名的baseName。这时的资源文件是放在src根目录下的,如果存在于src下的resource文件夹下,则这里parameter的值应为resource.MessageResources。

(2)创建不同版本的国际化资源文件,以登录为例,我们创建4个properties文件

         A:source.properties

user.title=用户登录
user.username=用户
user.password=密码
user.button.login=登录

      B:对应的MessageResources_zh_CN.properties,通过native2ascii命令转化的unicode编码

user.title=\u7528\u6237\u767b\u5f55
user.username=\u7528\u6237
user.password=\u5bc6\u7801
user.button.login=\u767b\u5f55

     C:对应的MessageResources_en_US.properties,英文版本的资源文件

user.title=User Login
user.username=User Name
user.password=Password  
user.button.login=Login

    D:默认的MessageResources.properties文件,也采用英文

user.title=User Login
user.username=User Name
user.password=Password  
user.button.login=Login

(3)在login.jsp文件中引入

<%@ taglib prefix="bean" uri="http://jakarta.apache.org/struts/tags-bean" %>

4)用<bean:message key="keyyy"/>标签替换硬编码文件,如下所示:

     原始的JSP文件

          <form action="login.do"  method="post" >
		用户:<input type="text" name="username"/><br/>
		密码:<input type="password" name="password"/><br/>
		<input type="submit" value="登录"/>
		</form>

替换后的JSP文件

          <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>


(5)结果会根据浏览器设置和操作系统设置的语言不同而显示不同的登录页面。

 

2.因为struts是把Locale信息存放在session中,因此我们可以手动的设置Locale信息,以便选择不同的登录语言。

(1)index.jsp

<a href="changeLanguage.do?lang=zh">中文</a>  <a href="changeLanguage.do?lang=en">英文</a>

(2)action

@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		//获取参数
		String lang=request.getParameter("lang");
		//穿件Locale
		Locale lc=Locale.getDefault();
		//判断
		if(lang.equals("zh")){
			lc=new Locale("zh","CN");
		}else if(lang.equals("en")){
			lc=new Locale("en","US");
		}
		//放入session
		request.getSession().setAttribute(Globals.LOCALE_KEY, lc);
		
		//或者使用Action提供的方法
	//	this.setLocale(request, lc);
		return mapping.findForward("indexPage");
	}

因为这里只有一个参数,所以采用了传统的获取参数的方法,而没有使用ActionForm。

可见把Locale信息设置到session有两种方式。
 (3)在struts-config.xml文件中添加action配置(省略)。

    



     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值