C#WinForm多语言方案
因为没找到现成可用的,所以写了这篇:
1、流程、设计图
2、解决了两大痛点:
2.1:新增一个语言,只需修改xml配置文件,通过动态对象DynamicObject,有3个语言就添加3个属性
2.2可修改字体大小,有时中文换成英文,位置不够,需要修改字体大小
示例:
图1
图2
3、可拓展
想修改控件其他属性,在xml中添加后,在代码稍稍修改即可
另外特殊控件,还需自己修改,ListView 的 Columns集合的ColumnHeader 需要自己添加Name属性(重要)
<?xml version="1.0" encoding="utf-8"?> <TranslateXMl> <Options> <Language>CN</Language> <Language>EN</Language> <Language>JP</Language> <Language>粤语</Language> </Options> <Form> !界面1 <Form Name = "Form1"> <Item 属性="Text" CN = "界面" EN = "From" JP ="インターフェース "/> <Control Name="bt_Test"> <Item 属性="Text" CN = "测试" EN = "Test" JP ="テスト " 粤语 = "AAA"/> <Item 属性="Font" CN = "20" EN = "10" JP ="30"/> </Control> <Control Name="button1"> <Item 属性="Text" CN = "按钮1" EN = "btn1" JP ="ボタン1 "/> </Control> <Control Name="button2"> <Item 属性="Text" CN = "按钮2" EN = "btn2" JP ="ボタン2 "/> </Control> <Control Name="toolStripMenuItem1"> <Item 属性="Text" CN = "目录1" EN = "Menu1" JP ="目次1"/> </Control> <Control Name="toolStripMenuItem2"> <Item 属性="Text" CN = "目录2" EN = "Menu2" JP ="目次2"/> </Control> <Control Name="toolStripTextBox1"> <Item 属性="Text" CN = "按钮" EN = "btn" JP ="ボタン"/> </Control> <Control Name="toolStripTextBox3"> <Item 属性="Text" CN = "目录的按钮" EN = "Menubtn" JP ="ボタン"/> </Control> <Control Name="toolStripTextBox2"> <Item 属性="Text" CN = "最底按钮" EN = "Lowbtn" JP ="ボタン"/> </Control> </Form> </Form> </TranslateXMl>
4、Demo下载地址:Rick413/MultiLanguageDemo (github.com)
运行环境:vs2019,win10
吾生也有涯,而知也无涯,以有涯随无涯,殆已。