How to break lines in .yml localization files on rails?
This works for me:
en:
hello: "Hello world"
bye: |
Bye!
See you!
error: >
Something happend.
Try later.
Usage:
irb(main):001:0> I18n.t 'bye'
=> "Bye!\nSee you!\n"
irb(main):002:0> I18n.t 'error'
=> "Something happend. Try later.\n"
I consider that your answer means:
How to write a phrase/paragraph in
.yml
(YAML) file with break lines and make rails output (HTML) contain those break lines?
So for me the goal is to write a phrase inside .yml
(YAML) file with break lines to easily understand the final output and then have that exact output also in our HTML, generated by Rails.
For do that we need some easy precautions both on .yml
file and in our .html
or .erb
or .slim
file (based on what you use).
Below how I do it.
welcome_page.html.slim
h4 = t('welcome_html')
Here note the _html
suffix. If your translation key ends with _html
suffix, you get escaping for free.
Source: http://guides.rubyonrails.org/i18n.html#using-safe-html-translations
en.yml
en:
welcome_html: |
Welcome on StackOverflow!<br>
This is your personal dashboard!
So now inside our .yml
file we can use <br>
HTML tag that will be escaped.
To also easily read and understand how will appear the output we would like to use the |
yaml special character that let us have break lines also inside .yml
file. But remind that |
option here is just for us, to be more human readable and friendly to the developer. |
YAML option won't affect the output!
Also we can use other YAML options like these:
en:
welcome_html: >
Welcome on StackOverflow!<br>
This is your personal dashboard!
or:
en:
welcome_html:
Welcome on StackOverflow!<br>
This is your personal dashboard!
or:
en:
welcome_html: "Welcome on StackOverflow!<br>This is your personal dashboard!"
They all produce the same output, so now your HTML page will reflect that break line.
If you want to have linebreaks in the code, but not in the output:
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