0
0

i18n × form.label の使い方 【Rails】

Posted at

この記事のまとめ

<%= form.label :column %>ja.ymlcolumn にアクセスしたい時は

app/views/users/new.html.erb
<%= form.label :email %>
<%= form.email_field :email, id: :user_email, class: "form" %>

以下のように
locals/activerecord/ja.ymlactiverecord: 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 以下に設定する必要があります。
    例:roleenum で実装されている( {0:admin, 1:general} のイメージ)
    ja:
      activerecord:
        model:
          user: "ユーザー"
        attributes:
          user:
            name: "名前"
            role: "権限"
      enums:
        user:
          role:
            admin: "管理者"
            general: "一般"
    
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0