2012-05-11 29 views
0

私は国際化レールガイドでは、彼らは次のコードを持っていることに気づい:%{...}Yamlのパーセント記号の意味は何ですか?

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

何を意味するのですか?これは#{...}とどう違うのですか?

答えて

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#translateに渡され:scope以外

すべてのオプションは、翻訳に補間されます。

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

ので%{...}ものがYAMLとは何の関係もありません、それは取り扱いの国際化の方法ですメッセージ内の可変補間。

+0

ありがとうございました!私はそれをもっと読むべきだったと思う。 – Max

+0

もっと重要なことは...これは単なる文字列補間です。 '%{h} '%{h:' bar '}'は 'foo_bar''を返す – Dudo

+0

@Mallanagaしかし、質問は'%{...} 'と'#{...} 'に関するものです。後者はRubyの文字列補間で、前者は 'sprintf'の' String#% 'エイリアスを介して実行時の"補間 "("置換 "IMOと呼ばれる方がよいでしょう)です。 –

関連する問題