2012-09-01 57 views
3

我正在開發一個ASP.NET webapp,它具有多語言功能,允許網站管理員在運行時創建新語言。ASP.NET在運行時創建資源

,我想的方法是如下:

  1. 用戶選擇一個可用的(未創建)語言。
  2. 當用戶確認後,應用程序會自動複製一組現有資源,用新文化替換文件名。例如:default.aspx.en-us.resx爲default.aspx.es-ar.resx。
  3. 用戶編輯最近創建的資源。

目前我遇到了第2步的麻煩。我已經完成了複製資源,但這些新資源被忽略。我認爲發生這種情況是因爲新資源未包含在正在運行的程序集中,因此被忽略。

當我在本地項目中測試以下代碼時,我將不得不手動將新資源添加到解決方案,然後重新編譯以使其工作。

有誰知道如何使這項工作?

這是所提到的副本的代碼。

string _dir = path_ + "App_LocalResources\\\\"; 
DirectoryInfo _dirInfo = new DirectoryInfo(_dir); 

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) { 
_file.CopyTo(_dir + _file.Name.Replace("en-us", idioma_.Cultura)); 

} 

string _dir2 = path_ + "App_GlobalResources\\\\"; 
_dirInfo = new DirectoryInfo(_dir2); 

foreach (FileInfo _file in _dirInfo.GetFiles("*en-us.resx")) { 
_file.CopyTo(_dir2 + _file.Name.Replace("en-us", idioma_.Cultura)); 
} 

非常感謝。

+0

在你的項目中,有哪些特性'構建Action','複製到輸出Directory','自定義Tool',和'自定義工具Namespace'設置爲您的.ResX文件? – McGarnagle

+0

默認的resx文件具有以下屬性:Build acttion:「Content」,複製到輸出目錄:「不要複製」,自定義工具:-nothing-,自定義工具命名空間:-nothing- – Javier

+0

爲了補充我的問題,過程正常。問題是複製後,當我更改語言時,這些新的資源文件將被忽略並且不會被讀取。 – Javier

回答

0

創建或編輯資源文件與讀取數據不同。 爲了創建或編輯資源文件,您應該以與創建或編輯XML文件相同的方式來執行此操作,因爲資源文件具有特定的結構化XML元素。

也許這article將幫助你......