Estoy trabajando en una aplicación web globalizada en ASP.NET MVC3. El proyecto contiene los archivos de recursos I18N y normalmente acceder a los recursos dentro de mi maquinilla de afeitar ve como ...¿Cómo se formatea cadenas localizadas para que las palabras sueltas de una oración sean un enlace?
@I18N.MyResourceString
que tienen una situación difícil que no he sido capaz de encontrar una solución elegante para todavía. Necesito poder localizar la oración "Haga clic aquí para donar". donde la palabra 'aquí' debería ser un enlace a nuestro sistema de donación.
mayoría de los enlaces en el sitio son internos de modo de crear enlace Simplemente escribo ...
@Html.ActionLink("Some link text", "MyAction", "MyController")
Esta donación enlace es externo. Lo que tengo hasta ahora (que no funciona) es ...
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\">" + I18N.Here + "</a>")
donde el texto del I18N.ClickHereToDonate
de recursos es "Click {0} to donate."
.
Lo que veo en la pantalla es ...
Click <a href="http://paypal.com">here</a> to donate.
Por otra parte, también me gustaría añadir un atributo 'título' de la 'a' etiqueta. Se hace aún más feo que cuando intento ...
@String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>")
Tiene que haber una mejor manera de formar complejos con cadenas de etiquetas incrustadas sin concatenación de cosas juntos de tal manera hacker. No solo no funciona (el marcado pretendido se codificó) sino que hace que el HTML dentro de una cadena sea literal en mi plantilla de afeitadora, lo que me hace perder cualquier capacidad increíble de soporte/intercalación/refactorización de IDE.
¿Cómo se puede inyectar el marcado en las cadenas localizadas?
ACTUALIZACIÓN
Adam Tuliper menciona el método @Html.Raw
ayudante en su respuesta, así que añadí a mi ya fea marcado ...
@Html.Raw(String.Format(I18N.ClickHereToDonate, "<a href=\"http://paypal.com\" title=\"" + I18N.PayPal + "\">" + I18N.Here + "</a>"))
Este al menos me tiene un enlace de click-poder en el marcado de salida.
Haz clic en here para donar.
Sin embargo, sigue siendo una solución no muy elegante, por lo que todavía estoy buscando mejores formas de hacerlo.
él necesita string.format como la cadena de arriba contiene marcadores de posición. {0}, etc. –
Esto es a lo que tuve que recurrir por ahora, pero no es el resultado deseado. A la empresa le gustaría que solo la palabra "aquí" sea un enlace, no la oración completa. Su respuesta es exactamente lo que ya hago para mis enlaces de elementos de menú, que son todos una palabra o solo unas pocas palabras. –
He editado lo anterior para usar @ Html.Raw - Adam lo usó a continuación. Usar dos String.Formats debería darle el resultado deseado, sin la necesidad de cambiar las cadenas de recursos o cualquier otra cosa. –