2013-07-17 92 views
1

我試圖找到如何最好地允許資源文件的本地化和客戶端自定義的信息。使用客戶端自定義資源(resx)以及默認資源

這將是一個簡單的演示,但首先我在做什麼:我們有一個應用程序是一種產品,但我們允許客戶自定義該產品。

我想要(我認爲)是創建一個消息「歡迎」(英語)和「Welkom」(南非荷蘭語)的產品。該產品需要支持不同的語言。

但是,客戶端可以在英文資源中將「Welcome」改爲「Hey Again」。

但是我們發佈了一個更新(比如v2),並且我們添加了一個新的密鑰「再見」給資源。

防止覆蓋客戶端自定義設置的最佳做法是什麼,但是更新默認資源以使其現在處於最新版本並具有兩個密鑰?

在僞代碼:

Load default resources (English) - this is done by .NET 
Load default regional resources (Afrikaans) - this is done by .NET 
Load the client resources (English) - ? 
Load the client regional resources (Afrikaans) - ? 

因此,「再見」在任何語言的回報「再見」(新的)最後要求,但「歡迎」的英文最後的請求返回「嘿再次「(客戶)和」Welkom「(默認)在南非荷蘭語中。

+2

我一直在研究完全相同的項目。默認語言,額外的語言,並在每個客戶端可以自定義字符串。那麼,我的解決方案是 - 數據庫。每個領域都有一把鑰匙。這個鍵將與語言結合使用。想象一下帶有鍵,languageId,defaultString,customString的表。您有密鑰和用戶選擇的語言。然後你可以使用db腳本運行更新。您不會覆蓋自定義字符串或整個自定義記錄。但是你的鍵+語言組合將是靜態的。 –

+0

我同意部分內容,但請參閱我對@Remy的評論 – Matthew

回答

1

作爲T.S.上面提到,我也會推薦一個數據庫資源提供者。

http://msdn.microsoft.com/en-us/library/aa905797.aspx

根據您的應用程序,你可以使用標準的MS SQL資源提供商或自定義的情況下,它是一個應用程序,其中MS SQL是沒有意義的。

+0

如果產品與數據庫分離,該怎麼辦?比如邏輯引擎的前端?該應用程序本身不使用數據庫,但通過API與現有系統進行通信,無法爲*簡單「本地化引入輸入數據庫依賴關係。 – Matthew

+0

由於您需要靈活性,因此資源文件不提供,數據庫太多,因爲在客戶端應用程序中不使用數千個字符串,您可以創建本地數據庫,它可以是一個用於序列化數據表的文件,並且可以具有與處理大型數據庫相同的邏輯,然後,您需要工具來創建和編輯這個文件。 –