程序的国际化

    以前看到别人的软件可以随便切换语言,当时觉得非常好奇,当时也想自己做一个,但是一直不知道别人怎么做的,后来才知道,原来是通过资源文件来切换语言的。也就是为每种语言添加一个资源文件,然后在程序里面动态的加载这些资源文件。下面做了一个测试的程序,实现了中英文的简单切换,效果如下:

imageimage

   在这个程序里面建了两个资源文件,在资源文件里面,分别设置了窗体的一些属性在不同的语言环境下的值,如下图:

imageimage

    然后在程序中动态加载切换这些资源文件即可,但需要注意的是,这时候,在给窗体上的属性赋值时,就不能直接赋值,而是要通过资源文件来赋值,看下面的代码:

this.Text = GloalManager.GetGlobalizationResource("FromName");
this.文件ToolStripMenuItem.Text = GloalManager.GetGlobalizationResource("MFile");
this.设置ToolStripMenuItem.Text = GloalManager.GetGlobalizationResource("MSetting");
this.tsmiChinese.Text = GloalManager.GetGlobalizationResource("MiChinese");
this.tsmiEnglish.Text = GloalManager.GetGlobalizationResource("MiEnglish");
this.打开NToolStripMenuItem.Text = GloalManager.GetGlobalizationResource("MiOpen");
this.保存SToolStripMenuItem.Text = GloalManager.GetGlobalizationResource("MiSave");
this.退出EToolStripMenuItem.Text = GloalManager.GetGlobalizationResource("MiExit"); 

    然后有一个资源管理类,在这个类里面来确定加载哪一种资源文件,代码如下:

public static string GetGlobalizationResource(string name)
{
    //bool flag = true;
    ResourceManager _rm;
 
    if (Flag)
    {
        _rm = new ResourceManager("ChangeLanguage.Resourceen-US", System.Reflection.Assembly.GetExecutingAssembly());
    }
    else
    {
        _rm = new ResourceManager("ChangeLanguage.Resourcezh-CN", System.Reflection.Assembly.GetExecutingAssembly());
    }
    return _rm.GetString(name);
}
这样就实现了简单的中英语切换,在这个过程中有一个问题就是MessageBox弹出框上面的确定按钮,切换成英语时“确定”不能改成“Ok”,网上有人说,这个是系统默认会根据操作系统来改,如果是在英语的操作系统下,那么按钮上显示的就会是“OK”,中文则显示“确定”,所以这个不需要我们来修改。
原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/2776669.html