如何在I18n语言环境中执行插值?

时间:2011-06-30 14:24:08

标签: ruby-on-rails ruby-on-rails-3 yaml

有没有办法做这样的事情:

en:
  welcome:
    hello there, #{current_user.first_name}!  It's nice to see you again.

这显然不会起作用,显然“#{”是yaml中的无效字符,因为当我把它拉出来时,那个字符串只显示为“你好”。

我能做的最好的事情就是:

en:
  welcome:
    hello there, (name)!  It's nice to see you again.

....

t(:welcome).gsub("(name)", current_user.first_name)

但我并不为此疯狂......必须有更好的方法来做这类事情。

1 个答案:

答案 0 :(得分:15)

像这样替换你的en.yml

en:
  welcome:
    "hello there, %{name}!  It's nice to see you again."

和你的观点一样

<%=t(:welcome, :name=> current_user.first_name) %>

基本上它是作为命名参数传递的。您可以在Rails Guides 18n Interpolation

找到更多信息