实用指南:WPF 国际化ResXManager的使用-梳理

news/2026/1/27 9:25:16/文章来源:https://www.cnblogs.com/yangykaifa/p/19536595

看了几篇WPF 中使用ResXManager的文章:

WPF国际化 - ResXManager 多语言切换https://blog.csdn.net/szy13323042191/article/details/136673807?fromshare=blogdetail&sharetype=blogdetail&sharerId=136673807&sharerefer=PC&sharesource=qq_59062726&sharefrom=from_link

小白请先阅读完毕再接着往下看。有经验的随意。

需要了解的一些类:

CultureInfo:

在代码中表示你的软件使用什么语言以及对应的资源文件。

System.Globalization.CultureInfo 类 - .NET | Microsoft Learn

ResourceManager 

ResourceManager 是资源管理器,在代码中针对某一资源文件,根据键获取对应的值(资源文件就是键值对的形式)

ResourceManager 类 (System.Resources) | Microsoft Learn

大致步骤:

使用到的切换语言助手类大致如下:

 public class LanguageManager : INotifyPropertyChanged{/// /// 资源/// private readonly ResourceManager _resourceManager;/// /// 懒加载/// private static readonly Lazy _lazy = new Lazy(() => new LanguageManager());public static LanguageManager Instance => _lazy.Value;public event PropertyChangedEventHandler PropertyChanged;public LanguageManager(){//获取此命名空间下Resources的Lang的资源,Lang可以修改_resourceManager = new ResourceManager("FluentVision.UI.Lang.lang", typeof(LanguageManager).Assembly);}/// /// 索引器的写法,传入字符串的下标/// /// /// /// public string this[string name]{get{if (name == null){throw new ArgumentNullException(nameof(name));}return _resourceManager.GetString(name);}}public void ChangeLanguage(CultureInfo cultureInfo){CultureInfo.CurrentCulture = cultureInfo;CultureInfo.CurrentUICulture = cultureInfo;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("item[]"));  //字符串集合,对应资源的值}}

语言切换:

LanguageManager.Instance.ChangeLanguage(new CultureInfo("en"));

界面绑定:

代码中使用:

这里说一下几个关键点便于理解:

1.cultrueInfo和资源文件

资源文件命名规则为:文件名(自定义)+cultrueInfo.Name+.resx后缀名

如:

lang.resx   默认资源

lang.en.resx    英语资源

lang.zh-CN.resx   中文资源

这样命名应用程序代码会根据cultureInfo来确定从哪一个文件读取资源,这一部分是.Net内置的功能,确定了cultrueInfo就可以确定程序用到的资源文件。

创建新的对象:new CultureInfo("en"),就相当于宣布使用 lang.en.resx   这个文件。

2.加载默认资源文件

_resourceManager = new ResourceManager("FluentVision.UI.Lang.lang", typeof(LanguageManager).Assembly);

这样不指定CultureInfo的情况下,会使用lang.resx  这个默认资源文件。

3.数据绑定系统

实际上LanguageManager 相当于一个View的一个ViewModel,xaml中使用Binding 绑定了LanguageManager 的属性,然后切换语言的时候,通过PropertyChanged事件实现界面数据刷新,跟平常使用的MVVM思想一致。

索引器是类的有参属性,查看IL发现实际上生成了一个名字是Item的属性:

所以上面代码才会这样写:

// "item[]" 就是指上面的 this[string name] 索引器 名称PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("item[]"));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1223344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ISBN查询服务技术架构深度解析:如何构建高可用、高性能的图书数据平台

ISBN查询服务技术架构深度解析:如何构建高可用、高性能的图书数据平台在数字化信息时代,图书作为知识载体的重要性愈发凸显。作为图书的“数字身份证”,ISBN(国际标准书号)的高效查询服务已成为图书馆系统、在线书…

springboot文化旅游小程序系统设计实现

背景分析 文化旅游行业数字化转型需求显著增长,游客对个性化、便捷化的服务需求提升。传统旅游服务存在信息分散、交互体验差等问题,移动端小程序凭借轻量化、即用即走的特点成为解决方案。SpringBoot框架因其快速开发、微服务支持等优势,适…

Java快速开发平台深度评测:若依、芋道、Jeesite、JeecgBoot四剑客全解析

引言在数字化转型浪潮中,企业级应用开发效率成为关键竞争力。Java生态中,若依、芋道、Jeesite、JeecgBoot四大开源框架凭借差异化定位,成为开发者手中的"效率利器"。本文将从技术架构、核心优势、上手难度、适用场景四大维度展开深…

计算机软件著作权(软著)全解析:价值、流程与应用场景

摘要计算机软件著作权(简称“软著”)是保护软件创新成果的核心法律工具。本文从软著的定义出发,系统梳理其申请价值(个人职业发展、企业经济与政策优势)、申请流程(材料准备与提交规范)&#xf…

springboot图书馆座位预约微信小程序系统设计实现

背景分析 图书馆座位资源有限,尤其在考试周或高峰期,座位供不应求,传统的人工占座或现场排队方式效率低下,易引发纠纷。数字化管理需求迫切,微信小程序因其轻量化和高普及率成为理想载体。 技术背景 Spring Boot 提…

springboot图书捐赠管理系统设计开发实现

背景分析图书捐赠管理系统在数字化社会中的需求日益显著。传统捐赠流程依赖人工登记、分类和追踪,效率低下且易出错。尤其在教育机构、公益组织或社区图书馆中,大量闲置图书的流转需要透明化、系统化的管理工具。SpringBoot作为轻量级Java框架&#xff0…

测试执行引擎核心模块设计解析

在DevOps与持续测试的行业背景下,测试执行引擎作为自动化测试的中枢系统,其模块化设计直接影响测试效能。本文从测试从业者的工程实践视角出发,深度剖析调度控制层、用例执行层、环境治理层三大核心模块的设计原理,并结合分布式调…

多环境适配测试架构设计:原则与优化策略

在软件测试领域,多环境适配已成为确保产品跨平台兼容性和稳定性的核心挑战。随着应用部署环境的多样化(如不同操作系统、硬件设备和网络条件),测试团队亟需一个高效、可扩展的架构设计来应对碎片化问题。 本文基于行业最佳实践&am…

配置中心在测试框架中的应用:提升测试效率的关键策略

随着微服务架构的普及,软件测试框架面临着配置管理日益复杂的挑战。传统的测试配置分散在各个环境(如开发、测试、生产),导致版本冲突、环境不一致等问题频发,严重影响测试的准确性和敏捷性。配置中心作为一种统一管理…

行为驱动开发(BDD)框架集成指南

1. BDD框架概述与核心价值 行为驱动开发(BDD)是一种敏捷方法,强调通过自然语言描述系统行为来弥合业务需求与技术实现之间的鸿沟,其核心是使用“Given-When-Then”结构化场景定义验收标准。对测试从业者而言,BDD的价值…

微服务架构下的 UI 测试策略

在微服务架构中,用户界面(UI)测试作为端到端(E2E)测试的核心环节,直接关系到最终用户体验和业务目标实现。然而,微服务的分布式、多语言和独立部署特性,为 UI 测试带来了独特挑战。本…

跨平台统一测试框架构建方法论

1. 跨平台测试框架的概述 随着软件应用的多样化发展,跨平台测试框架成为确保产品在多环境(如Windows、iOS、Android、Linux)下一致性和可靠性的关键工具。这种框架通过统一标准,简化测试流程,提升效率,同时…

2026年齿轮式拉丝机供应商排名,口碑好的厂家推荐

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆企业,为企业选型提供客观依据,助力精准匹配适配的齿轮式拉丝机服务伙伴。 TOP1 推荐:佛山市顺德区斯创机械设备有限公司 推荐指数:★★★★★ | 口碑评…

测试工具链自定义插件开发指南:从基础到实践

一、自定义插件在测试工具链中的核心价值 在软件测试领域,自定义插件是增强工具链灵活性的关键。它允许测试从业者根据项目需求,无缝集成第三方工具、自动化特定验证逻辑或优化报告输出,从而提升测试效率和质量。插件开发的核心目标是实现安…

湖南特产渔湘四海/休闲零食批发零售/坚果炒货食品配送服务商综合选购推荐指南(2026年版)

市场格局分析:千亿赛道加速整合,区域品牌迎来黄金窗口期 据艾媒咨询《2025年中国休闲食品行业白皮书》数据显示,2025年我国休闲零食市场规模已达1.38万亿元,同比增长9.2%,其中坚果炒货、地方特色食品细分品类增速…

低代码测试平台二次开发实战指南

测试领域的新赋能 在软件测试领域,低代码平台正迅速成为提升效率的利器。通过可视化界面和模块化组件,测试人员能快速构建自动化测试流程,但标准功能常无法满足复杂业务场景需求。二次开发允许测试从业者深度定制平台,集成专属测…

2025-2026办公鼠标推荐:从新手到资深职场人,这5款让你效率翻倍

2025-2026办公鼠标推荐:从新手到资深职场人,这5款让你效率翻倍(含罗技MX Master 4深度解析) 职场人每天和鼠标打交道的时间,可能比和同事说话还多。一款好的办公鼠标,不仅能减少手腕酸痛、手指发麻的“鼠标手”困…

2026热门宠物智能舱品牌盘点:从家庭到商业,选对产品不纠结

2026热门宠物智能舱品牌盘点:从家庭到商业,选对产品不纠结 据MobTech研究院发布的《2025年宠物行业消费趋势洞察》数据显示,国内宠物消费市场规模已突破3000亿元,城镇猫犬数量持续稳步增长,目前已超1.24亿只,宠物…

通蔚生物口碑提升:四大维度的全方位解决方案,il-1β elisa试剂盒/IL-6试剂盒,通蔚生物源头厂家排行

一、引言 在当今生物医药行业激烈竞争的大环境下,通蔚生物作为上海通蔚实业有限公司旗下的重要业务板块,其口碑的好坏对于企业的长远发展起着至关重要的作用。良好的口碑不仅能够吸引更多的客户和合作伙伴,还能提升…

一文读懂软件著作权:申请指南与核心价值

你是否好奇过,你或团队精心开发的软件、APP或小程序,如何才能获得法律保护?软件著作权就是那把关键的“保护锁”。今天,我们就来全面解读软著,告诉你它是什么、怎么申请、以及为何如此重要。一、什么是软件著作权&…