struts2国际化

作者&投稿:宜燕 (若有异议请与网页底部的电邮联系)
struts2的国际化基于什么实现~

在Struts2国际化案例的基础上,你指的是struts2自带的i18n拦截器吗?Struts2有18个拦截器,其中i18n拦截器的功能就是实现国际化。那么现在你要自己配置国际化肯定是需要调用这个拦截器的。 1.实现国际化的配置有两种,一种是包级别的配置

一、struts2国际化比较简单,过程如下:
1. 建立资源文件
中文资源:language_zh_CN.properties (language-自定义名称,zh-中文,CN-中国)
英文资源:language_en_US.properties (language保持一致,en-英文,US-美国)
其内容就是键值对,俩资源文件的键名对应保持一致,值分别对应中文与英文
其中中文在MyEclipse环境下,用Properties进行编辑,直接输入中文
如:password 密码
那么从Source看时,就可看到中文是用Unicode表示的
如:password=\u5BC6码

2. 配置
struts.xml文件中,配置i18n的源,值取资源文件的自定义名称部分(如果资源文件不是在src下,记得加上包路径):

web.xml文件中,配置Struts2:

struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter


struts2
/*


3. jsp中使用资源
加入标签引用:
s:text标签用健名取资源值:
或者表单元素用:key="password"

4. 在action中使用资源
用ActionSupport类中的方法取资源值:getText("password");

二、js中要获取以上的资源值,就比较麻烦了
单独建立一套资源的话,就需要维护两套资源,重复且维护麻烦

1. js中使用量较少时,可在jsp页面中定义变量先取出资源值
用js代码如:var curPassword='';
或:var curLang = {
password : '',
user : ''
}
那单独的js文件中就可直接使用了

2. 另外想到的是从Java资源中全部取出,在js中再建立一个语言的对象
struts国际化,是建立在java国际化之上,做了一次封装
java国际化,用到的有两个类:Locale、ResourceBundle
Locale是语言类,选定当前的语言与地域,如:Locale locale = new Locale("zh","CN");
ResourceBundle是资源类,加载的是资源
如:ResourceBundle bundle = new ResourceBundle.getBundle("language",locale);
有个方法可取键值:bundle.getString("password");
找到一个方法可取全部键名:Set keys=bundle.keySet();

好,再看Struts2中如何取ResourceBundle对象:
ActionSupport类中方法:ResourceBundle bundle=getTexts("langauge");
Action中添加方法:
protected String getCurLang(String resourceName){
ResourceBundle bundle=getTexts(resourceName);
if(null != bundle){
Set keys=bundle.keySet();
Iterator it = keys.iterator();
StringBuffer curLang = new StringBuffer();
curLang.append("{");
int id=0;
String key;
while(it.hasNext()){
key=it.next();
if(id>0){
curLang.append(",");
}
curLang.append(key);
curLang.append(":\'");
curLang.append(getText(key));
curLang.append("\'");
id++;
}
curLang.append("}");
return curLang.toString();
}
return "";
}

然后放入session中:session.setAttribute("curLang",getCurLang("langauge"));
或前台调用Ajex通讯取得

最后,前台把它转为对象,如:
var strvar curLang="";
那么js文件中就可直接使用了:curLang["password"];

1)navive2ascii 是JDK自带的一个工具,在如下位置C:\j2sdk1.4.XXX\bin,
2)messageResouce.properties是你自己写的一个带中文字符的资源文件,比如打开记事本,复制以下两行
loginPage=登录页面
errorPage=错误页面
并保存为messageResouce.properties,放到E盘根目录下
3)然后到DOS下打命令,
先打e: (进入E盘,不用说了吧)
再打C:\j2sdk1.4.2\bin\native2ascii messageResouce.properties messageResouce_zh_CN.properties
4)好了,看到了吗?E盘下生成一个文件了。

在你存放messageResouce.properties的路径下运行下面命令:

native2ascii -encoding gb2312 messageResouce.properties messageResouce_zh_CN.properties

转好的内容:
loginPage=\u767b\u5f55\u9875\u9762

errorPage=\u9519\u8bef\u9875\u9762

succPage=\u6210\u529f\u9875\u9762

failTip=\u5bf9\u4e0d\u8d77\uff0c\u60a8\u4e0d\u80fd\u767b\u5f55\uff01

succTip=\u6b22\u8fce\uff0c${0},\u60a8\u5df2\u7ecf\u767b\u5f55\uff01

viewLink=\u67e5\u770b\u4f5c\u8005\u674e\u521a\u5df2\u51fa\u7248\u7684\u56fe\u4e66

bookPageTitle=\u4f5c\u8005\u674e\u521a\u5df2\u51fa\u7248\u7684\u56fe\u4e66

bookName=\u4e66\u540d\uff1a

user=\u7528\u6237\u540d

pass=\u5bc6 \u7801

login=\u767b\u5f55

如果命令没错,检查一下你文件名与命令里的是否一致,可以复制文件名进去试试

李刚的书我也看了,说的很清楚!所以你再注意一下...
反正我觉得是没有什么问题的,因为我也看了!只是工作原因,一直没时间去用struts2

资源文件里不能直接使用中文的,必须对其进行编码。


新加坡热门专业 PSB学院英语能力证书课程介绍
成立30年来,TMC成功地与世界多所著名大学建立合作关系,学生即可选择在TMC攻读这些著名大学的学士学位、硕士学位,也可方便的转入英、美、澳等大学继续攻读一至两年的后续课程。专家介绍:我们全心全意的致力于为学生提供“国际化 教学、先进设施”的一流教育,并以市场为导向,全方位的考虑学...

新加坡莎顿国际学院传媒1+2国际课程项目介绍
莎顿国际学院(Shelton College International)成立于1993年,位于新加坡中心地带,校园坐落在自然区花芭山的山脚下,距离新加坡总统府仅10分钟车程。莎顿国际学院是受到新加坡与中国政府双认证院校。莎顿曾于2003年获得“新加坡素质级体制标志(SQC)”认证,2005年获得“消协保证标志(CaseTrust)”认证,2008年获...

如何成为国际高级品酒师?
2. 不吸烟,不吃刺激性食物 研究人员曾用微弱电流刺激受试者的舌头,结果发现,吸烟者普遍需要更强的电流才会产生相应的反应。也就是说,吸烟不但会像公益广告里讲的那样,会诱发许多口腔疾病,它对味蕾的影响也是较严重的。 此外,类似辣椒这种刺激性食物,如果食用过多不但会令食道发热,还会破坏味蕾细...

笔记本电脑,哪个牌子好呢
联想在奥运期间为全球媒体提供多品牌电脑维修服务计划,一支40人的联想国际化服务团队全力保障全球2万多名媒体记者的笔记本电脑等IT设备正常运行。 联想信息技术和产品全面支持了奥运运营的各个层面:计时计分系统,赛场成绩系统、评论员信息系统,到信息分发系统;从比赛管理系统,人员安排和调度系统、审查系统,到认证制证系统;...

Strust中的资源文件 怎么保存日文或中文
原因在于程序的国际化。Java 编译器和其它 Java 工具只能处理含有 Latin-1 和\/或 Unicode 编码(\ 记 号)字符的文件。native2ascii 将含有其它字符编码的文件转换成含 Latin-1 和\/或 Unicode 编码字符的文件。若省略 outputfile,则使用标准输出设备输出。此外,如果也省略 inputfile,则使用 标...

詹姆斯库克大学旅游管理学专业位课程概况
新加坡詹姆斯库克大学成立于2003年,是第一间由澳洲政府大学在新加坡的直属校区。学校所开设的课程、颁发的学位证书都与澳洲主校区完全相同。在新加坡校区的学生来自世界20多个国家,不仅让校园更加国际化,而且也使学生有互相学习不同文化的机会。2010年通过了EduTrust认证。新加坡詹姆斯库克大学旅游管理学士...

美国第一银行的详细介绍和它的CEO的介绍
1961年第一花旗银行率先推出了大额可转换定期存单(CD)业务,该业务使花旗银行能够与政府债券竞争资金,花旗银行取得了新进展。同时,花旗银行进一步国际化,到1982年底,花旗银行已在94个国家拥有1490余个分支机构,海外机构的资产和收益占花旗银行全部资产和收益的60%。1967年花旗银行组建了控股公司——第...

relation和relationship区别是什么?
2、家族关系和非家族关系的区别 Relation 强调了个人或物之间的亲戚关系或其他家庭关系,往往用于表达家族关系的语言或文化中。而 Relationship 则更多用于形容朋友、伴侣或者工作关系等非家族关系。例句:- She is my relative, but we don't have a close relationship.(她是我的亲戚,但我们没有很...

相投资移民新加坡,想了解下新加坡教育体制
在悠久的中国文化传统中,教育一直倍受推崇。大多数中国父母认为,让子女接受良好的教育是送给他们最好的礼物,而新加坡正是帮助他们实现这一愿望的最佳平台。要将未来的新加坡建设成一个持续发展的国际化大都市,学习能力至关重要,而新加坡的教育体系则为学生培养学习能力打下了全面而坚实的基础。新加坡教育...

relation和relationship区别是什么?
这一协议标志着国际关系新时期的到来。 5、I have some comments to make in relation to this matter. 关于这件事我有几点看法。 relationship 1、Our relationship was based on mutual dependence. 我们的关系建立在相互依存的基础上。 2、Trust is a vital component in any relationship. 在任何关系中,...

鸡泽县15814116136: struts2国际化标签是什么 -
斐虹尼尔: 就是拦截器里,使用国际化语言配置,根据你的浏览器的语言,自动返回错误信息

鸡泽县15814116136: struts2国际化配置
斐虹尼尔: 在src下建一个struts.properties文件,在文件中设定国际化文件路径 struts.custom.i18n.resources=路径+globalMessages (如果国际化文件名为:globalMessages_zh.properties) 试试看

鸡泽县15814116136: struts2怎样实现国际化 -
斐虹尼尔: src目录下新建 struts.propertie, 里边写入类似配置:struts.custom.i18n.resources=messages 然后在src目录下建messages_en.properties (英文):name=name sex=sex 在src目录下建messages_zh.properties (中文) :name=姓名 sex=性别 页面获取国际化信息:<s:property value="%{getText('name')}" /><s:property value="%{getText('sex')}" />

鸡泽县15814116136: struts2 的国际化,自己弄了半天,也不成功,求一个好的例子,或者步骤,谢谢! -
斐虹尼尔: 要注意的3点:1.properties文件放在src下面2.struts中配置的时候注意3.页面传递的参数不能有误,必须写标准

鸡泽县15814116136: struts2 如何国际化所有页面 -
斐虹尼尔: 那要将所有的显示信息都国际化啊 写一个属性文件

鸡泽县15814116136: struts2国际化在js里面怎么使用 -
斐虹尼尔: 一、struts2国际化比较简单,过程如下:1. 建立资源文件 中文资源:language_zh_CN.properties (language-自定义名称,zh-中文,CN-中国) 英文资源:language_en_US.properties (language保持一致,en-英文,US-美国) 其内容就是键值对,...

鸡泽县15814116136: struts2的国际化基于什么实现 -
斐虹尼尔: 在Struts2国际化案例的基础上,你指的是struts2自带的i18n拦截器吗?Struts2有18个拦截器,其中i18n拦截器的功能就是实现国际化.那么现在你要自己配置国际化肯定是需要调用这个拦截器的. 1.实现国际化的配置有两种,一种是包级别的配置

鸡泽县15814116136: 如何生成struts2国际化资源文件 -
斐虹尼尔: 资源文件的命名:basename_language_country.properties Java国际化 如果系统同时存在资源文件、类文件,系统将以类文件为主,而不会调用资源文件.对于简体中文的Locale,ResourceBundle搜索资源的顺序是:(1)baseName_zh_CN....

鸡泽县15814116136: struts2的拦截器中怎样取国际化信息? -
斐虹尼尔: Struts2怎样取自己配置的国际化信息:1.配置.properties文件,假如有MessageAction_zh_CN.properties中文配置信息,MessageAction_en_US.properties英文配置信息.2.配置 struts.xml,在里面只需要保证你请求的Action继承ActionSupport就可以了.3.在页面用struts2的标签库:,info是你在properties里面的配置的键,使用该标签就可以输出相对应配置文件里面的值了.当然,到底输出什么语言,就取决于你浏览器的编码了,他会安装你浏览器的编码去自动配置.Struts2里面的国际化配置的过程就这样.

鸡泽县15814116136: struts2自动国际化怎么应用于所有页?struts2自动国际
斐虹尼尔: 你好: 使用struts2国际化标签就可以了

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网