C# Winform项目多语言实现(支持简/繁/英三种语言)
C# Winform项目多语言实现(支持简/繁/英三种语言)
关于多语言技术最新文章(2021年): C# Winform支持多语言界面切换的软件快速开发平台 C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理 http://www.csframework.com/archive/1/arc-1-20210520-3436.htm
C# Winform项目多语言实现(支持简/繁/英三种语言) 有多种实现多语言方案,在这里介绍一种最简单最容易理解的,作为教学材题应该从通俗易懂入手。 关于多语言处理,本人尝试过以下几种方案: 1. 使用Form窗体自带的多语言处理。设置Form的Language属性,选择一种语言会自动生成.resx文件。 但是最大的缺点是不易维护,每个语言对应一个resx文件,第个窗体对应至少5个文件!如项目大窗体 数量多会生成数以千计的resx文件!vss控制也成问题。另一个缺点是当界面增加控件时要刷新resx 文件。 2. 使用二维数组存储多语言数据。在用Delphi开发过一个项目,当时用二维数组存储多语言数据。 枚举窗体内所有控件,使用控件名称获取语言数据。 3. 使用XML存储多语言数据。抽象出一个接口用于设置语言。 4. 数据库存储多语言数据、提供多语言管理与维护界面(CSFrameworkV5-旗舰版) 下面介绍第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 } www.csframework.com 版权所有 主窗体部分代码 /// <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, btnChild2.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, btnAbout.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, btnLanguage.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, btnUser.Caption = LanguageProvider.GetLanguage(LanguageProvider.CurrentLanguageType, } 语言定义: <?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> 二、程序截图 英文版: 简体中文: 繁体中文: 最新支持多语言的快速开发平台 - Winform框架 采用数据库语言表(sys_Language)存储多国语言资料 C/S架构软件快速开发平台-旗舰版V5.1 (Ultimate Edition 2021)https://www.csframework.com/cs-framework-5.1.htm 全局翻译英文 全局翻译英文 - 系统管理模块 - 主要功能按钮 语言表(sys_Language) C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理 CSFrameworkV5.1 旗舰版演示视频下载 演示视频下载:https://www.csframework.com/cs-framework-5.0-demo.htm 扫一扫加微信 Source code for VIP:
参考文档:
C#.Net CS开发框架实现多语言(C/S框架网) C# Winform的CheckListBox控件灰掉勾选项目解决方案 C# Winform增删查改快速开发框架|C/S框架网 开发框架多语言包Language.dll (支持简/繁/英三种语言) C/S架构管理系统框架|企业管理系统前端框架(C# Winform) 【原创】C# Winform进销存系统快速开发框架 C# Winform软件版本自动升级 | 软件系统自动更新工具 【原创】C# Winform Dev自动下拉弹框筛选数据PopupContainerEdit组件 CSFramework旗舰版多语言支持两种存储策略:XML文件及SQL数据库 基于DevExpress C# Winform 财务会计凭证表格金额录入组件(支持元角分) 基于C# Winform财务会计凭证表格金额录入组件(支持亿仟佰拾萬仟佰拾圆角分) C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理 C# Winform支持多语言界面切换的软件快速开发平台 C/S架构多语言界面UI框架软件开发框架(C#.NET+Winform+DEV+SQL) C# Winform 使用SUM CASE WHEN实现动态列交叉数据报表
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |