1. 程式人生 > >C# WPF 動態切換多國語言支援

C# WPF 動態切換多國語言支援

   WPF支援多國語言方式大同小異,本文將介紹使用資源字典檔案實現多國語言動態切換,其不僅可以實現UI顯示語言的切換,也可以實現控制元件對應繫結資料的語言切換,整體操作可行且較容易實現。以下分步描述具體實現過程:

為方便說明,新建一個wpf專案,新增一個Combox、TextBox以及Button控制元件:
在這裡插入圖片描述
一. 建立資源字典(語言檔案)
二. 控制元件內容與資源字典的動態繫結
三. 隨意切換語言

一. 建立資源字典(語言檔案)
一種語言對應一個.xaml資原始檔,在專案中新建Language資料夾,在檔案下新建中文資原始檔zh_CN.xaml檔案,檔案內容如下:

<sys:String x:Key=“BtnName”>切換</sys:String>
<sys:String x:Key=“DisplayTips”>你好 世界</sys:String>

同理新建英文資源字典檔案如下:

<sys:String x:Key=“BtnName”>Switch</sys:String>
<sys:String x:Key=“DisplayTips”>Hello World</sys:String>

在App.xaml中新增:

<Application.Resources>

<ResourceDictionary.MergedDictionaries>

</ResourceDictionary.MergedDictionaries>

</Application.Resources>

二. 控制元件內容與資源字典的動態繫結
TextBox控制元件內容繫結為資源字典中的DisplayTips,Button繫結BtnName:







三. 隨意切換語言
預設中文,選中English後,點選切換,將切換為英文顯示,實現如下:
private void btnSwitch_Click(object sender, RoutedEventArgs e)
{
string lang = cbLanguage.SelectedValue.ToString();
if(lang == “English”)
{
lang = “en_US”;
}
else
{
lang = “zh_CN”;
}
ResourceDictionary langRd = null;
try
{
langRd = Application.LoadComponent(new Uri(@"\Language"+lang + “.xaml”, UriKind.Relative)) as ResourceDictionary;
}
catch
{
}
if (langRd != null)
{
if (this.Resources.MergedDictionaries.Count > 0)
{
this.Resources.MergedDictionaries.Clear();
}
this.Resources.MergedDictionaries.Add(langRd);
}
}