【问题标题】:ASP.NET Localized web site -- updating on the flyASP.NET 本地化网站——即时更新
【发布时间】:2014-02-27 00:57:32
【问题描述】:

我想我有办法解决这个问题,但有没有更好的方法,或者这会让我崩溃吗?

我正在使用全局/本地 resx 文件构建本地化网站。要求非技术用户可以通过网络应用编辑字符串并添加新语言。

这似乎很容易——我有一个显示字符串的表单,并且更改保存在如下代码中:sn-p:

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);

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

【问题讨论】:

    标签: asp.net localization


    【解决方案1】:

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

    我认为更改 resx 不会导致循环。

    【讨论】:

      【解决方案2】:

      我们做了类似的事情,但使用数据库来存储用户修改的值。然后,我们提供了一种回退机制来服务于本地化键的覆盖值。

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

      【讨论】:

        【解决方案3】:

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

        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"。这样一来,您的应用就会在制作时得到更改。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-12
          • 1970-01-01
          • 1970-01-01
          • 2011-03-16
          相关资源
          最近更新 更多