C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 基于数据库资源的多语言实现
2023-02-18 15:32:11 时间
以前的开发平台里,是用xml语言包实现了多语言功能,现在新的平台里进行了调整,把多语言包资源放在数据库表里实现了。
我们系统预留了多语言的配置全局变量、可以通过配置这个参数达到切换多语言的目的
我们在选项管理里增加一个多语言选择的选项目,然后有哪些语言资源就加上去
下面的表是多语言的数据库设计表结构
下面图是多语言的数据库里的资源设置情况
这个是多语言的设置管理界面参考
下面是多语言的管理窗体位置
多语言例子程序参考:
/// <summary> /// 获取多语言 /// </summary> public void GetLanguage() { this.grbLanguage.Text = this.GetLanguage(this.grbLanguage); this.lblLanguageCode.Text = this.GetLanguage(this.lblLanguageCode) + ":"; this.lblMessageCode.Text = this.GetLanguage(this.lblMessageCode) + ":"; this.lblCaption.Text = this.GetLanguage(this.lblCaption) + ":"; this.btnAdd.Text = this.GetLanguage(this.btnAdd); this.btnSave.Text = this.GetLanguage(this.btnSave); this.btnCancel.Text = this.GetLanguage(this.btnCancel); } public string GetLanguage(Control control) { string result = string.Empty; string key = this.Name + "." + control.Name; string caption = control.Text; result = ClientCache.Instance.GetLanguage(this.UserInfo, key, BaseSystemInfo.CurrentLanguage, caption); return result; }
多语言接口程序参考:
//----------------------------------------------------------------- // All Rights Reserved , Copyright (C) 2015 , Hairihan TECH, Ltd. //----------------------------------------------------------------- using System.Data; using System.ServiceModel; using System.Collections.Generic; namespace DotNet.IService { using DotNet.Utilities; using DotNet.Model; /// <summary> /// ILanguageService /// 多语言接口 /// /// 修改纪录 /// /// 2015.02.24 版本:1.0 JiRiGaLa 创建主键。 /// /// <author> /// <name>JiRiGaLa</name> /// <date>2015.02.24</date> /// </author> /// </summary> [ServiceContract] public interface ILanguageService { /// <summary> /// 获取实体 /// </summary> /// <param name="userInfo">用户</param> /// <param name="id">主键</param> /// <returns>实体</returns> [OperationContract] BaseLanguageEntity GetObject(BaseUserInfo userInfo, string id); /// <summary> /// 添加 /// </summary> /// <param name="userInfo">用户</param> /// <param name="entity">实体</param> /// <param name="statusCode">返回状态码</param> /// <param name="statusMessage">返回状态信息</param> /// <returns>主键</returns> [OperationContract] string Add(BaseUserInfo userInfo, BaseLanguageEntity entity, out string statusCode, out string statusMessage); /// <summary> /// 编辑 /// </summary> /// <param name="userInfo">用户</param> /// <param name="entity">实体</param> /// <param name="statusCode">返回状态码</param> /// <param name="statusMessage">返回状态信息</param> /// <returns>影响行数</returns> [OperationContract] int Update(BaseUserInfo userInfo, BaseLanguageEntity entity, out string statusCode, out string statusMessage); /// <summary> /// 设置多语言 /// </summary> /// <param name="userInfo">用户</param> /// <param name="messageCode">语言编号</param> /// <param name="enUS">英文</param> /// <param name="zhCN">简体中文</param> /// <param name="zhTW">繁体中文</param> /// <returns>影响行数</returns> [OperationContract] int SetLanguage(BaseUserInfo userInfo, string messageCode, string enUS, string zhCN, string zhTW); /// <summary> /// 按编号获取多语言 /// </summary> /// <param name="userInfo">用户</param> /// <param name="messageCode">语言编号</param> /// <returns>列表</returns> List<BaseLanguageEntity> GetLanguageByMessageCode(BaseUserInfo userInfo, string messageCode); /// <summary> /// 批量打删除标志 /// </summary> /// <param name="userInfo">用户</param> /// <param name="ids">主键数组</param> /// <returns>影响行数</returns> [OperationContract] int SetDeleted(BaseUserInfo userInfo, string[] ids); /// <summary> /// 批量保存 /// </summary> /// <param name="userInfo">用户</param> /// <param name="list">列表</param> /// <returns>影响行数</returns> [OperationContract] int BatchSave(BaseUserInfo userInfo, List<BaseLanguageEntity> list); } }
相关文章
- 8天入门docker系列 —— 第六天 搭建自己的私有镜像仓库Registry
- 8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署
- 8天入门docker系列 —— 第四天 使用aspnetcore小案例熟悉端口映射和挂载目录
- 8天入门docker系列 —— 第三天 使用aspnetcore小案例熟悉对镜像的操控
- 8天入门docker系列 —— 第二天 通过一个aspnetcore程序加深对容器的理解
- 8天入门docker系列 —— 第一天 docker出现前的困惑和简单介绍
- jenkins + supervisor + ansible 实现netcore程序的多机一键部署
- netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布
- 看看redis中那些好玩的module (sql on redis, bf/cf on redis)
- 使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
- netcore服务程序暴力退出导致的业务数据不一致的一种解决方案(优雅退出)
- 你需要知道的这几种 asp.net core 修改默认端口的方式
- 使用kibana可视化报表实时监控你的应用程序,从日志中找出问题,解决问题
- 小步快跑的公司可以最简化操作直接通过log4net将日志写入ElasticSearch
- spark集群搭建整理之解决亿级人群标签问题
- 继续吐槽在net下没有合适的Disk Cache之使用EhCache
- 吐槽net下没有靠谱的FastDFS的sdk之使用thrift实现JAVA和C#互通
- 你需要了解的高可用方案之使用keepalived搭建双机热备一览
- 全内存的redis用习惯了?那能突破内存限制类redis产品ssdb呢?
- 把项目中那些恶心的无处存储的大块数据都丢到FastDFS之快速搭建