0

我注意到在 i18n rails guide 中,它们具有以下代码:

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:"

是什么%{...}意思?这与 有何不同#{...}

4

1 回答 1

5

如果您阅读该指南多一点,您会遇到将变量传递给翻译部分:

您可以在翻译消息中使用变量并从视图中传递它们的值。

# app/views/home/index.html.erb
<%=t 'greet_username', :user => "Bill", :message => "Goodbye" %>

# config/locales/en.yml
en:
  greet_username: "%{message}, %{user}!"

插值部分:

在许多情况下,您希望将翻译抽象化,以便可以将变量插入到翻译中。出于这个原因,I18n API 提供了一个插值功能。

:default除了和之外的所有选项:scope#translate将被插入到翻译中:

I18n.backend.store_translations :en, :thanks => 'Thanks %{name}!'
I18n.translate :thanks, :name => 'Jeremy'
# => 'Thanks Jeremy!'

所以这些%{...}东西与 YAML 没有任何关系,这是 I18n 在消息中处理变量插值的方式。

于 2012-05-11T01:39:12.287 回答