struts2的国际化

      国际化即可根据客户端请求来自不同国家/地区、语言的不同而显示不同的界面。在我们公司,我们将这个国际化叫做多语系显示。Java提供了国际化的支持。Java的国际化主要运用了两个类别ResourceBundle和MessageFormat。ResourceBundle主要是通过它根据国家和地区找相应的properties,并从中取出需显示的文字。具体实现方式如下所示:

写道
ResourceBundle bundle = ResourceBundle.getBundle("MyResource" , currentLocale);
String msg = bundle.getString("msg");

 

     值得注意的是,相应的properties文档需通过将属性档转为unicode的形式。转换方式为在命令行运行一下命令:

写道
native2ascii MyResource_zh_CN.properties aa.properties

    然后再改成相同的名字即可。

    MessageFormat的主要作用是如果通过bundle.getString("msg")抓的显示讯息有占位符,则通过MessageFormat.format(stining [])将占位符填充相应的讯息。

 

    Struts2的国际化支持就是Base在Java的国际化支持上的,经过Struts2框架的封装,使得我们使用国际化就更方便了。Struts2默认的属性名称为messageResource。如果想改属性名字,可在struts.xml里面进行谁定。

写道
struts.custom.il8n.resources=name

 Struts2的属性档有三种形式,

                一种问全局的属性档,放到类别的根目录下,

                一种为一个package的属性档,放到包下命名为pacakge.properties的实行,

                一种为针对某个Action的属性档,放到和Action相同的目录,取名为Actionname.properties。

经过Struts2包装后的国际化语系的获取方式有以下几种方式

         1、在Jsp页面通过<s:text name="abc"><s:param><s:property value = username"/></s:param></s:text>。如有是Struts的控件,还可以通过制定key来获取多语系。

         2、在Action中通过getext(name,stiring[])来获取多余系,此种方式Action需继承ActionSupport。

         3、使用ongl表达式的形式。如通过requestScope.abc过去Action中的多语系等。

         4、使用<s:il8n name="propertiesname"><s:text name="abc"></s:text></s:il8n>获取指定属性档的多语系。

    实例:用户自行设定显示的语系。

 

你可能感兴趣的:(jsp,框架,xml,struts)