translation missing: ja~ 系のエラー。日本語、英語どちらも対応させる。
前提知識
なぜこのエラーが出たのか
ja.yml内に、該当する値が存在しないから
以前Fakerを日本語化したため、Railsアプリのデフォルトが日本語になっていた。
config.i18n.available_locales = %i[ja en]
config.i18n.default_locale = :ja
↓
Rspecを行った。
it 'is invalid without a title' do
post = Post.new()
post.valid?
expect(post.errors.messages[:title]).to include('can`t be blank')
end
↓
エラー発生
Failure/Error: expect(post.errors.messages[:title]).to
include('Can not be blank')
expected #<ActiveModel::DeprecationHandlingMessageArray(["translation missing: ja.activerecord.errors.models.post.attributes.title.blank"])> to include "Can not be blank"
大事なところ
translation missing:
ja.activerecord.errors.models.post.attributes.title.blank"
↓
ja.ymlのja.activerecord.errors.models.post.attributes.title.blankに対する値がないというエラー。
解決方法
ja.ymlにエラーに書かれている内容通りに設定する
"ja.activerecord.errors.models.post.attributes.title.blank"
ja:
activerecord:
errors:
models:
post:
attributes:
title:
blank: "タイトルが空白です"
rails cで確認してみる
pry(main)> I18n.t("activerecord.errors.models.post.attributes.title.blank")
=> "タイトルが空白です。"
rspecを直す
it 'is invalid without a title' do
post = Post.new()
post.valid?
- expect(post.errors.messages[:title]).to include('can`t be blank')
+ expect(post.errors.messages[:title]).to include(I18n.t("activerecord.errors.models.post.attributes.title.blank"))
end
Rspec無事通りました。
参考:
https://railsguides.jp/i18n.html#%E8%A8%B3%E6%96%87%E3%81%AE%E5%8F%82%E7%85%A7
https://qiita.com/punkshiraishi/items/bdb2d48425782e25eadc
https://qiita.com/shimadama/items/7e5c3d75c9a9f51abdd5
https://pikawaka.com/rails/i18n
Author And Source
この問題について(translation missing: ja~ 系のエラー。日本語、英語どちらも対応させる。), 我々は、より多くの情報をここで見つけました https://qiita.com/kazumawada/items/5c571a9c0ce61627a684著者帰属:元の著者の情報は、元の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 .