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

posted @ 2021-07-14 21:39  工控废物  阅读(873)  评论(1编辑  收藏  举报