haml,link_to helper和I18n在同一个句子中

时间:2014-04-11 00:06:30

标签: ruby-on-rails internationalization haml yaml

以下是我试图获得的标记:

<p>View more <a href="/clinics/integratedclinic">clinic information</a> 
including physicians, locations, directions, documents, and more.</p>

我使用haml,yaml和Rails(哦,我的!)。为了通过本地化做到这一点,我必须有这个yaml:

en:
  view_more: View more
  link: clinic information
  details: including physicians, locations, directions, documents, and more.

把我的haml放在3行上,如:

%p
  = I18n.t('view_more')
  = link_to I18n.t('link'), clinic
  = I18n.t('details')

似乎必须有更好的方法。第一个问题是,这对于语法不同的语言不起作用,由于语法词序的原因,链接可能出现在句子的末尾。

是否有办法将链接作为参数传递?但是我必须在yaml中插入它,并且可能在那里放置标记?这看起来也不是很好。有没有一种优雅的方式来做到这一点,我错过了?

2 个答案:

答案 0 :(得分:4)

最简单的方法是使用Localized Views。首先替换

%p
  = I18n.t('view_more')
  = link_to I18n.t('link'), clinic
  = I18n.t('details')

= render partial: 'view_more', locals: { url: some_path }

随后您可以使用

创建文件_view_more.en.html.haml
%p
  View more
  = link_to 'clinic information', url
  including physicians, locations, directions, documents, and more.

答案 1 :(得分:1)

您可以在similar question找到更多想法。我最喜欢的是只使用两个翻译。

在您的语言区域中:

  view_more_details_html: "View more %{link} including physicians, locations, directions, documents, and more."
  link: "clinic information"

只有一个观点:

%p
  = I18n.t('view_more_details_html', link: link_to(I18n.t('link'), clinic))