3

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

我想使用.NET 的资源实现,并将字符串放在常量或文件中或我喜欢的任何地方,再加上层次模型符合我的需要:客户 X 的资源覆盖用户欢迎字符串。

唯一的问题——.NET 的资源似乎是面向 i18n 的,它们根据当前文化从层次结构中进行选择。

现在,我将为每个客户保留平面资源并自己映射层次结构,但有更好的解决方案吗?

4

1 回答 1

2

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

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

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

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

于 2009-01-15T13:01:04.050 回答