.net - 使用 String.Format 避免资源(可本地化字符串)重复

标签 .net localization resources string-formatting

我正在开发一个应用程序(.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/

相关文章:

java - BIRT:数字类型(格式) hell

java - 以编程方式在java中的资源/源文件夹中创建文件?

.net - 去哪里查看 ildasm 中的 System.Collections.Generic IL 代码?

c# - LINQ Select with join 和 optional where

.net - wpf 本地化

.net - 反转 ResourceManager

android - 从其他 APK 加载动态资源

android - 在 Android 应用中放置包含数据的 XML 文件的位置

.net - 面向公众的高流量 Silverlight 站点

c# - 使用 System.IO.SearchOption.AllDirectories 时出错