enumを日本語化する
前回はenumを使ってリファクタリングするやり方を解説しました !
↓前回の記事はこちらから見れます。
ただ前回で完成したenumを使ったコードでは、
英語表記で
私用→individual
仕事用→work
その他→others
になってますが、
これを日本語で「私用」「仕事用」「その他」に直したいですね。
きょうはそのやり方を解説していきたいと思います。
enum_helpを使う
英語表記を日本語表記にするには
「enum_help」というgemをインストールします。
enum_helpのgemをインストール
gemfileに「enum_help」というgemを追加しましょう。
↓gemfile
# 末尾に追記 gem 'enum_help'
gemfileに追加できたら
ターミナルで bundle install をして使えるようにしましょう。
↓ターミナル
$ bundle install
これで gem の enum_help は使えるようになりました。
ja.ymlを編集する
ja.ymlは日本語に翻訳するための言語ファイルみたいなものです。
↓config/locales/ja.yml
# ja:の一行下から、enums: ~ others:までの記述を追加 ja: enums: task: kind: individual: "私用" work: "仕事" others: "その他" activerecord: # 以下省略
「enumで設定したtaskのkindの中で、individualは私用に、workは仕事、othersはその他で日本語化する」という解釈でおっけーです。
enum_helpを使って、ja.ymlに言語ファイルを設定できたら、
「[もともとのenumを使った表記]_i18n」と書くことで、日本語化へ変換できます!
ビュー設定した「task.kind」を日本語にしたenum_i18nに書き換えましょう。
↓app/views/tasks/_task.html.haml
/ task.kindをtask.kind_i18nに書き換え / %tr %td = task.kind_i18n %td = task.title %td = task.content %td = task.start_at %td = task.finish_at %td - if task.finished? 完了済 - else 未完了 %br = link_to "完了にする", task_path(task), method: :patch, class: "btn btn-primary "
↓app/views/tasks/index.haml
/ Task.kinds.keysをTask.kinds_i18n.invertで書き換え / = form_for @task, html: {class: 'form-group'} do |f| = f.label :kind = f.select :kind, Task.kinds_i18n.invert, {}, class: 'form-control', placeholder: 0
これでenum_helpを使って、ビューも書き換えることができました。
これで完成です!
ここまで完了したら、一度Raiilsサーバーを終了させた後、もう一度rails sを実行してください。これで、enumの日本語化が完了しました。
最後に
英語から日本語へ変換というと、なんだか面倒そうなイメージがありましたが、
enum_helpを使うと本当に簡単に日本語化できましたね。
ja.ymlはenum以外でも日本語化をするときに使うファイルになるので、
きちんと覚えておいたほうがいいです。