我有一些字符串资源,例如用户欢迎字符串。默认情况下,它应该是“Hello”,但对于客户X,它应该是“Greetings”。
我想使用.NET's resources implementation,让字符串位于常量或文件中或任何我喜欢的地方,加上层次结构模型符合我的需求:客户X的资源覆盖用户欢迎字符串。
唯一的问题 - 似乎.NET的资源面向i18n,他们从基于当前文化的层次结构中进行选择。
现在我将保留每个客户的平均资源并自己映射层次结构,但是有更好的解决方案吗?
答案 0 :(得分:2)
确实没有什么能阻止你拥有多个ResourceManagers,但正如你所说它是为l18n而设计的。就个人而言,我在resx方面遇到了很多麻烦,特别是在GAC和部署的卫星组件方面。我遇到的另一个问题是这个系统的刚性,如果你需要一个新的字符串,你需要重新编译一个dll和muml周围,你的客户没有灵活性来修复东西,这是为了支持时间。
基于层次结构的解决方案resx的东西意味着它将从“en-US”退回到“en”并最终变为不变,你没有比这更多的后备,你不能定义两个不同的“en-美国“在同一个字符串的一个资源文件中。你可以破解这个解决方案,为客户X使用“en-US”,为客户Y使用“en-AU”,然后作为一个资源运输,但这很糟糕。
您可以为每个客户编译不同的附属程序集,并以某种方式使其工作。
就个人而言,我更喜欢使用sqlite或mssql进行本地化的数据库支持解决方案,并确保在初始字符串查找后执行一些缓存。