通过C#进行中英文转换

article/2025/9/18 3:45:59

通过C#进行中英文转换
在这里插入图片描述
在这里插入图片描述

  1. 编写相应语言的XML文件,添加xml文件
    ChineseSimplified.xml文件内容
<?xml version="1.0" encoding="GB2312" ?>
<Softimite Language="12"><Form><Name>LoginForm</Name><Controls><Control name="LoginForm" text="登录"/><Control name="accountLab" text="账户"/><Control name="passwordLab" text="密码"/><Control name="languageLab" text="语言"/><Control name="loginBtn" text="登录"/><Control name="passwordBtn" text="修改密码"/></Controls></Form><Form><Name>PasswordForm</Name><Controls><Control name="PasswordForm" text="修改密码"/><Control name="accountLab" text="账户"/><Control name="passwordLab" text="旧密码"/><Control name="newpasswordLab" text="新密码"/><Control name="modifyBtn" text="修改"/></Controls></Form>
</Softimite>

English.xml文件内容

<?xml version="1.0" encoding="utf-8" ?>
<Softimite Language="12"><Form><Name>LoginForm</Name><Controls><Control name="LoginForm" text="Login"/><Control name="accountLab" text="Account"/><Control name="passwordLab" text="Password"/><Control name="languageLab" text="Language"/><Control name="loginBtn" text="Login"/><Control name="passwordBtn" text="Modify pwd"/></Controls></Form><Form><Name>PasswordForm</Name><Controls><Control name="PasswordForm" text="Modify Password"/><Control name="accountLab" text="Account"/><Control name="passwordLab" text="Old password"/><Control name="newpasswordLab" text="New password"/><Control name="modifyBtn" text="Modify"/></Controls></Form>
</Softimite>

如下图所示,是2种语言的XML文件。注:必须将这2个XML文件属性中的“ 复制到输出目录”设置为“ 如果较新则复制”,否则,程序在运行过程中会找不到这几个文件。
在这里插入图片描述

2.创建一个静态类(MultiLanguage.cs)用于编写与切换语言相关的变量和代码。

//当前默认语言public static string DefaultLanguage = "ChineseSimplified";
函数ReadXMLText用于从XML语言文件中读取控件在该语言下的值/// <summary>/// 从XML文件中读取需要修改Text的內容/// </summary>/// <param name="frmName">窗口名,用于获取对应窗口的那部分内容</param>/// <param name="lang">目标语言</param>/// <returns></returns>private static Hashtable ReadXMLText(string frmName, string lang){try{Hashtable hashResult = new Hashtable();XmlReader reader = null;//判断是否存在该语言的配置文件,若是进行读取操作if (!(new System.IO.FileInfo("Languages/" + lang + ".xml")).Exists){return null;}else{reader = new XmlTextReader("Languages/" + lang + ".xml");}XmlDocument doc = new XmlDocument();doc.Load(reader);XmlNode root = doc.DocumentElement;//获取XML文件中对应该窗口的内容XmlNodeList nodeList = root.SelectNodes("Form[Name='" + frmName + "']/Controls/Control");foreach (XmlNode node in nodeList){try{//修改内容为控件的Text值XmlNode node1 = node.SelectSingleNode("@name");XmlNode node2 = node.SelectSingleNode("@text");if (node1 != null){hashResult.Add(node1.InnerText.ToLower(), node2.InnerText);}}catch { }}reader.Close();return hashResult;}catch{return null;}}/// <summary>/// 加载语言/// </summary>/// <param name="form">加载语言的窗口</param>public static void LoadLanguage(Form form, string getlanguage){//根据用户选择的语言获得表的显示文字 Hashtable hashText = ReadXMLText(form.Name, getlanguage);if (hashText == null){return;}//获取当前窗口的所有控件Control.ControlCollection sonControls = form.Controls;try{//遍历所有控件foreach (Control control in sonControls){if (control.GetType() == typeof(Panel))     //Panel{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(GroupBox))     //GroupBox{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(TabControl))       //TabControl{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(TabPage))      //TabPage{GetSetSubControls(control.Controls, hashText);}if (hashText.Contains(control.Name.ToLower())){control.Text = (string)hashText[control.Name.ToLower()];}}if (hashText.Contains(form.Name.ToLower())){form.Text = (string)hashText[form.Name.ToLower()];}}catch { }}/// <summary>/// 获取并设置控件中的子控件/// </summary>/// <param name="controls">父控件</param>/// <param name="hashResult">哈希表</param>private static void GetSetSubControls(Control.ControlCollection controls, Hashtable hashText){try{foreach (Control control in controls){if (control.GetType() == typeof(Panel))     //Panel{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(GroupBox))     //GroupBox{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(TabControl))       //TabControl{GetSetSubControls(control.Controls, hashText);}else if (control.GetType() == typeof(TabPage))      //TabPage{GetSetSubControls(control.Controls, hashText);}if (hashText.Contains(control.Name.ToLower())){control.Text = (string)hashText[control.Name.ToLower()];}}}catch (Exception ex){throw new Exception(ex.Message);}}

3.添加选择的语言

public static string language = null;     
private void languageTxt_SelectedIndexChanged(object sender, EventArgs e){languageTxt.Enabled = false;switch( languageTxt.SelectedIndex){case  0:language ="ChineseSimplified";foreach (Form form in Application.OpenForms){MultiLanguage.LoadLanguage(form, language);}break;case 1:language = "English";//对所有打开的窗口重新加载语言foreach (Form form in Application.OpenForms){MultiLanguage.LoadLanguage(form, language);}break ;}languageTxt.Enabled = true;}

4.在主窗口的Load事件中显示当前选择的语言

private void LoginForm_Load(object sender, EventArgs e){if (language == "ChineseSimplified"){languageTxt.Text = "简体中文(默认)";}else if (language == "English"){languageTxt.Text = "English";}}

http://chatgpt.dhexx.cn/article/VbGRk14N.shtml

相关文章

【Adobe After Effects中英文转换2019——2023版】

** Adobe After Effects中英文转换2019——2023版 ** 如果是默认安装的软件&#xff0c;在桌面右击AE图标&#xff0c;点击打开文件所在位置&#xff0c;来到软件安装目录 C:\Program Files\Adobe\Adobe After Effects 2023\Support Files 找到AMT文件夹 点击进入&#xf…

在线中英文符号转换工具

在线中英文符号转换工具 在线中英文符号转换工具 将中文符号转换成英文符号或将英文符号转换成中文符号&#xff0c; 将单引号‘’都转换成’&#xff0c; 将双引号“”都转换成" 将中括号【】转换成[]&#xff0c; 将大括号&#xff5b;&#xff5d;转换成{} 将逗号&…

英文表格如何快速转换为中文?

今天跟大家分享一下英文表格如何快速转换为中文&#xff1f; 1.首先打开Excel文件&#xff0c;选中要翻译的单元格&#xff0c;点击【DIY工具箱】 ​ 2.点击【翻译】 3.选择【有道翻译】 4.将翻译语言设置为中文&#xff0c;然后点击【确定】 5.鼠标点击一个合适的单元格作为翻…

英文转换-在线英文批量转换器免费

英文转换&#xff0c;怎么找到好的英文转换器&#xff1f;今天给大家分享一款免费批量的英文转换器汇集了世界最好的几个翻译平台&#xff08;百度/谷歌/有道&#xff09;&#xff0c;为什么这么多人使用它&#xff1f;首先第一点翻译质量高&#xff0c;选择性多。第二点可以批…

php 英文转中文,中文转换成英文

[php]代码库/** * 中文转换成英文 */ function pinyin($_String, $_Codegb2312){ $_DataKey "a|ai|an|ang|ao|ba|bai|ban|bang|bao|bei|ben|beng|bi|bian|biao|bie|bin|bing|bo|bu|ca|cai|can|cang|cao|ce|ceng|cha". "|chai|chan|chang|chao|che|chen|cheng|c…

C#小知识之中英文转换、去空格

一、中英文转换 1、安装NPinYin 2、编写代码 string str "这里是测试的中文字符串"; string str1 Pinyin.GetChineseText(str); string str2 Pinyin.GetInitials(str); string str3 Pinyin.GetPinyin(str);Console.WriteLine("取和拼音相同的汉字列表&…

Qt 语言家实现中英文切换(解决纯代码添加部件的中英文转换问题)

Qt 语言家实现中英文切换&#xff08;解决纯代码添加部件的中英文转换问题&#xff09; 关于.ts和.qm文件的生成&#xff0c;更新翻译、发布翻译等步骤就不多说了&#xff0c;其他博主有大量的描述。 现在我要解决的是中英文未完全转换的问题如下图&#xff1a; 如上图所示&a…

系统的学习网络编程,这篇就够了!(来收藏夹里吃灰)

主机字节序和网络字节序&#xff1a; 在32位机器上&#xff0c;累加器一次能装载4个字节&#xff0c;这四个字节在内存中排列顺序将影响它被累加器装载成的整数的值 大端字节序&#xff08;网络字节序&#xff09;&#xff1a;一个整数的高位字节存储在内存的低地址处 小端字节…

玩转RT-Thread之荔枝派Nano(全志F1C100S) 新手上路

玩转RT-Thread之荔枝派Nano(全志F1C100S) 一、新手上路 --作者&#xff1a;燕十三(flyingcys) blog:http://blog.csdn.net/flyingcys --荔枝派nano/RTT非官方群&#xff1a;711174828 在此感谢 RT-Thread官方成员uestczyh222提供的荔枝派Nano内核移植、rttbootloader文件、…

技术杂谈-再谈软硬SDN(2)

以下文章来源于微信公众号&#xff1a;网络里卖艺的小青年 &#xff0c;作者我就是那个KK 不好意思&#xff0c;本文有点长&#xff0c;需要阅读10-15分钟。 上一篇文章得到了很多朋友的反馈&#xff0c;软硬SDN各自有各自的优势和特点&#xff0c;对于之前的文字&#xff0c;…

技术杂谈-再谈软硬SDN(1)

以下文章来源于微信公众号&#xff1a;网络里卖艺的小青年 &#xff0c;作者KkBLuE 我曾在SDNLAB和TF中文社区联合举办的直播活动上做了一次分享&#xff0c;讨论到软件SDN和硬件SDN的话题&#xff0c;巧合的是&#xff0c;看到国内大牛厂家也在讨论软硬之路&#xff0c;于是就…

展示一下香蕉派路由Android系统

没什么好说的&#xff0c;第一版的系统&#xff0c;Android部分还可以&#xff0c;路由设置确实有闪退现象。等稳定版发布&#xff0c;可以把机顶盒和路由二合一&#xff0c;再接个SSD&#xff0c;还是很不错的。 硬件 开机 桌面 安卓程序 安卓设置 可以打开USB调试&#xff0…

网络收集的逻辑思维题

一个有意思的逻辑训练题目 题目如下&#xff1a; 有两个大于1小于100的自然数x,y&#xff0c;老师告诉小明两个数的和&#xff0c;告诉小强两个数的积。已知小明和小强足够聪明。 下面是两个人的对话&#xff1a; 小强&#xff1a;我不知道这两个数是多少。&#xff08;<沉默…

物联网技术之PLC

大家好&#xff0c;欢迎关注技福小咖。今天给大家讲讲物联网技术中的PLC。 可编程逻辑控制器(PLC) 几乎存在于所有现代工业中。尽管它们有多种形状和形式&#xff0c;但它们有一个目标&#xff1a;在复杂的工业应用中实时控制、测量和执行任务。 几十年来&#xff0c;PLC一直…

旭日X3派 AI推理(yolov5)

sunrise AI推理 旭日派中最让其期待的就是其中的BPU加速器&#xff0c;可以提供5TOPS的等效AI算力。 X3芯片概述 BPU是地平线自研的AI加速核&#xff0c;在设计过程中具体结合了AIoT/Auto的场景需求&#xff0c;从算法、计算架构、编译器三个方面进行了软硬协同优化&#xff…

Orangepi(香橙派)提高实时性

Orangepi实时性能优化 提高实时性的方法打内核 RT 补丁、使用 wiringpi 包 解决卡顿问题使用 "isoclpus xx" 禁用核心 解决卡顿问题问题解析&#xff01;cmdline.txt问题写入 /proc/cmdlline 文件出错 提高实时性的方法 首先&#xff0c;本人使用的是 orangepi one …

深入理解Linux网络——内核是如何接收到网络包的

文章目录 一、相关实际问题二、数据是如何从网卡到协议栈的1、Linux网络收包总览2、Linux启动1&#xff09;创建ksotfirqd内核线程2&#xff09;网络子系统初始化3&#xff09;协议栈注册4&#xff09;网卡驱动初始化5&#xff09;网卡启动 3、迎接数据的到来1&#xff09;硬中…

banana pi 香蕉派资源站点

banana pi 香蕉派公共号&#xff1a;SINOVOIP-BPI banana pi 香蕉派中文创客论坛&#xff1a; http://www.banana-pi.org.cn banana pi 英文社区&#xff1a; http://www.banana-pi.org banana pi 产品网站&#xff1a; http://www.banana-pi.com banana pi 工厂网站&#xff1…

- 英语 -

一&#xff1a;什么是词根词缀&#xff1f; 1&#xff1a;词根是表明词的根本意思&#xff0c;看到什么就知道和什么相关 2&#xff1a;词缀分为前缀和后缀&#xff1a;词缀可点缀也可不点缀&#xff0c;主要体现单词的完整性 前缀&#xff1a;主要跟词根一起构成词的大概意思 …

可编程的,协议独立的软件交换机(论文阅读)

PISCES&#xff1a;可编程的&#xff0c;协议独立的软件交换机 摘要 虚拟机监视器使用软件交换机来引导数据包进出虚拟机(vm)。这些交换机经常需要升级和定制&#xff0c;以支持新的协议头或用于隧道和覆盖的封装&#xff0c;以改进测量和调试功能&#xff0c;甚至添加类似于…