Retour chariot / saut de ligne dans le fichier de ressources .Net (App_GlobalResources)

94

Je garde plusieurs textes dans un App_GlobalResources.resxfichier.

Les textes doivent être multi-lignes et j'ai besoin qu'ils contiennent des sauts de ligne. Cependant, quand je lis le contenu, tous les sauts de ligne sont partis ( \r\nest imprimé, pas comme CRLF 10 13caractère de contrôle).

Je sais que je pourrais contourner ce \r\nproblème en remplaçant (ou toute autre chose d'ailleurs) par CRLF lorsque je lis le contenu, mais je me suis demandé pourquoi ces fichiers resx clairement ciblés sur le texte ignorent les caractères de contrôle - et CRLF est assez important - et si quelqu'un sait s'il existe un paramètre ou quelque chose qui permettrait à cela de fonctionner naturellement.

Alex
la source

Réponses:

161

J'ai utilisé VB.NET Express Edition pour tester cela.

Dans l'éditeur de ressources (où vous pouvez spécifier le nom de la ressource et le contenu de la chaîne), placez le contenu de la chaîne séparé par Shift+ Enter.

Disons que vous voulez taper

hello  
world

Tapez "bonjour" suivi de Shift+ Enteret "monde".

Si vous regardez le fichier Resources.Resx (qui est un fichier xml), vous pouvez voir qu'il crée un nœud avec l'attribut xml:space="preserve".

2ème option

En outre, vous pouvez modifier le Resources.resx manuellement et modifier le contenu pour qu'il soit sous la section CDATA.

Supposons que vous ayez la chaîne nommée «exemple». Recherchez-le dans Resources.resx et modifiez le contenu pour qu'il contienne une section CDATA au lieu d'avoir une valeur simple.

par exemple

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
shahkalpesh
la source
3
J'ai trouvé cette réponse à la recherche d'un moyen d'insérer des \tonglets. Je devais en fait entrer dans les paramètres de Visual Studio pour les onglets dans les fichiers xml et désactiver l'option «tabs as spaces» (où elle remplace les caractères de tabulation par un certain nombre d'espaces à la place) afin que je puisse obtenir un caractère de tabulation littéral dans ma chaîne.
Jon O
Fantastique ... je ne savais pas que c'était possible! :)
Leniel Maccaferri
Mieux vaut tard que jamais ... Après avoir supposé que \ n était la bonne voie. Seulement 50 changements à faire!
Andez le
J'ai sauvé ma journée. Je vous remercie!!
xyzWty
35

Utilisez Shift+ Enterpour insérer une nouvelle ligne.

bleuâtre
la source
4
qui aurait deviné. essayé ctrl + entrée, alt + entrée. cohérence MS!
Illuminati
18

Lors de l'utilisation de l'interface du concepteur resx

  • Si vous tapez réellement le texte dans le fichier resx, vous utiliseriez

    Shift+Enter

    comme indiqué dans d'autres réponses.

  • Si vous collez du texte dans le resx - Visual Studio collera le texte dans le même format qu'il est déjà (y compris les sauts de ligne / multiligne).

Lors de l'ouverture du fichier resx au format XML

(localisez le fichier resx en utilisant rechercher et remplacer .. lorsque vous cliquez sur le fichier dans le panneau 'Rechercher les résultats', VS ouvrira le fichier resx en XML)

Ici, vous pouvez ajouter du texte à votre guise (dans les balises de valeur) et le formatage sera conservé.

Danield
la source
17

Eh bien, ce qui a fonctionné dans ma situation était d'utiliser une <br>balise comme celle-ci:

A text with a line break <br> and this goes in the second line.

Il y a un article avec plus d'informations ici: Mettre un saut de ligne dans un fichier de ressources resx

Si vous utilisez le moteur de vue Razor avec ASP.NET MVC, vous devez utiliser:

@Html.Raw(ResourceFile.ResourceString)

afin qu'il imprime le <br>comme HTML.

Leniel Maccaferri
la source
10
Cela fonctionnera si votre chaîne de ressources est destinée à être utilisée en HTML. Mais si la chaîne doit être utilisée de manière non HTML (comme la chaîne d'une info-bulle ou d'une boîte de dialogue de message d'erreur dans une application de bureau par exemple), vous obtiendrez simplement <br> dans votre chaîne.
Peter Meyer
0

Il est possible d'éditer le *.resxfichier avec un éditeur de texte pour ajouter des sauts de ligne.

Vous pouvez le faire même dans Visual Studio:

  • Cliquez avec le bouton droit sur le fichier de ressources
  • Cliquez pour Open with ...
  • Sélectionner XML (Text) Editor with Encoding
  • Cliquez sur OK
  • Cliquez à OKnouveau pour sélectionner l'encodage (détection automatique)
  • Recherchez le nom (clé) de votre texte (par exemple "MON_TEXTE")
  • Modifiez le texte à l'intérieur de la <value>balise. Pour les sauts de ligne, poussez simplement Enter. Remarque: supprimez les espaces de début après le saut de ligne. Sinon, ils sont également insérés.

Testé avec Visual Studio 2017.

Exemple:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Beauté
la source