我注意到在i18n rails指南中,它们有以下代码:
en:
activerecord:
errors:
template:
header:
one: "1 error prohibited this %{model} from being saved"
other: "%{count} errors prohibited this %{model} from being saved"
body: "There were problems with the following fields:"
%{...}
是什么意思?这与#{...}
有何不同?
答案 0 :(得分:5)
如果您再多阅读指南,则会遇到Passing variables to translations部分:
您可以在翻译消息中使用变量,并从视图中传递它们的值。
# app/views/home/index.html.erb <%=t 'greet_username', :user => "Bill", :message => "Goodbye" %> # config/locales/en.yml en: greet_username: "%{message}, %{user}!"
和Interpolation部分:
在许多情况下,您希望抽象您的翻译,以便可以将变量插入到翻译中。因此,I18n API提供了插值功能。
传递给
:default
的{{1}}和:scope
之外的所有选项都会插入到翻译中:#translate
所以I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'
的东西与YAML无关,那就是I18n在消息中处理变量插值的方式。