Yaml中百分号的含义是什么?

时间:2012-05-11 01:28:55

标签: ruby-on-rails internationalization yaml

我注意到在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:"

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

1 个答案:

答案 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在消息中处理变量插值的方式。