纠结于wpf 多国语言方案,希望各位指点-softbar

WPF实现多语言切换 wpf实现多语音切换,有demo 阅读详情

最近纠结于wpf 多国语言处理的问题,先说说找到的以下几种方案。

1.借用vc的处理方式,编译完了以后每个语言产生一个dll,分别放在语言文件夹里面,

Wpf 使用dllImport调用win32 api中的loadstring方法提取MUI资源,然后赋值为ui。

微软自己去判断该用哪个语言,不用自己操心。

优点:可靠,毕竟那么多地方都这么干的。

缺点:麻烦了点

2. 微软给出的解决方案,地址如下:

softbar

 http://www.softbar.com/ 

其中里面有一句,让我很失望:

用 XAML 编写 UI;避免在代码中创建 UI。当您使用 XAML 创建 UI 时,应通过内置的本地化 API 来对其进行公开。

避免在代码中创建 UI !!!我的代码里面确实有创建UI的地方,这个可以避免,但是有时候避免不了。

而且编译过程太复杂了,我用这里面提供的方法,主语言没问题,第二语言没有成功过,也可能是我自己的问题了。

优点:微软给的,可能比较靠谱

缺点:限制多,也有些麻烦。

3.采用资源引用的方法。

Xaml里面这么写:

   <MenuItem  Header="{DynamicResource MAINWINDOW_HELP}" Name="miHelp"   Command="Help"/>

资源文件这样子的:

<s:String x:Key="MAINWINDOW_HELP">Help</s:String>

每个语言一个xaml,然后放在一个类库项目里面,编译为dll。

启动时,获取操作系统语言,加载相应的xaml,如下:

var threadUICulture = System.Threading.Thread.CurrentThread.CurrentUICulture.Parent;

string language = @"pack://application:,,,/ MUIRes;component/" + threadUICulture.EnglishName + ".xaml";

            var currentLanguageResource = App.Current.Resources.MergedDictionaries.FirstOrDefault(o => o.Source.ToString().Contains("Language"));

            try

            {

                ResourceDictionary resourceDictionary = new ResourceDictionary();

                resourceDictionary.Source = new Uri(language);

                currentLanguageResource.Source = new Uri(language);

            }

            catch (System.Exception ex)

            {

                Debug.Write(ex);

                return;

            }

我采用的是第三种办法,遇到了一个问题:

香港地区,

System.Threading.Thread.CurrentThread.CurrentUICulture 获取到zh-HK,但是香港是繁体中文,应该是zh-TW, 所以我加了Parent,为:System.Threading.Thread.CurrentThread.CurrentUICulture.Parent 获取到zh-TW.

如果 做MUI的时候,香港地区的翻译和台湾的翻译不一样,咋办?不加Parent?如果一样呢?

或许可以这么做:如果有zh-HK,就用zh-HK,如果没有,使用zh-TW,再没有,就En。

这是目前发现的问题,鬼知道世界上那么多国家和语言,会不会有别的问题?况且这办法不是微软推荐的,领导说你能保证没问题吗?不敢…..

另外,每增加或删除一种语言,都要重新编译资源dll,不可能一个语言建一个项目吧?

不知道第一种方案里面的MUI处理逻辑,如果知道,照着做就放心了。

希望各位指点一下,谢谢。

WPF-实现多语言的静态(需重启)与动态切换(不用重启) ②资源文件中添加多语言资源。①映射命名空间到XAML。 阅读详情

相关推荐

WPF程序支持多国语言

最近在做wpf项目时要实现中文和英文的切换,如果做两个语言模板在选择语言时切换,太过于麻烦,可以利用资源字典实现这一功能。 1:首先在WPF项目中添加 en_us.xaml和zh_cn.xaml两个资源文件, 保证资源文件头部有xmlns:s="clr-namespace:System;assembly=mscorlib",里面的键值会加不进去。 2:资源字典完成之后,需要在配置文件中进行配置. <Application.Resources> ...

zhuwenya1998的博客 1983

纠结于wpf 多国语言方案,希望各位指点

最近纠结于wpf 多国语言处理的问题,先说说找到的以下几种方案。 1.借用vc的处理方式,编译完了以后每个语言产生一个dll,分别放在语言文件夹里面, Wpf 使用dllImport调用win32 api中的loadstring方法提取MUI资源,然后赋值为ui。 微软自己去判断该用哪个语言,不用自己操心。 优点:可靠,毕竟那么多地方都这么干的。 缺点:麻烦了点 2. 微软给出的解决方...

weixin_33716557的博客 201

从零实现高精度手势检测:OpenCV+MediaPipe模型移植实战(2)(附c++完整代码)

上篇已经介绍了手掌检测的方法。本章将在手掌检测的基础上,完成手指关节的检测。

qq_37160641的博客 2670

WPF本地化/国际化,多语言切换

有很多种,可以使用自带的资源去做,就是使用xaml写key值,这种做法是最简单方便的,也是wpf独特使用的,如果有大量的翻译,那么需要人工去翻译,需要转折一次,此种方法就不说了。基本的技术差不多,但是后来又发现了一个ResXManager工具,可以更好方便快捷的使用。增加后,双击增加的语种,就会自动生成对应的.resx文件,想要多少种语言,就可以增加多少种。此处,可以导出Excel,让别人翻译,然后再导入,也可以使用在线翻译的功能,点击翻译。首先下载,网络不好的话,去官网下载,然后安装,重启vs即可。

故里2130 1万+

多智能体协作的本质是中介者模式,不是多开Agent

多智能体系统并非简单启动多个Agent实例,而是一种受控的、可验证的动态交互过程。其核心原理在于解耦Agent间直接依赖,通过中央中介者统一管理任务分发、协议转换、状态协调与故障兜底。这种架构显著提升系统的可观测性、容错性与可维护性,技术价值体现在强一致性保障(如金融订单原子操作)与灵活自治平衡(如边缘设备轻量协同)。典型应用场景包括电商客服协同、工业巡检调度、飞书/微信多渠道智能服务等。OpenClaw与Hermes Agent正是这一范式的工程落地代表,分别体现强中介与弱中介两种演进路径。

weixin_34151004的博客 363

老司机避坑指南:UC3842自举驱动电路发热严重?这样选C39/C37电容值最稳

本文针对UC3842自举驱动电路发热严重的问题,深入剖析了驱动波形边沿速度与损耗的矛盾根源。通过实测数据与热成像分析,重点阐述了关键电容C39/C37的选型策略,提供了从经验公式到量化计算的优化方法,帮助工程师在发热与效率间找到最佳平衡点,并探讨了分立方案与专用驱动IC的适用场景。

lambda的博客 747

在WPF中实现多语言切换的四种方式

9 <s:String x:Key="Main.RibbonButton.Setting.Description">包括语言在内的全部设置</s:String>12 <s:String x:Key="Setting.Tab.Label.ChooseLanguage">请选择一种语言</s:String>//当前语言的JObject对象。8 <s:String x:Key="Main.RibbonButton.Setting.Title">设置</s:String>

【微软MVP】zhaotianff的专栏 6265

RAGFlow API 实战指南:从数据集管理到智能对话

本文提供了RAGFlow API的实战指南,详细介绍了如何从零开始构建基于检索增强生成(RAG)的智能应用。内容涵盖环境准备、API密钥获取、核心概念理解,以及通过API进行数据集创建与管理、文档上传解析、知识块管理、检索测试,最终创建并配置智能聊天助手,实现基于私有知识库的精准对话。

weixin_29284885的博客 381

WPF 实现多语言支持

WPF 实现多语言支持 例如实现中英文切换 1、使用资源字典,首先新建两个字典文件en-us.xaml、zh-cn.xaml。定义中英文的字符串在这里面【注意:添加xmlns:s="clr-namespace:System;assembly=mscorlib】 zh-cn.xam如下: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xm

韬光养晦 4987

Windows 11 下 WSL 离线安装 Ubuntu 22.04 保姆级教程(国内镜像加速版)

本文提供了一份针对中国地区用户的Windows 11下WSL离线安装Ubuntu 22.04的详细教程。通过使用国内镜像源加速下载安装包,并配合PowerShell命令完成部署,有效解决了官方商店下载缓慢的问题。教程涵盖环境准备、离线包获取、安装初始化及安装后的关键优化配置,帮助用户快速搭建高效的Linux开发环境。

weixin_28452161的博客 1378

保姆级教程:手把手教你用Python逆向分析极验4.0滑块验证码的w参数生成逻辑

本文提供了一份详细的Python逆向工程教程,手把手教你分析极验4.0滑块验证码的w参数生成逻辑。通过HTTP请求分析、JavaScript逆向和加密算法复现,帮助开发者深入理解验证码防护机制,并实现高效的自动化解决方案。教程涵盖AST反混淆、轨迹生成算法和AES加密等核心技术,适合中高级开发者提升逆向工程能力。

weixin_30172941的博客 304

WPF应用程序支持多国语言解决方案

原文地址:WPF应用程序支持多国语言解决方案 - Horan Zhang - 博客园 (cnblogs.com) 促使程序赢得更多客户的最好、最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分。本文介绍四种实现WPF应用程序支持多国语言的解决方案。 效果如下图: Language - en-US (英文) Language - zh-CN (中文) 阅读目录 一、使用LocBaml工具 二、使用资源字典文件 三、使用.resx资源文件 四、.

haiyangshao的专栏 2717

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

史上最简单的WPF多语言切换方案

作为技术而言,我并不认为多语言有什么值得深入研究的地方,本来也没打算开这个话题。前段时间看到了群里有朋友在讨论这个,一想到它确实也算一个比较常用的功能,所以决定对它做一个封装,如果您正好需要,希望对您有帮助。

u013319633的博客 4147

在 FreeStyle SAP UI5 应用里优雅落地 Draft 草稿机制:用 DraftManager 封装 DraftController 的一套实战套路

SAP Fiori应用中,Draft草稿机制是解决业务中断、多人协作和长表单填写等痛点的核心能力。本文提出了一套针对FreeStyle SAP UI5应用的Draft管理方案,通过封装sap.ui.generic.app.transaction.DraftController为DraftManager服务类,将复杂的草稿操作逻辑集中管理。该方案实现了草稿的创建、激活、丢弃等核心功能,使控制器只需调用简单意图式API即可完成操作,同时解决了组件化架构下的上下文切换、统一错误处理等问题。文章还详细介绍了后端Dr

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2751

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

WPF-多语言支持

常见的有四种方案:1.资源字典2.资源文件、我用的是资源字典。1.做两个语言资源,如下:(1)中文资源AppResource_zh_CN.xaml登录后复制 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/present...

weixin_40971527的博客 323

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

WPF 多语言完整指南

WPFLocalizeExtension是实现WPF多语言支持的强大工具。该指南详细介绍了从安装配置到实际应用的完整流程:1)通过NuGet安装包并组织资源文件结构;2)配置App.xaml设置默认资源;3)在XAML中使用lex:Loc绑定文本;4)实现ViewModel语言切换功能;5)提供代码访问资源的方法。该扩展支持运行时动态切换、强类型资源、热重载等特性,具有XAML直接绑定、高性能和灵活自定义等优势,能显著提升WPF应用的国际化开发效率。

qq_45492643的博客 1023

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

WPF中的多语言切换(简单易上手)

一个非常适合小白的多语言切换接口

Vae2437426397的博客 863

WPF 本地多语言总结

去年底今年初,由于WPF项目,需要支持日本地区,要求可以切换语言。本篇文章汇总了一下,当时的调研的结果,和项目中所采用的方式。 业务背景 当时,软件主要针对的是英语国家。后来因业务需要,增加了日本地区,需要一套可切换的日语操作界面。 一方面,由于软件早期没有考虑过多语言,改造幅度比较大;另一方面,由于翻译问题,需要日本方面,可以即时修改翻译的内容。总结一下需求: 软件需全面修改,包括前...

君子居易 1195

WPF 多语言实现完整笔记(.NET 4.7.2)

本文介绍了基于WPF(.NET 4.7.2)实现多语言功能的核心方案。通过动态资源字典(DynamicResource)和单例语言管理器(LanguageManager)实现界面文本的无刷新切换,支持语言偏好持久化存储。方案包含资源文件组织(Lang_zh-CN.xaml/Lang_en-US.xaml)、语言管理器核心逻辑(资源加载/属性通知/持久化)、主界面绑定(DynamicResource)以及水印转换器等关键技术点。重点强调了DynamicResource与StaticResource的区别、单例

weixin_66547608的博客 1230

WPF 实现多语言

1、编写Chinese.xml,English.xml文件 2.、在项目的App.xml文件中 <Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <Resour...

sinat_31608641的博客 674

关于WPF中设计窗口长宽与实际不符的解决方案

再初始化后写建议写在formload里,但是千万不能写在mainwindow里,否则无效。

qq_65496815的博客 1721

WPF多语言切换

根据传递过来的参数重新加载不同的语言文件;

qq_35363476的博客 346

WPF实现利用资源词典来进行多语言的切换,并通过利用文件读写的方式记忆WPF

参考1:WPF实现无刷新动态切换多种语言 参考1:WPF多国语系实作系列之叁 - 使用ResourceDictionary 控件准备: ComboBox;又称为下拉组合框控件,他主要用于下拉组合框中显示数据。 当下拉列表的选项发生改变时,将会引发控件SelectedValueChanged事件。 comboBox2.Items.Add(&amp;quot;English&amp;quot;);//下拉列表加入元素 comboBox2...

weixin_42974146的博客 2045

WPF本地化(多语言)语言解决方案

工程目录结构: LocalizedLangExtension.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.Linq; using

OneOnce的专栏 2977

WPF借助第三方库高效实现多语言切换

选择合适的本地化方案和第三方库 合理组织资源文件结构 实现流畅的语言切换体验 注重性能优化和用户体验 建立完善的翻译管理流程

让每一个想学习编程的人,都能学会,都能看懂,看了都有收获! 1299
上一篇: 书写css伪类时冒号前或后多个空格导致该规则失效-softbar
下一篇: 关于position定位下的各种属性说明!-softbar
普通网友
博客等级 码龄22年 1万+粉丝 3156原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值