Возврат каретки / перевод строки в файле ресурсов .Net (App_GlobalResources) - PullRequest
87 голосов
/ 31 мая 2009

Я храню несколько текстов в файле App_GlobalResources.resx.

Тексты должны быть многострочными, и мне нужно, чтобы они содержали перевод строки. Однако когда я читаю содержимое, все переводы строк исчезают (печатается \r\n, а не CRLF 10 13 управляющий символ).

Я знаю, что я мог бы обойти эту проблему, заменив \r\n (или что-нибудь еще в этом отношении) обратно на CRLF, когда я прочитал содержимое, но я удивился, почему эти явно ориентированные на текст файлы resx игнорируют управляющие символы - и CRLF отчасти важен - и если кто-нибудь знает, есть ли настройка или что-то, что позволило бы этому работать естественным образом.

Ответы [ 5 ]

150 голосов
/ 31 мая 2009

Я использовал VB.NET Express Edition для проверки этого.

В редакторе ресурсов (где вы можете указать имя ресурса и содержимое строки) поместите содержимое строки, разделенное Shift + Введите .

Допустим, вы хотите ввести

hello  
world

Введите "привет", затем Shift + Введите и "мир".

Если вы посмотрите на файл Resources.Resx (который является файлом xml), вы увидите, что он создает узел с атрибутом xml:space="preserve".

2-й вариант

Кроме того, вы можете отредактировать Resources.resx вручную и изменить содержимое, чтобы оно находилось в разделе CDATA.

Предположим, у вас есть строка с именем "example". Найдите его в Resources.resx и измените содержимое так, чтобы внутри него был раздел CDATA, в отличие от простого значения.

* * Например, тысяча двадцать восемь
<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
31 голосов
/ 18 августа 2009

Используйте Shift + Введите , чтобы вставить новую строку.

16 голосов
/ 28 августа 2012

При использовании интерфейса дизайнера resx

  • Если вы на самом деле печатаете текст в файле resx, вы должны использовать

    Сдвиг + Введите

    как отмечено в других ответах.

  • Если вы вставляете текст в resx - Visual Studio вставит текст в том же формате, в котором он уже есть (включая разрывы строк / многострочный).

При открытии файла resx в формате XML

(найдите файл resx с помощью команды find и replace .. когда вы щелкнете файл на панели «поиск результатов», VS откроет файл resx в XML)

Здесь вы можете добавлять текст по своему усмотрению (в тегах значений), и форматирование будет сохранено.

11 голосов
/ 01 августа 2012

Хорошо, в моей ситуации работало использование тега <br>, например:

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

Здесь есть пост с дополнительной информацией: Помещение разрыва строки в файл ресурсов resx

Если вы используете Razor View Engine с ASP.NET MVC, вам нужно использовать:

@Html.Raw(ResourceFile.ResourceString)

, чтобы печатать <br> как HTML.

0 голосов
/ 17 декабря 2018

Возможно редактировать файл *.resx с помощью текстового редактора , чтобы добавить разрывы строк.

Вы можете сделать это даже в Visual Studio:

  • Щелкните правой кнопкой мыши файл ресурса
  • Нажмите, чтобы Open with ...
  • Выбрать XML (Text) Editor with Encoding
  • Нажмите OK
  • Нажмите OK еще раз для выбора кодировки (автоопределение)
  • Поиск имени (ключа) вашего текста (например, "MY_TEXT")
  • Редактировать текст внутри тега <value>. Для перевода строки просто нажмите Enter. Примечание. Удалите начальные пробелы после переноса строки. Иначе они тоже вставляются.

Протестировано с Visual Studio 2017.

Пример:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...