用c#建立支援多語言的應用程式
阿新 • • 發佈:2019-02-19
網際網路無國界,越來越多的應用程式必須面對全球使用者了,如何設計一個支援多國語言的應用程式呢?
在.net2.0 中,m$ 為我們提供了一種簡單方便的方法, 使用資原始檔
1.新建一個 Winform 應用程式, 新建一 Form ,名為 Form1,新增兩個按鈕 btnChinese, btnEnglish
2. 設定 Form1 的 Localizable 屬性為 true, 設定該屬性後,.net 將根據不同的語言,為應用程式生成不同的資原始檔
3.設定各個控制元件的文字(系統預設語言下)
4.更改 Form1 的 Language 屬性為想要支援的另一種語言,此例中我們選用 English
5.重新設定各個控制元件的文字
注:此時.net 將為 Form1 生成另一個資原始檔,在本例中名為 Form1.en.resx
6. 如果有其它的語言要設定,請重複第4,第5步
7.編寫程式碼
privatevoid btnChinese_Click(object sender, EventArgs e)
{
//更改當前執行緒的 CultureInfo
//zh-CN 為中文,更多的關於 Culture 的字串請查 MSDN
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
//對當前窗體應用更改後的資源
ApplyResource();
}
privatevoid btnEnglish_Click(object sender, EventArgs e)
{
//更改當前執行緒的 CultureInfo
//en 為英文,更多的關於 Culture 的字串請查 MSDN
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
//對當前窗體應用更改後的資源
ApplyResource();
}
/**////<summary>
/// 應用資源
/// ApplyResources 的第一個引數為要設定的控制元件
/// 第二個引數為在資原始檔中的ID,預設為控制元件的名稱
///</summary>
privatevoid ApplyResource()
{
System.ComponentModel.ComponentResourceManager res =new ComponentResourceManager(typeof(Form1));
foreach (Control ctl in Controls)
{
res.ApplyResources(ctl, ctl.Name);
}
}
在.net2.0 中,m$ 為我們提供了一種簡單方便的方法, 使用資原始檔
1.新建一個 Winform 應用程式, 新建一 Form ,名為 Form1,新增兩個按鈕 btnChinese, btnEnglish
2. 設定 Form1 的 Localizable 屬性為 true, 設定該屬性後,.net 將根據不同的語言,為應用程式生成不同的資原始檔
3.設定各個控制元件的文字(系統預設語言下)
4.更改 Form1 的 Language 屬性為想要支援的另一種語言,此例中我們選用 English
5.重新設定各個控制元件的文字
注:此時.net 將為 Form1 生成另一個資原始檔,在本例中名為 Form1.en.resx
6. 如果有其它的語言要設定,請重複第4,第5步
7.編寫程式碼
{
//更改當前執行緒的 CultureInfo
//zh-CN 為中文,更多的關於 Culture 的字串請查 MSDN
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh-CN");
//對當前窗體應用更改後的資源
ApplyResource();
}
{
//更改當前執行緒的 CultureInfo
//en 為英文,更多的關於 Culture 的字串請查 MSDN
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en");
//對當前窗體應用更改後的資源
ApplyResource();
}
/// 應用資源
/// ApplyResources 的第一個引數為要設定的控制元件
/// 第二個引數為在資原始檔中的ID,預設為控制元件的名稱
///</summary>
privatevoid ApplyResource()
{
System.ComponentModel.ComponentResourceManager res =new ComponentResourceManager(typeof(Form1));
foreach (Control ctl in Controls)
{
res.ApplyResources(ctl, ctl.Name);
}
}
大致的程式碼就完成了,此時點選 “中文”按鈕,畫面切換為中文,點選“英文”按鈕,畫面立即切換為英文