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

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

用.NET的System.Globalization來創(chuàng)建多語言應(yīng)用程序

2019-11-18 12:10:38
字體:
供稿:網(wǎng)友

  假如你計(jì)劃在你的應(yīng)用程序中包括對使用各種語言的用戶的支持,那么開發(fā)它的代價(jià)不會(huì)比開發(fā)只支持英語的版本要高很多。但是假如你需要翻新一個(gè)已有應(yīng)用程序,那么其代價(jià)和重新開發(fā)它差不了多少。
  
  .NET框架在它的System.Globalization名字空間中提供了對全球化(globalization,指得是支持多種語言)的支持,這樣你就可以在你的應(yīng)用程序中實(shí)現(xiàn)多語種支持了。這個(gè)名字空間包括了若干類,用來處理許多重要的全球化問題,如文明識別字符串比較、日期和時(shí)間格式、數(shù)字格式和支持陽歷和其它歷法的日歷。你首先需要知道的一個(gè)要害的類就是CultureInfo類。(譯者注:這里的文明即culture,主要指得是語種,也包括記錄時(shí)間日期的習(xí)慣等等)
  
  
  使用CultureInfo類
  
  CultureInfo類提供了文明參數(shù)選擇的支持以及可以在每個(gè)線程(per-thread)基礎(chǔ)上的控制。CurrentCulture合適的處數(shù)據(jù)和數(shù)字格式、字符串比較和大小寫。CurrentUICulture屬性由開發(fā)者來設(shè)置,CLR用它來為用戶界面裝載適當(dāng)?shù)馁Y源。你可以用CultureInfo類來為當(dāng)前線程設(shè)置CurrentCulture和CurrentUICulture,如下所示:
  Thread.CurrentThread.CurrentUICulture = new CultureInfo("ja")
  Thread.CurrentThread.CurrentCulture = new CultureInfo("ja-JP")
  
  還有一些API函數(shù)可以用CultureInfo類來控制輸出:
  Str = DateTime.Now.ToString(cultureInfo);
  
  所有與文明有關(guān)的(culture-aware)類都是默認(rèn)為文明敏感的(culture-sensitive),因此你只要簡單的設(shè)置當(dāng)前線程的文明就可以自動(dòng)給System.Globalization名字空間中的類(如CompareInfo、StringInfo和Calendar)以及核心系統(tǒng)類(如Resources、DataTime和String)提供針對特定文明的支持。
  
  為了可以支持更多的文明種數(shù),你還需要在你的應(yīng)用程序中全部使用符合統(tǒng)一字符編碼標(biāo)準(zhǔn)的字符串(Unicode string)。盡管.NET框架提供了對Unicode字符串的完全支持,不過你仍需要在編寫代碼的時(shí)候意識到所有的字符串都寫成Unicode格式。而且你還需要清楚許多依靠操作系統(tǒng)的操作(包括對文件系統(tǒng)的訪問和某些控制)并不支持Unicode格式的字符串,因此你還必須在執(zhí)行這些操作之前進(jìn)行顯式格式轉(zhuǎn)換。
  
  規(guī)劃本地化
  
  全球化將某些要害的數(shù)據(jù)以我們熟悉的國際通用(international)格式保存,但是假如你希望讓你的用戶得到專門為他們的文明而開發(fā)的應(yīng)用程序,你就需要本地化你的應(yīng)用程序。本地化包括了為特定文明創(chuàng)建特定資源然后再寫你的應(yīng)用程序,這樣它針對程序所設(shè)定或者檢測出來的某種文明而裝載合適的資源。讓我們具體看看資源模型。
  資源模型
  
  
  .NET框架的資源模型包括了對任何可串行化對象(serializable object)的支持,它還可以擴(kuò)展以支持新的格式。這就意味著除了提示符、標(biāo)簽以及其它用戶界面元素上的針對特定文明的字符串之外,你還可以把聲音、圖像和其它二進(jìn)制數(shù)據(jù)當(dāng)作資源使用。asp.net(包括.NET Compact Framwork,它在設(shè)備的運(yùn)行時(shí)間和內(nèi)存的大小上有限制)和Windows Form支持該資源模型。
  
  為了本地化應(yīng)用程序,你需要識別特定文明資源(你需要用它們來展開程序),然后把它們放置到一個(gè)資源文件中。簡單的應(yīng)用程序只需要字符串資源(字符串中保存“名字——值”對),你可以創(chuàng)建特定文明的文本文件。盡管自己演示一番很有趣,但你應(yīng)該用微軟ResX格式來創(chuàng)建資源文件。Visual Studio中有一個(gè)工具支持創(chuàng)建.resx文件(它包括了用xml格式對資源的描述)和.resources文件(它包括了二進(jìn)制已編譯文件)。你即可以把這些文件隨同你的程序一同發(fā)布,也可以把它們編譯到一個(gè)附屬匯編(satellite assembly)中去。
  
  在命名和保存你的資源文件時(shí),你應(yīng)該保持一致性。微軟建議在命名.resources文件時(shí),文件名應(yīng)該嵌入文明名(例如,..resources),一個(gè)資源文件對應(yīng)于你支持的一種文明。附屬資源匯編應(yīng)該以項(xiàng)目名稱命名(如,.resources.dll),然后把它們放到不同的子目錄下(每個(gè)子目錄對應(yīng)一種文明)。
  
  
  
  在運(yùn)行時(shí)使用資源文件
  
  一旦創(chuàng)立了資源文件,你就可以用資源治理器(resource manager)來在運(yùn)行時(shí)載入字符串和對象。資源即可以根據(jù)CurrentThread中的CurrentUICulture設(shè)置來載入(例如:RM.GetObject("Button1.Cursor")),你也可以在載入某個(gè)資源時(shí)指明文明(例如:RM.GetString("mystring", new CultureInfo("en-NZ"))。
  
  ASP.NET、.NET Compact Framework以及Windows Forms應(yīng)用程序中都有資源治理器。而且Windows Forms引擎提供了額外的本地化支持。每個(gè)form都有一個(gè)可以設(shè)置的本地化屬性。當(dāng)設(shè)置為“真”時(shí),項(xiàng)目系統(tǒng)會(huì)自動(dòng)跟蹤form的不同語言版本并把不同語言的form編譯到附屬匯編中去。
  
  只要你在你的原設(shè)計(jì)中考慮到本地化,那么建立international應(yīng)用程序并不建立支持單一文明的應(yīng)用程序難很多。在建議一個(gè)假定只支持英語用戶界面的應(yīng)用程序之前,.NET體系應(yīng)該詢問針對其它文明所期望提供支持的特定問題。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西乌| 怀来县| 宁海县| 惠东县| 江孜县| 余庆县| 谷城县| 彭山县| 府谷县| 麟游县| 昌平区| 花垣县| 仪陇县| 桦甸市| 涿鹿县| 灵川县| 朔州市| 永春县| 冀州市| 尚义县| 贵溪市| 三原县| 屯留县| 高雄县| 清河县| 内丘县| 泰宁县| 抚松县| 芒康县| 马龙县| 广河县| 花垣县| 井陉县| 曲靖市| 万山特区| 南昌市| 桐城市| 桃源县| 会泽县| 仁化县| 阿城市|