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

时间:2011-08-30 07:49:01

标签: c# .net wpf chm

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

2 个答案:

答案 0 :(得分:4)

如果可能的话,我会尽力避免这种情况。 CHM是一种专有格式,虽然它已经进行了逆向工程,但我认为通过像磁盘上的HTML这样的真正可移植的解决方案,您将获得更多的好处。

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

我们认为,对Unicode的支持不够充分,并且存在许多安全问题导致许多客户不允许使用CHM文件 - 严重的是,他们在正确的思想中允许任意代码通过帮助运行系统

使用磁盘上的HTML,这个复制不仅消失了(因为每个语言版本都包含常见图像),我们还获得了更好的Unicode支持,并且能够拥有一个默认的首页(英文),并带有替代前端的链接其他语言环境的页面。

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


而且,最重要的是,微软似乎不再支持它了。来自the Wikipedia CHM article

  

2002年,微软公布了与.CHM格式相关的安全风险,以及安全公告和补丁。他们后来宣布他们不打算进一步发展.CHM格式。

答案 1 :(得分:0)

正如前一个答案中的评论所述,CHM格式既是Microsoft的非常旧格式,也是专有格式。使用您的应用程序分发HTML文件将完成与单个CHM文件相同的功能。担心用户将看到的用户界面的语言更像是一个问题;如果用户正在阅读意大利语帮助,他或她将使用(1)意大利本地化版本的Windows和(2)意大利语本地化网络浏览器。

话虽如此,因为CHM是旧的格式,现在看似部分不受支持,您可以根据CHM文件所遵循的反向工程specification生成相同的文件。此外,由于CHM仅仅是一种二进制文件格式,包含HTML文件,因此使用UTF-8对HTML文件进行编码将完成以您希望的任何语言获取帮助文档。

没有Microsoft支持的CHM .NET API,因此您必须使用Streams / BinaryWriter自行输出Binary。