2015-09-09 60 views
1

說明:
我工作的一個解釋爲多語種多組織CMS我如何編程創建的resx文件的另一列

目前我們正在使用數據庫解決方案(Sql Server),但由於海量數據庫流量,我們正在尋找替代解決方案,並且我找到了.resx文件。

這裏我們將以編程方式創建.resx文件和一個.resx文件/語言。 在每個.resx文件上我們要添加一個organizationId。您可以在下面看到英文的.resx文件。

我們希望的.resx

 
Name Value  Comment     OrganizationId 
About About  this file is for english   1 
Login Login  this file is for english   2 

這種結構的情況是,當我的CMS一郎加我將創建與它的資源文件,該文件將包含字典(英文鍵,即語言價值)的語言。

現在一切都會按計劃進行如果一個單詞將有一個含義但有一個要求,Two organization can one have different meaning一個單詞。

例如單詞hello對於組織1將具有含義abc,它對於組織2將具有含義abc2的含義。

我的問題:
1.How我可以做到這一點使用.resx文件,如果它不能使用.resx文件那麼什麼是最有效的(速度,修的,靈活性)替代了此方案。

我的代碼:
目前我正嘗試this樣本:

   // Define a resource file named CarResources.resx. 
      using (ResXResourceWriter resx = new ResXResourceWriter(@"D:\VSProjects\CreateResourceFile\CreateResourceFile\CarResources.resx")) 
      { 

       resx.AddResource(new ResXDataNode("About", "About"){ Comment = "this file is for english" }); 
       resx.AddResource("Login", "Login"); 
       resx.AddResource("News", "News"); 
       resx.AddResource("Headline", "Headline"); 
       resx.AddResource("Information", SystemIcons.Information); 

      } 
+2

組織Id值不屬於資源文件。 – tdbeckett

+0

@tdbeckett是的,這個organizationId是主要問題,我如何將這個OrganizationId列添加到.resx文件中 – Dragon

回答

4

RESX文件有嚴格的模式,它不包括你想要更多的領域。因此,即使您設法添加字段(即使用常規的XML API),標準的.Net資源方法也可能無法處理這些修改過的文件。

根據您的需要,您可以使用完全自定義的XML(LINQ-to-XML提供了一種簡單的方法來創建/讀取XML文檔),或者您真的想使用resx文件 - 按組織分區文件(除了語言)like

text.org1.en-us.resx 
text.org2.en-us.resx 
text.org1.fr.rest 
+0

Thnks爲您快速有效的答案.Btw目前有超過150個組織/ WebSites正在我們的CMS上運行,所以我認爲分區文件不會是一個好主意,因爲我認爲創建和維護大量的動態資源文件是一件令人頭疼的事情。至於現在,我對linq to xml的想法印象深刻。 – Dragon

+0

@Sadaquat附註:答案假設你已經研究過數據庫流量的更傳統解決方案,如內存中緩存(使用.Net類),甚至分佈式緩存(memcached,redis,...)。切換到基於磁盤的文件不會是我的第一選擇... –

+0

您對創建我自己的資源讀取器/寫入器有什麼看法。這將需要更多的努力1.爲.resx文件創建自定義資源讀取器/寫入器或2.從頭到尾創建xml文件? – Dragon

相關問題