在我的haml文件中,我想包含一个来自yml文件的字符串,该字符串有多个链接(在同一个字符串中)

时间:2016-05-13 23:45:53

标签: internationalization yaml haml

这就是呈现的html的样子:

<p>The <a href="http://example.com/one.html">first link</a> and the <a href="http://example.com/two.html">second link</a> are both in this string.</p>

yml和haml应该是什么样的?

注意:我已经弄清楚如何使用单个链接创建一个字符串,但我对如何设置多个链接感到困惑。

我认为yaml可能看起来像这样:

example_text_html: "The <a href='%{link1}' target='_blank'>first link</a> and the <a href='%{link2}' target='_blank'>second link</a> are both in this string."

这就是我认为haml可能是这样的:

%p
  = t(:example_text_html, link1:"https://www.example.com/one.html", link2:"http://example.com/two.html")

我尝试时遇到语法错误。

1 个答案:

答案 0 :(得分:1)

我建议只在YAML语言环境文件中保留翻译的内容(即&#34;第一个链接&#34;等),并将链接信息保留在您的视图中。此外,由于&#34;第一个链接的内容&#34;和&#34;第二个链接&#34;可能会在区域设置中更改,您可能需要为它们分配单独的区域设置条目。

把这些放在一起,你可以做类似的事情:

<强>配置/区域设置/ en.yml

en:
  first_link: first link
  second_link: second link
  example_text_html: The %{first_link} and the %{second_link} are both in this string that could get translated to have very different grammar.

应用/视图/ your_view.html.haml

%p
  = t('example_text_html',
      first_link: link_to(t('first_link'), 'http://example.com/one.html', target: :blank),
      second_link: link_to(t('second_link'), 'http://example.com/two.html', target: :blank))

如果看起来有点长,你可以创建一些帮助来清理它。也许是这样的事情:

应用/助手/ your_helper.rb

def first_link
  link_to(t('first_link'), 'http://example.com/one.html', target: :blank)
end

def second_link
  link_to(t('second_link'), 'http://example.com/two.html', target: :blank)
end

那么你可以重构视图看起来像:

应用/视图/ your_view.html.haml

%p
  = t('example_text_html', first_link: first_link, second_link: second_link)