快速业务通道

在Struts 2.0中国际化(i18n)您的应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
这些国际化字符时,同样有两种方法设置参数的值:

使用标志的value0、value1...valueN的属性,如:

<s:text name="validation.required" value0="User Name"/>

使用param子元素,这些param将按先后顺序,代入到国际化字符串的参数中,例如:

<s:text name="validation.required">   <s:param value="User Name"/> </s:text>

让用户方便地选择语言

开发国际化的应用程序时,有一个功能是必不可少的——让用户快捷地选择或切换语言。在Struts 2.0中,通过ActionContext.getContext().setLocale(Locale arg)可以设置用户的默认语言。不过,由于这是一个比较普遍的应用场景(Scenario),所以Struts 2.0为您提供了一个名i18n的拦截器(Interceptor),并在默认情况下将其注册到拦截器链(Interceptor chain)中。它的原理为在执行Action方法前,i18n拦截器查找请求中的一个名为"request_locale"的参数。如果其存在,拦截器就将其作为参数实例化Locale对象,并将其设为用户默认的区域(Locale),最后,将此Locale对象保存在session的名为“WW_TRANS_I18N_LOCALE”的属性中。

下面,我将提供一完整示例演示它的使用方法。

package tutorial; import java.util.Hashtable; import java.util.Locale; import java.util.Map; publicclass Locales {    public Map<String, Locale> getLocales() {      Map<String, Locale> locales =new Hashtable<String, Locale>(2);      locales.put("American English", Locale.US);      locales.put("Simplified Chinese", Locale.CHINA);      return locales;    } }

在Struts 2.0中国际化(i18n)您的应用程序(5)

时间:2011-06-25 BlogJava Max

tutorial/Locales.java

<%@taglib prefix="s" uri="/struts-tags"%> <script type="text/javascript"> <!--    function langSelecter_onChanged() {      document.langForm.submit();    } //--> </script> <s:set name="SESSION_LOCALE" value="#session[''WW_TRANS_I18N_LOCALE'']"/> <s:bean id="locales" name="tutorial.Locales"/> <form action="<s:url includeParams="get" encode="true"/>" name="langForm"    style="background-color: powderblue; padding-top: 4px; padding-bottom: 4px;">    Language: <s:select label="Language"      list="#locales.locales" listKey="value"  listValue="key"      value="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"      name="request_locale" id="langSelecter"      onchange="langSelecter_onChanged()" theme="simple"/> </form>

LangSelector.jsp

上述代码的原理为,LangSelector.jsp先实例化一个Locales对象,并把对象的Map类型的属性locales赋予下拉列表(select) 。如此一来,下拉列表就获得可用语言的列表。大家看到LangSelector有<s:form>标志和一段Javascript脚本,它们的作用就是在用户在下拉列表中选择了后,提交包含“reqeust_locale”变量的表单到Action。在打开页面时,为了下拉列表的选中的当前区域,我们需要到session取得当前区域(键为

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号