如何处理资源(.resx)文件中的字符串文字

时间:2013-03-21 10:35:55

标签: c# winforms resources resx string-literals

所有,我最近学到了很多关于本地化和资源文件(.resx)的使用。对于特定的代码,我有一个.resx(和ascociated本地化版本.de-DE.resx等)为每个WinForm和两个代码(一个用于对象字符串[列名称等]和一个用于用户消息[消息框等中显示的那些]。对于对象字符串,我没有任何问题,但对于消息我有以下问题...

将消息“搜索”SomeString“(3个文件中的23次点击)”,消息开头的标签空间放在哪里。要创建这样的消息,我使用像

这样的代码
String.Format("\tSearch \"{0}\" ({1} hits in {2} files)\n",
              strSearchString,
              nTotalHits,
              nNumberOfFiles);

问题是,当我在资源文件中包含字符串"\tSearch \"{0}\" ({1} hits in {2} files)\n"时,我在运行时获得以下输出

\tSearch \"SomeString\" (23 hits in 3 files)\n

显然,它不像C#本身那样处理字符串文字。我知道要在资源​​文件中创建新行,我必须使用 Shift + 返回,但是你对tab等人做了什么?请不要说复制到Word或Notepad ++并添加标签,复制之后或者我会戳自己的眼睛。

将资源文件中包含的字符串文字转换为C#正确解释的实际字符串文字的最佳方法是什么?

请注意,这种转换只会发生在消息中,所以我甚至愿意考虑运行时转换。

感谢您的时间。

1 个答案:

答案 0 :(得分:4)

我担心你会盯着自己,因为那是完全你必须做的事情。我也对此感到沮丧。

您可以将标签包含为单独的项目,如下所示:

String.Format("{0}Search \"{1}\" ({2} hits in {3} files)\n",
          "\t",
          strSearchString,
          nTotalHits,
          nNumberOfFiles);

您也可以在数字键盘上输入Alt-012进入选项卡。

最后,在将字符串传递给string.Replace("\\t", "\t")并将“\ t”放入字符串资源之前,您可以通过string.Format()自行“转义”标签。

这一切都有点令人不满意! (我相信你自己已经考虑过所有这些想法......)