一、 演示如下图:
二、 下载源代码:/Files/NewLand/CustomerCulter.rar
三、 参考资料:
Msdn:
http://msdn.microsoft.com/zh-cn/library/system.globalization.cultureinfo(VS.80).aspx
http://msdn.microsoft.com/zh-cn/library/c6zyy3s9(VS.80).aspx
http://msdn.microsoft.com/zh-cn/library/y99d1cd3.aspx
http://msdn.microsoft.com/zh-cn/library/9xdxwwkc.aspxStringResourceTool:
http://stringresourcetool.codeplex.com/
http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/8f92a4cf-9598-4758-b385-1adeccf56afdOther:
http://www.codeproject.com/KB/cs/formlanguageswitch.aspx?fid=132823&select=2307173#xx2307173xx
四、关键步骤
1)本地化UI
1. 将Form的localizable设为true
此时你将看到Form1.Designer.cs中关于控件的属性都消失了,而是用类似这样的语句替代了:
resources.ApplyResources(this.button1, "button1");
其他:其他控件如图所示摆放,并写上中文Text
2. 将Form的language选为‘英语’
此时你将看到在解决方案资源管理器中新生成了一个名为Form1.en.resx。这个文件存放了英文环境下的资源。
3. 将Form中的button的Text改为‘I`m english’;菜单项也做相应的英文修改
4. 接下来就是点击【英文】菜单时候将界面的元素应用英文的资源
private void ReInitial()//重新应用界面元素的资源,没有找到更好的方法,就采取了这种简单的方法,有待提高
{
this.Controls.Clear();
InitializeComponent();
}
void ChangeUICulter(string language)
{
Thread.CurrentThread.CurrentCulture = new CultureInfo(language);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
}
private void englishToolStripMenuItem_Click(object sender, EventArgs e)
{
ChangeUICulter("en-us");
ReInitial();
}
2)本地化动态字符串
1. 在项目上右击添加新项->资源文件:取名为WinFormStrings.resx
在资源文件中添加一个变量msgStr,值为’好‘按照1的步骤再加一个资源文件取名为:WinFormStrings.en-us.resx2. 在按钮点击时间中这样写:
在资源文件中添加一个变量msgStr,值为’ok‘
private void button1_Click(object sender, EventArgs e)
{
ResourceManager LocRM = new ResourceManager("CustomerCulter.WinFormStrings", typeof(Form1).Assembly);
MessageBox.Show(LocRM.GetString("msgStr"));
}