我需要本地化通过Clickonce运行的WPF应用程序。问题是,我们打算分发此应用程序的产品有“语言包”,用户可以上传西班牙语/法语/日语/等。语言包,它翻译Web界面。我们还希望WPF应用程序能够以网站运行的任何语言运行。我计划使用WPF本地化扩展进行本地化:http://wpflocalizeextension.codeplex.com/
问题是每个语言包必须是一个独立于主产品发布周期的发布周期的独立产品。此外,我们不能包括所有语言,因为这是一个小型ARM9设备,具有8MB的ROM。由于每个语言包都是一个单独的循环,因此我们不知道在构建应用程序时存在哪些语言包。 (例如:在发布新版本几周后,我们发布了一个新的语言包,添加了以前不支持的语言。)
我想到的一个解决方案是包含英文版的WPF应用程序和默认的英文版安装,然后让每个语言包添加Resources.dll并将清单替换为引用新资源的清单。 DLL。这甚至可以通过Clickonce的严格文件散列和代码签名要求来实现,或者如果在安装语言包时应用程序清单被篡改,它是否会变得怪异?有没有办法在Microsoft生态系统中执行此操作?在生成Clickonce部署时,您似乎必须事先知道支持哪些语言。除此之外,还有更多模块化本地化+部署系统的建议吗?
答案 0 :(得分:1)
如果您更改其中一个文件并且不重新签署清单,它将会吓坏。
如果这是一个仅限内部应用,您可以部署它并转动签名/散列。这确实会增加很大的安全风险(您的应用可能很容易被劫持并被恶意软件取代),所以如果有安装的互联网访问权限,您就不希望这样做。
我认为你也可以在一个文件上关闭哈希 - 查看“应用程序文件”对话框。同样,这是一个安全风险,但不会像整个部署一样多。
您可以为每个语言包创建不同的部署,或让应用程序在启动后下载正确的语言包并更改资源的路径。我不知道这是否真的有可能,但我想我会把它扔出去。