您的位置:首页 > 编程语言 > C#

C#实现多国语言的界面切换

2016-03-12 09:30 525 查看
在PictureStudio中,我需要实现多国语言的界面切换,而且切换各种语言版本的时候希望程序是动态的加载语言,不希望切换语言后重新启动程序。

实现这样的功能可以有很愚蠢的方法,比如说你可以在程序中为界面上的所有国家的文字信息,在代码中进行赋值,你可以想像这样的做法是可以的,但绝对是愚蠢的,代码不应该写得这么丑陋。如果需要实现10个不同语言的版本,那你的代码中每一个涉及到界面文字的控件都要有至少10行代码,而且维护的时候,需要到代码中去修改不同语言显示,这显然是很糟糕的。

把语言文字作为资源,而不是放在代码中。在.NET开发中,VS2005为每一个窗口都自动创建一个与窗口同名的资源文件,后缀名为.resx(如下图)

private void languageMenuEnglish_Click(object sender, EventArgs e)
//根据当前的语言区域,更新主窗口的语言信息
private void UpDataMainFormUILanguage()
//根据当前的语言区域,更新主窗口菜单的语言
private void UpDataMainFormMenuLanguage(ResourceManager rm)
//根据当前的语言区域,更新主窗口工具栏的语言
private void UpDataMainFormToolBarLanguage(ResourceManager rm)
private void languageMenuSimlpeChinese_Click(object sender, EventArgs e)


{


Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-CHS");


UpDataMainFormUILanguage();


}
以上的处理方法,在有众多语言版本需要实现时,代码量都差不多,添加一种语言版本,只要添加相应的资源文件,代码中只要加上两句,1设置程序当前语言区域属性,2调用读取资源的函数。当发现语言有需要更正的地方时,可以相当方便在资源文件中修改,而不用动源代码。切换文字区域后,程序也不用重新启动,Paint.Net程序切换后需要重新启动,我不知道他们的具体做法是怎样的。但我使用的方法避免了重新启动程序,应该更好些吧。

切换为中文的情况:



切换为英文的情况:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: