2019/09/06_i18nに出てくる「attributes」って何?
2019/09/06_モデルごとに日本語化する要素を指定(i18n)
経緯
- グループチャットアプリの実装中に、日本語化がおかしくなっている点を見つけたので、修正しました。
- その中で、そもそも
attributes
ってなんだっけ?と思い、自分なりの答えが出たので、最後の方に記載してます。 - 使用言語は、ruby on rails です。
症状
- groupテーブルとuserテーブルに同名のnameというカラムがある
- 現状、nameを「グループ名」に日本語化したら(i18n)userのnameも「グループ名」になってしまった
(本当は「Name」にしたかった…) - 「グループ名」を指定した方法は、以下のとおり
locales/ja.yml(修正前)
ja: attributes: name: 'グループ名' (以下、略)
モデルでの指定なく、すべての:name
を「グループ名」にしてしまっている?
検証
参考に掲載したサイトを参照し、以下のように直したら、解消しました。
locales/ja.yml(修正後)
ja: attributes: user: name: 'グループ名' (以下、略) #テーブル名「user」を途中の階層に追加
そもそも、attributes
って?
- 日本語だと、「属性」の意味
- おそらく、i18nで使う
attributes
はデータベースの領域で使われる「属性」から来ているのでは?- 参考URLの通り、データベースでいう「属性」は、テーブルのカラム(列)とほぼ同じものだと思ってOK