31

ローカライズされた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

4

5 に答える 5

59

これは私のために働きます:

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"
于 2012-06-11T15:21:15.947 に答える
26

私はあなたの答えが意味すると思います:

「ブレークラインを含む.yml(YAML)ファイルにフレーズ/段落を記述し、レール出力(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ページにそのブレークラインが反映されます。

于 2016-09-23T10:29:44.857 に答える
7

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

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
于 2012-06-12T15:11:45.527 に答える
3

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

例として:

<% flash.each do |name, msg| -%>
  <%= content_tag :div, msg.html_safe, class: name %>
<% end -%>
于 2017-08-24T11:02:33.837 に答える
1

他の誰かがDiegoDの答えを機能させるのに問題がある場合に備えて、私はまたは
を置き換える必要がありました。</br><br><br />

于 2019-05-20T13:08:49.323 に答える