需要注意的是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();
}
5、在Form1 中添加一個方法SaveConfig,用來修改配置文件。在menuItem2 和menuItem3 的Click事件過程中調用S a v e C o n f i g 方法,分別將字符串“Chinese”、“English ”寫入配置文件,並調用ReadResources方法,來更新界面。
private void SaveConfig(string p_Language){
StreamWriter sw=File.CreateText("MyAppConfig.ini");
sw.WriteLine(p_Language);
sw.Close();
}
private void menuItem2_Click(...){
this.SaveConfig("Chinese");ci = new CultureInfo("zh-CN");
menuItem2.Checked=true; menuItem3.Checked=false;
this.ReadResources();
}
private void menuItem3_Click(...){
this.SaveConfig("English");
ci = new CultureInfo("en");
menuItem2.Checked=false;
menuItem3.Checked=true;
this.ReadResources();
}
6、在按鈕button1的Click事件過程中,關閉窗體,結束運行程序。
private void button1_Click(...)
{
this.Close();
}
六、編譯並運行程序
如果手工編譯源程序,只需點擊“Visual Studio.Net 命令提示”菜單,進入DOS方式,輸入下面命令,即可生成二進制的可執行文件MyApp.exe,然後輸入MyApp,就能運行程序。
F:\Csharp\MyApp>csc /out:MyApp.exe form1.cs
如果是在Microsoft Visual Studio .Net 集成開發環境中運行程序,將自動進行編譯,並將編譯的二進制可執行文件放到bin\Debug子目錄下。此時,需要注意的是要將MyAppConfig.ini、MyApp.resources 和MyApp.zh-CN.resources 這三個文件也復制到bin\Debug\子目錄下,程序才能正常運行。
程序第一次運行時,是英文界面(見圖2),點擊菜單“中文”,將變成中文界面(見圖3)。單擊按鈕“Exit”,退出程序後,再次運行程序時,直接顯示中文界面。
圖2
圖3