首先是看到这篇博文:《WPF四年,尤不足以替代WinForm》其中就提到了WPF本地化的问题。其中是这么说的:

编译之后XAML会被编译成二进制的BAML,而BAML的格式是非公开的。这样就不能去改被引用的对象属性名。

然而,非公开的就一定无从知晓了吗?也许是时代进步了,那篇博文发布已经五年过去了,很多事实都已经发生了变化:WPF引入的XAML继续用于Windows应用、WindowsPhone甚至是Android、iOS(Xamarin)的开发、WPF本身的效率也在改进、界面效果完胜WinForm。然而说了这么多其实我也没少用WinForm……

总之,事实上现在BAML的格式已经不是一个秘密。通过解析BAML文件(甚至是直接解析.NET文件资源中的BAML流),我们可以做到直接基于BAML的汉化,就像广大汉化工作者汉化Win32或是Winform程序一样,并不需要源文件。

过程思路:

  1. 从.NET文件中取出资源

  2. 从资源文件中取出BAML文件(以上两步也可换为直接读取.NET文件并定位到资源的位置)

  3. 解析BAML文件

  4. 对BAML的相关条目(Record)进行更改

  5. 重新生成(写入)BAML文件

  6. 重新构建资源文件

  7. 用新的资源文件替换.NET文件中原有的资源文件

效果示例:

汉化前的某WPF程序。

上图是我写的BAML Translator。仅仅是一个简易的实现,仍然存在一些问题。

汉化后的效果。

转载于:https://my.oschina.net/UlyssesWu/blog/404698

WPF的本地化思路提示:直接汉化BAML相关推荐

  1. 佳明手表APP开发系列01——简单汉化英文版

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.佳明手表APP开发过程简介 二.做个简单的个性化--在英文版写几个汉字 1.MonkeyC 图形处理 2.获得汉字 ...

  2. android studio 2.3不报错汉化以及自己编的新版本自动汉化软件

    软件主要是根据老版本汉化文件自动汉化新版本实现不报错汉化 以及手动汉化教程 有精力的小伙伴可以自己补充汉化下这样新版本就汉化得更加完整了 汉化完了记得分享给我谢谢啦 链接:http://pan.bai ...

  3. 高级短链接工具+汉化版语言包premium-url-shortener-v5.9.8完美修复开心版QW提示跳转

    简介: 高级短链接工具修复生成不弹出短链接窗口问题+汉化版语言包premium-url-shortener-v5.9.8完美修复开心版QW提示跳转 此源码包含四个版本,有2020年11月29日更新的版 ...

  4. .NET VS智能提示汉化 (.Net6)

    先上现成的.net6汉化文件,可以手动下载后参照 [如何为 .NET 安装本地化的 IntelliSense 文件 ](https://learn.microsoft.com/zh-cn/dotnet ...

  5. bpmn-js汉化(将元素提示语进行汉化)

    汉化文件下载地址 最近项目中用到工作流引擎,流程的设计需要在前端(web)完成,项目客户可以直接进行流程的设计,然后部署.使用,前端框架用的是angular7.x.基于上述需求,我们选用了bpmn-j ...

  6. vue 富文本编辑器 quill (含代码高亮、自定义字体、汉化、鼠标悬浮提示、组件封装等)

    基本使用 安装依赖 npm i quill .vue文件 <div ref="editor" :style="finalStyle"></di ...

  7. 00.Sublime汉化、默认代码块、代码提示教程

    Sublime汉化.默认代码块.代码提示教程 文章目录 Sublime汉化.默认代码块.代码提示教程 设置中文教程 设置默认代码块教程 生成代码提示 设置中文教程 1.打开安装好的的sublime,选 ...

  8. Eclipse ganymede(3.4版)汉化 实现智能提示功能

    Eclipse的英文后缀代表着Eclipse的不同版本,Eclipse Indigo(3.7版)Eclipse Helios(3.6版)Eclipse Galileo(3.5版)Eclipse Gan ...

  9. Python3.8.0语法汉化规范思路1.0版

    序:一直为看不懂的英语和大量的词汇困扰着,由于疫情期间打算学点什么打发时间,由于要搞中医大数据和中医针灸临床评价,那就学习现在流行的Python吧!一开始想搞一个简单的爬虫,搭建环境测试程序,各种报错 ...

最新文章

  1. O11ycon会议讨论了可观察性的收益和挑战
  2. java_jdbc_spring框架查询操作简例
  3. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...
  4. Boost:在OpenCL并将图像渲染为OpenGL中的纹理
  5. 错误:未在本地计算机上注册“Microsoft.Ace.OleDb.12.0”提供程序
  6. why Material request downlaod get an empty BDOC in SMW01 - structure MGV_TLMNR
  7. redis 值字符串前面部分乱码_Spring-RedisTemplate写入数据乱码问题的复现与解决
  8. 《Java 程序设计》课堂实践二
  9. C语言动态链表实现KTV点歌系统
  10. 利用Python一键爬取上海二手房信息
  11. 【零基础玩转BLDC系列】基于霍尔传感器的无刷直流电机控制原理
  12. Craps小游戏简单代码实现
  13. 【Win10 + Ubuntu 16.04/18.04双系统 + 双硬盘/单硬盘 安装】传统意义双系统
  14. Valine魔改教程——添加自定义表情和QQ头像
  15. 动态二维码刷卡触摸按键门禁一体机性能与选型攻略
  16. Oracle数据库Clob类型Blob类型与String互转
  17. cnc加工中心保养表_CNC保养检查记录表
  18. 一行行的代码解密马尔可夫链
  19. VVIC接口,item_get - 根据ID取商品详情
  20. 高中物理应用计算机教学心得,信息技术在物理教学中运用教学心得

热门文章

  1. 美通企业日报 | IMAX中国票房纪录创年度新高;上海迪士尼将迎来黄色小狗可琦安...
  2. CF杂题训练(交互题不做,2500以上的看情况吧)
  3. 如何让自己的网站快速被搜索引擎找到
  4. 狗汪汪玩转无线电 -- GPS Hacking
  5. Prometheus 搭建监控系统
  6. http://bbs.3dmgame.com/forum.php,上古卷轴5:天际 任务MOD等心得大合集
  7. Retrofit详解(二)(Retrofit核心流程)
  8. 微信支付出现的错误提示及解决方法
  9. 上下文感知分析:对最重要的漏洞进行优先级排序
  10. Unix操作系统设计第一章学习