Ruby on Rails

【Ruby on Rails】日本語に翻訳したモデル名と属性名の表示方法

・config>locales>ja.yml で日本語の翻訳設定
・設定した日本語の翻訳を画面に表示する方法

Ruby on Railsには国際化(多言語化)に対応する仕組みが存在します。

モデルは基本的に英語なので日本語で表示する場合はViewの中で直打ちする方法もあります。
しかし名前に変更が発生すると内容によっては多くの変更が発生するため抜け漏れが心配です。

国際化(多言語化) の仕組みを利用すればView側で意識すること無く日本語を表示することが可能です。
また変更が発生した場合も設定ファイルだけ直せば、使用している箇所全てに反映されるため抜け漏れは無くなります。

日本語翻訳設定前の画面

今回用意したモデルとしては以下となります。
なおテーブル名は「task」となります。

属性名英語名(デフォルト)日本語名(表示したい値)
idIdID
nameName名称
descriptionDescription詳しい説明
created_atCreated at登録日時
updated_atUpdated at更新日時

ID・登録日時・更新日時はRailsで用意されるものです。

日本語翻訳がされていない状態だと下記太字のように英語名で表示されます。

日本語翻訳の設定

ここからは日本語翻訳の設定となります。
最終形態としては、前述の表の「日本語名」を表示させるところです。

デフォルト言語設定

まずはデフォルトの言語設定をします。
未指定であれば利用ブラウザ、ユーザーによって変わるため、この記事を読める方は日本語になると思いますが念の為デフォルト言語を日本語に設定します。

config/application.rb ファイルのApplicationクラスに下記を追加します。

config.i18n.default_locale = :ja

ja.ymlファイルの配置

まずはja.ymlファイルをconfig/locales ディレクトリに配置します。
Railsにはデフォルトのロケールファイルが用意されています。

下記Githubリポジトリから取得する方法が一般的です。

https://github.com/svenfuchs/rails-i18n/tree/master/rails/locale

今回は新規で作ったモデルにのみ日本語翻訳を設定するので、ja.ymlファイルを新規作成で問題ありません。

取得もしくは新規作成したja.ymlファイルを config/locales ディレクトリに配置します。

日本語翻訳設定

config/locales ディレクトリ に配置したja.ymlファイルに、下記のような日本語翻訳を追記します。

---
ja:
  activerecord:
    models:
      task: タスク
    attributes:
      task:
        id: ID
        name: 名称
        description: 詳しい説明
        created_at: 登録日時
        updated_at: 更新日時

4,5行目のmodelsはモデルの名前です。
6行目以降がモデルの属性名を記載します。

ymlファイルのためインデントには注意が必要です。
今回はモデルの属性名に対する翻訳のため、3行目のactiverecordの次段落に、modelsやattributes以下を記載します。

呼び出し方

先の設定で、ja.ymlファイルが優先的に使われるようになりました。

モデルの属性名をView側で使う場合は若干注意が必要です。
ここで直打ちしては意味がありません。

モデル名の呼び出し方

モデル名(今回なら「タスク」という値)の呼び出し方法は「model_name.human」メソッドを使います。

Task.model_name.human
# → タスク

Taskクラスはモデル名です。

モデルの属性名の呼び出し方

タスクモデルの属性名の呼び出し方法は「human_attribute_name(:属性名)」メソッドを使います。

Task.human_attribute_name(:name)
# → 名称
Task.human_attribute_name(:created_at)
# → 登録日時

確認

以上で日本語翻訳の設定、その呼び出し方の説明は終わりとなります。
うまく適用されると下記のようになります。

最後に

今回はモデルに付随した値となりましたが、モデル関係無く、プロパティ的な役割や呼び出しも可能です。
下記参考サイト様に色々な方法が書いてありますのでご確認ください。

参考サイト

【Rails】翻訳したモデルのattributeを取得する方法
https://yukimasablog.com/rails-attribute-model

あなたはいくつ知っている?Rails I18nの便利機能大全!
https://qiita.com/Kta-M/items/bd4ba36a58ad602a9d8b

Ruby on Railsにてbootstarp導入直後のランタイムエラー解決方法の紹介