熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

開發一個多種語言版本的C#程序

2013-11-13 10:12:07  來源: .NET編程 
    在C#中有多種使用資源文件的方法能夠很方便地開發全球通用的應用程序本文通過一個簡單的小例子來講解在C#中如何利用資源文件快速開發一個多種語言版本的程序本例中只有一個窗體三個控件能夠根據用戶的設置以中文或英文界面運行開發環境是Windows ProfessionalMicrosoft Visual StudioNET 具體開發步驟如下

  新建項目

  啟動Microsoft Visual Studio NET新建一個C#項目MyApp本例工程存放於F:\Csharp\MyApp

  添加控件

  在Form 窗體上添加三個控件(見圖)主菜單MainMenu標簽Label和按鈕ButtonLabel和Button控件的屬性均采用缺省設置MainMenu控件中添加三個菜單項menuItemmenuItemmenuItemText屬性分別設為語言中文EnglishmenuItem
menuItem 的RadioCheck屬性設為True


  創建配置文件 

  在項目中添加一個文本文件MyAppConfigini保存當前程序的語言版本設置該文件中只有一行內容如果是English則表示程序為英文版如果是Chinese則為中文版這裡暫且保存為English

  創建資源文件

  NET中的資源文件有三種: 文本(txt )文件XML 格式的Resx 文件和Resources 文件文本文件只能包含形如 名稱= 值格式的字符串資源Resx文件和Resources 文件中不僅能保存字符串資源還能保存圖像等可序列化的持久對象資源但是只有resources 文件格式的資源文件才能被嵌入到運行庫可執行文件中或被編譯為附屬程序集利用Visual Studio NET 中自帶的資源文件生成器
(Resgenexe)可以將txt文件和Resx文件轉換為resources 文件格式本例中只用到了字符串資源所以在項目中添加兩個文本文件Resource_zhtxt 和Reource_entxt

  Reource_entxt 文件中的內容

menuItem_Name=Language
button_Name=Exit
label_Text=This is English version!

  Resource_zhtxt 文件中的內容

menuItem_Name=語言
button_Name=退出
label_Text=這是中文版!

  需要注意的是Resource_zhtxt文件中含有漢字必須以UTF編碼保存在Visual Studio NET集成開發環境中可以先點擊文件菜單中的高級保存選項選中UTF編碼格式再保存文件

  然後點擊程序菜單中的Visual Studio NET命令提示菜單進入DOS方式輸入以下兩行命令生成程序中能夠訪問的資源文件MyAppresources和MyAppzhCNresources英文資源文件MyAppresources 作為默認的後備資源文件MyAppzhCNresources
是中文資源文件文件名中的MyApp是資源文件的根名稱必須與後備資源文件的根名稱相同zhCN指定資源文件的區域性

F:\Csharp\MyApp>resgen Resource_entxtMyAppresources
F:\Csharp\MyApp>resgen Resource_zhtxtMyAppzhCN
resources

  修改代碼

  在代碼的開頭添加需引用的命名空間

using SystemGlobalization;
using SystemResources;
using SystemThreading;
using SystemIO;

  在Form 中定義兩個字段ci和rmCultureInfo對象ci用來指定讀取資源文件時的區域性ResourceManager對象rm用來在指定的資源文件中讀取資源

CultureInfo ci = new CultureInfo();
Res ource Manag er rm = Res ource Manag erCreateFileBasedResourceManager(MyAPP null);

  在Form中添加一個方法ReadResources用來讀取相應資源文件中的字符串資源來修改界面菜單標簽和按鈕上文字顯示

private void ReadResources(){
 nuItemText = rmGetString(menuItem_Textci) ;
 thisbuttonText = rmGetString(button_Textci);
 thislabelText = rmGetString(label_Textci);
 thisRefresh();
}

  在Form 的Load事件處理過程中根據配置文件的內容調用ReadResources方法讀取資源顯示程序界面

private void Form_Load() {
 StreamReader sr=FileOpenText(MyAppConfigini);
 if (srReadLine()==Chinese){
  ci = new CultureInfo(zhCN);
  menuItemChecked=true; }
 else {
  ci = new CultureInfo(en);
  menuItemChecked=true;
 }
 srClose();
 thisReadResources();
}

  在Form 中添加一個方法SaveConfig用來修改配置文件在menuItem 和menuItem 的Click事件過程中調用S a v e C o n f i g 方法分別將字符串ChineseEnglish 寫入配置文件並調用ReadResources方法來更新界面

private void SaveConfig(string p_Language){
 StreamWriter sw=FileCreateText(MyAppConfigini);
 swWriteLine(p_Language);
 swClose();
}
private void menuItem_Click(){
 thisSaveConfig(Chinese);ci = new CultureInfo(zhCN);
 menuItemChecked=true; menuItemChecked=false;
 thisReadResources();
}
private void menuItem_Click(){
 thisSaveConfig(English);
 ci = new CultureInfo(en);
 menuItemChecked=false;
 menuItemChecked=true;
 thisReadResources();
}

  在按鈕button的Click事件過程中關閉窗體結束運行程序

private void button_Click()
{
 thisClose();
}

  編譯並運行程序

  如果手工編譯源程序只需點擊Visual StudioNET 命令提示菜單進入DOS方式輸入下面命令即可生成二進制的可執行文件MyAppexe然後輸入MyApp就能運行程序

F:\Csharp\MyApp>csc /out:MyAppexe formcs

  如果是在Microsoft Visual Studio NET 集成開發環境中運行程序將自動進行編譯並將編譯的二進制可執行文件放到bin\Debug子目錄下此時需要注意的是要將MyAppConfiginiMyAppresources 和MyAppzhCNresources 這三個文件也復制到bin\Debug\子目錄下程序才能正常運行

  程序第一次運行時是英文界面(見圖)點擊菜單中文將變成中文界面(見圖)單擊按鈕Exit退出程序後再次運行程序時直接顯示中文界面





From:http://tw.wingwit.com/Article/program/net/201311/12877.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.