ASP.Net MVC:使用新行的本地化文本?

时间:2012-04-11 14:05:22

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

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

我有几个包含我的文本的resx文件,我在视图中有一些

  

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

但我不能让它代表新的一线。

我试过了:

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

那么我应该怎么做才能换新线?

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

5 个答案:

答案 0 :(得分:10)

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

根据已经给出的答案,为什么不使用Html.Raw,但在此之前,在资源文件中使用Shift + Enter替换\r\n会产生{ {1}}

例如,假设您在资源文件<br />中有一个名为Welcome的字符串,您可以这样做:

ApplicationMessage

这将为您提供所需。这是一个类似的问题:

HTMLencode HTMLdecode

答案 1 :(得分:2)

您可以为换行符添加<br />,并使用@Html.Raw()方法显示带换行符的字符串,而不是<br />字符串。

答案 2 :(得分:1)

我认为您应该使用 Shift + Enter CSS white-space property的组合,而不是潜在地开放XSS漏洞,就像使用{ {1}}解决方案。

@Html.Raw()

我不知道具体案例,但可能会发现<span style="white-space: pre-line">@My.NameSpace.Through.My.LocalizationFile.Key</span> 更适合您的情况。 Read more about the different white-space properties here

答案 3 :(得分:0)

您应该使用<br />并使用Html.Raw()

呈现输出

答案 4 :(得分:-1)

是的,多亏了mattytommo。

您可以使用

First line <br /> second line

在资源中,或

resource.Replace("\r\n", "<br />")
代码中的

和资源编辑器中的Shift + Enter。

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

@Html.Raw();