2013-12-20 100 views
1

我們有一個大型的本地化ASP.NET MVC 4站點,我們正在努力管理資源密鑰。我們目前所面對的是一系列諸如以下含常量局部靜態類:管理本地化密鑰ASP.NET MVC C#

public static partial class Resources 
{  
    public static class News 
    { 
    public static class Shared 
    { 
     public const string Title = "News_Shared_Title"; 
    } 
    } 
} 

這讓我們例如調用下面:

<%: Html.Resource(Resources.News.Shared.Title) %> 

,在穿過一個視圖關鍵的「News_Shared_Title」用於我們的數據庫資源實施。

的問題,這是它會減慢停止和管理靜態類的發展,而這將是快得多,例如只需鍵入:

<%: Html.Resource("News_Shared_Title") %> 

這種方法的問題是,這是很難爲了管理可能的拼寫錯誤,我們也失去了使用反射的應用程序從靜態資源類中獲取所有關鍵值並查看數據庫中缺少哪些關鍵值的能力。

我的問題是,其他人如何管理他們的資源鍵,有沒有更好的方法?如果我們在視圖/控制器/等上使用了字符串。我們如何獲得應用程序中的所有密鑰並查看數據庫中缺少哪些密鑰?

+0

你爲什麼不使用資源(RESX)文件? – Marthijn

+0

您不能從數據庫中的數據生成源文件嗎?你可能不得不製作一個腳本或一個小工具來做到這一點。但這樣你只需要維護數據庫。 – BdR

回答

0

爲什麼不使用資源文件? (resx)不是更好嗎?

僅在您的解決方案中使用resx文件創建一個新項目,然後將其添加爲主項目中的參考。然後使用資源項目的自定義名稱空間在主項目上更易讀。

編輯:

它依賴於資源的文件名,如果您的CurrentCulture設置不當就會自動地選擇正確的RESX文件是真的很強大。更多的相關信息在這裏:http://msdn.microsoft.com/en-us/library/ms247246(v=vs.100).aspx

不知道這是否回答您的問題:)

+0

我們沒有使用resx文件的原因很多,但主要的原因是便於使用鍵和英語從數據庫導出數據,通過外部翻譯服務翻譯並簡單地重新導入到維護的主數據庫中源控制。 – user351711

+0

如果主要關注的是管理翻譯並將文本發送給您的翻譯人員,那麼也許可以查看這個問題:http://stackoverflow.com/questions/20324967/localize-multi-plattform-projects-consolidate-string-files/ – BdR

+0

這是一個有趣的想法,我會看看它,謝謝你的建議。我看到的主要問題是管理如此龐大的密鑰/翻譯,因爲我們有太多或一個文件,所以我們希望將資源分配給不同的控制器,區域等。可能需要很多管理,而使用當前的靜態類/數據庫解決方案,我們爲邏輯分隔創建了不同的靜態類。我想沒有最好的解決方案,它的優點和缺點。 – user351711