怎么实现WPF多语言动态切换?

有网友看了上一篇文章《C# 多语言利器 - ResX Manager》后,提出疑问:

这个多语言切换不重启不能刷新,有没有方案?
怎么实现WPF多语言动态切换?
不重启多语言切换有方案吗?

其实是有的,国内一开源大神提供了一个WPF扩展库,其中就有多语言切换实现,我们先看效果:.

怎么实现WPF多语言动态切换?

动态多语言切换展示

具体使用请接着往下看:

1 开源库实现多语言动态切换

Github地址:点击访问

怎么实现WPF多语言动态切换?

WpfExtensions仓库详情

怎么安装?

直接Nuget搜索安装即可:

怎么实现WPF多语言动态切换?
Nuget搜索安装

2 如何使用?

2.1 主工程初始化之前

添加资源文件引用

I18nManager.Instance.Add(LQClass.AdminForWPF.I18nResources.UiResource.ResourceManager);

2.2 Prism模块中初始化

如果使用Prism实现模块化,也需要在模块构造函数中引用模块的资源文件

I18nManager.Instance.Add(LQClass.ModuleOfLog.I18nResources.UiResource.ResourceManager);

动态语言切换

这里比较灵活了,切换语言时,保存语言标识到配置文件,程序启动时设置配置的语言即可,动态切换语言时也是相同的代码:

var culture = new System.Globalization.CultureInfo(language);
I18nManager.Instance.CurrentUICulture = culture;

3 多语言参考项目

  • Accelerider.Windows
  • TerminalMACS.ManagerForWPF
  • 乐趣课堂(即本号正在做的一个开源项目)