struts2实现选择i18n语言选择切换

【新手学习记录,仅供参考!】

1.项目准备

  首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能。

  以下通过登录功能来举例说明。

2.指定全局国际化资源文件

  在struts.xml中配置i18n资源文件。

<constant name="struts.custom.i18n.resources" value="souvenir"/>

3.配置语言资源配置文件
  这里以中英两种语言作为例子。

  需要分别配置souvenir_en_US.properties以及souvenir_en_US.properties

  

4.在jsp页面中进行调用

  


<title><s:text name="loginPage"/></title>

</head>
<body>
<s:form action="login">
<s:textfield name="username" key="user"/>
<s:password name="password" key="pass"/>
<s:submit name="submit" key="login"></s:submit>
</s:form>

  这时,系统已经实现了i18n,只是默认根据浏览器的语言配置来加载的资源文件。

  我们可以事先修改一下IE的Internet选项中的语言配置,来验证i18n功能是否成功实现。

  

  比如我们将英文设置为默认语言,这时重新打开刚才jsp登录页面,就会发现提示语言变为英文。

5.添加语言选择功能

  在jsp页面增加两个语言选择的链接:

<br/>
<s:a href="chlang?lang=zh">简体中文</s:a>
<br/>
<s:a href="chlang?lang=en">English</s:a>

  这里实则上是调用的chlang这个action来进行语言选择的处理,同时传递了语言参数。

6.配置和实现chlang这个action

  首先在struts.xml中增加chlang的配置,方法与之前其他的action配置类似

  这里由于是进行语言切换,所以默认都是跳转到login页面

<action name="chlang" class="org.souvenir.app.action.LoginAction" method="chlang">
<result>/login.jsp</result>
</action>

  然后在LoginAction类中实现chlang方法

  


public String chlang(){
Locale locale = null;
System.out.println("lang:"+lang);
if (lang.equals("zh")) {
// 显示中文
locale = Locale.CHINA;
System.out.println("======" + lang+locale);
} else {
// 显示英文
locale = Locale.US;
}
ActionContext.getContext().setLocale(locale);
ServletActionContext.getRequest().getSession().setAttribute("WW_TRANS_I18N_LOCALE", locale);
return SUCCESS;

}

  逻辑比较简单,根据用户选择语言参数来判断并修改需要加载语言资源。

7.效果预览

  默认打开login.jsp页面时,由于我的浏览器已经修改语言为英语,所以默认加载英文。

  

  然后我们选择“简体中文”进行语言切换,效果如下:

  

8.总结

  简单小结一下,其实原理还是比较简单的。

  首先是浏览器根据IE默认配置加载对应的语言资源

  然后是用户主动选择语言切换后,系统通过action处理请求,然后返回相应的页面,从而实现多语言的效果。

  

时间: 2024-08-08 12:32:48

struts2实现选择i18n语言选择切换的相关文章

c语言 选择排序

选择排序 //    int array[] = {3, 2, 6, 9, 8, 5, 7, 1, 4}; //    int count = sizeof(array) / sizeof(array[0]); // //    for (int i = 0; i < count - 1; i++) { //        int minIndex = i; //        for (int j = minIndex + 1; j < count; j++) { //           

开发语言选择事项

开发语言选择考虑项: 团队 成本:主要是时间成本和质量成本.为此还需要考虑人员的培养周期.学习的周期.团队配合的周期.人员流失带来的人力成本 控制:选择了这种语言能不能始终保持控制度 项目特点:根据不同项目需求,选择合适的语言 技术健壮性:包括技术是否安全.文档是否健全.活跃性,例如这种框架社区是否活跃,是否有持续性.

我们到底应该如何选择开发语言或工具的版本

不管是php还是java还是python或者 XXX吧,我们在初学的时候都会面临一个问题: 如何选择版本. 在此我收集了一些学员.朋友.大神.菜神的回答:(排名不分尊贵) 1.学语言就要学最新的,因为最新的代表趋势. 2.学习最稳定的版本 3.不要去追求新的,用的顺手最重要 4.随便选一个,没啥区别 也许你会觉得上面的答案也许有道理,好,那么针对上面的回答其实还是有很多问题的 1.趋势代表未来的一种态度,但是很多东西就算代表趋势,但也未必走得远.就像sliverlight 出来时,多少人写文章鼓

为什么游戏开发要选择c语言?

在学游戏开发的时候,老师总是要先学c++或者有几年c++的开发经验:当时由于是计算机语言的小白,不知道为什么,后来学了几种计算机语言后就明白了,原来c++语言开发出来的游戏,尤其是大型的游戏运行起来更有效率,为什么这么说呢?计算机上的大部分语言的底层都是c语言,也就是说他们是包装起来的c语言:这样用c语言开发出来的游戏可以直接运行,而其他的语言呢,则间接的最后还是要回归到c语言上运行,这样对于大型的游戏来说浪费了很多时间,当然这并不是说其他的语言不好,这是从一个角度去分析开发游戏选择c语言的原因

选择什么语言真的重要吗

任何的事物都有其两面性,我们无法批判一件事情到底是完全正确还是完全错误,只能尽量公平公正的分析事物的方方面面.这也是我一贯看待事物的观点. 本文是以本人个人个人观点来探讨下“努力与选择两者之间该如何权衡” 第一个阶段: 新手经常会问一个问题,那就是我到底该选择什么语言好? PHP 好流行,可是JAVA大法也不错还能开发安卓程序.不过OC貌似更赚钱,可是苹果好像又出了swift.我到底该学什么呢? 这里我想说.正是因为你不知道你要做什么,所以你才会迷茫到底该选择什么. 很简单的道理.如果你要开发苹

为什么机器学习会选择Python语言?很简单!

人工智能是计算机行业非常流行的领域,随着人工智能的崛起,Python作为该领域的首选编程语言变得更加受关注了,在人工智能领域Python趋势是非常大的,发展前景良好.那么为什么机器学习会选择Python语言呢?原因很简单,为大家简单的介绍一下吧. Python程序语言与机器学习结合,可以说是强强联合的,使用Python撰写机器学习具备以下几点优势: 1.方便调试的解释型语言:Python是一门解释型的编程语言,与Java比较相似,源代码都是通过一个编码器,转换为独特的字节码,这个过程不需要保持全

【android基础知识】【国际化及语言选择】

参考源码:http://download.csdn.net/detail/barryhappy/7176709 将使用support.v7的项目修改了一下,变成了一个不使用actionbaractivity而是activity的.减少报错. http://download.csdn.net/detail/mcdullsin/8290923 一.在说多语言的时候首先说说如何减少“hard code” 什么是“hard code”,例如:java文件中直接使用了汉字字符串等.正确做法是将它放在资源文

python国际化 i18n 和中英文切换

Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现: 1.         在python安装目录下的./Tools/i18n/(windows下例 D:\Program Files\Python25\Tools\i18n)目录中找到pygettext.py运行之,生成翻译文件模版messages.pot,内容大概是这个样子: # SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR ORGANI

网站后端_Python-网站开发.Python网站开发之版本选择与框架选择?

简单说明: 1. 由于Python具有快速开发,多人协作,库丰富,社区成熟等优点,国内豆瓣/知乎/搜狐/果壳/饿了吗,国外YouTube/Reddit/Instagram/Pinterest/Bitbucket/Disqus/Dropbox等都相继将其作为主力开发语言,所以完全不用担心它的可靠性与性能问题,因为它已受了时间和大规模用户并发访问的考验 2. 很多人以为只要学会某个Web框架,能写代码查查数据库,能写模版渲染出HTML,最多再学习一下配个WebServer把服务跑起来就完事儿,然而并