日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

C#如何开发多语言支持的Winform程序

發布時間:2023/12/13 C# 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C#如何开发多语言支持的Winform程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

C# Winform項目多語言實現(支持簡/繁/英三種語言)
有很多種方案實現多語言,我在這里介紹一種最簡單最容易理解的,作為教學材題應該從通俗易懂入手。在寫這篇文章之前,本來想用枚舉窗體對象成員的方式設置語言,但是找不到源代碼了,不知存到那個電腦上了。因此用另一種方式實現,如找到了再分享給大家。
關于多語言處理,本人嘗試過以下幾種方案:
1. 使用Form窗體自帶的多語言處理。設置Form的Language屬性,選擇一種語言會自動生成.resx文件。但是最大的缺點是不易維護,每個語言對應一個resx文件,第個窗體對應至少5個文件!如項目大窗體數量多會生成數以千計的resx文件!vss控制也成問題。另一個缺點是當界面增加控件時要刷新resx文件。給我的印象是處理復雜,維護困難,是一次痛苦的嘗試!


2.?使用二維數組存儲多語言數據。在用Delphi開發過一個項目,當時用二維數組存儲多語言數據。枚舉窗體內所有控件,使用控件名稱獲取語言數據。

3.?使用XML存儲多語言數據。抽象出一個接口用于設置語言。以下介紹這種方案:支持多語言的接口定義:

/// <summary>

/// 支持多語言的接口

/// </summary>

public interface ILanguageSupport

{

/// <summary>

/// 語言編號

/// </summary>

string LanguageISID { get; set; }

?

/// <summary>

/// 設置語言

/// </summary>

/// <param name="language"></param>

void SetLanguage(string language);

void SetLanguage();

?

/// <summary>

/// 設置語言標記。用于自動設置語言

/// </summary>

void SetLanguageTag();

}

定義窗體基類,實現ILanguageSupport接口

public partial class frmBase : XtraForm, ILanguageSupport

{

protected string _LanguageISID;

?

public frmBase()

{

InitializeComponent();

}

?

private void frmBase_Load(object sender, EventArgs e)

{

this.SetLanguage();

}

#region ILanguageSupport 成員

public string LanguageISID { get { return _LanguageISID; } set { _LanguageISID = value; } }

public virtual void SetLanguage(string language) { }

public virtual void SetLanguage() { }

public virtual void SetLanguageTag() { }

#endregion

}
主窗體部分代碼

/// <summary>

/// 設置語言按鈕事件

/// </summary>

private void OnSetLanguage_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)

{

LanguageType type = (LanguageType)int.Parse(e.Item.Tag.ToString());

LanguageProvider.CurrentLanguageType = type;

this.DoSetLanguage();

}

/// <summary>

/// 重新設置所有打開窗體的語言。

/// </summary>

private void DoSetLanguage()

{

foreach (Form form in Application.OpenForms)

if (form is ILanguageSupport) (form as ILanguageSupport).SetLanguage();

}

/// <summary>

/// 設置主窗體的多語言

/// </summary>

public override void SetLanguage()

{

base.SetLanguage();

this.Text = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, "frmMain");

btnChild1.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, "frmMain.btnChild1");

btnChild2.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, "frmMain.btnChild2");

btnAbout.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, "frmMain.btnAbout");

btnLanguage.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, "frmMain.btnLanguage");

btnUser.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType,

"frmMain.btnUser");

}

語言定義:

<?xml version="1.0" encoding="utf-8" ?>

<LanguageLibrary>

?

<lan ISID="frmMain" ENG="C# Multi-Language Implement (http://www.csframework.com/)"

CHN_T="C#實現多語言 (WWW.CSFRAMEWORK.COM C/S框架網)"

CHN_S="C#實現多語言 (WWW.CSFRAMEWORK.COM C/S框架網)">

</lan>

?

<lan ISID="frmMain.btnChild1" ENG="Open Child1 Form" CHN_T="子表單1" CHN_S="子窗體1"></lan>

<lan ISID="frmMain.btnChild2" ENG="Open Child2 Form" CHN_T="子表單2" CHN_S="子窗體2"></lan>

<lan ISID="frmMain.btnAbout" ENG="About Us" CHN_T="關於我們" CHN_S="關于我們"></lan>

<lan ISID="frmMain.btnLanguage" ENG="Select Language" CHN_T="選擇語言" CHN_S="選擇語言"></lan>

<lan ISID="frmMain.btnUser" ENG="Current User" CHN_T="當前用戶" CHN_S="當前用戶"></lan>

?

<lan ISID="frmChild1" ENG="Child Form One" CHN_T="子表單1" CHN_S="子窗體1"></lan>

<lan ISID="frmChild2" ENG="Child Form Two" CHN_T="子表單2" CHN_S="子窗體2"></lan>

<lan ISID="gridColumn1" ENG="User Name" CHN_T="姓名" CHN_S="姓名"></lan>

<lan ISID="gridColumn2" ENG="Tel No." CHN_T="電話" CHN_S="電話"></lan>

<lan ISID="gridColumn3" ENG="Address" CHN_T="地址" CHN_S="地址"></lan>

?

<lan ISID="about" ENG="Open About Us Form" CHN_T="打開關於我們表單" CHN_S="打開關于我們窗體"></lan>

<lan ISID="csframework"

ENG="www.csframework.com will become more and more wonderful with you are surpport.

let's made a happy family together hand in hand. "

?

CHN_T="C/S框架網在您的支持下會建設更美好,讓我們攜起手來共同打造一個快樂家園.

感謝您使用C/S框架網,有任何意見或建議請留言!"

?

CHN_S="C/S框架網在您的支持下會建設更美好,讓我們攜起手來共同打造一個快樂家園.

感謝您使用C/S框架網,有任何意見或建議請留言!">

</lan>

?

</LanguageLibrary>

?


程序截圖
英文版:


簡體中文:


繁體中文:

?

?

?

?

?

?

?

?

?

?

?

?

轉載于:https://www.cnblogs.com/acetaohai123/p/6625722.html

總結

以上是生活随笔為你收集整理的C#如何开发多语言支持的Winform程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。