`

Java国际化(internationalization)案例学习

    博客分类:
  • java
 
阅读更多
 国际化定义:国际化(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文件中加入信息:
<context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
  <param-value>ApplicationResources</param-value>
</context-param>
    该文件只是指明国际化文件的基本名称,解析类由jstl包提供,若对ZMC*.properties文件进行配置,则<param-value />的值为ZMC。所以该web.xml文件的信息最后为:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<!-- Define the basename for a resource bundle for I18N -->
<context-param>
  <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
  <param-value>ApplicationResources</param-value>
</context-param>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
    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.import java.util.ResourceBundle说明
本文出自 “追梦纯” 博客,请务必保留此出处http://zmcjava.blog.51cto.com/4714945/819897
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics