À l'aide de HTML à l'intérieur des fichiers de ressources
Je suis en train d'élaborer une norme de petites ASP.NET MVC site web qui sera mis multilingue à l'aide de ASP.NET fichiers de ressources.
Ma question est sur les fichiers de ressources. Voir si vous avez un bloc de texte qui devrait être montré dans les paragraphes, est-il nécessaire d'ajouter <p>
balises à l'intérieur de votre fichier de ressources de texte?
Si non, quelle serait la meilleure façon de traiter avec elle?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
@Html.Raw
méthode à l'intérieur de votre point de vue, par exemple,@Html.Raw(STRING FROM RESX FILE HERE)
<script>alert(1)</script>
ce est exécuté ... l'utilisateur est montré boîte de message d'alerte. Bien sûr utilisateur qui édite des ressources est très prudent, mais je vous ne peut jamais faire confiance à aucun d'entrée.Quand j'ai fait face à la même question, j'ai décidé contre le fait d'avoir paragraphes directement dans les ressources. Bloc de texte séparé par de simples nouvelles lignes (Maj+Entrée si je ne me trompe pas). Puis créer une méthode d'aide à envelopper les blocs dans les paragraphes.
Alors, à votre avis, vous les importez de votre méthode d'extension d'espace de noms:
Et de l'appliquer:
Je pense que c'est plus le moyen le plus propre que de mettre des balises dans le texte ressources là où elles sont, en principe, n'appartiennent pas.
Oui et non. Les ressources sont un bon endroit pour stocker le texte localisé et, fondamentalement, ce qui vous permettra d'envoyer l'ensemble des ressources de certaines agence de traduction qui va faire toutes les traductions de vous. Donc, c'est un plus.
Cependant, il augmente également les chances de bugs tout simplement parce que vous risquez d'oublier de coder ou de décoder le code HTML. L' .fichier resx est un fichier xml, il doit donc être codés dans la ressource. (Heureusement, il encodera automatiquement.) Lorsque vous récupérez à nouveau, il sera décodé automatiquement de nouveau. Toutefois, si vous passer le texte à d'autres fonctions, il y a un risque qu'il sera codé à nouveau, résultant en <b>gras</b> à la place de gras...
Vous aurez besoin de tests supplémentaires. Qui est quelque chose que vous pouvez gérer.
Mais le gros problème pourrait être pour la personne qui fait les traductions. Si ils ont juste traduire le .fichier resx, ils vont voir les chaînes codées. Cela pourrait être résolu si ils utilisent quelque chose pour rendre les ressources plus lisible. Aussi longtemps qu'ils ne sont pas traduire les balises elles-mêmes. Ils pourraient confondre les personnes qui vont faire les traductions.
Vous pouvez envelopper les données pour la resx champ de valeur dans un bloc CDATA
<![CDATA[ ]]>
.par exemple
Selon la façon dont vous voulez l'utiliser, vous aurez probablement à bande large de la
<![CDATA[
et]]>
au sein de votre application.Cette approche vous permet d'inclure des balises html dans le fichier resx. Je le fais pour stocker du texte formaté les messages seront affichés dans un jquery-ui boîte de dialogue à partir de différents points de vue au sein d'une asp.net mvc app.
Je dirais que cela devrait être évité, mais parfois, il est pratiquement inévitable. Idéalement, il serait préférable de stocker vos ressources à un niveau de granularité qui vous permet d'ajouter de la présentation de balisage en commun pour toutes les langues dans la zone appropriée de l'application.
Parfois gramatical des différences entre les langues rendre la tâche difficile. Parfois, vous voulez stocker de gros morceaux de texte en fonction des ressources (suffisamment grand qu'ils doivent inclure des choses comme les balises p). Ça dépend un peu de ce que vous faites.
Utilisation URLEncoder pour stocker la chaîne HTML au sein de la ressource; puis Décoder la Chaîne et de l'utilisation webview, plutôt que de convertir toutes les balises HTML.
Vous pouvez ainsi ouvrir votre fichier de ressources dans le concepteur et tout simplement de taper le code html et le texte que vous le souhaitez ..
Par exemple:
Resource Text <b>Data</b>
Toutefois, la solution de @Tony Bennett fonctionne parfaitement..
Aussi quelque chose comme cela fonctionne; les caractères spéciaux sont ici pour ouvrir/fermer le triangle des supports de < et >:
Nous ne.
Vous pouvez utiliser un texte en HTML convertisseur, mais que le texte contient beaucoup moins d'informations que le HTML, vous seriez limité.