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

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处理请求,然后返回相应的页面,从而实现多语言的效果。

  

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

  1. 选择Go语言的12个理由

    编者按:多核化和集群化是互联网时代的典型特征,那语言需要哪些特性来应对这些特征呢?多数语言在语法层面并不直接支持协程,而通过库的方式支持的协程的功能也并不完整,比如仅仅提供协程的创建.销毁与切换等能力 ...

  2. Android中实现如下多语言选择Radiobutton效果

    手边的samsung手机设置多语言的方式一般是点击设置多语言的一栏后进入到多语言选择界面,选择完成之后当前的语言环境用小字方式直接显示在设置多语言栏的下方.另一种选择多语言的方式如上图所示,我也在系统 ...

  3. [翻译Joel On Software]选择一门语言/Choosing a language

    Joel on Software Choosing a language 选择一门语言 by Joel Spolsky Sunday, May 05,2002 Why do developerscho ...

  4. InnoSetup 安装选择不同语言,修改软件配置参数,达到安装语言就是软件语言效果

    需求 在软件安装时,选择中英文安装界面,选择的中英文界面就是对应软件内界面语言. 在软件安装时,选择中文界面,打开软件就是中文界面. 在软件安装时,选择英文界面,打开软件就是英文界面. 实际上,就是在 ...

  5. VueJS 使用i18n做国际化切换中英文

    1.安装 npm install vue-i18n --save 2.创建存放语言包和i18n入口文件 a.在src下创建i18n目录 b.在src/i18n/创建i18n.js  (入口) c.在s ...

  6. UWP 实现App多语言为所欲为切换

    为所欲为,嗯 话不多说,先看效果吧(事先说明,我的方法不是最好的,但是我用着最有效.) [吐槽一下博客园上传的图片,我的App敲鸡漂亮滴,自带亚克力效果,怎么图片上传上来这么多的噪点啊.] [ 商店地 ...

  7. 【原创】DESTOON做中英双语言(多语言)切换版本具体详解

    第一次发原创好激动,该注意点什么? 在开发过程中用户有许多要求,比如这个多语言切换就是一个需求. 首先讲解一下DESTOON(DT)后台系统如何做这个中英.甚至多语言切换的这个功能. DT本身不自带多 ...

  8. 选择Android还是选择JavaEE?

    很多同学咨询过同样的一个问题,该问题也是最备受争议的问题,那就是到底是选择Android还是选择JavaEE.下面发表一些本人的看法.       Android属于一个特有的Java技术应用,专注于 ...

  9. CSS选择符-----元素选择符

       通配选择符(*)           选定所有对象 通配选择符(Universal Selector) 通常不建议使用通配选择符,因为它会遍历并命中文档中所有的元素,出于性能考虑,需酌情使用 & ...

随机推荐

  1. [转]IIS部署托管管道模式的集成和经典区别

    关于ESPS和SCSJ在Windows server 2008的问题总结 SCSJ出现的问题在于集成模式和经典模式的选择上,系统本身是没有问题的.我们在部署系统的时候,选择了集成模式,导致WebCon ...

  2. html 元素 变小手

    要设置鼠标指针放在一个元素边界范围内时所用的光标形状,需要对元素的css属性cursor进行设置.cursor属性可能的值1.default 默认光标(通常是一个箭头)2.auto 默认.浏览器设置的 ...

  3. 013--VS2013 C++ 地图贴图-其它格式图片

    //--------------------------------------------InitInstance() 函数------------------------------------- ...

  4. M1分数分配

    进过第一轮迭代我们依据工作量及质量决定分配分数方案: 王皓南 24.5分 黄宇冰 24分 申开亮 23.5分 许晋 21分 王宇杰 17分 吴润凡 16分 巴丹益昔 14分

  5. windows和linux环境下制作U盘启动盘

    新笔记本上,要装xp的系统,100%会破坏原有的Linux系统,因为安装xp的时候会自动覆盖硬盘的主引导扇区,这个扇区一旦被重写,那么原有的linux根本就启动不了. 要想玩linux和xp双系统,一 ...

  6. C#使用Socket登陆WordPress源码

    就在昨晚,在本屌丝刚刚发布屌丝与女神的回忆史<C#外挂QQ找茬辅助源码,早期开发>后,在苏飞大哥的技术讨论群有个群友提出一个问题.使用http协议模拟工具可以登录成功Wordpress但是 ...

  7. android开发 textview根据字数长度自动调整字体大小

    需求:根据输入的值实时显示到textview中预览,但是字体大小是要自动适配的 网上有一个代码,但是在我这里不能用,注意方法:refitText  注释掉的是之前的代码 import com.cars ...

  8. WPF 策略模式

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  9. Codeforces Round #350 (Div. 2) D2. Magic Powder - 2

    题目链接: http://codeforces.com/contest/670/problem/D2 题解: 二分答案. #include<iostream> #include<cs ...

  10. 【转】Basic C# OOP Concept

    This Article will explain a very simple way to understand the basic C# OOP Concept Download ShanuBas ...