Возврат каретки / Перевод строки в файле ресурсов .Net (App_GlobalResources)

StackOverflow https://stackoverflow.com/questions/931114

Вопрос

Я храню несколько сообщений в 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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top