国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

用Java解決國際化問題

2019-11-18 13:37:22
字體:
來源:轉載
供稿:網友

  假如應用系統是面向多種語言的,編程時就不得不設法解決國際化問題,包括操作界面的風格問題、提示和幫助語言的版本問題、界面定制個性化問題等。
由于java語言具有平臺無關、可移植性好等優點,并且提供了強大的類庫,所以Java語言可以輔助我們解決上述問題。Java語言本身采用雙字節字符編碼,采用大漢字字符集,這就為解決國際化問題提供了很多方便。從設計角度來說,只要把程序中與語言和文化有關的部分分離出來,加上非凡處理,就可以部分解決國際化問題。在界面風格的定制方面,我們把可以參數化的元素,如字體、顏色等,存儲在數據庫里,以便為用戶提供友好的界面;假如某些部分包含無法參數化的元素,那么我們可能不得不分別設計,通過有針對性的編碼來解決具體問題。
Java類包
在用Java解決國際化問題的過程中,可能利用到的主要的類都是由java.util包提供的。該類包中相關的類有Locale、 ResourceBundle、ListResourceBundle、PRopertyResourceBundle等,其繼續關系如下圖所示。

其中各類提供的主要功能如下:
Locale:該類包含對主要地理區域的地域化特征的封裝。其特定對象表示某一特定的地理、政治或文化區域。通過設定Locale,我們可以為特定的國家或地區提供符合當地文化習慣的字體、符號、圖標和表達格式。例如,我們可以通過獲得特定Locale下的Calendar類的實例,顯示符合特定表達格式的日期。
ResourceBundle:該類是一個抽象類,需要通過靜態方法ResourceBundle.getBundle()指定具體實現類或屬性文件的基本名稱。基本名稱會協同指定的或默認的Locale類,決定具體調用的類或屬性文件的唯一名稱。例如:指定基本類或屬性文件名稱為TestBundle,而指定的Locale是CHINESE,那么最適合匹配的類名稱為TestBundle_zh_CN.class,而最佳匹配屬性文件名稱為 TestBundle_zh_CN.properties。按照Java Doc和相關文檔的要求,假如該類或屬性文件沒有找到,系統會查找近似匹配(主文件名依次為TestBundle_zh和TestBundle的類或屬性文件)。該類提供的getKeys()方法用于獲得所有成員的鍵名,并提供handleGetObject方法獲得指定鍵的對應元素。
ListResourceBundle:該類繼續ResourceBundle類,主要是增加了一些便于操作的成分,但還是抽象類。假如希望使用類的方式實現具體的ResourceBundle,一般情況下最好繼續這個類。
PropertyResourceBundle:該類也繼續ResourceBundle類,可以實例化。該類的行為特征如同java.util.properties類,可以從輸入流中獲得具體屬性對。
假如涉及日期和時間顯示等問題時,可以利用java.text包以及java.util包中的TimeZone、SimpleTimeZone和Calendar等類進行輔助處理。
參數化解決方法
在具體應用時,可以把具體國家或地區特征中可以參數化的部分放在經過非凡命名的屬性文件中,在確定具體的Locale后,通過PropertyResourceBundle類讀取相應的屬性文件,實現國際化特征。
使用PropertyResourceBundle類獲得當地版本的國際化信息,部分代碼如下:
  ……
  public static final String BASE_PROP_FILE =
“DISP”;
  public static final String SUFFIX =
“.properties”;
  locale = Locale.getDefault();
  String propFile = BASE_PROP_FILE + “_” + locale.toString()+ SUFFIX;
  ResourceBundle rb;
  try {
   File file = new File(propFile);
   if (file.exists()) {
   is = new FileInputStream(file);
   rb = new PropertyResourceBundle(is);
   if (rb == null) System.out.println(“No Resource”);
   }
  } catch (IOException ioe) {
   System.out.println(“Error open file named ” + propFile);
  }
  Enumeration e = rb.getKeys();
  while (e.hasMoreElements()){
   key = (String)e.nextElement();
   value = (String)rb.handleGetObject(key);
   System.out.println(“KEY: ” + key +
“/t/t Value: ” + value);
  }
  ……
  DISP_zh_TW.properties文件的具體內容如下:
  Key1=/u53ef/u4ee5
  Key2=/u64a4/u9500
等號后面是利用native2ascii程序轉化后的繁體漢字,假如不進行轉化,系統可能顯示亂碼。
處理提示和幫助
對于提示語言和幫助文件部分,可以把語言映射放在屬性文件或者ListResourceBundle類的子類中。下面程序是一個Servlet,它通過接受客戶端的選擇,把特定語言和字符版本的信息返回到客戶端。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高雄县| 察雅县| 江城| 沈阳市| 宕昌县| 大兴区| 大邑县| 金沙县| 蒙自县| 仪陇县| 桐城市| 牡丹江市| 凭祥市| 厦门市| 宣威市| 牟定县| 师宗县| 和平县| 镇康县| 南宁市| 台南市| 怀来县| 兴化市| 井陉县| 美姑县| 浠水县| 大新县| 土默特左旗| 正镶白旗| 四平市| 怀集县| 柳林县| 屏东县| 磐安县| 孝感市| 宁远县| 化州市| 南召县| 铜鼓县| 葫芦岛市| 海林市|