2009-01-15 32 views
3

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

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

唯一的问题 - 似乎.NET的资源面向国际化,他们选择基于当前文化的层次结构。

现在我会保持每个客户的平坦资源并自己映射层次结构,但有没有更好的解决方案?

回答

2

确实没有任何东西阻止你拥有多个ResourceManagers,但正如你所说它是为l18n设计的。就我个人而言,我在resx方面遇到了很多麻烦,尤其是当它涉及卫星组装GAC和部署时。我遇到的另一个问题是这个系统的僵化,如果你需要一个新的字符串,你需要重新编译一个dll,并用xml来解决问题,那么你的客户在修补东西时就没有灵活性,这些东西是为了支持时间而吃的。

基于层次结构的解决方案resx的东西意味着它将从“en-US”回落到“en”并最终变为不变,您没有更多的回退,而且您无法定义两个不同的“en在一个资源文件中为相同的字符串“-US”。你可以破解这个解决方案,为客户X使用“en-US”,为客户Y使用“en-AU”,然后作为一个资源出货,但这太麻烦了。

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

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

+0

感谢sambo99,至少我知道我不会错过某些明显的东西:) – orip 2009-01-16 14:56:00