你听我说-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


相关文章
|
2月前
|
自然语言处理 搜索推荐 API
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
【推荐100个unity插件之21】unity实现多语言切换功能——Localization插件的使用
68 0
|
3月前
|
存储 自然语言处理 监控
【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换
Unity的多语言本地化是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的Unity官方插件:Localization 。 这个插件方便进行游戏的多语言本地化,让游戏支持多种语言,下面就来看看该插件的使用方法吧!
|
9月前
|
文字识别 自然语言处理 程序员
一个支持WinForms换肤的开源组件
一个支持WinForms换肤的开源组件
46 0
|
数据库 数据库管理
Flutter中的sqflite包使用简介
Flutter中的sqflite包使用简介
|
存储 缓存 API
ASIHTTPRequest类库简介和使用说明
ASIHTTPRequest类库简介和使用说明
151 0
|
数据可视化 vr&ar 图形学
Unity可视化编程XDreamer插件导入
前言 XDreamer是一款基于Unity平台开发的,可在Unity(包括编辑器与运行时)中使用的可扩展的中文交互编辑软件,可进行2D、3D、VR、AR、MR开发。 本期博客为XDreamer的官方讲解的学习记录。可以理解为UE4中的蓝图效果。是从事美术人员的福音,美术人员也可不用编写程序进行游戏的制作。 一、下载XDreamer官方插件包 XDreamer中文交互编辑器http://www.xdreamer.com.cn/请在官网进行下载,得到如下的文件。 二、插件加载 目前我导入到URP
558 0
Unity可视化编程XDreamer插件导入
|
Dart 数据可视化 Android开发
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(二)
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(二)
245 0
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(二)
|
JSON Dart 数据可视化
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(一)
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(一)
575 0
【Flutter】开发 Flutter 包和插件 ( Flutter 包和插件简介 | 创建 Flutter 插件 | 创建 Dart 包 )(一)
|
传感器 XML 存储
2D开发工具包揭秘:DOTween Pro入门教程
今天为大家介绍2D开发工具包中的DOTween Pro插件。DOTween是一款针对Unity的快速高效、类型安全的面向对象的补间动画引擎,并且对于C#用户做出了很多的优化。 DOTween 有哪些优秀的特性?兼顾速度与效率:DOTween不仅非常快,而且非常高效。
2D开发工具包揭秘:DOTween Pro入门教程