MENU

Rails i18n 翻訳に変数を渡して展開したい

config/locales/ja.ymlなどの言語ファイルの文字列に、変数を渡して展開して欲しいときの書き方。

# config/locales/ja.yml
ja:
  greet:
    morning: "おはよウナギ!%{name}さん"
    noon: "こんにちワン!%{name}さん"
    evening: "こんばんワニ!%{name}さん"

# usage
t "greet.morning", :name => "唯" # おはよウナギ!唯さん
t "greet.morning", :name => "澪" # こんにちワン!澪さん
t "greet.morning", :name => "律" # こんばんワニ!律さん

%{name}で定義して、ハッシュで渡せばよいです。

ただし、:default:scopeという名前はつかえませんので、それ以外で定義します。

:defaultは未定義の場合に返す文字列を指定し、:scopeは定義のネストを指定するのに使われるためです。

少し前のバージョンだと、{{name}}という定義だったようですが、%{name}というフォーマットに変わったそうです。Rails 3.1 なら別に気にしなくていいです。

Share it!
  • URLをコピーしました!
  • URLをコピーしました!
目次