`

《研磨struts2》第九章 国际化 之 9.6 指定语言信息的不同方式

 
阅读更多

9.6  指定语言信息的不同方式

9.6.1概述

在本节开始之前,请读者把包级别的国际化信息删掉,仅保留全局级别的国际化信息。

       在9.3.3小节中,已经学过修改、使用浏览器语言设置的方式了,这里就不赘述了。接下来看看其它的方式

9.6.2 Struts2的常量设置

还可以使用Struts2的常量设置来覆盖浏览器的语言设置。比如前面的示例,在struts.xml中加上struts.locale这个常量,值为需要使用的语言,示例如下:

 

java代码:
  1. <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代码:
  1. <%@ taglib prefix="s" uri="/struts-tags" %>  
  2.   
  3. <s:form>  
  4.     <s:textfield name="name1" key="labela"/>  
  5. </s:form>  
  6. <hr>  
  7. <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获取更多内容

3
2
分享到:
评论

相关推荐

    研磨Struts2配书视频对应的演示源代码

    10. **国际化(Internationalization, i18n)**:Struts2支持多语言环境,通过资源包(properties文件)来实现。源代码中可能有相关的资源配置和使用。 通过研究这些源代码,你可以逐步掌握Struts2的精髓,包括如何...

    研磨Struts2

    为了让应用程序能够适应不同的语言环境,Struts2提供了国际化支持。 #### 11.2 国际化实现 - **资源文件**:使用.properties文件来存放不同语言的文本。 - **切换语言**:可以通过设置locale参数来切换语言。 ###...

    研磨struts2 高清版

    由于文件较大,我把这个文档切割为2部分,这是第一部分,请下载完第一部分后一定要下载第二部分,否则不能阅读。

    研磨Struts2配书视频对应的PPT

    Struts2的国际化和本地化支持也是重要的知识点,这对于构建多语言的应用至关重要。 在实际开发中,Struts2的异常处理机制和错误页面配置也是不可忽视的部分。开发者需要了解如何优雅地处理程序中的异常,以及如何...

    《研磨Struts 2》PDF版本下载.txt

    4. **国际化与多语言支持**:介绍如何在Struts 2应用中实现多语言支持,包括资源文件的使用方法。 5. **高级主题**:例如自定义拦截器、文件上传下载、AJAX支持等内容。 6. **实战案例**:通过一个或多个实际项目,...

    研磨Struts2 高清完整版.part2

    研磨Struts2 高清完整版,请和第一部分一起下载啊

    研磨struts

    12. **其他重要知识**:Struts2还涉及国际化、异常处理、主题与皮肤、动态方法调用等多个高级主题,这些内容使得Struts2能够应对复杂的Web应用需求。 通过《研磨Struts2》,读者可以系统地学习Struts2框架的各个...

    研磨Struts2_12859679_高清完整版.part2.rar

    研磨Struts2_12859679_高清完整版

    研磨Struts2-高清-完整目录-2011年10月

    研磨Struts2-高清-完整目录-2011年10月,分享给所有需要的人

    研磨设计模式(完整带书签).part2.pdf

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    研磨设计模式-part2

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

    研磨设计模式.part2

    研磨设计模式.part2 一定要下载5部分

    研磨机说明书

    研磨机说明书 研磨机是一种常用的机械设备,用于对金属、木材、塑料等材料进行研磨和加工。下面是研磨机的操作说明书,旨在帮助用户更快提高研磨质量。 一、主画面 研磨机的主画面分为自动画面、手动画面、调试...

    研磨设计模式(完整带书签).part1.pdf

    第9章 原型模式(Prototype) 第10章 中介者模式(Mediator) 第11章 代理模式(Proxy) 第12章 观察者模式(Observer) 第13章 命令模式(Command) 第14章 迭代器模式(Iterator) 第15章 组合模式(Composite) ...

Global site tag (gtag.js) - Google Analytics