0

i18n レール ガイドに、次のコードがあることに気付きました。

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 に答える