9.6 指定语言信息的不同方式
9.6.1概述
在本节开始之前,请读者把包级别的国际化信息删掉,仅保留全局级别的国际化信息。
在9.3.3小节中,已经学过修改、使用浏览器语言设置的方式了,这里就不赘述了。接下来看看其它的方式
9.6.2 Struts2的常量设置
还可以使用Struts2的常量设置来覆盖浏览器的语言设置。比如前面的示例,在struts.xml中加上struts.locale这个常量,值为需要使用的语言,示例如下:
java代码:
- <constant name="struts.locale" value="zh_CN"/>
这时候,会发现无论怎么修改浏览器的语言设置,Struts2都会去访问中文信息了。
9.6.3由用户选择语言
以上的两种设置,还可能满足不了日常需求:
- 常量设置太死板,加上了常量设置,就不方便访问其他语言的信息了。
- 浏览器语言设置太麻烦。用户想修改访问的语言时,必须到浏览器的属性对话框去一顿勾选。对于一般用户来讲,这太繁琐。
幸好Struts2提供了最灵活的、也是级别最高的方式,那就是由用户选择语言。用户只要在提交请求的时候加上request_locale这个参数,并提供对应的值就可以自由选择语言了。
这得力于Struts2的i18n内建拦截器,defaultStack拦截器栈引用了i18n拦截器,因此,能很方便的由用户来选择语言。
i18n拦截器在Action运行之前会检查请求中是否包含了一个叫做“request_locale”的参数,如果存在此参数,则会用它的值建立一个Locale对象,并用这个Locale对象去覆盖Struts2的常量设置和浏览器的语言设置。除此之外,i18n拦截器还会把这个Locale对象放到名为WW_TRANS_I18N_LOCALE的Session属性中去,而这个属性也会覆盖Struts2的常量设置和浏览器的语言设置。因此,只需要传入一次request_locale参数,session就会记住用户的选择,整个网站就会都变成用户选择的语言了。
来示例一下,第一次访问结果页面的时候,输出相关的session属性,如下:
java代码:
- <%@ taglib prefix="s" uri="/struts-tags" %>
-
- <s:form>
- <s:textfield name="name1" key="labela"/>
- </s:form>
- <hr>
- <s:property value="#session.WW_TRANS_I18N_LOCALE" default="找不到"/>
由于当前的struts.xml设置常量struts.locale的值为zh_CN,所以,第一次访问将会使用常量设置的中文,而且session中也没有WW_TRANS_I18N_LOCALE这个属性。运行结果如下:
图9.10 使用常量配置指定国际化语言种类的结果
再次访问的时候,在请求里面加上request_locale参数,设置值为en_US,完整URL为http://localhost:9080/helloworld/i18nAction.action?request_locale=en_US。
这时候,请求中带有request_locale参数并指定为英文,因此,页面访问英文的国际化信息,并将en_US存入了session。运行结果如下:
图9.11 使用用户请求参数指定国际化语言种类的结果
再来访问一次,访问路径为:http://localhost:9080/helloworld/i18nAction.action,虽然这次请求中没有包含request_locale参数,但是session已经纪录了用户上次选择的英文,因此页面仍然访问英文信息,且session中仍然有en_US。
9.6.4三种方式的覆盖关系
对于这三种指定语言种类的方式,其优先级为:
用户指定参数 > struts.xml中配置常量 > 浏览器设置
而且,用户参数指定的方式,只需要设置一次就可以了,在整个session生命周期内,都不用再次设置。
私塾在线网站原创《研磨struts2》系列
转自请注明出处:【http://sishuok.com/forum/blogPost/list/0/4088.html】
欢迎访问http://sishuok.com获取更多内容
分享到:
相关推荐
功能说明: 环境说明: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库:SqlServer2008r2(数据库版本无限制,都可以导入) 开发模式:mvc。。。
labview程序代码参考学习使用,希望对你有所帮助。
大米外贸商城系统 简称damishop 完全开源版,只需做一种语言一键开启全球133中语言自动翻译功能,价格实现自动汇率转换,集成微信支付宝 paypal以及国外主流支付方式,自带文章博客系统。 软件架构 基于MVC+语言包模式,增加控制台,API导入产品方便对接其他系统(带json示例数据)。 使用要求 PHP7.4+ MYSQL5.6+ REDIS(可选) 安装方法 composer install 打开安装向导安装 http://您的域名/install 特色 1、缓存层增加时间与批量like删除 2、API产品导入方便对接其他系统 3、增加控制台命令行,命令行生成语言翻译包 4、后台一键开启自动翻译模式,支持全球133中语言,由于google代理翻译需要收费,这个功能需要付费。 5、可选购物车与ajax修改购物车产品 6、一键结算checkout 7、增加网站前台自定义路由 方便seo 更新日志 v3.9.7 集成鱼码支付接口,方便个人站长即使收款到账使用 v3.9.3 更新内容 1:增加ueditor与旧编辑器切换 2:增加可视化布局插
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
毕设和企业适用springboot人工智能客服系统类及旅游规划平台源码+论文+视频