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

news2024/9/23 1:31:40

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

在项目中新建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.coloradmin.cn/o/1944701.html

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

相关文章

【QT】窗口|菜单栏|菜单项|工具栏|状态栏|浮动窗口

目录 ​编辑 QT窗口 窗口分类 菜单栏 创建菜单栏&#xff0c;菜单&#xff0c;菜单项 菜单栏 菜单 菜单项 添加分割线 添加槽函数 ​编辑 添加快捷键 工具栏 停靠位置 浮动属性 移动属性 添加快捷项 ​编辑 状态栏 ​编辑 添加标签 添加进度表 ​编辑…

【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !

目录 C语言指针精讲1. 什么是指针&#xff1f;1.1 指针的内存模型1.1.1 指针演示输出 1.2 指针运算1.2.1 指针算术运算输出1.2.2 指针与数组的关系输出 1.3 指针类型1.3.1 不同类型的指针示例输出1.3.2 void 指针输出 1.4 指针与内存管理动态内存分配输出 1.5 指针与内存泄漏1.…

手写RPC-令牌桶限流算法实现,以及常见限流算法

为什么需要服务限流、降级 分布式架构下&#xff0c;不同服务之间频繁调用&#xff0c;对于某个具体的服务而言&#xff0c;可能会面临高并发场景。在这样的情况下&#xff0c;提供服务的每个服务节点就都可能由于访问量过大而引起一系列问题&#xff0c;比如业务处理耗时过长、…

数据结构中的八大金刚--------八大排序算法

目录 引言 一&#xff1a;InsertSort(直接插入排序) 二&#xff1a;ShellSort(希尔排序) 三&#xff1a;BubbleSort(冒泡排序) 四&#xff1a; HeapSort(堆排序) 五&#xff1a;SelectSort(直接选择排序) 六&#xff1a;QuickSort(快速排序) 1.Hoare版本 2.前后指针版本 …

数组Arrays,排序算法,String类,Stringbulider,正则表达式

## 数组 排序 经典的三大排序&#xff1a;冒泡&#xff0c;选择&#xff0c;插入 &#xff08;一&#xff09;冒泡排序核心&#xff1a;数组中的 相邻 两项比较&#xff0c;交换&#xff08;正序or倒序&#xff09; 正序原理图&#xff1a; 代码实现&#xff1a; public s…

jmeter 重试机制

一、功能实现 我们在测试过程中&#xff0c;请求接口可能是因为请求超时&#xff0c;或者接口异常失败&#xff0c;导致整个测试链路验证失败&#xff0c;jmeter重试机制&#xff0c;这个时候就可以避免上述问题发生 二、配置 1、添加线程组 首先&#xff0c;确保你已经在测…

Python | Leetcode Python题解之第278题第一个错误的版本

题目&#xff1a; 题解&#xff1a; # The isBadVersion API is already defined for you. # def isBadVersion(version: int) -> bool:class Solution:def firstBadVersion(self, n: int) -> int:left, right 1, nwhile left < right:mid left (right - left) //…

power bi条件判断函数

power bi条件判断函数 1. iferror函数2. if 函数3. switch函数4. hasonefilter函数5. hasonevalue函数6. selectedvalue函数 1. iferror函数 遇到错误时使用指定数值替换注意&#xff1a;替换的必须是数值例子列 [销售数量]*[单价] 列 iferror([销售数量]*[单价],0) 列 ife…

昇思25天学习打卡营第17天|计算机视觉

昇思25天学习打卡营第17天 文章目录 昇思25天学习打卡营第17天ShuffleNet图像分类ShuffleNet网络介绍模型架构Pointwise Group ConvolutionChannel ShuffleShuffleNet模块构建ShuffleNet网络 模型训练和评估训练集准备与加载模型训练模型评估模型预测 打卡记录 ShuffleNet图像分…

自学Java第11Day

学习目标&#xff1a;面向对象进阶 学习内容&#xff1a;包、final、权限修饰符、代码块、抽象类、接口 学习时间&#xff1a; 下午 3 点-下午 6 点 学习产出&#xff1a; 什么的包&#xff1f; 包就是文件夹。用来管理各种不同功能的Java类&#xff0c;方便后期代码维护。 包…

【Go系列】Go的UI框架Fyne

前言 总有人说Go语言是一门后端编程语言。 Go虽然能够很好地处理后端开发&#xff0c;但是者不代表它没有UI库&#xff0c;不能做GUI&#xff0c;我们一起来看看Go怎么来画UI吧。 正文 Go语言由于其简洁的语法、高效的性能和跨平台的编译能力&#xff0c;非常适合用于开发GUI…

爬虫学习1:初学者简单了解爬虫的基本认识和操作(详细参考图片)

爬虫 定义&#xff1a;爬虫&#xff08;Web Crawler 或 Spider&#xff09;是一种自动访问互联网上网页的程序&#xff0c;其主要目的是索引网页内容&#xff0c;以便搜索引擎能够快速检索到相关信息。以下是爬虫的一些关键特性和功能&#xff1a; 自动化访问&#xff1a;爬虫能…

58、主从复制数据库+读写分离

mysql的主从复制和读写分离&#xff08;面试问原理&#xff09; mysql的主从复制和读写分离&#xff1a; 主从复制 面试必问 主从复制的原理。 读写分离&#xff0c;MHA 一、主从复制 1.1、主从复制的模式&#xff1a; 1、mysql的默认模式&#xff1a; 异步模式&#xf…

centos系统mysql数据库差异备份与恢复

文章目录 差异备份mysql数据一、 安装 Percona XtraBackup数据库中创建一些数据三、创建全备份四、创建差异备份1. 在数据库中添加数据&#xff0c;让数据发生一些改变2. 创建第一个差异备份3. 数据库中再次添加一些数据4. 创建第二个差异备份 五、模拟数据丢失&#xff0c;删库…

MongoDB 学习笔记

一、简介 1、MongoDB 是什么 MongoDB 是一个基于分布式文件存储的数据库&#xff0c;官方地址 https://www.mongodb.com/ 2、数据看是什么 数据库&#xff08;DataBase&#xff09;是按照数据结构来组织、存储和管理数据的应用程序。 3、数据库的作用 主要作用是 管理数据…

Data Analytics for Business BISM7233

SSIS Task: Company_data.csv contains information for each of the companies, some of the state code information is missing in this table. You would need to use “state_code.csv” to fill in these blank cells under state code before creating the company dime…

利用OSMnx求路网最短路径并可视化(二)

书接上回&#xff0c;为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化&#xff0c;我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图&#xff0c;并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…

vite环境下使用bootstrap

环境 nodejs 18 pnpm 初始化 pnpm init pnpm add -D vite --registry http://registry.npm.taobao.org pnpm add bootstrap popperjs/core --registry http://registry.npm.taobao.org pnpm add -D sass --registry http://registry.npm.taobao.org新建vite.config.js cons…

【微服务】Spring Cloud Bus的注意事项和常用案例

文章目录 强烈推荐引言关键方面注意事项1. 消息代理选择2. 消息队列配置3. 消息持久化4. 幂等性5. 安全性6. 消息大小7. 性能监控8. 错误处理9. 版本兼容性10. 测试11. 配置同步12. 日志记录 常用示例示例 1: 配置同步配置服务器 (config-server)客户端服务 (client-service)触…

数据库的事务隔离级别有哪些?

并行事务会引发什么问题&#xff1f; 同时处理多个事务的时候&#xff0c;就可能出现脏读&#xff08;dirty read&#xff09;、不可重复读&#xff08;non-repeatable read&#xff09;、幻读&#xff08;phantom read&#xff09;的问题。脏读: 如果一个事务「读到」了另一个…