Автоматические отступы длинных строк с помощью HAML/i18n

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

Перевод:

translated_text:
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
    Suspendisse facilisis scelerisque orci ut mattis. Nunc 
    vehicula fermentum. Praesent euismod congue condimentum.
    turpis ac risus vulputate pellentesque. Proin non metus 
    lorem est, dictum in venenatis ac, tristique vitae leo. 
    nec ultrices. Integer viverra, velit ac rutrum lobortis, 
    iaculis quis justo et posuere.

    Fusce eu sem dictum, tristique nisi ullamcorper, porttitor n
    accumsan id pretium nec, mollis eu erat. Suspendisse adipisc
    consequat diam, eu facilisis est. Vivamus vitae congue risus.
    a sagittis. Aliquam fermentum mattis justo. Nam pretium libero 
    adipiscing augue molestie erat lobortis, eu semper velit consequat."

Когда я удаляю разрыв разделительной строки, оставшийся текст выравнивается, как и ожидалось. Я проверил правила CSS (текстовый отступ, пробел), конфигурацию HAML/i18n и попытался использовать синтаксис блоков |, |+ и |- для YAML. Неудачно.


person Saedar    schedule 03.04.2014    source источник
comment
Вы пытались добавить \n в текст i18n? сделать новую строку?   -  person a14m    schedule 03.04.2014
comment
На самом деле не заставляет его вести себя по-другому. Это вдвойне необычно, потому что при моем удаленном развертывании ведет себя так, как предполагалось. Я подозреваю что-то в локальной среде разработки, но я не смог это изолировать.   -  person Saedar    schedule 04.04.2014


Ответы (1)


Я работаю с Седаром. Мы покопались в коде HAML и поняли, что отступ происходит только тогда, когда параметр «Уродливый» имеет значение false. Проблема в том, что он пытается сделать отступ многострочного текста, чтобы он выглядел красиво с отформатированным HTML.

Например, если у вас есть однострочный текст внутри диапазона, вы получите:

<div>
  <div>
    <span>This is a single line... doesn't matter how long it is.</span>
  </div>
</div>

Но как только вы начинаете разбивать строки, текст идет сам по себе и получает красивый отступ в исходнике:

<div>
  <div>
    <span>
      This has multiple lines.

      It's formatted to be pretty in the source code.
    </span>
  </div>
</div>

В нашем случае это приводит к отступу текста в каждом абзаце, потому что для этого элемента у нас есть text-wrap Стиль CSS установлен на pre-wrap.

Решение, которое мы собираемся использовать, это установить Haml::Template.options[:ugly] = true в config/initializers/haml.rb.

Это изменение отключает все отступы html следующим образом:

<div>
<div>
<span>
This has multiple lines.

It's formatted to be pretty in the source code.
</span>
</div>
</div>
person Max Schmeling    schedule 04.04.2014