C# 实现多种语言切换,通过VS实现

步骤:
1)在要更换语言的界面,如Form1界面,选择属性,Language-选择要使用的语言,如下图
C# 实现多种语言切换,通过VS实现_第1张图片
2)添加完语言之后VS会自动生成对应语言的.resx文件,通过该文件可以编辑语言,由于VS已经给我们添加了该界面的所有字段和变量,所以我们只需要将该界面的数据复制到EXCEL让翻译完成,最后在导入到这里面即可。
在这里插入图片描述
C# 实现多种语言切换,通过VS实现_第2张图片
3)如何使用

SetLang("en-US", this);//初始化时调用

/// 
        /// 遍历窗体所有控件,针对其设置当前界面语言
        /// 
        /// 
        /// 
        private static void AppLang(Control control, System.ComponentModel.ComponentResourceManager resources)
        {
            if (control is MenuStrip)
            {
                //将资源应用与对应的属性
                resources.ApplyResources(control, control.Name);
                MenuStrip ms = (MenuStrip)control;
                if (ms.Items.Count > 0)
                {
                    foreach (ToolStripMenuItem c in ms.Items)
                    {
                        //调用 遍历菜单 设置语言
                        AppLang(c, resources);
                    }
                }
            }

            foreach (Control c in control.Controls)
            {
                resources.ApplyResources(c, c.Name);
                AppLang(c, resources);
            }
        }
        
        /// 
        /// 遍历菜单
        /// 
        /// 
        /// 
        private static void AppLang(ToolStripMenuItem item, System.ComponentModel.ComponentResourceManager resources)
        {
            if (item is ToolStripMenuItem)
            {
                resources.ApplyResources(item, item.Name);
                ToolStripMenuItem tsmi = (ToolStripMenuItem)item;
                if (tsmi.DropDownItems.Count > 0)
                {
                    foreach (ToolStripMenuItem c in tsmi.DropDownItems)
                    {
                        //if (tsmi != ToolStripSeparator)
                        //{ }
                        AppLang(c, resources);
                    }
                }
            }
        }

4)未完成工作
上面只是完成了如何正常使用,如果要支持多种语言,还需要重复上述工作,将需要的语言提前把翻译工作做好,编辑对应语言生成好语言包,以供多种语言动态切换使用。还有一个工作麻烦之处就是每个页面都得这么去生成语言包,如果页面太多,就会导致工作量很大,可考虑单独写一个父类让所有页面继承,以达到简化操作的目的

你可能感兴趣的:(C#,WINFORM,C#,c#)