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) 文件中使用换行符编写短语/段落并使 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 标记。 为了便于阅读和理解,我们希望使用“|”的输出将如何显示 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 页面将反映该断线。

于 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

Diego D 使用_htmlas YAML 前缀的回答大多有效,但当它不起作用时(例如在闪光警报中),您也可以尝试.html_safe在模板中的本地化字符串上使用。

举个例子:

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

以防万一其他人也无法让 Diego D 的答案正常工作:
我需要</br><br>or替换<br />

于 2019-05-20T13:08:49.323 回答