我一直在全球化一个应用程序,并且一直在使用Resx Manager来让我的生活更轻松。我遇到了一个多行字符串文字,它让我难过。
将此字符串转换为资源时,如何处理转义字符?
If Not RelayMessage(
"Are you sure you want to do the selected action?" & vbCrLf &
"A confirmation message will be sent to the user." & vbCrLf &
"Please ensure you want to perform this action before hitting accept.",
My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) =
DialogResult.Yes
如何将该字符串转换为资源?
答案 0 :(得分:2)
在标准VS资源管理器中(这是您正在使用的管理器?),您可以使用 shift 直接在编辑器中输入多行字符串资源 - Enter :
请注意,这实际上存储为CR + LF对的字符串,由space="preserve"
属性辅助。在文本编辑器中查看.resx文件:
使用标准消息框的结果:
MessageBox.Show(strings.myString)
答案 1 :(得分:1)
我不知道全球化问题通常是如何处理的。但一种简单的方法是定义自己的转义字符格式。例如,您可以将\n
定义为换行符。当您实际使用您的资源时,您可以使用
If Not RelayMessage(Strings.Replace(myResourceString, "\n", vbCrLf),
My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) =
DialogResult.Yes
而不是
If Not RelayMessage(myResourceString,
My.Resources.Confirmation, RelayMessageOptions.Confirm_YesNo) =
DialogResult.Yes
或者您可以在资源字符串的ChrW(10) & ChrW(13)
位置手动添加字符代码为10和13(例如vbCrLf
)的字符。这等于vbCrLf
(表示回车(10)+换行(13))。这将避免操纵源代码。像Tab(9)这样的其他东西也有代码。这些被称为控制字符。看一下维基百科http://en.wikipedia.org/wiki/Control_character