1.概述

把在无需改写源代码即可让开发出来的应用程序能够支持多种语言和数据格式的技术称为国际化.
与国际化对应的是本地化,
指让一个具备国际化支持的应用程序支持某个特定的地区
Struts2国际化是建立在Java
国际化基础上的:
–为不同国家/语言提供对应的消息资源文件
–Struts2框架会根据请求中包含的
Locale 加载对应的资源文件
–通过程序代码取得该资源文件中指定
key 对应的消息

2.国际化的目标:

A、配置国际化资源文件:

①Action 范围资源文件:在Action类文件所在的路径建立名为ActionName_language_country.properties的文件
②包范围资源文件:在包的根路径下建立文件名为package_language_country.properties的属性文件,一旦建立,处于该包下的所有
Action 都可以访问该资源文件。注意:包范围资源文件的baseName就是package,不是Action所在的包名。
③全局资源文件
–命名方式: basename_language_country.properties
–struts.xml

    <constantname="struts.custom.i18n.resources" value="baseName"/>
–struts.properties

    struts.custom.i18n.resources=baseName
④临时指定资源文件:<s:i18n.../>标签的
name 属性指定临时的国际化资源文件

⑤国际化资源文件加载顺序(离当前action较近的优先加载):

假设我们在某个ChildAction中调用了getText("username"):
–(1)加载和 ChildAction的类文件在同一个包下的系列资源文件
ChildAction.properties
–(2)加载 ChildAction 实现的接口
IChild,且和
IChildn在同一个包下
IChild.properties系列资源文件。
–(3)加载 ChildAction父类
Parent,且和
Parent 在同一个包下的
baseName为 Parent.properties系列资源文件。
–(4) 若 ChildAction实现
ModelDriven接口,则对于getModel()方法返回的model
对象,重新执行第(1)步操作。
–(5) 查找当前包下
package.properties系列资源文件。
–(6) 沿着当前包上溯,直到最顶层包来查找
package.properties的系列资源文件。
–(7) 查找 struts.custom.i18n.resources常量指定
baseName的系列资源文件。
–(8) 直接输出该key的字符串值。

B、如何在页面或Action中访问国际化资源文件的value值:

① 在Action类中,若action实现了TextProvide接口,则可以调用其getText() 方法获取资源文件中的value值

》通过继承ActionSupport类来实现此接口

② 在页面上,可以使用<s:text/>标签来访问资源文件中的属性;对于表单标签,可以使用表单标签的key属性值来获取

C、实现通过超链接切换语言:

① 关键在于 Stuts2是如何确定Local对象的

②Struts2 使用
i18n 拦截器处理国际化,并且将其注册在默认的拦截器中
③i18n拦截器在执行Action方法前,自动查找请求中一个名为request_locale的参数。如果该参数存在,拦截器就将其作为参数,转换成Locale对象,并将其设为用户默认的Locale(代表国家/语言环境)。并把其设置为session的

WW_TRANS_I18N_LOCALE属性
④若 request没有名为request_locale的参数,则i18n拦截器会从Session中获取WW_TRANS_I18N_LOCALE的属性值,若该值不为空,则将该属性值设置为浏览者的默认Locale
⑤若 session中的WW_TRANS_I18N_LOCALE的属性值为空,则从ActionContext中获取Locale对象。

Struts2的国际化的更多相关文章

  1. 十四、Struts2的国际化

    十四.Struts2的国际化 1.配置全局国际化消息资源包 配置全局消息资源包 <!--配置全局消息资源包 -->     <constant name="struts.c ...

  2. JavaWeb框架_Struts2_(八)----->Struts2的国际化

    这一篇博文拖了蛮久了,现在先把它完成,结束struts2这个版块,当然这只是最基础的部分,做项目还需要更深的理解.下一个web后端的版块准备做Spring框架的学习-嗯,加油! 1. Struts2的 ...

  3. struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化

    其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们使用 ...

  4. struts2 资源国际化

    web.xml: <?xml version="1.0" encoding="UTF-8"?><web-app id="WebApp ...

  5. Struts2的国际化入门

    Struts2的国际化入门 Struts2国际化是建立在Java国际化的基础上的,一样是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再 ...

  6. 浅谈struts2的国际化----i18n

    可能大家在使用struts框架的时候,偶尔会看到这个词: i18n.也就是 Internationalization    i 开头,n 结尾. 总共18个字母,今天的主要内容就是环绕这 四个字母. ...

  7. 【Struts2】 国际化

    一.概述 二.Struts2中国际化: 2.1 问题1 全局 局部 2.2 问题2 2.3 问题3 2.4 问题4 在Action中怎样使用 在JSP页面上怎样使用 一.概述 同一款软件 可以为不同用 ...

  8. (十四)struts2的国际化

    一.国际化的概念 国际化是指web程序在运行时,根据客户端请求的国家.语言的不同而显示不同的界面. 例如,如果请求来自中文客户端,则页面的显示,提示信息等都是中文,如果是英文客户端,则显示英文信息.  ...

  9. Struts2之国际化

    时间:2017-1-11 11:12 --国际化Struts2已经对国际化进行了封装,我们只需要根据其提供的API进行访问即可.要使用国际化的Action必须继承ActionSupport.1.什么是 ...

  10. Struts2 internationalization(国际化)

    1:什么是国际化? 国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式.它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素.换言之,应用程序的功 ...

随机推荐

  1. timus1004 最小环()Floyd 算法

    通过别人的数据搞了好久才成功,果然还是不够成熟 做题目还是算法不能融会贯通 大意即找出图中至少3个顶点的环,且将环中点按顺序输出 用floyd算法求最小环 因为floyd算法求最短路径是通过中间量k的 ...

  2. bzoj4154

    一开始读错题,各种不会做,后来发现染色只是染孩子…… 那不就简单了吗……注意这题是允许离线的 染色如果没有距离限制,它就是个dfs序 距离限制怎么做呢?我们考虑扩展一维变成二维的问题,将每个点变为二维 ...

  3. bzoj1185

    一遇到数学题和计算几何题我就要调半天…… 玛雅,我真是太弱了…… 基本思路很简单,先上凸包,然后矩形与凸包一边重合,然后旋转卡壳即可 然而我没怎么写过计算几何题,一开始写的各种囧,后来看了hzwer的 ...

  4. WebApp开发框架Ionic+AngularJS+Cordova

    目前的手机APP有三类:原生APP.WebAPP.HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Ionic Ionic是一个新的.可以使用HTML5构建混合移动应用 ...

  5. 为什么会出现ADB rejected shell command

    出现这个问题,是由于在运行过程中,android emulator 没有打开,可以在run configurations--target- automatic-设置自己的android-version ...

  6. RTP协议学习大总结从原理到代码

    from:http://wenku.baidu.com/view/aaad3d136edb6f1aff001fa5.html 一.流媒体概念 流媒体包含广义和狭义两种内涵:广义上的流媒体指的是使音频和 ...

  7. HWM的实验

    HWM是数据段中使用空间和未使用空间之间的界限,假如现有自由链表上的数据块不能满足需求,Oracle把HWM指向的数据块加入到自由链表上,HWM向前移动到下一个数据块.简单说,一个数据段中,HWM左边 ...

  8. 位图引起的内存溢出OutOfMemory解决方案

    一.问题描述:Android下的相机在独自使用时,拍照没有问题,通过我们的代码调用时,也正常,但是更换了不同厂商的平板,ROM由Android4.0变成了Android4.1后,拍照出现了OutOfM ...

  9. MySQL数据库分布式事务XA优缺点与改进方案

    1 MySQL 外部XA分析 1.1 作用分析 MySQL数据库外部XA可以用在分布式数据库代理层,实现对MySQL数据库的分布式事务支持,例如开源的代理工具:ameoba[4],网易的DDB,淘宝的 ...

  10. memcache 分布式,算法实现

    memcached 虽然称为 “ 分布式 ” 缓存服务器,但服务器端并没有 “ 分布式 ” 功能.每个服务器都是完全独立和隔离的服务. memcached 的分布式,则是完全由客户端程序库实现的. 这 ...