.NET 资源层次结构与文化无关

标签 .net resources customization

我有一些字符串资源,例如用户欢迎字符串。默认情况下它应该是“你好”,但对于客户 X 它应该是“问候”。

我想使用 .NET's resources implementation ,并将字符串放在常量或文件中或我喜欢的任何位置,加上层次结构模型满足我的需要:客户 X 的资源覆盖用户欢迎字符串。

唯一的问题 - .NET 的资源似乎是面向 i18n 的,并且他们从基于当前文化的层次结构中进行选择。

目前,我将为每个客户保留固定资源并自行映射层次结构,但是否有更好的解决方案?

最佳答案

确实没有什么可以阻止您拥有多个 ResourceManager,但正如您所说,它是为 l18n 设计的。就我个人而言,我在 resx 方面遇到了很多麻烦,尤其是在涉及 GAC 和部署的卫星程序集时。我遇到的另一个问题是这个系统的刚性,如果你需要一个新的字符串,你需要重新编译一个 dll 并用 xml 搞砸,你的客户在修复东西方面没有灵 active ,这确实会占用支持时间。

resx 的基于层次结构的解决方案意味着它会从“en-US”退回到“en”,最后退回到不变,你没有比这更多的退路,你不能定义两个不同的“en-” US"在同一个字符串的一个资源文件中。您可以修改此解决方案,为客户 X 使用“en-US”,为客户 Y 使用“en-AU”,然后作为一个资源发送,但这太麻烦了。

您可以为每个客户编译一个不同的附属程序集,并让它以某种方式工作。

就个人而言,我更喜欢使用 sqlite 或 mssql 进行本地化的数据库支持解决方案,并确保在初始字符串查找后执行一些缓存。

关于.NET 资源层次结构与文化无关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/446396/

相关文章:

.net - .NET 4.5 和 Authorize.net 升级到 TLS 1.2 的过程

c# - gridview 上的复选框事件?

iPhone 开发者 : Recurse all project resoureces and collect paths

node.js - 如何在不删除杀毒软件或重新安装 Node 的情况下释放资源\AppData\Local\Temp\shelljs_60d55c70cdc922162f4b?

twitter-bootstrap - 错误选项 : ';_;' when building Twitter Bootstrap

iphone - 如何在按钮标题中创建带有标签和值对的 UIActionSheet

c# - 两个 ulong(unsigned long)值之差的 Math.Abs

c# - 接口(interface)属性的 XML 序列化

c++ - 如何使用 GetFileVersionInfo 函数?

windows - 是否可以覆盖 Windows 中的默认文件夹浏览器对话框?