2011-05-04 46 views
4

試圖理清相結合的主題和定位...我在做什麼:Asp.net定位 - 覆蓋該文件RESX頁面會使用

本地化A.aspx,創建:

  • App_LocalResources文件\ a.aspx.resx
  • App_LocalResources文件\ a.aspx.resx.fr ...

不過,我想補充更多的選擇。我想有:

  • App_LocalResources文件\ a_theme1.aspx.resx
  • App_LocalResources文件\ a_theme1.aspx.resx.fr
  • App_LocalResources文件\ a_theme2.aspx.resx
  • App_LocalResources文件\ a_theme2.aspx.resx .fr

所以如果我在Theme1中,我想要主題1套資源來使用。

有沒有一種方法可以覆蓋哪些resx文件A.aspx將在加載時使用?

即,當它試圖加載a.aspx.resx.fr,我想a_theme1.resx.fr

非常感謝任何和所有的想法來代替它! :)

回答

1

到這裏看看:

ResourceManager.GetResourceFileName Method

這種方法使用的CultureInfo的名稱 財產作爲 比不變 文化等所有文化中的文件名的一部分。此方法不看在 一個集清單或觸摸 盤,只用來構建 什麼資源文件名(適合 傳遞到ResourceReader 構造函數)或清單資源 BLOB名稱應該是。

派生類可以覆蓋此方法 尋找一種不同 擴展名,如「的.resx」,或命名 文件 完全不同的方案。

我認爲你想做的事是這樣的:

public class ResxResourceManager : ResourceManager 
{ 
    protected override string GetResourceFileName(
     System.Globalization.CultureInfo culture) 
    { 
     return base.GetResourceFileName(culture);  
    } 

    public string GetResxFileName(System.Globalization.CultureInfo culture) 
    { 
     return GetResourceFileName(culture).Replace(".resources", ".resx"); 
    } 
} 

有關這方面的:

Creating a custom Resource Provider

Under the Hood of BuildManager and Resource Handling

+0

謝謝Leniel!我實際上決定放棄自動定位(出於幾個原因),只實現我自己的所有映射。使用ResourceManager編寫適當的resx文件並根據需要將它們分配到屏幕的不同部分。然而,謝謝你的建議,看起來很有趣! – 2011-05-06 12:35:04