#概要
Railsアプリで初期設定されている英語文章を日本語化する方法を簡単にまとめ。
公式リファレンス
https://railsguides.jp/i18n.html
RubyのI18nというRailsに同梱されているgemを利用して、英語設定をデフォルトで日本語にするよう変更する。
I18nは英語以外の別の1つの言語に翻訳する機能を持っている。
#環境
ruby '2.6.5'
rails '5.2.4'
#実装手順
config/initializers/locale.rb
を作成し、
以下のコードを追加する。
I18n.config.available_locales = :ja
I18n.default_locale = :ja
config/locales/ja.yml
を作成。
上記ファイルにデフォルトのエラーメッセージや基本的なテーブルで使われるカラム名を元に英語から日本語を記載してくれてある以下URLの文をコピペするのが簡単。
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
自分で設定したカラムの日本語化を行う
上記URLで記載してくれてある項目以外の単語は日本語化されないので、
他の単語・文言については自分で編集する必要がある。
config/locales/model.ja.yml
を作成し、
models
に自分が作成したモデル名を追加する。
blog
user
モデルを作成していた場合の例の書き方は以下。
attributes
に自分が設定したカラム名を入れる。
注意点1 :インデントのスペースが一つずれただけでエラーになる上にエラーログが出てこない。
注意点2 :英語と日本語の間には:(シンボル)と空白1つを入れないとエラーになる。
【例】
ja:
activerecord:
models:
blog: ブログ
user: ユーザー
attributes:
blog:
title: タイトル
content: 内容
user:
title: タイトル
name: 名前
email: メールアドレス
current_password: 現在のパスワード
password: パスワード
password_confirmation: 確認用パスワード
remember_me: ログインを記憶
I18nで使えるメソッド
translate(別名メソッドt) :# 訳文を参照する
localize(別名メソッドl) :# DateオブジェクトやTimeオブジェクトを現地のフォーマットに変換する
【例】
ja:
activerecord:
models:
task: タスク
user: ユーザー
label: ラベル
attributes:
task:
title: タイトル
例えばymlに上記のような記載をしていて translate
メソッドを使いたい場合、
<%= t('activerecord.attributes.task.title') %>
でタイトルという文字列がviewに参照される。
他にもI18nには様々な便利機能があるので以下参照。
https://qiita.com/Kta-M/items/bd4ba36a58ad602a9d8b