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

3
我有一些字符串资源,例如用户欢迎字符串。默认情况下应该是“Hello”,但对于客户X应该是“Greetings”。
我想使用.NET的资源实现,并让字符串坐在常量或文件中或者我喜欢的任何地方,而且层次模型符合我的需求:客户X的资源覆盖了用户欢迎字符串。
唯一的问题是,似乎.NET的资源面向i18n,并且根据当前文化从层次结构中选择。
目前,我将保留每个客户的平面资源并自己映射层次结构,但是否有更好的解决方案?
1个回答

2

你可以拥有多个ResourceManager,没有任何限制,但是它被设计用于本地化。就我个人而言,我在resx方面遇到了很多麻烦,特别是在卫星程序集、GAC和部署方面。另一个问题是这个系统的刚性,如果您需要一个新的字符串,您需要重新编译dll并且还要处理xml,您的客户无法灵活地修复问题,这会耗费支持时间。

基于层次结构的解决方案意味着resx会从“en-US”回退到“en”,最后回到不变的状态,您没有更多的回退,并且不能为同一字符串在一个资源文件中定义两个不同的“en-US”。您可以通过将“en-US”用于客户X,将“en-AU”用于客户Y,然后作为一个资源进行发布来解决此问题,但这非常混乱。

您可以为每个客户编译不同的卫星程序集,并使其正常工作。

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


谢谢sambo99,至少我知道我没有错过什么显而易见的东西 :) - orip
你认识的人中有没有随着时间的推移发生了任何变化?比如工具的新版本、.NET Core、任何新的机会或技巧指导,或者你认为上述最佳解决方案是否仍然适用。 - rychlmoj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接