我正在开发一个应用程序(.NET,但不相关),其中资源/字符串重复的可能性很大 - 大多数字符串都很简单,例如:
- 体积:33
- 音量:33(分贝)
- 音量
- 33分贝
- 音量(分贝)
- 命令 - 音量:33 (dB)
其中 X、Y 和单位相同。
我应该为每个字符串定义一个新资源,还是最好使用 String.Format 来简化其中的一些资源,例如:
String.Format("{0}: {1}", Resource.Volume, 33)
String.Format("{0}: {1} {2}", Resource.Volume, 33, Resource.dB)
Resource.Volume
String.Format("{0} ({1})", 33, Resource.dB)
String.Format("{0} ({1})", Resource.Volume, Resource.dB)
String.Format("Command - {0}: {1} {2}", Resource.Volume, 33, Resource.dB)
我还会在资源中定义“{0}: {1}”等字符串格式,以便可以对单词重新排序...
我会选择性地使用这种方法,而不是在整个应用程序中使用。
怎么样:
String.Format("{0}: {1}", Volume, Resource.Muted_Volume)
// = Volume: Muted
Resource.Muted_Volume
String.Format("{0}: {1} (by user {2})", Volume, Resource.Muted_Volume, "xy")
// = Volume: Muted (by user xy)
像“User”与“User:”与“User - ”这样的简单情况怎么样?您能想到在任何文化中“:”会出现在不同的位置或者可能会使用不同的字符吗?
优点是在我的应用程序中将资源数量减少了 2-3 倍。
使用这种方式有什么隐患吗?有人可以给我一个无法正常工作的例子(语言/文化)吗?
最佳答案
当您提出问题时,您自己已经确定了主要缺点:
Could someone give me an example (language) where this would not work correctly?
您依赖于所有语言中单词的顺序都是相同的。无论如何,我都不是语言专家,但我曾开发过翻译成其他语言(通常是法语和德语)的应用程序,并且构建字符串时的词序始终是一个问题。
对于简单的短语(例如您给出的短语),您可能没问题,但对于任何更复杂的短语,您都需要为每个短语拥有单独的资源。
关于.net - 使用 String.Format 避免资源(可本地化字符串)重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3016313/