程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> 如何開發一個多種語言版本的C#程序

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

編輯:C#基礎知識

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

  一、新建項目

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

  二、添加控件

  在Form1 窗體上添加三個控件(見圖1):主菜單MainMenu、標簽Label1和按鈕Button1。Label1和Button1控件的屬性均采用缺省設置。MainMenu控件中添加三個菜單項menuItem1、menuItem2、menuItem3。Text屬性分別設為“語言”、“中文”和“English”。menuItem2、

  menuItem3 的RadioCheck屬性設為True。

  圖 1

  三、創建配置文件 

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

  四、創建資源文件

  .NET中的資源文件有三種: 文本(.txt )文件、XML 格式的.Resx 文件和.Resources 文件。文本文件只能包含形如“ 名稱= 值”格式的字符串資源。.Resx文件和.Resources 文件中不僅能保存字符串資源,還能保存圖像等可序列化的持久對象資源。但是只有.resources 文件格式的資源文件才能被嵌入到運行庫可執行文件中,或被編譯為附屬程序集。利用Visual Studio .NET 中自帶的資源文件生成器

  (Resgen.exe),可以將.txt文件和.Resx文件轉換為.resources 文件格式。本例中只用到了字符串資源,所以在項目中添加兩個文本文件Resource_zh.txt 和Reource_en.txt。

  Reource_en.txt 文件中的內容:

  

menuItem1_Name=Language
button1_Name=Exit
label1_Text=This is English version! 

  Resource_zh.txt 文件中的內容:

  

menuItem1_Name=語言
button1_Name=退出
label1_Text=這是中文版! 

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

  然後,點擊“程序”菜單中的“Visual Studio .NET命令提示”菜單,進入DOS方式,輸入以下兩行命令,生成程序中能夠訪問的資源文件MyApp.resources和MyApp.zh-CN.resources。英文資源文件MyApp.resources 作為默認的後備資源文件。MyApp.zh-CN.resources

  是中文資源文件,文件名中的“MyApp”是資源文件的根名稱,必須與後備資源文件的根名稱相同,“zh-CN”指定資源文件的區域性。

  F:\Csharp\MyApp>resgen Resource_en.txt,MyApp.resources

  F:\Csharp\MyApp>resgen Resource_zh.txt,MyApp.zh-CN.

  resources

  五、修改代碼

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

  

using System.Globalization;
using System.Resources;
using System.Threading;
using System.IO; 

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

  

CultureInfo ci = new CultureInfo("");
Res ource Manag er rm = Res ource Manag er.CreateFileBasedResourceManager("MyAPP", ".", null);

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

  

private void ReadResources(){
 this.menuItem1.Text = rm.GetString("menuItem1_Text",ci) ;
 this.button1.Text = rm.GetString("button1_Text",ci);
 this.label1.Text = rm.GetString("label1_Text",ci);
 this.Refresh();
} 

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

  

private void Form1_Load(...) {
 StreamReader sr=File.OpenText("MyAppConfig.ini");
 if (sr.ReadLine()=="Chinese"){
  ci = new CultureInfo("zh-CN");
  menuItem2.Checked=true; }
 else {
  ci = new CultureInfo("en");
  menuItem3.Checked=true;
 }
 sr.Close();
 this.ReadResources();
} 

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