如何动态更新resx文件(客户端可以更新值)

时间:2015-01-23 08:51:05

标签: c# resx

我需要允许客户端为resx文件下的标签添加自己的语言文本。我们创建了resx文件,其中包含语言的翻译文本。

现在,客户希望此功能可供他使用。通常我们给出了改变他的语言的选项,通过选择我们显示来自resx文件的标签。

因此我们需要动态更新此resx文件。

3 个答案:

答案 0 :(得分:3)

以下是添加/更新ResX文件的方法:

ResXResourceWriter rsxw = new ResXResourceWriter(path);
bool added = false;
if (File.Exists(path))
{
    ResXResourceReader reader = new ResXResourceReader(path);
    foreach (DictionaryEntry node in reader)
    {
        if (key == node.Key.ToString())
        {
             rsxw.AddResource(key, value);
             added = true;
        }
        else rsxw.AddResource(node.Key.ToString(), node.Value);
    }
}
if(!added) rsxw.AddResource(key, value);
rsxw.Close();

答案 1 :(得分:2)

您应该将resx文件用作不可更改的后备。为了改变它,客户很难,而且在我看来并不是一个好方法。正如已经建议的那样,创建一个基于数据库或基于XML的"覆盖"包。如果值x在此包中有定义,请使用此选项。否则,请使用为值x。

提供的resx(fallback)值

答案 2 :(得分:1)

那时

.resx是错误的做法。它们需要编译到DLL中,以便在使用.NET中的标准资源管理器的应用程序中使用。

如果您必须使用.resx,我建议您让客户端使用Zeta Resource Editor之类的应用程序通过Excel文件提供所需的语言字符串,然后您可以重新导入.resx编辑器,更新您的解决方案,然后您可以编译资源程序集并将其发布给他。

否则,考虑使用基于XML文件的系统,这样可以让他做你所建议的 - 你需要编写大量的代码,因为.NET中的资源管理器子系统非常稳定,广泛使用的技术。