我需要允许客户端为resx文件下的标签添加自己的语言文本。我们创建了resx文件,其中包含语言的翻译文本。
现在,客户希望此功能可供他使用。通常我们给出了改变他的语言的选项,通过选择我们显示来自resx文件的标签。
因此我们需要动态更新此resx文件。
答案 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中的资源管理器子系统非常稳定,广泛使用的技术。