• Winform 多语言化快速解析替换工具-1分钟一个界面


    随着业务的扩展,有的软件有多语言化的需求。那么如果软件已经很多写死的文字内容如何快速进行语言化替换呢,一个一个去改工作量太大。

    于是开发了个小工具用来替换现有内容并生成语音包,原理就是采用正则表达式进行匹配控件关键字以及中文进行多语言组装解析。

    关键正则表达式

          string pattern = @"this\.(\w+)\.Text = ""([^""]*[\u4e00-\u9fa5]+[^""]*)""";

       string pattern = @"(?

    语言包组装

    try
                {
                    // 根据行列进行 XML生成
                    var lines = TxtLanguage.Lines.ToList();
                    List xmlList = new List();
                    xmlList.Add($@"!{TXTCH.Text}
               


                ");
                    lines.ForEach(line =>
                    {
                        var lineArr = line.Split("\t");
                        if (lineArr.Length > 2)
                        {
                            // 第一位是表单名称
                            // 第二位是控件名称
                            // 第三位是中文
                            // 第四位是英文
                            // 第五位是墨西哥 。。。
                            var controlName = lineArr[1];
                            var chinese = lineArr[2];
                            var eng = lineArr.Length > 3 ? lineArr[3] : "";
                            var es = lineArr.Length > 4 ? lineArr[4] : "";
                            string controlText = $@"
                                
                               
                            
    ";
                            xmlList.Add(controlText);
                        }
                    });
                    xmlList.Add("");

                    TxtXml.Lines = xmlList.ToArray();
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.ToString());
                }

    1. !test
    2.             <Form Name = "test">
    3.             <Item 属性="Text"  CN = "test"   EN = "test" RU ="" />
    4. <Control Name="请输入表单name">
    5.                             <Item 属性="Text" CN = "请输入表单name"  EN = "Please enter the form name " RU ="Введите формуname "/>
    6.                             <Item 属性="Font" CN = "9"  EN = "9" RU ="9" />
    7.                         Control>
    8. <Control Name="$1MultiLanguage.GetInstance().SelectLanguage(this);//界面语言">
    9.                             <Item 属性="Text" CN = "$1MultiLanguage.GetInstance().SelectLanguage(this);//界面语言"  EN = "$1MultiLanguage.GetInstance (). SelectLanguage (this); //Interface language " RU ="$1MultiLanguage. GetInstance(). SelectLanguage (this); //язык интерфейса "/>
    10.                             <Item 属性="Font" CN = "9"  EN = "9" RU ="9" />
    11.                         Control>
    12. <Control Name="翻译异常">
    13.                             <Item 属性="Text" CN = "翻译异常"  EN = "Translation anomaly " RU ="аномалия перевода "/>
    14.                             <Item 属性="Font" CN = "9"  EN = "9" RU ="9" />
    15.                         Control>
    16. <Control Name="控件名称: ">
    17.                             <Item 属性="Text" CN = "控件名称: "  EN = "Control name: " RU ="Имя элемента управления: "/>
    18.                             <Item 属性="Font" CN = "9"  EN = "9" RU ="9" />
    19.                         Control>
    20. <Control Name="匹配内容: ">
    21.                             <Item 属性="Text" CN = "匹配内容: "  EN = "Matching content: " RU ="Сопоставление содержимого: "/>
    22.                             <Item 属性="Font" CN = "9"  EN = "9" RU ="9" />
    23.                         Control>
    24. Form>

  • 相关阅读:
    最近身边一个技术负责人裸辞了...
    联想Y9000P-2022款踩坑指南 加装固态和内存 win10系统安装
    JVM 方法内联
    如何通过QGC实现无人机的自动化任务,包括飞行计划的制定和执行。
    刷题学习记录
    Ubuntu源码编译Mysql常见的错误
    京东发布第三季度财报员工总数近50万 “以实助实”助力高质量就业
    基于yolov8的半自动标注
    通过Node.js获取高德的省市区数据并插入数据库
    全志A40i android7.1 增加Vlan功能
  • 原文地址:https://blog.csdn.net/u011540323/article/details/133823321