C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理
![](http://www.csframework.com/images/article-type5.gif)
![C# Winform软件快速开发框架|软件开发平台 - 界面多语言实现原理](http://www.csframework.com/images/seo/csframework-seo-winformCS%E6%9E%B6%E6%9E%84%E5%BF%AB%E9%80%9F%E5%BC%80%E5%8F%91%E6%A1%86%E6%9E%B6.jpg)
内容简介
C/S系统软件快速开发框架支持多国语言界面,语言资料存储在CSFrameworkVXX.System数据库的sys_Language表。目前支持中文繁体、简体、英文、越南文(默认是中文简体),分别对应的字段名称:CHS\CHT\ENG\VN,您可通过系统管理模块的【多语言管理】进行维护语言库资料。
![贴图图片-csframework-multi-lan多语言界面框架](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B6.png)
![贴图图片-csframework-multi-lan多语言界面框架1](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B61.png)
![贴图图片-csframework-multi-lan多语言界面框架7](http://www.csframework.com/upload/image/csframework-multi-lan多语言界面框架7.png)
![贴图图片-csframework-multi-lan多语言界面框架8](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B68.png)
![贴图图片-csframework-multi-lan多语言界面框架3](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B63.png)
![贴图图片-csframework-multi-lan多语言界面框架2](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B62.png)
![贴图图片-csframework-multi-lan多语言界面框架6](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B66.png)
![贴图图片-csframework-multi-lan多语言界面框架5](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B65.png)
![贴图图片-CS框架多语言-6](http://www.csframework.com/upload/image/CS%E6%A1%86%E6%9E%B6%E5%A4%9A%E8%AF%AD%E8%A8%80-6.png)
![贴图图片-CS框架多语言-7](http://www.csframework.com/upload/image/CS%E6%A1%86%E6%9E%B6%E5%A4%9A%E8%AF%AD%E8%A8%80-7.png)
![C/S框架网|原创精神.创造价值.打造精品](http://www.csframework.com/images/our03.gif)
扫一扫加微信
![C/S框架网|原创作品.质量保障.竭诚为您服务](http://www.csframework.com/images/CS%E6%A1%86%E6%9E%B6%E7%BD%91%E6%8F%90%E4%BE%9B%E9%AB%98%E6%95%88%E4%BC%98%E8%B4%A8%E6%9C%8D%E5%8A%A1.jpg)
C/S系统软件快速开发框架支持多国语言界面,语言资料存储在CSFrameworkVXX.System数据库的sys_Language表。目前支持中文繁体、简体、英文、越南文(默认是中文简体),分别对应的字段名称:CHS\CHT\ENG\VN,您可通过系统管理模块的【多语言管理】进行维护语言库资料。
软件优势
1. 自动初始化所有界面的默认语言到语言数据库。
2. 提供多语言管理界面,管理和维护语言库资料。
3. 使用方面,容易扩展。
支持多语言的开发框架版本
多语言实现机制原理
1.每一条语言信息定义一个唯一的编号(ObjectID),作为语言编码,通过ObjectID获取语言资料。
2.定义两种语言数据类型(ItemType,Message/Control),
Message 类型是普通消息,既用户自定义消息,消息内容本身作为ObjectID存储。
Control 类型是窗体界面的组件,获取或设置组件的.Text,.Caption属性的值。
3. 系统通过枚举Form的组件成员对象自动将.Text或.Caption的值添加到语言库,作为默认语言。
4. 独立封装语言库程序包,CSFramework2.3.Language.dll
5. 提供语言库处理程序,LanLib工具类。通过LanLib.Get()方法获取语言。
C# Code:
/// <summary>
/// 多语言管理类
/// </summary>
public class LanLib
{
//当前语言类型
private static LanguageType _Current = LanguageType.CHS;
/// <summary>
///语言类型
/// </summary>
public static LanguageType Current { get { return _Current; } set { _Current = value; } }
/// <summary>
/// 语言资料库策略接口
/// </summary>
public static ILanguage LanguageData { get; set; }
/// <summary>
/// 获取控件的文本(Text/Caption)的多语言
/// </summary>
/// <param name="objectID">语言标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static string Get(string objectID, string defaultValue)
{
return LanguageData.Get(objectID, defaultValue, LanguageDataType.Control);
}
//获取控件的文本(Text/Caption)的多语言
public static string Get(LanguageType type, string objectID, string defaultValue)
{
return LanguageData.Get(type, objectID, defaultValue, LanguageDataType.Control);
}
//获取控件的文本(Text/Caption)的多语言
public static string GetByMatch(string objectID, string defaultValue)
{
return LanguageData.GetByMatch(objectID, defaultValue, LanguageDataType.Control);
}
/// <summary>
/// 获取用户自定义消息的多语言
/// </summary>
/// <param name="userMsg">用于自定义消息</param>
/// <returns></returns>
public static string Get(string userMsg)
{
return LanguageData.Get(userMsg);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 多语言管理类
/// </summary>
public class LanLib
{
//当前语言类型
private static LanguageType _Current = LanguageType.CHS;
/// <summary>
///语言类型
/// </summary>
public static LanguageType Current { get { return _Current; } set { _Current = value; } }
/// <summary>
/// 语言资料库策略接口
/// </summary>
public static ILanguage LanguageData { get; set; }
/// <summary>
/// 获取控件的文本(Text/Caption)的多语言
/// </summary>
/// <param name="objectID">语言标识</param>
/// <param name="defaultValue">默认值</param>
/// <returns></returns>
public static string Get(string objectID, string defaultValue)
{
return LanguageData.Get(objectID, defaultValue, LanguageDataType.Control);
}
//获取控件的文本(Text/Caption)的多语言
public static string Get(LanguageType type, string objectID, string defaultValue)
{
return LanguageData.Get(type, objectID, defaultValue, LanguageDataType.Control);
}
//获取控件的文本(Text/Caption)的多语言
public static string GetByMatch(string objectID, string defaultValue)
{
return LanguageData.GetByMatch(objectID, defaultValue, LanguageDataType.Control);
}
/// <summary>
/// 获取用户自定义消息的多语言
/// </summary>
/// <param name="userMsg">用于自定义消息</param>
/// <returns></returns>
public static string Get(string userMsg)
{
return LanguageData.Get(userMsg);
}
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
如何扩充自定义语言?
若要扩充语言,首先在sys_LanguageType表添加一种语言类型(如:XX),然后在sys_Language表添加一个语言类型字段(XX),字段名称必须与语言类型一致!!!
打开VS,修改系统管理模块的【多语言管理】界面,在表格中添加一列,列的字段对应:XX,您也可以增加查询条件。
多语言界面展示
![贴图图片-csframework-multi-lan多语言界面框架](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B6.png)
![贴图图片-csframework-multi-lan多语言界面框架1](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B61.png)
默认简体中文
![贴图图片-csframework-multi-lan多语言界面框架7](http://www.csframework.com/upload/image/csframework-multi-lan多语言界面框架7.png)
切换为英文
![贴图图片-csframework-multi-lan多语言界面框架8](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B68.png)
系统管理模块进行多语言管理:
![贴图图片-csframework-multi-lan多语言界面框架3](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B63.png)
![贴图图片-csframework-multi-lan多语言界面框架2](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B62.png)
![贴图图片-csframework-multi-lan多语言界面框架6](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B66.png)
![贴图图片-csframework-multi-lan多语言界面框架5](http://www.csframework.com/upload/image/csframework-multi-lan%E5%A4%9A%E8%AF%AD%E8%A8%80%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B65.png)
C#实现:
Form继承ILanguageSupport接口,然后在Form.Load事件调用this.SetLanguage方法。
C# Code:
/// <summary>
/// 支持多语言的接口
/// </summary>
public interface ILanguageSupport
{
/// <summary>
/// 设置语言
/// </summary>
void SetLanguage();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 支持多语言的接口
/// </summary>
public interface ILanguageSupport
{
/// <summary>
/// 设置语言
/// </summary>
void SetLanguage();
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
C# Code:
/// <summary>
/// 接口的方法,设置当前窗体的语言
/// </summary>
public virtual void SetLanguage()
{
this.Text = LanLib.Get(LanLib.Current, this.GetType().FullName, this.Text);
LanTool.SetLanguage(this);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 接口的方法,设置当前窗体的语言
/// </summary>
public virtual void SetLanguage()
{
this.Text = LanLib.Get(LanLib.Current, this.GetType().FullName, this.Text);
LanTool.SetLanguage(this);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
Baidu翻译的英文界面效果:
![贴图图片-CS框架多语言-6](http://www.csframework.com/upload/image/CS%E6%A1%86%E6%9E%B6%E5%A4%9A%E8%AF%AD%E8%A8%80-6.png)
Baidu翻译的英文界面效果:
![贴图图片-CS框架多语言-7](http://www.csframework.com/upload/image/CS%E6%A1%86%E6%9E%B6%E5%A4%9A%E8%AF%AD%E8%A8%80-7.png)
![C/S框架网|原创精神.创造价值.打造精品](http://www.csframework.com/images/our03.gif)
扫一扫加微信
![C/S框架网作者微信](http://www.csframework.com/images/wechatcode.jpg)
![C/S框架网|原创作品.质量保障.竭诚为您服务](http://www.csframework.com/images/CS%E6%A1%86%E6%9E%B6%E7%BD%91%E6%8F%90%E4%BE%9B%E9%AB%98%E6%95%88%E4%BC%98%E8%B4%A8%E6%9C%8D%E5%8A%A1.jpg)
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网