enumを日本語化する

前回はenumを使ってリファクタリングするやり方を解説しました !
 

 

↓前回の記事はこちらから見れます。

lilybelly.hatenablog.com

 

ただ前回で完成した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以外でも日本語化をするときに使うファイルになるので、

きちんと覚えておいたほうがいいです。