权限管理、用户权限系统、开源用户权限系统、信息化建设标准基础数据管理平台
代码改变世界

C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 基于数据库资源的多语言实现

  通用C#系统架构  阅读(4690)  评论(2编辑  收藏  举报

以前的开发平台里,是用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);
    }
}
复制代码

 

编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
历史上的今天:
2011-02-26 终于理解你的软件 搞那么多年了 (通用权限管理系统组件源码完善了7-8年)
2011-02-26 通用权限管理系统中的版本版权信息设置参【成熟商业版权限管理系统】
2011-02-26 C#.NET 通用权限管理系统中的数据集权限设置实现参考界面(商业化成熟权限管理系统,提供全部源码)
2011-02-26 C#.NET通用权限管理系统组件中数据集权限设置功能增加内部组织机构选项功能


C# ASP.NET 通用权限设计、通用权限管理、通用权限组件、单点登录、集中式权限管理、统一授权体系、分级管理分级授权


微信扫一扫加好友



点击右上角即可分享
微信分享提示