Struts2的国际化

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 ("user name ")
(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 对象。

转载于:https://www.cnblogs.com/elgin-seth/p/5293740.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值