2009-01-06 42 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"。这样,您的应用在制作完成后会得到改变。