Как разбить строки на .yml файлы локализации на рельсах?

У меня есть файл terms.en.yml с некоторой локализацией, например:

en:
  devise:
    registrations:
      terms:
        text: 'This agreement was written in English (US). To the extent any translated version of this agreement conflicts with the English version, the English version controls.  Please note that Section 16 contains certain changes to the general terms for users outside the United States.\n\ Some new line'

Как я могу сломать строку или создать там абзац?

Вот какая-то информация, но мне это не помогло, я делал что-то неправильно. http://yaml.org/spec/1.1/#b-paragraph-separator

Ответ 1

Это работает для меня:

en:
  hello: "Hello world"
  bye: |
    Bye!
    See you!
  error: >
    Something happend.
    Try later.

Использование:

irb(main):001:0> I18n.t 'bye'
=> "Bye!\nSee you!\n"
irb(main):002:0> I18n.t 'error'
=> "Something happend. Try later.\n"

Ответ 2

Я считаю, что ваш ответ означает:

"Как написать фразу/параграф в файле .yml(YAML) с линиями разрыва и сделать вывод рельсов (HTML) содержать эти строки разрыва?"

Итак, для меня цель состоит в том, чтобы написать фразу внутри файла .yml(YAML) с разрывами, чтобы легко понять конечный результат, а затем получить точный результат в нашем HTML, созданный Rails.

Для этого нам нужны простые меры предосторожности как в .yml файле, так и в нашем файле .html.erb |.slim.

Как я это делаю.

welcome_page.html.slim

h4.white = t('welcome_html')

Пожалуйста, обратите внимание на конечную часть _html. Если ваш переводный ключ заканчивается на _html, вы получаете возможность бежать бесплатно. Источник: http://guides.rubyonrails.org/i18n.html#using-safe-html-translations

en.yml

en:
  welcome_html: |
    Welcome on StackOverflow!</br>
    This is your personal dashboard!

Итак, теперь в нашем .yml файле мы можем использовать </br> HTML-тег, который будет экранирован. Чтобы читать и понимать, как будет выглядеть вывод, мы хотели бы использовать "|" yaml, который позволяет иметь строки разрыва также внутри .yml файла. Но напомните, что "|" вариант здесь только для нас, чтобы быть более читабельным человеком и дружелюбным к разработчику. "|" Опция YAML не влияет на выход! Также мы можем использовать другие параметры YAML, такие как:

en:
  welcome_html: >
    Welcome on StackOverflow!</br>
    This is your personal dashboard!

или

en:
  welcome_html:
    Welcome on StackOverflow!</br>
    This is your personal dashboard!

или

en:
  welcome_html: "Welcome on StackOverflow!</br>This is your personal dashboard!"

Все они производят одинаковый вывод, поэтому теперь ваша HTML-страница будет отображать эту строку прерывания.

Ответ 3

Если вы хотите иметь строки в коде, но не на выходе:

en:   
    devise:
    registrations:
      terms:
        text: >
          This agreement was written in English (US). 
          To the extent any translated version of this 
          agreement conflicts with the English version, 
          the English version controls.  Please note 
          that Section 16 contains certain changes to 
          the general terms for users outside the 
          United States.

          Some new line

Ответ 4

Ответ Диего D с использованием _html в качестве префикса YAML в основном работает, но когда он этого не делает (например, в флэш-предупреждении), вы также можете попробовать использовать .html_safe в вашей локализованной строке в шаблоне.

Итак, в качестве примера:

<% flash.each do |name, msg| -%>
  <%= content_tag :div, msg.html_safe, class: name %>
<% end -%>

Ответ 5

На тот случай, если у кого-то еще возникнут проблемы с тем, чтобы Диего Д ответил:
Мне нужно было заменить </br> на <br> или <br/>.