2012-04-11 17 views
7

Tengo un sitio web Asp.Net MVC 3, que será localizado.ASP.Net MVC: textos localizados con nueva línea?

He resx varios archivos que contiene mis textos, y no tengo en mis puntos de vista algunos

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

pero puedo No hagas que represente la nueva línea.

me trataron:

  • Shift + Enter: Tengo la nueva línea en el archivo de recursos, pero no en mi navegador
  • \ r \ n: Veo el \ r \ n en mi navegador
  • \ n: Igual
  • <br/>: veo la <br/> en mi texto

Entonces, ¿qué debo hacer para tener una nueva línea?

Editar: Sé que podría usar Html.Raw, pero no puedo pedirle a los traductores que escriban código html en su traducción.

Respuesta

10

Para ser honesto, yo sé que no es lo más bonito en el mundo, pero es a toda prueba y significa sus traductores no tienen que poner ningún código en sus traducciones:

Sobre la base de las respuestas ya dan, ¿por qué no sólo tiene que utilizar Html.Raw, pero antes de hacerlo, en sustitución del \r\n que el uso de Shift + Enter en los resultados del archivo de recursos en, con un <br />

así que decir por ejemplo que tenía la cadena denominada Welcome en el archivo de recursos ApplicationMessage, usted podría hacer:

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

Eso le dará lo que necesita. Aquí hay una pregunta similar:

HTMLencode HTMLdecode

+0

Hum, tal vez voy a hacer un ayudante para eso, ¿no? – J4N

+0

Sí, buena idea :) – mattytommo

+0

¿Funcionó? :) – mattytommo

0

Probablemente debería utilizar <br /> y producir la salida con Html.Raw()

2

Usted puede poner el <br /> para los saltos de línea y utilizar el método @Html.Raw() para mostrar la cadena con el salto de línea en lugar de la cadena <br />.

-1

Sí, gracias a mattytommo.

Puede utilizar

First line <br /> second line 

en recursos, o

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

en el código y Shift + Enter en el editor de recursos.

Tanto trabaja muy bien, pero hay que usar

@Html.Raw(); 
1

Creo que se debe utilizar una combinación de Shift + Introduzca y la CSS white-space property en lugar de abrir potentionally hasta vulnerabilidades XSS, como lo haría hacer uso de la solución @Html.Raw().

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

no sé el caso específico, pero podría ser que usted podría encontrar que pre-wrap se adapte a su caso mejor. Read more about the different white-space properties here

+0

Lo siento, pero como la pregunta fue hace más de 3 años, no puedo probar su solución;) – J4N

+0

Sí, sé que es viejo (supuse que había encontrado una solución para su problema) :) Acabo de pensarlo, y quería ingresar para futuros lectores;) – Squazz