【Rails】i18nを使って日本語対応する(追加したカラム名も変更したい)
Railsでアプリケーションを作成していて、i18nを使った日本語化のメモです。
バリデーション設定した時のエラーメッセージ表示で追加したカラム名の日本語化がなかなかうまくいかず。
あれこれ試して解消したので参考になればと思います。
状況
deviseを用いてユーザー登録機能を実装する際に、表現を日本語対応に変更する。
gemインストールもしたのに、ja.ymlも記載したし、configも書き換えたのに、一部の文言が日本語にならない。
インストールしたgemはこの2つ。
gem 'devise-i18n'
gem 'devise-i18n-views'
bundle install 忘れずに。
実施したこと(1) fileの作成
基本的には公式に沿ってQiitaなど参考にしながら記入やgenerationを実施しました。
読み込むための日本語yamlファイルdevise.yaml.jaを作成します。
rails g devise:views:locale ja
config/application.rbに追記します。
config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]
1つ目は、デフォルトでja(日本語)を読むように変更。
2つ目は、load_path〜の記述で、複数のロケールファイルを読み込むため(別途設定必要です)。
configを修正したので、rails s(再起動)して挙動を確認。これで基本的な日本語化は反映されているはずです。
実施したこと(2)追加カラム対応用の編集
追加したアプリ独自のカラム名を日本語対応にする(住所関係とか誕生年、誕生月を分けて登録したい等)。
config/locales にja.ymlファイルを作成します。
touch config/locales/ja.yml
作成したja.ymlファイルは自分で編集する必要があります。
まずはgithubからja.ymlの基本項目をコピペ。
https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml
続いて、自分のアプリに合わせた編集を追加します。
/locales/ja.yml のactiverecord::以下にモデル名とカラム名を記載。
ちなみに参考まで。
ja:
activerecord:
models:
user: ユーザー
address: アドレス
attributes:
user:
first_name: 名前(名)
last_name: 名前(姓)
first_name_kana: ふりがな(名)
last_name_kana: ふりがな(姓)
phone_number: 電話番号
year_birth_at: 誕生年
month_birth_at: 誕生月
day_birth_at: 誕生日
address:
zip: 郵便番号
pref: 都道府県
city: 市区町村
block: 丁目、番地
building: ビル、マンション名
dst_first_name: 宛先(名)
dst_last_name: 宛先(氏)
dst_first_name_kana: ふりがな 宛先(名)
dst_last_name_kana: ふりがな 宛先(氏)
errors:
messages:
record_invalid: 'バリデーションに失敗しました: %{errors}'
restrict_dependent_destroy:
has_one: "%{record}が存在しているので削除できません"
has_many: "%{record}が存在しているので削除できません"
・・・・
ここから先の記述内容はgithub参考にしてください。
ja.ymlはインデント下げで、カラム名とモデル名を認識するので
見出しのactiverecordsから
models と attributes
モデル名(user:とadress:)
カラム名(first_name等々) で1つづつ下げて改行して記載するようにしましょう。
念のため、デフォルトの言語設定が :ja になっていることをrails r で確認しておきます。
rails r "puts I18n.default_locale"
ja
と出ればOK。
実施したこと(3) 実装内容確認
rails c を使って記述した内容が表示されるかを確認。
まずrails s(再起動)、もしくはreload!を実行して rails c でconsoleを立ち上げます。
確認コマンド例
[1] pry(main)> User.model_name.human #モデル名の日本語化を確認
=> "ユーザー"
[2] pry(main)> User.human_attribute_name :last_name_kana #カラム名の日本語化を確認
=> "ふりがな(姓)"
[3] pry(main)> Address.model_name.human
=> "アドレス"
[4] pry(main)> Address.human_attribute_name :pref
=> "都道府県"
無事反映されていれば成功です。
これ以外にもバリデーションメッセージの編集や追加などもできます。
興味ある方は参考URLを読んでみてください。
参考
https://blog.cloud-acct.com/posts/spa-rails-i18n-setting/
https://qiita.com/yutackall/items/0ff97132f31e5bacbf00
https://blog.tanebox.com/archives/590/
最後までお読みいただきありがとうございました。
Author And Source
この問題について(【Rails】i18nを使って日本語対応する(追加したカラム名も変更したい)), 我々は、より多くの情報をここで見つけました https://qiita.com/mami3sansan/items/886cff00e08a43dfa7a8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .