天天看点

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

此处仅仅针对

HandyControl<=3.2.0

系列版本,其上版本将只包含中文语言包,其他语言包,通过

Nuget

单独下载使用
你听我说-HandyControl多语言包处理

问题场景

项目引入

HandyControl

进行客户端的开发,巴拉巴拉,看看官方文档-快速开始,引用

Nuget

包,引入全局样式,加个按钮,看看效果,运行调试

Nuget

引用:

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

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>           

调试效果如下:

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

看到

Debug

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

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

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

原因分析

HandyControl

的项目源码中,为了兼容多语言实现国际化,实际加入了多个不同语言的语言版本包,默认支持的是

中文

,其他语言包都作为附属资源进行了内嵌,所以引入

Nuget

包,生成项目时,会自动生成对应的附属语言包

解决方式

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

删除多余语言包(一)

每次发布或者生成之后,删除这些包就行,实际上本地默认为中文语言包,其他语言包主要是针对的多语言版本程序集,毕竟

HandyControl

也是跨国际的

WPF UI

库(笔者说的,切勿当真),删除语言包之后,实际程序集是能够正常运行

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

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

HandyControl

的项目源码

修改源码(二)

此处操作

是建立在源码已经能够

正常编译运行

发布

的情况下,如果源码还不知道如何编译的话,请查看笔者之前的文章

你听我说-HandyControl源码编译

,先确保源码能跑起来,再考虑修改

选择版本

找到项目中的需要的目标版本,

40

对应

Fx_4.0

版本,

45

Fx_4.5

及其以上版本,包括

Core

.Net5

,原始项目结构中语言包分布如下:

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

删除语言包

默认支持的语言包为

Lang.resx

,对应着中文语言包,此处以保留中文语言包为例,其他语言包删除,操作结果如下:

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

生成发布包

选择【解决方案配置】-中

Release

或者

Release-Net40

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

之后选择目标项目

HandyControl_Net_GE45

HandyControl_Net_40

,单击右键

重新生成

,生成结果如下:

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

依据需求,移除

nuget

包,选择对应目录下的

dll

,重新运行项目,

debug

目录如下:

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

注意

继续阅读