2012-10-08 27 views
1

我有一個多語言的Windows應用程序,它在resx文件中使用標準的.net本地化。在運行時添加語言

現在我有一個請求,爲用戶添加一個可能性來創建他自己不支持的語言文件,並將它們添加到應用程序中而不用重新編譯它。

實現此目標的最佳方法是什麼?

我在考慮將語言移動到數據庫,然後創建第二個將翻譯添加到數據庫的工具,但是如果可以動態添加resx文件,則寧願保留當前的方法。

+3

這正是我爲什麼不使用.NET本地化,但寫我自己的。我將翻譯存儲在獨立於EXE的文件中,具有基於Windows-Forms的用於翻譯的GUI,我可以將其嵌入到任何應用程序中(並且可以在其WPF克隆上工作),並允許用戶在不重新啓動應用程序的情況下切換語言。我不明白爲什麼有人會希望它有任何不同,以及爲什麼微軟創建了這樣一個糟糕而有限的系統。 – Timwi

+0

有很多選項可以更容易地替換.Net本地化器。每個窗口控件都有一個名稱,並且您可以在表單加載/語言切換上實現一個基於名稱的簡單查找。 – CodingBarfield

+0

@Timwi感謝您的評論。我決定採用你的方法。你能寫一個這個問題的答案,我可以接受嗎? –

回答

1

這正是我爲什麼不使用.NET本地化,但寫我自己的。

我將翻譯存儲在與EXE分開的文件中,具有基於Windows窗體的GUI翻譯功能,可以嵌入任何應用程序(並在其WPF克隆上工作),並允許用戶無需切換語言重新啓動應用程序。

我不明白爲什麼有人會希望它有任何不同,以及爲什麼微軟創建了這樣一個糟糕而有限的系統。

不幸的是,我現在無法發佈我的系統,但我希望我能儘快完成。

0

您可以將翻譯寫入.resx文件,並將該文件的位置添加到數據庫,然後當您想要翻譯某個標籤時,只需轉到數據庫即可查看該文件的位置,然後從中讀取。我不確定它如何適合本地化庫...

1

您可以使用的一個選項是將翻譯保留在XML文件中。這樣,用戶可以將他自己的XML文件放入存在翻譯的文件夾中。