一.国际化的概念
1.1 什么是国际化
Struts国际化是建立在java国际化的基础上,一样也是通过提供不同国家/语言环境的消息资源,然后通过ResourcreBundle加载指定的Locale对应的资源文件,再取得该资源文件中指定key对应的消息—整个过程与java国际化完全相同。
1.2 什么需要国际化
- 程序:需要国际化
- 数据:不需要国际化,输入什么就是什么
比如:
用户注册的表单,有用户名,密码这5个汉字,在zh_CN语言环境,显示的就是用户名和密码。但是在en_US语言环境,显示的就应该是username和password。这就是程序。
用户名输入的是【张三】,密码输入的是【test】,那无论在什么语言环境都应该是是【张三】和【test】。这就是数据。
1.3 固定文本的国际化
例如:消息提示,错误提示和菜单,导航栏等等固定文本
1.3.1 创建消息资源包
一个资源包由多个文件组成,这些文件名都有命名规范:主要文件名语言代码国家代码.properties。 语言代码:由iso规定的。国家代码:有iso规定的
当文件只有主要文件名.properties时,表明它是默认资源包。浏览器会根据不同的语言环境找对应语言环境的资源包,当没有时,找默认的。
每个资源包的内容都由相同的key和对应语言环境的value组成。
比如:
message_zh_CN.properties message_zh_HK.properties message_en_US.properties
1.3.2 读取资源包文件
Action的国际化
资源文件:
jsp页面国际化
目前不用这种方式
使用jstl库
二.Struts2 中使用国际化
2.1 Struts2使用国际化的前提
首先,我们要知道,在Struts2中,所有的消息提示都是基于国际化的。其次,要想在Struts2中使用国际化,动作类必须继承ActionSupport类
2.2 Struts2使用国际化
2.2.1 配置资源包
全局资源包的配置
包范围资源包的配置
资源包名称命名规范:package_语言代码_国家代码.properties(固定的)。以此种命名方式的资源包能被该包及其子包中的动作类访问。
优先级:高于全局消息资源包- 局部消息资源包(只为动作类服务)
资源包名称命名规范:动作类名称语言代码国家代码.properties。以此种命名方式的资源包,只为动作类服务。
优先级最高(就近原则)。
Struts2中资源包的搜索顺序:
2.2.2 读取资源包内容
- 动作类中的读取方式(实际开发中不用)
- 在页面中读取资源包内容
直接访问jsp
通过动作类访问jsp
自由指定读取资源包