eag*_*poo 7 haml ruby-on-rails internationalization
我在我的.text.haml邮件程序模板中使用i18n,我想在en.yml中有一个带换行符的字符串但是t()总是转义它们,即使我使用html_safe或后缀为_html的键名.
有没有办法做到这一点??
p3_html: >
You love monkeys:
\n- You look like one
\n- Your smell like one
\n- Your account has been flagged
Run Code Online (Sandbox Code Playgroud)
在我的html.haml模板中:
!= t('emails.post.twitter_forbidden.p3_html').html_safe
Run Code Online (Sandbox Code Playgroud)
无论什么被逃脱.我不能使用%br或其他任何东西,因为这些是文本模板.我知道我可以将它分成4个i18n字符串,但那真的很难过.
顺便说一句,我检查过,它是i18n逃避,而不是haml.
你可以这样做:
t('emails.post.twitter_forbidden.p3_html').html_safe.gsub("\n", '<br/>')
据我所知,这是唯一的方法.
编辑
实际上,经过一番挖掘,我找到了simple_format帮手.
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
这里有几个选项:如上所述,simple_format 会有所帮助。像这样格式化你的 yml 文件:
p3_html: |
Some text:
- Point 1
- Point 2
- Point 3
Run Code Online (Sandbox Code Playgroud)
然后使用
=simple_format t(:p3_html)
Run Code Online (Sandbox Code Playgroud)
这会给你类似的东西
<p>Some text
<br>
- Point 1
<br>
- Point 2
<br>
- Point 3
</p>
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望每一行都有一个新段落:
p3_html: |
Some text:
- Point 1
- Point 2
- Point 3
Run Code Online (Sandbox Code Playgroud)
这应该给你这个:
<p>Some text</p>
<p>- Point 1</p>
<p>- Point 2</p>
<p>- Point 3</p>
Run Code Online (Sandbox Code Playgroud)
或者类似的东西更灵活
<% t(:p3_html).each_line do |line| %>
<li>= |line|</li>
<% end %>
Run Code Online (Sandbox Code Playgroud)
使您能够输入不同的格式:
<li>- Point 1</li>
<li>- Point 2</li>
<li>- Point 3</li>
Run Code Online (Sandbox Code Playgroud)
最后一个选项是在 yaml 中使用数组:
p3_html:
- Some text:
- - Point 1
- - Point 2
- - Point 3
<% t(:p3_html).each do |line| %>
<p>= |line|</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)
可能更干净,尽管我认为它会用逗号玩得开心,并且上述版本的优点是您可以在格式之间切换而无需修改 yaml
| 归档时间: |
|
| 查看次数: |
4277 次 |
| 最近记录: |