网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > JAVA > 开源技术 > Struts > 开源技术—struts2中i18n的设置  

开源技术—struts2中i18n的设置

2008-05-24  作者:bitsCN整理  来源:中国网管联盟  点评 投稿 收藏

参数化国际化字符串

许多情况下,我们都需要在动行时(runtime)为国际化字符插入一些参数,例如在输入验证提示信息的时候。在Struts 2.0中,我们通过以下两种方法做到这点: 网管论坛bbs_bitsCN_com

  1. 在资源文件的国际化字符串中使用OGNL,格式为${表达式},例如:
    validation.require=${getText(fileName)} is required
  2. 使用Java_Docs/html/zh_CN/api/java/text/MessageFormat.html">java.text.MessageFormat中的字符串格式,格式为{ 参数序号(从0开始), 格式类形(number | date | time | choice), 格式样式},例如:
    validation.between=Date must between {0, date, short} and {1, date, short}
在显示这些国际化字符时,同样有两种方法设置参数的值:
网管bitscn_com

  1. 使用标志的value0、value1...valueN的属性,如:
    <s:text name="validation.required" value0="User Name"/>
  2. 使用param子元素,这些param将按先后顺序,代入到国际化字符串的参数中,例如:
    <s:text name="validation.required"> 网管bitscn_com
       
    <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”的属性中。 网管有家www.bitscn.net

下面,我将提供一完整示例演示它的使用方法。 中国网管联盟bitsCN.com

package tutorial;

import java.util.Hashtable;
import java.util.Locale;
import java.util.Map; 网管联盟bitsCN@com

publicclass Locales { 网管下载dl.bitscn.com
   
public Map<String, Locale> getLocales() { 网管有家www.bitscn.net
       Map
<String, Locale> locales =new Hashtable<String, Locale>(2);
       locales.put(
"American English", Locale.US);

网管联盟bitsCN@com


       locales.put(
"Simplified Chinese", Locale.CHINA);
       
return locales;
   }

}
tutorial/Locales.java

<%@taglib prefix="s" uri="/struts-tags"%> 网管bitscn_com
<script type="text/javascript">
<!--
   
function langSelecter_onChanged() {
        document.langForm.submit();
    }
//--> 网管论坛bbs_bitsCN_com
</script>
<s:set name="SESSION_LOCALE" value="#session['WW_TRANS_I18N_LOCALE']"/>
<s:bean id="locales" name="tutorial.Locales"/>
中国网管联盟bitsCN.com

<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" 网管u家bitscn.net
        value
="#SESSION_LOCALE == null ? locale : #SESSION_LOCALE"
        name
="request_locale" id="langSelecter" 
        onchange
="langSelecter_onChanged()" theme="simple"/>
</form>
LangSelector.jsp 网管u家u.bitsCN.com

TAGs   设置   技术       <   文件   资源   Struts   国际化   使用   查找      
 上一篇:一个struts2和spring2的整合   下一篇:Struts+Spring+Hibernate整合例子
开源技术—struts2中i18n的设置 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: