1 struts2支持国际化的原理
struts2的程序国际化支持建立在java程序国际化的基础之上,
原理思想: 程序界面中需要输出国际化信息的地方,我们不要在页面上直接去输出信息,而是输出一个key值,该key值在不同语言环境下对应不同的字符串。当程序需要显示的时候,程序将根据不同的语言环境,加载该key对应该语言环境下的字符串--这样就可以完成程序的国际化。如果需要程序支持更多的语言环境,只需要增加更多语言资源文件即可。资源文件是key-value对,每个资源文件中的key是不变的,但value则随不同国家\语言变化。
2 资源文件的文件名命名格式
资源文件的命名可以有如下3种形式
baseName_language_country.properties
baseName_language.properties
baseName.properties
其中baseName是资源文件的基本名,用户可以自由定义。而language和country都不可随意变化,必须是java所支持的语言和国家。
如果需要获取java所支持的语言和国家,可调用Locale类的getAvailableLocale方法获取,该方法返回一个Locale数组,该数组里包含了Java所支持的语言和国家。
如中文如下:
messageResouce_zh_CN.properties
美国英文如下:
messageResouce_en_US.properties
3 如何加载国际化资源文件
struts2提供了很多加载国际化资源文件的方式,最简单,最常用的就是加载全局的国际化资源文件,加载全局的国际化资源文件的方式通过配置常量来实现。不管在struts.xml文件中配置常量,还是在struts.properties文件中配置常量,只需要配置struts.custom.i18n.resources常量即可。指定全局国际化资源文件的baseName.
struts.properties 这个文件不是必须的。
因为 struts.xml文件中 有 <constant> 这个节点, 你可以把你想写在struts.properties的自定义配置写在 struts.xml文件当中。
struts.properties文件通常放在Web应用的WEB-INF/classes路径下. 实际上, 只要将该文件放在Web应用的CLASSPATH路径下, Struts 2框架就可以加载该文件.
//我定义struts2 的资源文件的baseName是messageResource
struts.custom.i18n.resources=messageResource
注意:
以上是资源文件默认加载WEB/classes下的资源文件,如果将改资源文件保存在WEB-INF/classes的子目录下,例如 保存在
WEB-INF/classes/liweiguo路径下,则需要修改struts.properties