Используя HTML в файлах ресурсов

rstrip не делает то, что Вы хотите, чтобы он сделал, это разделяет любой из символов, которые Вы даете ему и не суффикс:

>>> '30000.0'.rstrip('.0')
'3'

На самом деле, всего '%g' % i сделает то, что Вы хотите.Править: как Robert указал в своем комментарии, это не будет работать на большие количества, так как он использует точность по умолчанию %g, который составляет 6 значащих цифр.

С тех пор str(i) использование 12 значащих цифр, я думаю, что это будет работать:

>>> numbers = [ 0.0, 1.0, 0.1, 123456.7 ]
>>> ['%.12g' % n for n in numbers]
['1', '0', '0.1', '123456.7']
35
задан Peter Mortensen 11 June 2012 в 15:05
поделиться

4 ответа

Когда я столкнулся с тем же вопросом, я решил не размещать абзацы непосредственно в ресурсах. Разделите текстовый блок простыми новыми строками (Shift + Enter, если не ошибаюсь). Затем создайте вспомогательный метод для обертывания блоков в абзацы.

using System;
using System.Text;
using System.Web;

namespace MyHtmlExtensions
{
  public static class ResourceHelpers
  {
    public static IHtmlString WrapTextBlockIntoParagraphs(this string s)
    {
      if (s == null) return new HtmlString(string.Empty);

      var blocks = s.Split(new string[] { "\r\n", "\n" },
                            StringSplitOptions.RemoveEmptyEntries);

      StringBuilder htmlParagraphs = new StringBuilder();
      foreach (string block in blocks)
      {
        htmlParagraphs.Append("<p>" + block + "</p>");
      }

      return new HtmlString(htmlParagraphs.ToString());
    }
  }
}

Затем в своем представлении вы импортируете пространство имен метода расширения:

<%@ Import Namespace="MyHtmlExtensions" %>

И примените его:

<%= Resources.Texts.HelloWorld.WrapTextBlockIntoParagraphs () %>

Я думаю, что это более чистый способ, чем размещение тегов разметки в текстовых ресурсах где они в принципе не принадлежат.

12
ответ дан 27 November 2019 в 06:37
поделиться

Да и нет. Ресурсы - хорошее место для хранения локализованного текста, и в основном это позволит вам отправить весь ресурс в какое-либо бюро переводов, которое сделает все переводы за вас. Так что это плюс. Однако это также увеличивает вероятность ошибок просто потому, что вы можете забыть кодировать или декодировать HTML. RESX-файл - это XML-файл, поэтому он должен храниться в кодированном виде в ресурсе. (К счастью, он закодирует его автоматически.) Когда вы снова его получите, он снова будет автоматически декодирован. Однако, если вы передадите текст другим функциям, существует риск того, что он будет снова закодирован, в результате чего будет выделен полужирный вместо полужирный ... Так что вам понадобится дополнительное тестирование. Это то, чем вы можете управлять.

Но большая проблема может быть для человека, который делает переводы. Если они просто переведут файл .resx, они увидят закодированные строки. Это можно было бы решить, если бы они использовали что-то, чтобы сделать ресурсы более читабельными. Пока они сами не переводят теги. Они могут запутать людей, которые будут делать переводы.

5
ответ дан 27 November 2019 в 06:37
поделиться

Я бы сказал, что этого следует избегать, но иногда это практически неизбежно. В идеале было бы лучше хранить ваши ресурсы на таком уровне детализации, который позволяет вам добавлять разметку презентации, общую для всех языков, в соответствующую область приложения.

Иногда это затрудняют грамматические различия между языками. Иногда вы хотите хранить большие фрагменты текстовых ресурсов (достаточно большие, чтобы они могли включать такие вещи, как теги p). Это немного зависит от того, что вы делаете.

1
ответ дан 27 November 2019 в 06:37
поделиться

Мы делаем.

Вы можете использовать преобразователь текста в HTML, но поскольку текст содержит гораздо меньше информации, чем HTML, вы будете ограничены.

0
ответ дан 27 November 2019 в 06:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: