2011-02-09 43 views
0

我需要本地化通過Clickonce運行的WPF應用程序。問題在於我們打算髮布該應用的產品具有「語言包」,用戶可以在其中上傳西班牙語/法語/日語等。語言包,它翻譯網頁界面。我們還希望WPF應用以任何網站運行語言運行。我打算使用WPF本地化擴展進行本地化:http://wpflocalizeextension.codeplex.com/尋求模塊化的WPF/Clickonce本地化解決方案

問題是每個語言包必須是其發行版本上自己的獨立產品循環與主要產品的發佈週期分開。此外,我們不能包含所有的語言,因爲這是在一個有8MB ROM的小型ARM9設備上進行的。而且由於每個語言包都是獨立的循環,因此在構建應用程序時我們不知道什麼語言包存在。 (例如:發佈新版本幾個星期後,我們發佈了一個新的語言包,增加了以前不支持的語言。)

我想到的一個解決方案是包含英文版的WPF應用程序,默認的英文版安裝,然後讓每個語言包添加Resources.dll,並將清單替換爲具有對新的Resources.dll的引用的清單。這甚至可以通過Clickonce的嚴格文件散列和代碼簽名要求實現,或者如果在安裝語言包時應用程序清單已被篡改,它會嚇壞了嗎?有沒有辦法在Microsoft生態系統中執行此操作?看起來您在生成Clickonce部署時必須事先知道支持哪些語言。除此之外,對於更多模塊化本地化+部署系統的任何建議?

回答

1

如果您更改其中一個文件並且不重新簽名清單,它會嚇壞了。

如果這是一個僅限內部使用的應用程序,則可以部署它並轉換籤名/散列。這確實會增加很大的安全風險(您的應用程序可能很容易被劫持並被惡意軟件取代),所以如果有互聯網訪問安裝,您不希望這樣做。

我想你也可以關閉一個文件的哈希 - 查看應用程序文件對話框。再次,這是一個安全風險,但並不像整個部署一樣困難。

您可以爲每個語言包創建不同的部署,或讓應用程序在啓動後下載正確的語言包並更改資源路徑。我不知道這是否真的有可能,但我認爲我會把它扔出去。