是否可以创建多语言帮助(.chm)文件

本文关键字:chm 文件 帮助 语言 创建 是否 | 更新日期: 2023-09-27 18:06:54

我需要为WPF应用程序创建多语言帮助(.chm)文件。请给出最好的创建方法

是否可以创建多语言帮助(.chm)文件

如果可能的话,我会尽量避免这种情况。CHM是一种专有格式,尽管它已经被逆向工程,但我认为您将从做一个真正可移植的解决方案(如磁盘上的HTML)中获得更多好处。

当我们还在使用CHM文件时,我们发现没有简单的方法将多语言功能嵌入到一个文件中,我们不得不在独立的 CHM文件中提供翻译,导致大量重复的东西,如图表,图片等(这是许多年前的事情,所以你应该检查情况是否有所改善,如果你真的想要使用CHM)。

对Unicode的支持,我们应该说,不够充分,并且有许多安全问题导致许多客户不允许使用CHM文件-说真的,谁会允许在帮助系统中运行任意代码?

有了磁盘上的HTML,不仅这种重复消失了(因为每种语言版本都包含公共图像),我们还得到了更好的Unicode支持,并且能够有一个默认的首页(英文),并链接到其他语言环境的替代首页。

由于它是一个开放标准,我们在可移植性方面获得了很大的提升。这意味着我们几乎可以在任何平台的任何浏览器中运行它。


最重要的是,微软似乎不再支持它了。来自维基百科CHM文章:

2002年,微软宣布了与。chm格式相关的安全风险,以及安全公告和补丁。此后,他们宣布不再进一步开发。chm格式。

正如前面回答中的注释所述,CHM格式既是微软的非常古老的格式,也是专有的。与应用程序一起分发HTML文件将实现与单个CHM文件相同的功能。担心用户将看到的用户界面的语言是一个无关紧要的问题;如果用户正在阅读意大利语帮助,他或她可能会使用(1)意大利语本地化版本的Windows和(2)意大利语本地化的web浏览器。

也就是说,因为CHM是一种旧的格式,而且现在似乎部分不受支持,所以您可以根据CHM文件遵循的反向工程规范生成相同的文件。此外,由于CHM只是包含HTML文件的二进制文件格式,因此使用UTF-8对HTML文件进行编码将实现以所需的任何语言获取帮助文档本身。

没有微软支持的CHM . net API,所以你必须自己使用Streams/BinaryWriter输出二进制文件。