所有,我最近学到了很多关于本地化和资源文件(.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#正确解释的实际字符串文字的最佳方法是什么?
请注意,这种转换只会发生在消息中,所以我甚至愿意考虑运行时转换。
感谢您的时间。
答案 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()
自行“转义”标签。
这一切都有点令人不满意! (我相信你自己已经考虑过所有这些想法......)