1. 程式人生 > 其它 >C#WinForm多語言方案

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

吾生也有涯,而知也無涯,以有涯隨無涯,殆已。