resx文件中的重复值:组织资源文件条目的最佳方法是什么?

时间:2013-10-11 15:45:52

标签: c# localization resx

我已经浏览了很多关于本地化的MSDN,但我仍然想知道如何组织我的resx文件。

我经常遇到具有多个具有相同值的密钥的resx文件,这对我来说似乎是错误的。通常,当每个屏幕/用户控件显示相同文本时有不同的键时会发生这种情况。在这种情况下,resx文件如下所示:

ScreenXXX_ControlXXX_DisableButtonText = Disable
ScreenYYY_ControlYYY_DisableButtonText = Disable
...

有些人可能会争辩说,这会让您在不影响对方的情况下更改特定文本而带来灵活性,但显然,在所有屏幕上更改“禁用”将会很痛苦。我觉得拥有一个能够表达“禁用功能”概念并且由多个控件共享的唯一键更有意义。类似的东西:

DisableFeatureButtonText = Disable

所以问题是:

  • 创建资源条目的推荐方法是什么? 我应该创建一个“上下文”(=与其在UI中的位置相关)或“语义”的条目吗?
  • 在resx文件中有重复值的情况是否正常?
  • 更一般地说,这些事项是否有任何惯例或指引?

由于

2 个答案:

答案 0 :(得分:1)

您可以将全局Default.resx文件用于您在多个位置使用的所有资源。你想要放在那里取决于你。我认为没有一般规则。但是保存,禁用等等肯定值得投入使用。

答案 1 :(得分:1)

我面临的情况与你的情况非常相似,因为我有多个屏幕,在很多情况下,控制状态,文本等在屏幕上都是重复的。最初,我只是按屏幕分割resx文件并具有重复的键/值对,但是当你真正考虑它时,它们今天是相同的,但这并不意味着一个键/价值对可能意味着未来两件事。无论如何,这就是我要做的事情:

我会有一个通用的resx文件,其中包含所有屏幕共有的键等。 然后我会有一个屏幕独有的resx文件,但这些resx文件也可以包含公共resx中的键,然后你可以有一个方法来检查它们是否是特定resx中的值,如果它找到它,它使用它,否则,它使用公共resx文件中的值。

我真的不认为有一个约定,我通常用命名变量的方式命名我的键。

我认为拥有重复密钥是可以的,如果将来这些密钥可能意味着其他东西或需要具有不同的值。

我喜欢考虑像数据库表这样的resx文件。您可以将resx键/值填充到一个表中并拥有一个长的denormonalized表,或者您可以将resx键/值拆分为更小的表。我更喜欢后者,因为它可以在将来提供更好的可扩展性。