2009-01-06 80 views
1

我想我有一個解決方案,但有沒有更好的方法,或者這會打破我?ASP.NET本地化網站 - 即時更新

我正在構建一個使用全局/本地resx文件的本地化網站。非技術用戶需要編輯字符串並通過Web應用程序添加新語言。

這似乎很容易 - 我有一個表格,顯示的字符串,並保存有這樣的代碼片段的變化:

string filename = MapPath("App_GlobalResources/strings.hu.resx"); 
XmlDocument xDoc = new XmlDocument(); 
XmlNode xNode; 

xDoc.Load(filename); 
xNode = xDoc.SelectSingleNode("//root/data[@name='PageTitle']/value"); 
xNode.InnerText = txtNewTitle.Text; 
xDoc.Save(filename); 

難道這會導致在一個繁忙的網站的問題?如果它導致重新編譯的瞬間延遲,那沒什麼大不了的。而實際上,這種形式並不會持續,大量使用。社區有什麼想法?

回答

3

我以前使用過類似的方法來創建非常基本的「CMS」。該網站沒有大量使用,但它並沒有帶來任何問題。

我不認爲更改resx會​​導致回收。

1

我們做了類似的事情,但使用數據庫來存儲用戶修改後的值。然後,我們提供了回退機制來提供本地化密鑰的重寫值。

這就是說,我認爲你的方法應該可以正常工作。

0

您是否考慮過創建Resource對象?您需要將您的設置包裝到所有客戶端代碼將使用的單個對象中。喜歡的東西:

public class GuiResources 
{ 
    public string PageTitle 
    { 
     get return _pageTitle; 
    } 

    // Fired once when the class is first created. 
    void LoadConfiguration() 
    { 
     // Load settings from config section 
     _pageTitle = // Value from config 
    } 
} 

你可以把一個單身或供應商,這樣的對象加載一次。你也可以通過查看當前線索來獲取文化信息,以便知道要返回哪種語言。

然後在您的web.config文件中,您可以創建custom section並設置restartOnExternalChanges="true"。這樣,您的應用在製作完成後會得到改變。