【问题标题】:ASP.Net MVC: Localized texts with new line?ASP.Net MVC:带有新行的本地化文本?
【发布时间】:2012-04-11 14:05:21
【问题描述】:

我有一个 Asp.Net MVC 3 网站,它将被本地化。

我有几个包含我的文本的 resx 文件,并且我有一些观点

@My.NameSpace.Through.My.LocalizationFile.Key

但我不能让它代表新行。

我试过了:

  • Shift+enter:我在资源文件中有新行,但在我的浏览器中没有
  • \r\n : 我在浏览器中看到了 \r\n
  • \n : 相同
  • <br/>:我在我的文字中看到了<br/>

那么我应该怎么做才能换行呢?

编辑:我知道我可以使用 Html.Raw,但我不能要求翻译人员在他们的翻译中加入 html 代码。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 razor localization


    【解决方案1】:

    说实话,我知道这不是世界上最好的东西,但它是万无一失的,这意味着您的翻译人员不必在他们的翻译中添加任何代码:

    在已经给出的答案的基础上,为什么不直接使用Html.Raw,但在这样做之前,将资源文件中使用Shift+Enter 导致的\r\n 替换为<br />

    比如说你在资源文件ApplicationMessage中有一个名为Welcome的字符串,你可以这样做:

    @Html.Raw(ApplicationMessage.Welcome.Replace("\r\n", "<br />")
    

    这会给你你所需要的。这是一个类似的问题:

    HTMLencode HTMLdecode

    【讨论】:

    • 哼,也许我会为此做一个帮手,不是吗?
    • 这对我们很有效。控制资源文件的不是开发人员,因此能够(希望)处理大多数插入标记的情况非常棒。
    【解决方案2】:

    您可以将&lt;br /&gt; 用于换行,并使用@Html.Raw() 方法显示带有换行符的字符串,而不是&lt;br /&gt; 字符串。

    【讨论】:

      【解决方案3】:

      我认为您应该使用 Shift+EnterCSS white-space property 的组合,而不是像使用 @Html.Raw() 那样故意打开 XSS 漏洞解决方案。

      <span style="white-space: pre-line">@My.NameSpace.Through.My.LocalizationFile.Key</span>
      

      我不知道具体情况,但您可能会发现pre-wrap 更适合您的情况。 Read more about the different white-space properties here

      【讨论】:

      • 抱歉,由于问题是 3 年多前的问题,我无法测试您的解决方案;)
      • 是的,我知道它已经过时了(猜想你已经找到了解决问题的方法):) 只是被它绊了一下,并想为未来的读者提供帮助;)
      【解决方案4】:

      您可能应该使用&lt;br /&gt; 并使用Html.Raw() 呈现输出

      【讨论】:

        【解决方案5】:

        是的,感谢 mattytommo。

        你可以使用

        First line <br /> second line
        

        在资源中,或

        resource.Replace("\r\n", "<br />")
        

        在代码中,在资源编辑器中按 Shift + Enter。

        两者都可以,但你必须使用

        @Html.Raw();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多