WPF多语言国际化,中英文切换

通过切换资源文件的形式实现中英文一键切换

在项目中新建Language文件夹,添加资源字典(xaml文件),中文英文各一个。

在资源字典中写上想中英文切换的字符串,需要注意,必须指定key值,并且中英文的Key值需要一一对应(因为到时候是按照Key值替换的)

在前端使用的时候,就不要用固定的字符串了,而是绑定到动态资源,注意一定是动态资源DynamicResource,如果写成静态资源就不能切换了

DynamicResource后面的值就是在资源文件中定义的Key值

首先要先去app.xaml里设置一下初始的语言

这是加载资源文件的意思,后面的Source写你自己想要初始加载的语言xaml文件的路径

然后中英文切换时,是在后台代码里切换资源文件,比如点击切换语言按钮,调用下面的切换语言方法。

需要注意!!!

需要注意!!!

需要注意!!!重要的事情说三遍!我在上面app.xaml里,还载入了一些其他资源文件,可以看到语言资源文件是第三个,所以在下面切换语言时,是

Application.Current.Resources.MergedDictionaries[2].Source

下标为2,意思是将第三个资源文件(即我们的语言资源文件)替换,在使用时需要根据实际情况进行修改

    /// <summary>/// 语言选项/// </summary>public enum Language{Chinese,English}public Language Language { get; set; }/// <summary>/// 切换语言/// </summary>private void SwitchLanguage(){try{if (Language == Language.Chinese){Language = Language.English;string english = "pack://application:,,,/Language/English.xaml";Application.Current.Resources.MergedDictionaries[2].Source = new Uri(english);}else{Language = Language.Chinese;string chinese = "pack://application:,,,/Language/Chinese.xaml";Application.Current.Resources.MergedDictionaries[2].Source = new Uri(chinese);}}catch (Exception e){//错误处理}}

点击切换语言按钮,调用这个切换语言方法,因为我们页面绑定的是动态的资源,就能发现页面的语言已经实现了切换。

这是界面上直接绑定时的语言切换,有些人可能遇到一些像写日志、弹窗这种没办法动态绑定的情况,那就需要通过后台代码来通过Key值读出资源的字符串了

string text = Application.Current.FindResource("想查找资源的Key值") as String;

这样在是英文资源的时候,返回的字符串就是英文,在是中文资源的时候,字符串就是中文的。

就能实现非页面绑定的中英文切换啦。

博主会不定时更新WPF技术,分享技术代码,感兴趣的小伙伴可以关注一波~

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

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

相关文章

DT浏览器首页征集收录海内外网址

DT浏览器首页征集收录海内外网址&#xff0c;要求页面整洁&#xff0c;内容丰富&#xff0c;知识性和可读性强&#xff0c;符合大众价值观&#xff0c;不含恶意代码

【机器学习】代价函数的几种误差以及代价函数的几个简单示例

引言 在机器学习中&#xff0c;代价函数&#xff08;Cost Function&#xff09;是一个评估模型性能的关键工具&#xff0c;它衡量了模型预测值与实际值之间的差异。代价函数通常用于监督学习&#xff0c;特别是在需要预测目标值的情况下&#xff0c;如回归问题或分类问题 文章目…

自定义时长裁切视频

人脸检测与定位&#xff1a; find_host_face_location&#xff1a;在视频的前几秒内快速检测并定位主持人的人脸&#xff0c;缩小帧尺寸以提高处理速度。 裁剪框计算&#xff1a; calculate_cropping_box&#xff1a;基于检测到的人脸位置&#xff0c;计算一个适合的裁剪框&…

c#自动关闭 MessageBox 弹出的窗口

第一种方法&#xff1a; 原理&#xff1a; 1、我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的&#xff0c;只有关闭了MessageBox的窗口后才会运行下面的代码。 2、所以可以考虑在MessageBox前先增加一个用于“杀”掉MessageBox窗口的线程。因为需要…

React好用的组件库有哪些

React好用的组件库有很多&#xff0c;它们各自具有不同的特点和优势&#xff0c;适用于不同的开发场景和需求。以下是一些受欢迎的React组件库及其特点&#xff1a; Material-UI&#xff08;现更名为MUI&#xff09; 特点&#xff1a;这是一个开源的React组件库&#xff0c;实…

学术研讨 | 区块链与隐私计算领域专用硬件研讨会顺利召开

学术研讨 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 近日&#xff0c;国家区块链技术创新中心主办&#xff0c;长安链开源社区支持的“区块链性能优化与融合技术研讨会”顺利召开。当前&#xff0c;区块链与新技术之间的交叉融合和协同创新正成为显…

04 B端产品经理能力培养

B端产品经理能力模型 通用能力 学习能力 沟通能力 行业融入感主人翁精神 心态和情商 专业素养 责任心 自驱力、执行力 基础认知 产品行业认知&#xff1a;当前公司的产品所属细分领域、所处行业趋势、提供怎样的服务、产品和方案解决了客户哪些问题。 产品聚焦领域&a…

springboot+webSocket对接chatgpt

webSocket对接参考 话不多说直接上代码 WebSocket package com.student.config;import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import org.springframework.http.MediaType; import org.springfram…

深度学习论文精读

深度学习论文精读 所有论文 包括已经精读完成和之后将要精读的论文&#xff0c;10年内深度学习里有影响力文章&#xff08;必读文章&#xff09;&#xff0c;或者近期比较有意思的文章。 感谢沐神&#xff01; 总论文数 67&#xff0c;阅读完成数 32 计算机视觉 - CNN 已…

前端笔试全攻略:30道经典面试题详解

引言 前端开发是一个充满挑战与机遇的领域&#xff0c;随着Web技术的不断发展&#xff0c;前端工程师需要掌握的知识体系也在不断扩展。无论是刚入门的新手还是资深开发者&#xff0c;在求职过程中都会面临各种技术笔试。本文将为你提供30道常见的前端笔试题及其详尽解答&…

FLINKCDC连接oracle导致归档日志暴增

前言 前段时间再用flinkcdc连接oracle的时候&#xff0c;oracle的归档日志疯狂的飙升,我经常去到归档目录下查看占用的内存情况。。 情况 在使用flinkcdc连接oracle的时候&#xff0c;发现归档日志飙升&#xff0c;查看了很多文档&#xff0c;该配置了都配置了&#xff0c; …

使用el-table实现自动滚动

文章目录 概要技术实现完整代码 概要 在前端开发大屏的时候&#xff0c;我们会用到表格数据展示&#xff0c;有时候为了使用户体验更加好&#xff0c;会增加表格自动滚动。下边我将以示例代码&#xff0c;用element UI的el-table来讲一下。 技术实现 1 .增加dom监听&#xf…

Linux搭建Kubernetes集群(单Master)【附图文】

文章目录 一、集群环境配置要求二、主机准备三、初始环境准备1.关闭防火墙2.关闭 selinux3.关闭swap4.加载 br_netfilter 模块5.允许iptables转发流量6.设置时间同步 四、安装Docker五、安装kubeadm, kubectl, kubelet六、在Master节点部署集群七、将 node 节点加入集群八、部署…

(一)Readme 了解kurator

Kurator 是一个开源的分布式云原生平台&#xff0c;旨在帮助用户构建自己的分布式云原生基础设施&#xff0c;并出金企业进行数字化转型。 概览 云原生软件栈&#xff1a;kurator结合了多种流行的云原生软件栈&#xff08;Kubernetes、Istio、Prometheus等&#xff09;&#…

学习笔记14:CNAME 记录值、TTL (Time to Live)、Redis 的 Pool 对象池、钩子函数、依赖注入

CNAME 记录值 CNAME 记录是一种DNS记录类型&#xff0c;它将一个域名映射到另一个域名。这通常用于将一个子域名指向另一个域名&#xff0c;或者将一个域名指向一个不同的顶级域。 用途&#xff1a;用于域名别名&#xff0c;负载均衡&#xff0c;或者在更换域名时保持服务的连…

CSS(四)——CSS Text(文本)

CSS Text(文本&#xff09; 文本颜色 颜色属性被用来设置文字的颜色。 颜色是通过CSS最经常的指定&#xff1a; 十六进制值 - 如: &#xff03;FF0000 一个RGB值 - 如: RGB(255,0,0) 颜色的名称 - 如: red 一个网页的背景颜色是指在主体内的选择&#xff0c;即<body…

【C#】Func、Action和Predicate

使用情景 根据不同参数值&#xff0c;执行不同方法&#xff0c;执行完方法后&#xff0c;执行相同的操作 函数 Func Func 委托表示有返回值的方法。它最多可以接受 16 个输入参数&#xff0c;并且必须返回一个值。在 Func 委托中&#xff0c;最后一个类型参数始终是返回类型…

【C语言】英寸英尺转换米

运行的结果为 我们百度一下 恒明显我们的答案错了,那这个是为什么呢? 问题就出现在计算的地方,c语言规定两个整数计算,那么小数的部分会被丢弃. 如果计算的两个数中有一个数为小数,那么会将两个数都变为小数在进行计算,结果也会是小数. 那么我们现在就有解决办法了. 方法一…

gbase8s自动同步数据及加入集群的脚本

cat remote.sh #!/bin/bash #此脚本永远在主节点上执行&#xff0c;需要同步的节点永远是备节点 #主节点pri开头&#xff0c;备节点hac开头 #开始执行脚本之前一定要关闭hac节点&#xff0c;并且系统空间要大于备份数据文件的大小 #执行之前请手动改好ip和主备节点的实例名及g…

开源浪潮下的航行:趋势洞察与个人航迹

引言 在全球经济与科技浪潮的推动下&#xff0c;开源软件项目如同一股不可阻挡的洪流&#xff0c;正以前所未有的速度席卷整个技术生态。它不仅促进了技术的快速迭代与创新&#xff0c;更搭建起了一个跨越国界、行业与组织的协作平台。本文旨在探讨当前开源项目的发展趋势&…