【struts2】国际化

来源:互联网 发布:mac怎么打方括号 编辑:程序博客网 时间:2024/05/23 01:18

       Struts2的国际化是建立在java国际化的基础之上,一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourceBundle加载指定Locale对应的资源文件,再取得该资源文件中指定key对应的消息—整个过程与java程序的国际化相同,只是Struts2框架对java程序国际化进行了进一步的封装,从而简化了应用程序的国际化。

    

Struts2中加载全局资源文件

         Struts2提供了很多加载国际化资源文件的方式,最简单,最常用的就是加载全局的国际化资源文件,加载全局国际化资源文件的方式通过配置常量来实现,在struts.xml文件中配置常量,只需要配置struts.custom.i18n.resources常量即可。

         配置struts.custom.i18n.resources常量时,该常量的值为全局国际化资源文件的baseName,假设系统需要加载国际化资源文件的baseName为messageResource,则我们可以在struts.xml文件中配置如下的一个常量:

         

<!--指定struts2国际化资源文件的baseName为messageResource--><constant name="struts.custom.i18n.resources" value="messageResaouce" />

        

          通过这方式加载国际化资源文件后,Struts2应用就可以在所有地方去加载这些国际化资源文件。

加载资源文件的方式

        

        1.包范围资源文件:在包的根路径下建立多个文件名package_language_country.properties的文件,一旦建立了这个系列的国际化资源文件,应用中处于该包下的的所有Action都可以访问该资源文件.例如将资源文件放到WEB-INF/classes/app路径下,该资源文件就可以被位于app包以及其子包下所有的Action访问了。

        2.Action范围资源文件: 在包的根路径下建立多个文件ActionName_language_country.properties的文件,一旦建立了这个系列的国际化资源文件,该系列资源文件只能由该Action来访问.

        3.临时指定资源文件:使用这种方式,可以在JSP页面中输出国际化消息时临时指定国际化自愿文件的位置,这需要Struts2的一个标签<s:i18n…/>。如果把<s:i18n…/>标签作为<s:text…/>标签的父标签,则<s:text…/>标签将会加载<s:i18n>标签里指定的国际化资源文件。

 

访问国际化消息


         Struts2提供了非常简单的在JSP页面和在Action中输出国际化消息.

        Struts2访问国际化消息的三种方式:

         1.在JSP页面中,使用<s:text…/>标签,该标签的name属性指定了国际化资源文件中的key。

         2.在Action中可以使用ActionSupport类的getText方法,该方法接受一个name参数该参数制定了国际化资源文件中的key

         3.在表单元素Label里输出国际化信息,可以为该表单标签指定一个key属性,该key制定了国际化资源文件中的key。

 

输出带占位符的国际化消息

       在struts2中提供了如下两种方式来填充消息字符串中的占位符.

        1.在JSP中通过在<s:text…/>标签中使用多个<s:param…/>标签来填充消息中的占位符,第一个<s:text…/>标签指定第一个占位符的值,第二个标签指定第二个占位符的值……

        2.在Action中可以在调用getText方法时使用getText(String aTextName,List args)或者getText(StringaTextName,String[] args)来填充占位符.其中字符串数组或者集合中的第一个元素将填充第一个占位符,第二个元素填充第二个站位符.

       


举例

          举个小例子来说一下如果使用国际化

          1.首先定义一个国际化资源文件

failTip={0},Sorry,you can't log in!succTip={0},Welcome,you has logged in!welcomeMsg={0},hello! now is {1}!
         2.在Action使用该国际化资源文件

string message=getText("succTip",new String[]{"tgb"});//在Action我们可以这样来获得国际化消息,其中指定了占位符。
          3.在html中使用国际化资源文件

<s:text name="welcomeMsg">       <s:param>tgb</s:param>     <s:param>2016-10-21</s:param></s:text>

总结

       国际化是商业系统的一个基本的要求,现在的软件系统往往都是一个开放的系统,所以国际化是商业系统不可或缺的一部分,同时我们对于国际化更应该去理解的就是这种思想给我们编程所带来的便捷.所以说国际化不仅仅是一种手段,更是一种思想.

0 0
原创粉丝点击