分类: Java
2011-12-22 11:41:48
国际化英文单词为:Internationalization,又称I18N,I为因为单词的第一个字母,18为这个单词的长度,而N代表这个单词的最后一个字母。国际化又称本地化(Localization,L10N)。
Java国际化主要通过如下3个类完成
Local类对象的使用和获得有以下四种方式
1 通过构建函数创建Local对象
第一个参数是语言代码 两个小写字母 遵从ISO-639规范
第二个参数是国家代码 两个大写字母 遵从ISO-639规范
2 使用默认定义的Local对象
Local类提供了几个静态常量 他们代表一些常用的Local实例
例如 要获得Japanese Local实例 可以用下面两种方法之一
3 取得操作系统的默认Local对象
Java虚拟机在启动时会查询操作系统 为运行环境设置默认的Local Java程序可以调用java.util.Local类的静态方法getLocal()来获得默认的Local
4 在web应用中访问客户端的Local对象
在创建Local对象时 应该把语言和国家代码两个参数传递给构造方法 对于Web应用程序 通常不必创建自己的Local实例 因为Web容器会负责创建所需的Local实例 在应用程序中 可以调用HttpServletRequest对象的以下两个方法 来取得包含Web客户的Local信息的Local实例
这两个方法都会访问HTTP请求中的Accept-Language头信息。 getLocal()方法返回客户优先使用的Local 即客户端浏览器设置的第一个语言选项。getLocals()返回一个Enumeration集合对象 它包含了按优先级顺序排列的所有Local对象 即客户端浏览器设置的语言列表 如果客户没有配置任何的Local getLocal()方法将返回默认的Local
ResourceBundle类
java.util.ResourceBundle类提供存放和管理与Local相关的资源的功能。这些资源包括文本域或者按钮的Lable 状态信息 图片名 错误信息和网页标题等
Struts没有直接使用Java提供的ResourceBundle类 在Struts框架中提供了两个类
org.apache.struts.util.MessageResources
org.apache.struts.util.PropertyMessageResources
这两个类具有和ResourceBundle相似的功能 其中PropertyMessageResource是MessageResources类的子类