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

3

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

2个回答

4
如果可能的话,我建议您避免使用CHM格式。虽然已经有了反向工程,但是我认为使用像磁盘HTML这样真正便携的解决方案会更有益处。
回到我们仍在使用CHM文件的时候,我们发现没有简单的方法将多语言功能嵌入单个文件中,我们不得不提供独立的 CHM 文件的翻译,导致大量重复,例如图表、图片等等(这是许多年前的事情,所以如果您真的想使用CHM,应该检查情况是否有所改善)。
对于Unicode的支持,可以说是不足够的,而且存在许多安全问题,导致许多客户禁止使用CHM文件 - 说实话,谁会允许帮助系统运行任意代码呢?
使用磁盘HTML,不仅消除了这种重复(因为每个语言版本都包含共同的图像),我们还获得了更好的Unicode支持和具有默认主页(英文)的能力,其中包括其他地区的链接。
而且我们在可移植性方面得到了很大的提升,因为它是一种开放标准。这意味着我们几乎可以在任何平台上的任何浏览器中运行它。
此外,似乎微软不再支持它。根据维基百科CHM文章所述:在2002年,微软宣布与.CHM格式相关的安全风险以及安全公告和补丁。自那时以来,他们已经宣布不再进一步开发.CHM格式。

WinHelp不是在Vista中被弃用了吗? - Grant Thomas
@paxdiablo:如果不能制作多语言的chm文件,那也没关系。但是我们能否制作一个意大利语的.chm文件,其中所有选项(隐藏、返回、打印、选项等)也必须是意大利语。 - Upendra Chaudhari
1
我仍然喜欢使用CHM格式的API文档,因为它具有搜索/索引功能,而由Sandcastle生成的HTML格式API文档则缺乏此功能 - 尽管我希望现在已经有更好的HTML解决方案了。对于面向用户的帮助,我肯定不会选择CHM。 - Nicholas W

0

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

话虽如此,由于CHM是一种旧的格式,并且似乎部分不受支持,因此您可以基于逆向工程specification生成与CHM文件遵循相同规范的相同文件。此外,由于CHM仅是包含HTML文件的二进制文件格式,因此使用UTF-8编码HTML文件将能够获得所需语言的帮助文档。

没有由Microsoft支持的CHM .NET API,因此您需要使用Streams / BinaryWriter自行输出二进制文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接