国际化即可根据客户端请求来自不同国家/地区、语言的不同而显示不同的界面。在我们公司,我们将这个国际化叫做多语系显示。Java提供了国际化的支持。Java的国际化主要运用了两个类别ResourceBundle和MessageFormat。ResourceBundle主要是通过它根据国家和地区找相应的properties,并从中取出需显示的文字。具体实现方式如下所示:
值得注意的是,相应的properties文档需通过将属性档转为unicode的形式。转换方式为在命令行运行一下命令:
然后再改成相同的名字即可。
MessageFormat的主要作用是如果通过bundle.getString("msg")抓的显示讯息有占位符,则通过MessageFormat.format(stining [])将占位符填充相应的讯息。
Struts2的国际化支持就是Base在Java的国际化支持上的,经过Struts2框架的封装,使得我们使用国际化就更方便了。Struts2默认的属性名称为messageResource。如果想改属性名字,可在struts.xml里面进行谁定。
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>获取指定属性档的多语系。
实例:用户自行设定显示的语系。