2012-09-10 95 views
0

我有,其中使用了大量的資源串的項目。所以,我將它們作爲一個文件夾結構基於模塊進行組織。如何處理用於本地化的多個資源文件?

一樣,如果模塊A是下模塊A則夾i有以下文件。

Module A 

     ResourceFileA1.resx 
     ResourceFileA2.resx 
     ResourceFileA1.de-DE.resx 
     ResourceFileA2.de-DE.resx 

和類似的是模塊B.

結構,但我只是希望有一個單一的類文件或者如果無法單獨包裝類(屬於每一個資源文件多類),以獲得資源字符串。我正在嘗試類似GetString(moduleA.ResourceFileA1.String)

我試過的東西是解釋here但不能正確。任何人都可以幫忙嗎?

由於提前,

回答

2

你沒有提到的是哪個版本,你被限制在.NET框架,但假設你在至少.NET 2.0,你真的不應該需要手動擔心管理你的資源文件。通過Visual Studio添加新的資源文件,你會看到一個自動生成的

ResourceFileA1.resx 

ResourceFileA1.Designer.cs 

設計者文件應該爲你自動創建一個編譯時引用的任何資源的項目,你把你的文件,如:

moduleA.ResourceFileA1.YourStringKey 

當你添加新的語言環境(由Matchi.com提供回到-DE.resx等),moduleA.ResourceFileA1.YourStringKey應自動引用正確的資源˚F基於Thread.CurrentCulture島,但是如果你願意,你可以通過它在明確通過調用GetString的

+0

感謝聶平斯基我使用.NET 4,我知道它會爲每個資源文件設計師類但這是一個1:1的映射。我在尋找的是一個包裝類,因爲我不想調用單獨的類。所以我需要類似ResourceWrapper.GetString(「Module.ResourceFile.String」)。 – satya

+0

我在說的是, t需要一個單獨的Designer/Resource文件組合,您應該能夠將本地化(de-DE)resx文件保存在默認的resx和Designer文件所在的目錄中,並且它應該能夠自動運行 –

0

你是顯示的文件都是本地資源,設計爲只能由您的應用程序的某些部分進行訪問。但是,您也可以創建可供所有應用程序代碼使用的全局資源。假設你的應用程序是一個ASP.NET應用程序,這些資源位於App_GlobalResources。見this MSDN頁,特別是小節「環球資源文件」和「本地資源文件」。

0

這裏是下面的代碼。

[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 
    public static global::System.Resources.ResourceManager ResourceManager 
    { 

     get 
     { 
      resourceMan = new global::System.Resources.ResourceManager("Ral." + Ral.ResourceFolderPath.GetClientKey + ".Asset.Resource", typeof(Resource).Assembly); 
      return resourceMan; 
     } 
    } 
0

MSDN鏈接的作品對我來說,因爲我沒有遵守的RESX文件的命名約定。 http://msdn.microsoft.com/en-us/library/ms227427%28v=vs.100%29.aspx

它說:「當你創建資源文件,您可以通過創建一個基礎的.resx文件開始。對於要支持的每種語言,創建具有相同的文件名的新文件,但在名稱,包括語言或語言和文化(文化名)區域性名稱的列表,請參閱CultureInfo類。例如,您可以創建以下文件:。

WebResources.resx
基資源文件這是默認(後備)資源文件。
WebResources.es.resx
西班牙資源文件。
WebResources.es-mx。resx
西班牙語(墨西哥)的資源文件。
WebResources.de.resx
德國資源文件「