当前位置: 首页 > news >正文

提供一个c# winform的多语言框架源码,采用json格式作为语言包,使用简单易于管理加载且不卡UI,支持“语言分级”管理

提供一个c# winform的多语言框架源码,采用json格式作为语言包,不使用resx资源,当然本质一样的,你也可以改为resx

一、先看下测试界面

演示了基本的功能:切换语言,如何加载语言,如何分级加载语言

二、看下测试界面的代码

如上图所示,代码编写步骤:
1.依赖注入载入语言管理器

        private readonly ILanguageManager _languageManager;public MainForm(ILanguageManager languageManager){_languageManager = languageManager;InitializeComponent();languageManager.LanguageChanged += (s, e) => Localize();}


2.加入语言变更事件

        private readonly ILanguageManager _languageManager;public MainForm(ILanguageManager languageManager){_languageManager = languageManager;InitializeComponent();languageManager.LanguageChanged += (s, e) => Localize();}private void Localize(){ButtonChangeLanguage.Text = _languageManager.CurrentLanguage["Buttons.ButtonMount"];FrmCallRepairText.Text = _languageManager.CurrentLanguage["Labels.mazhiyuan"];//测试多级if (PauseButton.Text == _languageManager.CurrentLanguage["DataSyncRecordsControl.PauseButton.Pause"]){PauseButton.Text = _languageManager.CurrentLanguage["DataSyncRecordsControl.PauseButton.Resume"];}else{PauseButton.Text = _languageManager.CurrentLanguage["DataSyncRecordsControl.PauseButton.Pause"];}}

是的,就是这么简单易用。

三、语言包的制定

如图所示,语言包文件默认是自动读取“Languages"中所有.json文件。
当然,您可以在初始化的时候改变这个配置。代码在如下图的地方修改

四、关于.json文件 的内容

如上图,以简体中文zh-CN.json为例子:
LanguageName:语言名称
LanguageCode:语言唯一编码
Order:排序,类型是float,支持小数点。值越小,就排在越前面
Default:是否默认,当为true的时候,那么打开winform程序,就自动使用这个配置的语言包
Translations:语言翻译。特色是支持多级分类 ,这样有助于你按层级结构进行语言整理。访问的时候,使用小数点进行间隔,如下图所示:

五、核心接口

ILanguageManager是核心接口,所有访问均从此入口进去。
具体接口内容,请看截图。

具体的代码实现就不多说了。提供了源码,请自行下载。

如上图,源码位置在Xejen.Common目录下。


源码下载:
https://gitee.com/mazhiyuan1981/xejen-open.git

祝您用餐愉快。

相关文章:

提供一个c# winform的多语言框架源码,采用json格式作为语言包,使用简单易于管理加载且不卡UI,支持“语言分级”管理

提供一个c# winform的多语言框架源码,采用json格式作为语言包,不使用resx资源,当然本质一样的,你也可以改为resx 一、先看下测试界面 演示了基本的功能:切换语言,如何加载语言,如何分级加载语…...

Docker常见命令

创建并运行容器 例子:docker安装运行mysql docker run -d \ --name mysql \ -p 3306:3306 \ -e TZAsia/Shanghai \ -e MYSQL_ROOT_PASSWORDroot \ -v /root/data/mysql/data:/var/lib/mysql \ -v /root/data/mysql/init:/docker-entrypoint-initdb.d \ -v /root/d…...

中科大6系+先研院+中南大学电子信息学院2023年保研经历

中科大6系 英语口语问题: What’s your research plan?Please introduce your project. 专业课问题: BPSK和QPSK每个字母代表的含义?QAM的星座图是什么样的?根据什么准则画成那个样子? 中科大先研院 …...

分布式理论--BASE

目录 是什么BASE 与 CAP,ACID 的区别BASE 和 Paxos 类共识算法的区别相关问题 是什么 BASE 理论是对 CAP 理论的进一步扩展主要强调在分布式系统中,为了获得更高的可用性和性能,可以放宽对一致性的要求,是对 CAP 中 AP 方案的一个…...

【计算机网络原理】浅谈应用层协议的自定义和传输层UDP协议的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…...

正则表达式及其应用

demo1: package 正则表达式;public class demo1 {public static void main(String[] args) {//只能是a b cSystem.out.println("a".matches("[abc]"));//true//前后校验字符个数需要一致System.out.println("ab".matches("[abc]"));/…...

VUE面试题(3)--vue常见面试题

1.vue优点 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。 …...

2024.05.24|生信早报【AI测试版】

植物再生领域重大突破 山农大团队发现植物“再生指挥官”REF1:中国科学院院士种康高度评价,认为这一发现对细胞分化与再生领域的基础科学研究和生物技术应用具有重大意义。 生物医药专业园区建设\n- 卫光生命科学园聚焦合成生物学、脑科学&#xff1a…...

计算机毕业设计 | springboot药品库存追踪与管理系统 药店管理(附源码)

1,绪论 1.1 背景调研 如今药品调价频繁,且品种繁多,增加了药品销售定价的难度。药品来货验收登记中的审查有效期环节容易出错,错收过期或有效期不足的药品。 手工模式下的药品库存难以及时掌握,虽然采取了每日进行缺…...

Flink 对接 Hudi 查询数据,java代码编写

1.pom.xml文件需要引入下面包 <properties><flink.version>1.15.4</flink.version><hudi.version>0.13.1</hudi.version></properties><dependencies><dependency><groupId>org.apache.flink</groupId><artifa…...

计算机操作系统总结(1)

1操作系统的概念&#xff08;定义&#xff09;功能和目标 (1)什么是操作系统&#xff1f; &#xff08;2&#xff09;操作系统的功能和目标—作为系统资源的管理者 &#xff08;3&#xff09;操作系统的功能和目标—向上层提供方便易用的服务 &#xff08;4&#xff09;操作系…...

HTML5好看的通用网站模板源码

文章目录 1.设计来源1.1 主界面1.2 模板菜单1 界面1.3 模板菜单2 界面1.4 模板菜单3 界面1.5 下拉菜单1 界面1.6 下拉菜单2 界面1.7 模板菜单4 界面1.8 模板菜单5 界面1.9 界面底部 2.效果和源码2.1 动态效果2.2 源码目录2.3 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址…...

AWS安全性身份和合规性之Inspector

Amazon Inspector 是一项漏洞管理服务&#xff0c;可持续扫描您的 AWS 工作负载&#xff0c;以查找软件漏洞和意外网络泄露。Amazon Inspector 会自动发现和扫描正在运行的亚马逊 EC2 实例、亚马逊弹性容器注册表 (Amazon ECR) Container Registry 中的容器映像&#xff0c;以及…...

mybatis plus 配置多数据源(数据源进行切换)

多数据源(数据源进行切换) AbstractRoutingDataSource 根据用户定义的规则选择当前的数据源&#xff0c;这样我们可以在执行查询之前&#xff0c;设置使用的数据源。实现可动态路由的数据源&#xff0c;在每次数据库查询操作前执行。它的抽象方法 determineCurrentLookupKey()…...

Docker-Android安卓模拟器本地部署并实现远程开发测试

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器&#xff0c;并结合cpolar内网穿透工具实现公网远程访问本地…...

vue-封装上下(垂直方向)轮播

需求&#xff1a;没有找到特别好的上下轮播插件-所以自己写了一个简单的demo 一.上下平滑轮播-移入停止-移出继续轮播 <!--* 消息滚动 --> <template><div class"news"><div id"roll" class"InfoBox" mouseover"thi…...

海外私人IP和原生IP有什么区别,谁更有优势?

一、什么是海外私人IP&#xff1f;什么是原生IP&#xff1f; 1、海外私人IP&#xff1a; 海外私人IP是由专门的服务提供商提供的IP地址&#xff0c;这些IP地址通常与特定地理位置或国家相关联。这些IP地址独享私人而不用与其他用户共享。海外私人IP广泛应用与跨境电商中&#x…...

主流容器工具对比以及重点推荐学习的企业级工具

常见的主流容器工具包括但不限于以下几种&#xff1a; 1. Docker&#xff1a; Docker 是最流行的容器平台之一&#xff0c;它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中&#xff0c;然后可以在任何支持Docker的系统上运行。 2. Kubernetes&#xff1a;Kubern…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线编辑word文件,同时保存数据和文件

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;芯片架构。 在OA办公、文档流转等各个Web系统中&#xff0c;实现最简单的…...

个人感觉对Material设计有用的几个网址

(一) Modular and customizable Material Design UI components for Android GIthub: material-components-android (二) 学习Material设计 Material Design (三) 用于创建Material主题&#xff0c;支持导出多种格式 material-theme-builder...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...