我想我有一个解决方案,但是有更好的方法,还是会打破我?

我正在使用全局/本地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);

这会在繁忙的网站上造成问题吗?如果它导致重新编译的瞬间延迟,那没什么大不了的。实际上,这种形式不会持续大量使用。社区的想法是什么?

有帮助吗?

解决方案

之前我使用过类似的方法来获得非常基本的“CMS”。该网站没有大量使用,但它没有给我带来任何问题。

我认为更改resx不会导致回收。

其他提示

我们做了类似的事情,但使用数据库来存储用户修改后的值。然后,我们提供了一个回退机制来提供本地化密钥的重写值。

那就是说,我认为你的方法应该可以正常工作。

您是否考虑过创建资源对象?您需要将设置包装到所有客户端代码将使用的单个对象中。类似的东西:

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文件中,您可以创建自定义部分并设置 restartOnExternalChanges =" true" 。这样,您的应用就会在制作完成后获得更改。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top