你听我说-HandyControl多语言包处理

简介: 你听我说-HandyControl多语言包处理

此处仅仅针对HandyControl<=3.2.0系列版本,其上版本将只包含中文语言包,其他语言包,通过Nuget单独下载使用

问题场景

项目引入HandyControl进行客户端的开发,巴拉巴拉,看看官方文档-快速开始,引用Nuget包,引入全局样式,加个按钮,看看效果,运行调试

Nuget引用:

App.xaml内容:

<Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/SkinDefault.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Theme.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
  </Application.Resources>

MainWindow.xaml内容:

<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Button Content="测试"></Button>
    </Grid>
</Window>

调试效果如下:

看到Debug文件目录下,突然发现多个语言包,这是咋回事儿?

这些多余的语言包如何去掉,并不希望有这些多余的语言包包含在程序里,

原因分析

HandyControl的项目源码中,为了兼容多语言实现国际化,实际加入了多个不同语言的语言版本包,默认支持的是中文,其他语言包都作为附属资源进行了内嵌,所以引入Nuget包,生成项目时,会自动生成对应的附属语言包

解决方式

以下是目前尝试过的几种方式

删除多余语言包(一)

每次发布或者生成之后,删除这些包就行,实际上本地默认为中文语言包,其他语言包主要是针对的多语言版本程序集,毕竟HandyControl也是跨国际的WPF UI库(笔者说的,切勿当真),删除语言包之后,实际程序集是能够正常运行

这个方式有关不好的地方就是,需要每次生成或者发布之后进行目录中删除多余语言包,操作比较重复,但是比较简单,初学者就能个处理,那如果是不想这样每一回都这样操作,还有其他方式否?有!自己写个脚本自动批量删除或者直接改HandyControl的项目源码

修改源码(二)

此处操作是建立在源码已经能够正常编译运行发布的情况下,如果源码还不知道如何编译的话,请查看笔者之前的文章你听我说-HandyControl源码编译,先确保源码能跑起来,再考虑修改

选择版本

找到项目中的需要的目标版本,40对应Fx_4.0版本,45对应Fx_4.5及其以上版本,包括Core.Net5,原始项目结构中语言包分布如下:

删除语言包

默认支持的语言包为Lang.resx,对应着中文语言包,此处以保留中文语言包为例,其他语言包删除,操作结果如下:

生成发布包

选择【解决方案配置】-中Release或者Release-Net40

之后选择目标项目HandyControl_Net_GE45HandyControl_Net_40,单击右键重新生成,生成结果如下:

依据需求,移除nuget包,选择对应目录下的dll,重新运行项目,debug目录如下:

至此,语言包的去除方式,就讲到这里,如果有其他方式,请一定得留言

注意

不少资源并未包含在HandyControl.dll程序集中,如果小伙伴瞧得起对应案例的资源样式,可以考虑自己从案例中刨出去使用即可

后续将继续构建HandyControl的相关系列,有相关想法请进行留言:【HandyControl


相关文章
|
存储 域名解析 网络协议
AD域的搭建和操作使用
AD域的搭建和操作使用
|
关系型数据库 MySQL 数据库
tushare宏观数据使用pandas入库,增加唯一索引
1,对pandas入数据库 pandas代码中自带了to_sql的方法可以直接使用。 但是数据字段是text的,需要修改成 varchar的,否则不能增加索引。 在增加了主键之后可以控制数据不能再增量修改了。 增加:dtype类型可以解决 dtype={col_name: NVARCHAR(length=255) for col_name in dat
3740 0
|
7月前
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
存储 XML JSON
解锁Winform应用全球化:高效实现多语言处理的实战案例与技巧,让你的软件跨越语言障碍
【8月更文挑战第3天】随着全球化的推进,软件需支持多语言以满足国际用户需求。在Winform中,通过精心设计和工具辅助可简化多语言实现。本文以一个支持中、英、日、韩四语的应用为例,介绍如何使用JSON文件存储语言资源,并借助自定义类库动态加载和切换语言。通过准备不同语言的JSON文件、编写`LanguageHelper`类管理和更新UI文本,以及在配置文件中保存用户语言偏好等步骤,展示了实现多语言支持的有效途径。此方案不仅结构清晰,而且易于维护和扩展。
440 2
|
分布式计算 Kubernetes 大数据
为什么说大数据和云计算的深度融合是大势所趋?
为什么说大数据和云计算的深度融合是大势所趋?
为什么说大数据和云计算的深度融合是大势所趋?
|
JavaScript 安全 开发工具
在 Vue 3 中使用 TypeScript
【10月更文挑战第3天】
LiveCharts 直方图详解,安装和使用,以及常用属性的说明
本文介绍了LiveCharts在WPF中的应用,包括安装方法、基本使用和直方图(LineSeries)的常用属性说明。安装LiveCharts通过NuGet包管理器进行,使用时需在XAML文件中引入相应的命名空间。文章还提供了直方图的属性详解和综合示例,包括线条样式、坐标轴标签、图例位置等设置,以及如何自定义数据点形状。
LiveCharts 直方图详解,安装和使用,以及常用属性的说明
|
数据采集 存储 监控
python 10个自动化脚本
【7月更文挑战第10天】
690 3
|
关系型数据库 数据库
关系型数据库设计规范第三范式(3NF)
【5月更文挑战第14天】关系型数据库设计规范第三范式(3NF)
868 3
|
C#
WPF技术之TextAlignment
WPF中的TextAlignment属性用于控制元素中文本的对齐方式。
938 1