Rails:在i18n字符串中渲染ruby逻辑

Dan*_*urg 0 ruby yaml ruby-on-rails internationalization

我正在翻译一个应用程序,我偶然发现了一个问题.我在我的观点中使用这个:

t("page.text")
Run Code Online (Sandbox Code Playgroud)

我有这是我的yaml文件:

page:
  text: "This is my tekst with a #{link_to "pages index, pages_path}"
Run Code Online (Sandbox Code Playgroud)

这个字符串在没有link_to逻辑的情况下输出,如下所示:"这是我的tekst,带有#{link_to"页面索引,pages_path}".这不是我想要的,我希望用link_to函数解析这个字符串,就像这样:"这是我的tekst与页面索引 "页面索引链接到/ pages路由...

谢谢.

Dan*_*ail 9

Rails的i18n API允许您在YAML文件中使用基于变量的插值.要做你想做的事:

# config/en.yml
page:
  text: "This is my test with a %{link}"

# view.html.erb
<%= t("page.text", :link => link_to("pages index", pages_path))
Run Code Online (Sandbox Code Playgroud)

您可以在官方Rails指南中阅读更多相关信息:http://guides.rubyonrails.org/i18n.html#interpolation