ActionView::Helpers::TranslationHelper

alias: t

def translate(key, **options, &block)

説明

キーの訳を探して返します。

引数

値を変えると、ERB と HTML が変わります。

探す訳のキーです。
  • . で区切ると、下の階層のキーを探します。Symbol でも同じです。
  • 配列を渡すと、キーごとに探した訳の配列を返します。ブロックを渡しても、使いません。
  • . で始まるキー(".title")は、テンプレートのパスから作ったキーのうしろに付けて探します(app/views/articles/index.html.erb なら articles.index.title)。このサイトはテンプレートのファイルを使わずに描画するので、このページでは試せません(RuntimeError になります)。
返すものは、キーと訳によって次のように変わります。
  • キーの最後が html(_html、.html、html だけ)なら、返す文字列に html_safe の印が付くので、<%= %> はエスケープしません。
  • 訳が見つからないと、<span class="translation_missing"> を返します。中身はキーの最後の部分を titleize した文字列で、title 属性の値は、ロケールを付けたキーと、渡した options(:scope を除く)を並べた文字列です。config.action_view.debug_missing_translation を false にすると、<span> を付けずに、title 属性の値と同じ文字列を返します。
  • 訳が Hash("messages" のように下にキーがある)なら、Hash をそのまま返すので、<%= %> は文字列にしてエスケープします。:count を渡すと、Hash の中から訳を選びます。
= nil
キーの訳が見つからないときに使うものです。Rails が options の Hash から取り出して、次のように使います。
  • 文字列:その文字列を返します(%{…} には options の値を入れます)。キーの最後が html でも html_safe の印は付かないので、<%= %> がエスケープします。
  • Symbol:この名前のキーの訳を探します。このキーの最後が html なら、html_safe の印が付きます。
  • 配列:前から順に探して、最初に見つかった訳を返します。文字列まで来たら、その文字列を返します。
nil を渡すと、訳が見つからないときに nil を返します(何も出力しません)。
options= {}
"<i>Alice</i>"
訳の %{name} に入れる値です(I18n の補間)。options のキーは、I18n の options の名前でなければ、どれも同じ名前の %{…} に入ります。キーの最後が html なら、値をエスケープしてから入れます。補間する値を 1 つも渡さないと、%{name} のまま返します。1 つでも渡したときに、訳にある %{…} の値がないと、I18n::MissingInterpolationArgument になります。
3
訳が one と other のキーを持つ Hash("messages")なら、数が 1 のときは one のキーの値(messages.one)を、それ以外は other のキーの値(messages.other)を返します(I18n の初めの規則)。値の %{count} には、この数が入ります。数が 0 で、訳に zero のキーがあれば、その値を使います。
[:articles, :index]
キーの前にこの階層を付けて探します。文字列("articles.index")も渡せます。訳が見つからないときの title 属性の値には、この階層を付けたキーを出し、:scope は並べません。
今のロケールの代わりに、このロケールの訳を探します。
訳が見つからないときの動きです。
  • true:I18n::MissingTranslationData になります。
  • false:<span> の代わりに、I18n が返す Translation missing: で始まる文字列を返します。
  • デフォルト:config.i18n.raise_on_missing_translations が true なら、true と同じです。
config.i18n.raise_on_missing_translations が true のアプリでは、false でも例外になります。
ここにない options のうち、I18n の translate の options(separator など)は、そのまま I18n に渡します。それ以外のキーは、:name と同じく、訳の %{…} に入れる値になります。HTML 属性にはなりません。
&block= nil
ブロックを渡すと、訳とキーをブロックに渡し、ブロックが返す値を返します。訳が見つからないときは、訳の代わりに <span class="translation_missing"> を渡します。キーは、訳が見つかったキーです(default の Symbol で見つかったら、その Symbol)。見つからなかったときと、default の文字列を使ったときは、引数の key です。

ERB

直前との違い: 追加 削除 変更

config/locales/examples/ja.yml
ja:
  hello: "こんにちは"
  greeting: "%{name}さん、こんにちは"
  welcome_html: "<b>%{name}</b>さん、ようこそ"
  messages:
    one: "メッセージが 1 件あります"
    other: "メッセージが %{count} 件あります"
  articles:
    index:
      title: "記事の一覧"

          

HTML


          

プレビュー