程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA編程入門知識 >> J2SE 6 在國際化方面的增強

J2SE 6 在國際化方面的增強

編輯:JAVA編程入門知識

    對國際化和本地化的支持是Java 標准版一個優點。 Java SE 6 一如既往地為那些注重本地化資源訪問和操作的應用程序開發者提供支持。Java SE 6在以下幾方面為本地化作了加強: .資源的訪問和控制
  .針對本地化的服務
    .歸一化文本
    .國際域名
   .日本國的日歷
    .新增locales

    資源訪問和控制
  ----------------
      編程人員用 java.util.ResourceBundle 類中提供的方法來為應用程序提供本地化資源。使用這個類中的靜態方法 getBundle 來定位以及裝載本地化資源,調用後得到ResourceBundle 的實例,那麼這個實例就表征了要被使用的本地化了的文本,圖片以及其他針對本地化的資源。locale 是由語言和地理區域的不同而形成的文化標志。

      盡管在缺省方式下,定位和裝載資源綁定已經為我們做了很多工作,Java SE 6 版本裡還提供緩存以及讓編程人員能對本地化資源進行更好地操縱。我們仍然使用 ResourceBundle類獲取本地化的資源,但是Java SE 6 新增加的功能讓編程人員能更靈活地來為應用程序
  的本地化資源內容決定如何存儲以及怎樣存儲。

      Java SE 6 先前的版本中,編程人員通常是用屬性文件(properies)和 ListResourceBundle的一個子類來存儲本地化資源。現在,編程人員可以為資源文件指定不同的格式了。舉例來說,使用基於 XML 格式的資源文件,編程人員也可能改動本地化資源文件的缺省命名規范,像這樣的特定是 ResourceBundle.Control 類來做工作。

      ResourceBundle.Control 類負責資源裝載過程中的主要步驟,每個步驟對應類中的一個獨立的方法。通過覆蓋這些方法來定制策略,以期對資源實現非凡定位,裝載和緩存。Control類裡定義的方法是實現現有的缺省策略,所以子類化來實現特定的功能。在Control的子類裡的 getBundle 方法裡定制你自己的功能,甚至能自己決定如何讓應用程序找到以及怎樣使用本地化資源。

      當然可以直接使用缺省的 Control類而不是非得去實現自定義的 Control類。缺省的 Control類裡的方法是為編程人員提供了缺省的功能實現,下面的代碼給出的是使用Control類裡缺省的功能
  Locale targetLocale = new Locale("fr", "FR"); // French language, French region
  ResourceBundle myResources = getBundle("com.sun.demo.intl.AppResource", targetLocale);

      假如,你正在使用以 en_US 為缺省local的環境,那麼 Control 對象在默認情況下就會搜索如下列出的那些本地化的 AppResource 名稱:
  com.sun.demo.intl.AppResource_fr_FR
  com.sun.demo.intl.AppResource_fr
  com.sun.demo.intl.AppResource_en_US
  com.sun.demo.intl.AppResource_en
  com.sun.demo.intl.AppResource

      對於以上列出的每個“綁定”名稱,Control默認地會去搜索兩種實現格式:一種是 ResourceBundle的子類 (.class 文件格式);另一種是 PropertyResulrceBundle 的屬性文件(.properties 文件格式)。假如能找到這兩種格式的文件之一,那麼就能知道 “綁定”的鏈級關系,從而得到 ResourceBundle的實例。“綁定名”也是以本地化專用的後綴名來區分,比如,fr_FR, fr 以及 en_US,這就是使用相同的本地化“基准名”再配上用於區分具體“綁定”對象的名。此外,AppResource 的缺省行為是會為“綁定”(bundles)進行緩存的,也就是說,即使在對同一個“綁定”(bundle)反復地調用getBundle 方法也只是得到被緩存過了的資源。在JAVA平台的文檔裡具體講述了getBundle 方法的行為方式(http://java.sun.com/javase/6/docs/api/java/util/ResourceBundle.html#getBundle%28java.lang.String,java.util.Locale,java.lang.ClassLoader,java.util.ResourceBundle.Control%29)

      除了缺省的方式外,也許會用到不同於缺省行為的“綁定”裝載的方式。接下來就來說說在哪些場景下裝載綁定是不同於缺省方式的,以下就列寫這些場景:

      用屬性文件(properties),而不是用 class 綁定把資源配置存放到與 local 對應的文件目錄中在經過一段時間後似的緩存資源失效

    僅搜索 Properties 文件
  
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved