##やりたいこと
・ja.ymlファイルを編集してエラーメッセージを日本語化したい。
・カラム名は日本語に変更できたので、エラーメッセージのkeyを編集して
完全な日本語にしたい
##エラー内容
・I18n::InvalidLocaleData in Topics#new
##原因
・ja.ymlファイルのインデントがあっていない
・そもそもファイルが読み込めていない
ちなみにこの段階でのymlファイルはこんな感じ
ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"
##解決策
###1インデントを修正してみる
ymlファイルはスペース一つ間違っているだけでも読み込んでくれないデリケートなものなので、コメントアウトで消すのではなくしっかりと消しましょう。
19行目が怪しいので消してみます。すると…
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/9ca16185-af52-b533-f116-f6702b275787.png)
またもやエラー。しかし、内容が変わってる。
expected end of...
あ。ダブルクオーテーションで囲ってなかった。。
単なるスペルミス。
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"
上記のように修正。
すると、エラーは改善されました。そして実際に投稿画面でこのメッセージが表示されるかテストしてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/90c926d7-995e-f046-b8c2-edd9ef3c6a16.png)
おかしいっすね。
ただ、このエラー文を見てみると、
画像または動画translation missing: ja.errors.messages.extension_whitelist_error
とあります。
これは、ja → errors → messages → extension_whitelist_error
の階層になっていないので翻訳データが見つかりませんよと言っている。
ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"
この表記だとactiverecord:の中にerror:が入ってしまっている。
なのでインデントを修正。
ja:
activerecord:
models:
user:
attributes:
user:
name: 名前
email: メールアドレス
user_area: 勤務地
user_job: 役職
school_year: 学年
password: パスワード
topic:
images: 画像または動画
description: 本文
errors:
messages:
extension_whitelist_error: "%{extension}ファイルのアップロードは許可されていません。"
分かりづらいかもしれませんが、errors:以下の3行のインデントを1つ上げました。
もう一度テスト
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2301963/258bb95d-cb45-29f5-6797-97a48629df79.png)
上手くいきました!