【问题标题】:.NET resources hierarchy unrelated to culture.NET 资源层次结构与文化无关
【发布时间】:2009-01-15 11:16:10
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: .net resources customization


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢 sambo99,至少我知道我没有遗漏一些明显的东西 :)
    • 你认识的人有没有随着时间的推移发生任何变化?较新版本的工具、.NET Core、任何新机会,如/技巧指导,或者您认为它是上面写的最佳解决方案。
    猜你喜欢
    • 1970-01-01
    • 2014-11-10
    • 2013-02-21
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多