C# ResourceManager和RESX文件 概述及 Winform切换中英文语言功能实现

1.resx简介

               winform/wpf里,如果想切换中英文,可以通过自己定义key-value数据(xml,json,数据库,txt,xaml等形式),来遍历控件(winform)或者修改资源引用(wpf)等方法来实现。

    但是对winform来说,系统提供了rest资源文件,通过rest资源文件来保存key-value对应关系似乎更方便。

    详细请参考文档:https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/y99d1cd3(v=vs.100)?redirectedfrom=MSDN

    resx根据创建形式分为两种:form-based和手动添加。

2.form-based resx创建步骤

    默认form自身带有resx,当我们修改控件属性的时候,此文件会变化,此文件本身是xml格式文件。

选中form,修改Localizable为true,修改language为某一个地区为【中国】, 这时候,并且修改button1 和button2的名称分别:英文,中文

再次选中form,修改language为【英语】,并且修改button1 和button2的名称分别:english,chinese

这个时候,就建立了两个语言包,在form1前面的三角点击一下,可以看到文件大概如下:

 其中:form1.resx是默认的,form1.en-us.resx是英文语言包,form1.zh-cn.resx是中文语言包。

我们可以看到 资源包的名称是这样的:【form1.zh-cn.resx】即【文件名】+【.语言-地区】+【.resx】

在button1和button2的事件里,切换语言:

            var culture = new CultureInfo("en-US");
            Thread.CurrentThread.CurrentCulture = culture;
            Thread.CurrentThread.CurrentUICulture = culture;
            ResourceManager r = new ResourceManager("winform_通过地区文化语言切换.Form1", typeof(Form1).Assembly);
            button1.Text = r.GetString("button1.Text");
            button2.Text = r.GetString("button2.Text");

其中 resourceManager的第一个参数是:【名称空间.文件名】

效果就是点击【语言按钮】后 ,各个控件的Text变为对应的语言,如下图:

点击英文:

点击chinese后

 

3.手动添加语言包

手动添加的方法是:类库上,右键,添加,新建项,找到资源文件,然后命名:【文件名】+【.语言-地区】+【.resx】

比如我新建了两个文件:language.en-US.resx和language.zh-CN.resx,

双击资源文件,我们可以编辑资源文件的key-value值。

编辑完成后,就可以代码来调用了

        ResourceManager rm = new ResourceManager("winform_通过地区文化语言切换.language", typeof(Form1).Assembly);

            MessageBox.Show(rm.GetString("String1", culture));

 同样 ResourceManager的第一个参数是:【名称空间】+【资源文件名】 ,第二个参数是:assemble。rm.GetString的参数是:key名称,culture

这样,就可以取得资源里面的内容,实现语言切换了。

另外可以用resx2word工具编辑resx文件:

http://resx.sourceforge.net/

另行参考:

https://limitedcode.blogspot.com/2016/09/c-globalization.html

4.源码下载

https://files.cnblogs.com/files/lizhijian/20201026winform%E9%80%9A%E8%BF%87%E5%9C%B0%E5%8C%BA%E6%96%87%E5%8C%96%E8%AF%AD%E8%A8%80%E5%88%87%E6%8D%A2.rar

原文地址:https://www.cnblogs.com/congqiandehoulai/p/13892559.html