この記事のまとめ
<%= form.label :column %>
で ja.yml
の column
にアクセスしたい時は
例
app/views/users/new.html.erb
<%= form.label :email %>
<%= form.email_field :email, id: :user_email, class: "form" %>
以下のように
locals/activerecord/ja.yml
に activerecord: attributes: model: column
に記述すれば良いです。
例
locals/activerecord/ja.yml
ja:
activerecord:
models:
user: ユーザー
attributes:
user:
email: メールアドレス
i18n × form.label
いつものごとくRailsの魔術です。
<%= form_for @user do |f| %>
<!-- 例1 -->
<%= f.label :name, "名前" %>
<%= f.text_field :name %>
<!-- 以下のように書くこともできる -->
<!-- 例2 -->
<%= f.label :name %>
<%= f.email_field :name %>
<%= f.submit "登録" %>
<% end %>
例1はわかりやすいですね。
第一引数 :name
で、:name
属性の入力フィールドと紐づくことを示します。
その後、"名前"
で 「名前」というラベルを表示します。
例2は魔術です。
:name
しか書いていないのに、先ほどと同じく「名前」というラベルまで表示します。
ただし、この魔術は、適切な ymlファイル が用意されている場合のみ動作します。
適切な ymlファイル
ja:
activerecord:
attributes:
user:
name: "名前"
この時、この ymlファイルは config/locals
以下に配置する必要があります。
もし適切な場所に配置されていない場合、i18n
が認識してくれません。
以下は、ymlファイル の構造を抽象化したものです。
言語コード( `ja` や `en` ):
activerecord:
(attributes:)
model_name:
key: ""
注意事項
-
activerecord
はフラットケース(大文字 /_
を含まない)なので注意! - パラメータが
enum
の場合、activerecord
ではなくenums
以下に設定する必要があります。
例:role
がenum
で実装されている({0:admin, 1:general}
のイメージ)ja: activerecord: model: user: "ユーザー" attributes: user: name: "名前" role: "権限" enums: user: role: admin: "管理者" general: "一般"