C#_Winfrom下的中英文翻译

Winform下的语言国际化,几行代码轻松实现

最近做了一些关于winform的项目,需要用到winform的语言国际化,在初使化的时候用起来非常方便。可以参考一下:

核心逻辑:

预览效果演示:

OK,以下是核心代码和操作流程

一,添加LanguageHelper类


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

using System;

using System.Collections.Generic;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace CameraTest_Net

{

    public class LanguageHelper

    {

        #region SetAllLang

        /// <summary>

        /// Set language

        /// </summary>

        /// <param name="lang">language:zh-CN, en-US</param>

        private static void SetAllLang(string lang)

        {

            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);

            Form frm = null;

            string name = "MainForm";

            frm = (Form)Assembly.Load("CameraTest").CreateInstance(name);

            if (frm != null)

            {

                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager();

                resources.ApplyResources(frm, "$this");

                AppLang(frm, resources);

            }

        }

        #endregion

        #region SetLang

        /// <summary>

        ///

        /// </summary>

        /// <param name="lang">language:zh-CN, en-US</param>

        /// <param name="form">the form you need to set</param>

        /// <param name="formType">the type of the form </param>

        public static void SetLang(string lang, Form form, Type formType)

        {

            System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(lang);

            if (form != null)

            {

                System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(formType);

                resources.ApplyResources(form, "$this");

                AppLang(form, resources);

            }

        }

        #endregion

        #region AppLang for control

        /// <summary>

        ///  loop set the propery of the control

        /// </summary>

        /// <param name="control"></param>

        /// <param name="resources"></param>

        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);

            }

        }

        #endregion

        #region AppLang for menuitem

        /// <summary>

        /// set the toolscript

        /// </summary>

        /// <param name="item"></param>

        /// <param name="resources"></param>

        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)

                    {

                        AppLang(c, resources);

                    }

                }

            }

        }

        #endregion

    }

}

二,添加对应的资源文件(在文件夹下复制就可以了)

注意:格式必须是  Form名.语言名.rexs

我添加了两个,一个中文,一个英文

三,修改资源文件,添加需要切换语言的控件

中文资源文件修改:

英文资源文件修改:

四,调用代码:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Reflection;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace WFInfor

{

    public partial class FrmMain : Form

    {

        public FrmMain()

        {

            InitializeComponent();

        }

        private void cbxchose_SelectedIndexChanged(object sender, EventArgs e)

        {

            if (cbxchose.SelectedItem.ToString() == "中文")

            {

                LanguageHelper.SetLang("zh-Cn"thistypeof(FrmMain));

            }

            else if (cbxchose.SelectedItem.ToString() == "English")

            {

                LanguageHelper.SetLang("en-Us"thistypeof(FrmMain));

            }

            else

            {

            }

        }

    }

时间: 2024-10-18 03:54:45

C#_Winfrom下的中英文翻译的相关文章

ASCII,Utf8,Unicode编码下的中英文字符大小

一,测试Demo namespace 不同编码下的中英文字符大小 { class Program { static void Main(string[] args) { ShowCode(); } private static void ShowCode() { string[] strArray = { "b","abc","乙","甲乙丙丁"}; byte[] buffer; string mode, back; fore

Android官方文档training中英文翻译目录大全:29篇已翻译,45篇未翻译

Android官方文档training中英文翻译目录大全:29篇已翻译,45篇未翻译 1. Getting Started Building Your First App: 原文: https://developer.android.com/training/basics/firstapp/index.html译文:http://wiki.eoeandroid.com/Building_Your_First_AppAdding the Action Bar:原文:https://develope

scottrade 手机应用中英文翻译

Dashboard       Watch List 自选股 MARKET & NEWS 市场 & 新闻 ALERTS 警告 MONEY MOVEMENT   BRANCH LOCATOR 网点定位 TUTORIAL 向导 Trade trades 交易   Buy 买入   Sell 卖出         Trade Stock 购买股票   Trade Option 购买期权         Trading Session 订单信息   Buy To Cover 买入补回   Sell

一个简单的中英文翻译脚本

这个脚本是很久之前写的,主要就是方便使用. 把它保存为 fy.sh 然后丢到 /usr/bin 目录下. 示例 [email protected]:~$ fy.sh hello world hello 你好世界 [email protected]-pc:~$ fy.sh 你好世界 Hello world 脚本代码如下 #! /bin/bash #curl etoc.sinaapp.com/英文 url="ctoe.sinaapp.com/" var=""$1 ech

50 行Python代码,轻松实现中英文翻译

Python学习交流群:125240963,群内每天分享干货,包括最新的python企业案例学习资料和零基础入门教程,欢迎各位小伙伴入群学习交流 现在的时代,越来越看重英语能力.如果你懂得英语,你会接触到更大的世界,你会发现更多的信息.尤其是对于程序员来说,好的编程资料都是来自英文文档.那些国内的翻译的版本,有很多内容跟原版相差的太多,甚至牛头不对马嘴. 虽然现在有非常多的翻译软件,但通过自己动手写个 python 小程序,是非常的有成就感.甚至你借助今天的代码,也可以自己开发个小型翻译软件.

前端使用vue-i18n做中英文翻译

vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm install vue-i18n 使用方法: 1.在 main.js 中引入 vue-i18n (前提是要先引入 vue) import VueI18n from 'vue-i18n' Vue.use(VueI18n) 2.准备本地的翻译信息 const messages = { zh: { message:

python中英文翻译模块

从一种语言到另一种语言的文本翻译在各种网站中越来越普遍. 帮助我们执行此操作的python包称为translate. 可以通过以下方式安装此软件包. 它提供主要语言的翻译. 官网:https://pypi.org/project/translate/ 安装 pip install translate 1 使用方法: # encoding: utf-8 from translate import Translator # 以下是将简单句子从英语翻译中文 translator= Translator

js实现网页中英文翻译

1,html 2,metrics.js 3,需要 http://www.microsoftTranslator.com/ajax/v3/WidgetV3.ashx?siteData=ueOIGRSKkd965FeEGM5JtQ**的源码下载下来的   4,把下载下来的里面内容 r="#0F0F5F",m="#F0F0A0" 删除掉 是把 鼠标移动上去的背景颜色 去掉 5,去掉弹出框 Pb = "inline-block",B = "bl

关于网站调用在线翻译api实现翻译功能

在做一些网站的时候偶尔会遇到需要中英文翻译的部分,也许是提供用户在线翻译的功能,也可能是把用户输入的一整段文字进行翻译.小龙最近就遇到这么一个事儿,对接中外两方用户的沟通,为了对语言不那么顺畅的用户提供一点点帮助,在网站里嵌入了自动翻译的功能,就简化了用户复制黏贴,再打开百度翻译的步骤了. 小龙用的是有道提供的api,普通用户就可以免费使用的.有道提供了网页模块的调用法和数据接口型的,网页模块的会比较简单一些,在他们官网上把写好的代码复制进html就好,这边简单展开以下数据接口型的调用. 首先,