熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

用.NET的System.Globalization來創建多語言應用程序

2013-11-23 19:01:55  來源: Java核心技術 

  如果你計劃在你的應用程序中包括對使用各種語言的用戶的支持那麼開發它的代價不會比開發只支持英語的版本要高很多但是如果你需要翻新一個已有應用程序那麼其代價和重新開發它差不了多少
  
  NET框架在它的SystemGlobalization名字空間中提供了對全球化(globalization指得是支持多種語言)的支持這樣你就可以在你的應用程序中實現多語種支持了這個名字空間包括了若干類用來處理許多重要的全球化問題如文明識別字符串比較日期和時間格式數字格式和支持陽歷和其它歷法的日歷你首先需要知道的一個關鍵的類就是CultureInfo類(譯者注這裡的文明即culture主要指得是語種也包括記錄時間日期的習慣等等)
  
  
  使用CultureInfo類
  
  CultureInfo類提供了文明參數選擇的支持以及可以在每個線程(perthread)基礎上的控制CurrentCulture合適的處數據和數字格式字符串比較和大小寫CurrentUICulture屬性由開發者來設置CLR用它來為用戶界面裝載適當的資源你可以用CultureInfo類來為當前線程設置CurrentCulture和CurrentUICulture如下所示
  ThreadCurrentThreadCurrentUICulture = new CultureInfo(ja)
  ThreadCurrentThreadCurrentCulture = new CultureInfo(jaJP)
  
  還有一些API函數可以用CultureInfo類來控制輸出
  Str = DateTimeNowToString(cultureInfo);
  
  所有與文明有關的(cultureaware)類都是默認為文明敏感的(culturesensitive)因此你只要簡單的設置當前線程的文明就可以自動給SystemGlobalization名字空間中的類(如CompareInfoStringInfo和Calendar)以及核心系統類(如ResourcesDataTime和String)提供針對特定文明的支持
  
  為了可以支持更多的文明種數你還需要在你的應用程序中全部使用符合統一字符編碼標准的字符串(Unicode string)盡管NET框架提供了對Unicode字符串的完全支持不過你仍需要在編寫代碼的時候意識到所有的字符串都寫成Unicode格式而且你還需要清楚許多依靠操作系統的操作(包括對文件系統的訪問和某些控制)並不支持Unicode格式的字符串因此你還必須在執行這些操作之前進行顯式格式轉換
  
  規劃本地化
  
  全球化將某些關鍵的數據以我們熟悉的國際通用(international)格式保存但是如果你希望讓你的用戶得到專門為他們的文明而開發的應用程序你就需要本地化你的應用程序本地化包括了為特定文明創建特定資源然後再寫你的應用程序這樣它針對程序所設定或者檢測出來的某種文明而裝載合適的資源讓我們詳細看看資源模型
  資源模型
  
  
  NET框架的資源模型包括了對任何可串行化對象(serializable object)的支持它還可以擴展以支持新的格式這就意味著除了提示符標簽以及其它用戶界面元素上的針對特定文明的字符串之外你還可以把聲音圖像和其它二進制數據當作資源使用ASPNET(包括NET Compact Framwork它在設備的運行時間和內存的大小上有限制)和Windows Form支持該資源模型
  
  為了本地化應用程序你需要識別特定文明資源(你需要用它們來展開程序)然後把它們放置到一個資源文件中簡單的應用程序只需要字符串資源(字符串中保存名字——值對)你可以創建特定文明的文本文件盡管自己演示一番很有趣但你應該用微軟ResX格式來創建資源文件Visual Studio中有一個工具支持創建resx文件(它包括了用XML格式對資源的描述)和resources文件(它包括了二進制已編譯文件)你即可以把這些文件隨同你的程序一同發布也可以把它們編譯到一個附屬匯編(satellite assembly)中去
  
  在命名和保存你的資源文件時你應該保持一致性微軟建議在命名resources文件時文件名應該嵌入文明名(例如resources)一個資源文件對應於你支持的一種文明附屬資源匯編應該以項目名稱命名(如resourcesdll)然後把它們放到不同的子目錄下(每個子目錄對應一種文明)
  
  
  
  在運行時使用資源文件
  
  一旦創立了資源文件你就可以用資源管理器(resource manager)來在運行時載入字符串和對象資源即可以根據CurrentThread中的CurrentUICulture設置來載入(例如RMGetObject(ButtonCursor))你也可以在載入某個資源時指明文明(例如RMGetString(mystring new CultureInfo(enNZ))
  
  ASPNETNET Compact Framework以及Windows Forms應用程序中都有資源管理器而且Windows Forms引擎提供了額外的本地化支持每個form都有一個可以設置的本地化屬性當設置為項目系統會自動跟蹤form的不同語言版本並把不同語言的form編譯到附屬匯編中去
  
  只要你在你的原設計中考慮到本地化那麼建立international應用程序並不建立支持單一文明的應用程序難很多在建議一個假定只支持英語用戶界面的應用程序之前NET體系應該詢問針對其它文明所期望提供支持的特定問題
  
  
  
  
  

From:http://tw.wingwit.com/Article/program/Java/hx/201311/26165.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.