中英文切换
1. WPF中英文切换
首先,在资源Resources中创建en-us.xaml和zh-cn.xaml两个文件。
zh-cn.xaml:
<s:String x:Key="Msg1">确定</s:String>
<s:String x:Key="Msg2">调试</s:String>
en-us.xaml:
<s:String x:Key="Msg1">OK</s:String>
<s:String x:Key="Msg2">Debug</s:String>
然后,在App.xaml中配置如下:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/en-us.xaml"></ResourceDictionary>
<ResourceDictionary Source="Resources/zh-cn.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
控件
Content="{DynamicResource Msg32}"
代码
strTaskName = this.FindResource("Msg32").ToString();
最后,在代码中添加:
if (Language == "CN")
{
requestedCulture = @"Resources/zh-cn.xaml";
ChangeLanguage(requestedCulture,out errMsg);
}
else
{
requestedCulture = @"Resources/en-us.xaml";
ChangeLanguage(requestedCulture,out errMsg);
}
private void ChangeLanguage(string requestedCulture,out string errMsg)
{
errMsg = "";
try
{
List<ResourceDictionary> dictionaryList = new List<ResourceDictionary>();
foreach (ResourceDictionary dictionary in System.Windows.Application.Current.Resources.MergedDictionaries)
{
dictionaryList.Add(dictionary);
}
foreach (ResourceDictionary r in dictionaryList)
{
if (r.Source.OriginalString == requestedCulture)
{
System.Windows.Application.Current.Resources.MergedDictionaries.Remove(r);
System.Windows.Application.Current.Resources.MergedDictionaries.Add(r);
break;
}
}
}
catch (Exception ex)
{
errMsg ="ChangeLanguage error:" + ex.Message;
}
}
2. Winform中英文切换
控件
首先,将窗体的属性Localizable设置为True,Language为默认,设置控件名称(例如:button1的text设置为【确认】)。
然后,设置窗体的属性Language为English,设置控件的英文名称(例如:button1的text设置为【OK】)。
此时,窗体下自动生成form1.en.resx和form1.resx的文件。
最后,在代码中添加:
if (Language != "CN")
{
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en");
}
代码
form1.en.resx:
Msg1 OK
form1.resx:
Msg1 确定
Using System.Resources;
...
ResourceManager rm=new ResourceManager(typeof(Form1));
string a=rm.GetString("Msg1");