【C# winform 两种方式实现多语言切换】


最近做程序的时候需要用到软件进行多语言版本的问题,在网上收集了一些资料后,现对两种文件方式实现,具体内容整理如下,请参考。

xml文件实现Winform多语言切换

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

逻辑设计图

逻辑框图

代码及配置部分展示

1.属性配置

窗体属性Localizable设为TRUE,Language选择需要的语言
配置设置展示

2.Form代码展示

        public Form2(Form1 form1)
        {
            InitializeComponent();
            SetLanguage();
        }


        private void SetLanguage()
        {
            this.button1.Text = GlobalData.GlobalLanguage.Login_UserName;
            this.button2.Text = GlobalData.GlobalLanguage.Login_UserPwd;
            this.button3.Text = GlobalData.GlobalLanguage.Login_Login;
        }

3.GlobalData类代码展示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace MyNoteTool
{
    public class GlobalData
    {
        /// <summary>
        /// 系统语言(Chinese(中文),English(英文)。。。)
        /// </summary>
        public static string SystemLanguage = System.Configuration.ConfigurationManager.AppSettings["Language"];

        private static Language globalLanguage;
        public static Language GlobalLanguage
        {
            get
            {
                if (globalLanguage == null)
                {
                    globalLanguage = new Language();
                    return globalLanguage;
                }
                return globalLanguage;
            }
        }
    }
}

4.Language类代码展示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;

namespace MyNoteTool
{
    public class Language
    {
        #region 登陆界面
        public string Login_UserName = "";
        public string Login_UserPwd = "";
        public string Login_Login = "";
        #endregion

        protected Dictionary<string, string> DicLanguage = new Dictionary<string, string>();
        public Language()
        {
            XmlLoad(GlobalData.SystemLanguage);
            BindLanguageText();
        }

        /// <summary>
        /// 读取XML放到内存
        /// </summary>
        /// <param name="language"></param>
        protected void XmlLoad(string language)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                string address = AppDomain.CurrentDomain.BaseDirectory + "Languages\\" + language + ".xml";
                doc.Load(address);
                XmlElement root = doc.DocumentElement;

                XmlNodeList nodeLst1 = root.ChildNodes;
                foreach (XmlNode item in nodeLst1)
                {
                    DicLanguage.Add(item.Name, item.InnerText);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public void BindLanguageText()
        {
            Login_UserName = DicLanguage["Login_UserName"];
            Login_UserPwd = DicLanguage["Login_UserPwd"];
            Login_Login = DicLanguage["Login_Login"];
        }
    }
}

5.App.config代码展示

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
	<startup>
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
	</startup>
	<appSettings>
		<!-- Language的值只能是Simple Chinese(中文),English(英文) -->
		<add key="Language" value="Simple Chinese"/>
	</appSettings>

</configuration>

6.English.xml代码展示

注意:生成的language文件夹默认生成在工程根目录下,需要复制到生成对应的exe所在文件夹下!

<?xml version="1.0" encoding="utf-8" ?>
<English>
	<Login_UserName>Find</Login_UserName>
	<Login_UserPwd>Replace</Login_UserPwd>
	<Login_Login>All Replace</Login_Login>
</English>

7.Simple Chinese.xml代码展示

<?xml version="1.0" encoding="utf-8" ?> 
<Chinese>
 <Login_UserName>查找</Login_UserName>
  <Login_UserPwd>替换</Login_UserPwd>
   <Login_Login>全部替换</Login_Login>
 </Chinese>

Demo效果展示

展示1
展示2

resx文件实现Winform多语言切换

窗体属性设置

1.将Form的 Localizable 属性为 true( 设置该属性后,.net 将根据不同的语言,为应用程序生成不同的资源文件),然后将Language属性设置为所需要的语言,如下所示。
配置
2.当把Language属性设置成例如英语后,那么我们对窗体中的控件名称进行调整,如下图
1
3.别的语言也是这种操作,只是拿英语做个示例。
在这里插入图片描述

4.当我们把页面调整完后,我们重新生成一下,然后再把上述Language属性切回到默认或汉语时,再把项目重新生成一下。这样的话,语言文件就会自动生成好了。
在这里插入图片描述
注意:一定要重新启动一下,不然改过之后直接运行不会出现语言文件!

项目的Properties的Settings.settings中添加变量DefaultLanguage,用于保存当前设置的默认语言。当下次启动程序时,会读取该变量,从而将程序的语言设置为上次程序关闭时的语言。第一次将默认语言设置为中文zh-CN。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐的叮小当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值