【问题标题】:C# - MessageBox - Message localization in resources and lines breaksC# - MessageBox - 资源和换行符中的消息本地化
【发布时间】:2011-08-29 14:41:24
【问题描述】:

我想用带有换行符的资源中的字符串显示 MessageBox (WinForms)。

示例没有资源(WORKS):

string someMsg = "Message. Details:\n" + someDetails;

MessageBox.Show(someMsg);

结果:

消息。详情:

这里有一些细节

当我将字符串 "Message.Details:\n" 移动到资源中时:

string someMsg = GlobalStrings.MsgBoxJustTest + someDetails;
MessageBox.Show(someMsg);

结果:

消息。详细信息:\n这里有一些详细信息

当我将带有“\n”的字符串移动到资源时,MessageBox.Show() 停止将其解释为换行符。

编辑:我正在考虑: someMsg.Replace(@'\n',Environment.NewLine); 但是对于这么简单的事情仍然很烦人。

【问题讨论】:

  • 我不想通过 Replace 方法或编辑在代码中处理这个问题。我想将此资源文件添加给可以轻松翻译的“普通”用户。
  • 对,但是“普通”用户肯定会发现将实际换行符放在正确的位置比保留“\n”占位符更自然吗? (请参阅@Chilaka Umesh 对他的回答的评论)。也许问题是:您如何将这些字符串“移动”到资源文件中?这个移动过程是 \n 应该被实际换行符替换的地方。

标签: c# winforms localization embedded-resource messagebox


【解决方案1】:

如果您将其添加到资源中,则不会将 \n 作为转义字符 只需在记事本中打开您的资源文件即可查看此内容并在 XML 文件中更改 (resx)

用新行在记事本中键入您的数据。 复制并粘贴到您的资源编辑器中

编辑:

在资源编辑器 UI 中键入/粘贴您的数据,选择 \n 并将其替换为实际的换行符,即 Shift-Enter

【讨论】:

  • 我明白了.. 但我想让它尽可能简单。
  • 在资源编辑器中键入“消息。详细信息:”然后按“shift+enter”键,只需输入键。这可能会对您有所帮助。
【解决方案2】:

你可以这样做(只要你的不是 .net 2.0):

public static class StringExt
{
  public static String FixNewLines(this String str)
  {
    return str.Replace(@'\n',Environment.NewLine);
  }
}

然后:

string someMsg = GlobalStrings.MsgBoxJustTest + someDetails;
MessageBox.Show(someMsg.FixNewLines());

但是,这会影响应用程序中的 ALL 字符串(命名空间范围)

这是一个肮脏的修复,但它是一个快速修复。

就我个人而言,我会一直修正我的逻辑,而不是像上面那样做。

【讨论】:

    【解决方案3】:

    也许您可以将 resx 文件作为代码打开并直接在 XML

    阅读时可能会因为转义字符而迷路,可以尝试使用\\

    【讨论】:

    • 谢谢,但我不想从代码->资源->资源代码编辑切换。
    【解决方案4】:

    一个简单的解决方案是将“占位符”存储在资源字符串中。例如,此字符串存储在 *.resx 中的“MessageDetails”键下:“Message. Details:{0}{1}”。然后,在您的代码中,像这样使用它:

    MessageBox.Show(String.Format(GlobalStrings.MessageDetails, Environment.NewLine, @"消息"));

    如您所见,这里的优势是可移植性。

    【讨论】:

      猜你喜欢
      • 2011-09-27
      • 2015-12-19
      • 2012-05-29
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多