web-dev-qa-db-ja.com

レール上の.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

27
Rootical V.

これは私にとってはうまくいきます:

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"
51
jdoe

私はあなたの答えが意味することを考える:

"。yml(YAML)ファイルに改行を含む句/段落を記述し、Rails出力(HTML)にそれらの改行を含める方法は?"

したがって、私にとっての目標は、ブレークラインを使用して.yml(YAML)ファイル内にフレーズを記述し、最終出力を簡単に理解して、Railsによって生成されたHTMLでその正確な出力を取得することです。

そのためには、.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タグを使用できます。読み、出力がどのように表示されるかを簡単に理解するために、 「|」を使用したい.ymlファイル内にも改行を入れるyamlオプション。ただし、「|」ここでのオプションは、開発者にとってより人間が読みやすくフレンドリーなものにするためのものです。 「|」 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ページにはその改行が反映されます。

12
Diego D

コードには改行を入れたいが、出力には入れたくない場合:

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
7
clarkevans

YAMLプレフィックスとして_htmlを使用したDiego Dの回答は主に機能しますが、機能しない場合(フラッシュアラートなど)、テンプレートのローカライズされた文字列で.html_safeを使用してみることもできます。

例として:

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

他の誰かがDiego Dの回答を機能させるのにも問題がある場合に備えて:
私は</br><br>または<br />

0
raumklima