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文件中加入信息:
 <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說明
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章