2.7.1 定义国际化资源文件
Struts 2的程序国际化支持建立在Java程序国际化的基础之上,关于Java程序国际化笔者将在第7章进行简要介绍。此处不会详细介绍,但我们要明白一个概念:程序国际化的思想非常简单。其主要思想是:程序界面中需要输出国际化信息的地方,我们不要在页面中直接输出信息,而是输出一个key值,该key值在不同语言环境下对应不同的字符串。当程序需要显示时,程序将根据不同的语言环境,加载该key对应该语言环境下的字符串——这样就可以完成程序的国际化。
图2.8显示了程序国际化示意图。
图2.8 程序国际化示意图
从图2.8可以看出,如果需要程序支持更多的语言环境,只需要增加更多的语言资源文件即可。
为了给本应用增加程序国际化支持(支持英文和中文),应该提供两份语言资源文件。下面是本应用所使用的中文语言环境下资源文件的代码。
程序清单:codes\02\2.7\struts2qsi18n\WEB-INF\src\messageResource.properties
loginPage=登录页面 errorPage=错误页面 succPage=成功页面 failTip=对不起,您不能登录! succTip=欢迎,{0},您已经登录! viewLink=查看作者李刚已出版的图书 bookPageTitle=作者李刚已出版的图书 bookName=书名: user=用户名 pass=密 码 login=登录
因为该资源文件中包含了非西欧字符,因此必须使用 native2ascii 命令来处理该文件。将上面文件保存在WEB-INF/classes路径下,文件名为“messageResource.properties”。保存该文件后,必须使用native2ascii命令来处理该文件,处理该文件的命令格式为:
native2ascii messageResource.properties messageResource_zh_CN.properties
上面命令将包含非西欧字符的资源文件处理成标准的 ASCII 格式,处理完成后生成一份新文件:messageResource_zh_CN.properties文件。这个文件的文件名符合资源文件的命名格式,当请求来自简体中文环境时,系统自动使用这份资源文件。
资源文件的文件名命名格式为:
basename_语言代码_国家代码.properties
注意
对于包含非西欧字符的资源文件,一定要使用 native2ascii 命令来处理该文件,否则将看到一堆乱码。
除此之外,还应该提供如下英文语言环境的资源文件。
程序清单:codes\02\2.7\struts2qsi18n\WEB-INF\src\messageResource_en_US.properties
loginPage=Login Page errorPage=Error Page succPage=Welcome Page failTip=Sorry,you can't log in! succTip=Welcome,{0},you has logged in! viewLink=View LiGang\'s Books bookPageTitle=LiGang\'s Books bookName=BookName: user=User Name pass=User Pass login=Login
将上面的资源文件保存到 WEB-INF/classes 路径下,文件名为“messageResource_en_US.properties”。当请求来自美国时,系统自动使用这份资源文件。