Возврат каретки / Перевод строки в файле ресурсов .Net (App_GlobalResources)
-
06-09-2019 - |
Вопрос
Я храню несколько сообщений в App_GlobalResources.resx
файл.
Тексты должны быть многострочными, и мне нужно, чтобы они содержали перевод строк.Однако, когда я читаю содержимое, все переводы строк исчезают (\r\n
печатается, а не как CRLF 10 13
управляющий символ).
Я знаю, что мог бы обойти это путем повторной замены \r\n
(или что-нибудь еще, если на то пошло) вернемся к CRLF, когда я прочитаю содержимое, но я задавался вопросом, почему эти явно ориентированные на текст файлы resx игнорируют управляющие символы - а CRLF отчасти важен - и если кто-нибудь знает, есть ли настройка или что-то еще, что позволило бы этому работать естественным образом.
Решение
Я использовал VB.NET Express Edition, чтобы протестировать это.
В редакторе ресурсов (где вы можете указать название ресурса и строковое содержимое) поместите строковое содержимое, разделенное символом Сдвиг+Войти.
Допустим, вы хотите ввести
hello
world
Введите "привет", за которым следует Сдвиг+Войти и "мир".
Если вы посмотрите на 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>
Другие советы
Использование Сдвиг+Войти чтобы вставить новую строку.
При использовании интерфейса resx designer
Если вы на самом деле вводите текст в файл resx, то вы бы использовали
Сдвиг+Войти
как отмечалось в других ответах.
Если вы вставляете текст в resx - Visual Studio вставит текст в том же формате, в каком он уже есть (включая разрывы строк / многострочный).
При открытии файла resx в формате XML
(найдите файл resx с помощью функции найти и заменить..когда вы нажмете на файл на панели "найти результаты", VS откроет файл resx в формате XML)
Здесь вы можете добавить текст по своему усмотрению (в тегах значений), и форматирование будет сохранено.
Ну, что сработало в моей ситуации, так это использование <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.
Можно отредактировать *.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>