Java国际化(internationalization)案例学习

  国际化定义:国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有的与语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。 国际化可以轻松地本地化或将目标应用翻译成不同的语言 ,并可以实现一次处理多个语言环境,使得应用程序支持更多的语言环境,跨国际应用时使于维护。在应用程序中,实现方式主要是采取读取资源属性文件(properties)的方式实现,然后根据.properties文件的名称信息(本地化信息),匹配当前系统的国别语言信息(也可以程序指定),然后获取相应的properties文件的内容。 properties文件的命名规范是: 自定义名_语言代码_国别代码.properties, 默认文件名直接写为:自定义名.properties 如ZMC_zh_CN.properties,ZMC_en_US.properties,ZMC.properties等,国际化文件根据自己应用程序决定采取一个或多个…… 当在中文操作系统下,如果ZMC_zh_CN.properties、ZMC.properties两个文件都存在,则优先会使用ZMC_zh_CN.properties,当ZMC_zh_CN.properties不存在时候,会使用默认的ZMC.properties。 没有提供语言和地区的资源文件是系统默认的资源文件。 资源文件都必须是ISO-8859-1编码,因此,对于所有非西方语系的处理,都必须先将之转换为Java Unicode Escape格式。转换方法是通过JDK自带的工具native2ascii. 下面进行实践说明,由于时间关系且只为学习入门了解,写一十分简单的程序加以说明。 1.创建一个Web Project应用。 2.在src目录下创建国际化资源文件: ApplicationResources_zh_CN.properties文件内容: msg.hello=\u4F60\u597D\u4E16\u754C ApplicationResources_en_US.properties文件内容: msg.hello=Hello World ApplicationResources_zh_CN.properties文件内容: msg.hello=Hello World 3.在web.xml文件中加入信息: javax.servlet.jsp.jstl.fmt.localizationContext ApplicationResources 该文件只是指明国际化文件的基本名称,解析类由jstl包提供,若对ZMC*.properties文件进行配置,则的值为ZMC。所以该web.xml文件的信息最后为:

 

javax.servlet.jsp.jstl.fmt.localizationContext ApplicationResources index.jsp 4.创建实例Class: package i18n; import java.util.Locale; import java.util.ResourceBundle; public class I18nTest { /** * 国际化Demo * * @author liuchunhe */ public static void main(String[] args) { try { //获取中问环境 Locale locale1 = new Locale("zh", "CN"); //通过web.xml中的基名信息取得ResourceBundle对象 ResourceBundle resourceBundle1 = ResourceBundle.getBundle("ApplicationResources", locale1); //从文件中取得信息 System.out.println("中国大陆环境:"+resourceBundle1.getString("msg.hello")); //美国 Locale locale2 = new Locale("en", "US"); ResourceBundle resourceBundle2 = ResourceBundle.getBundle("ApplicationResources", locale2); System.out.println("美国环境:"+resourceBundle2.getString("msg.hello")); //系统默认 ResourceBundle resourceBundle3 = ResourceBundle.getBundle("ApplicationResources", Locale.getDefault()); System.out.println("系统默认环境:"+resourceBundle3.getString("msg.hello")); } catch (Exception e) { System.out.println("运行出现异常……"); } } } 5.Locale 对象表示了特定的地理、政治和文化地区。需要 Locale 来执行其任务的操作称为语言环境敏感的操作,它使用 Locale 为用户量身定制信息。例如,显示一个数值就是语言环境敏感的操作,应该根据用户的国家、地区或文化的风俗/传统来格式化该数值。 使用此类中的构造方法来创建 Locale: Locale(String language) Locale(String language, String country) Locale(String language, String country, String variant) 创建完 Locale 后,就可以查询有关其自身的信息。使用 getCountry 可获取 ISO 国家代码,使用 getLanguage 则获取 ISO 语言代码。 6.java.util.ResourceBundle说明请读者查看java提供的API文档。

posted on 2012-03-28 23:07  追梦^_^纯  阅读(1424)  评论(0编辑  收藏  举报