質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

i18n

i18n(Internationalization)とは、ユーザーの国や文化によってソフトウェアの反応を変えることで国際化を図るテクニックやツールのことを言います。

Q&A

解決済

2回答

3389閲覧

rails 5 で I18n.t('activerecord.models') で ja.yml の内容が反映されない

NTakai

総合スコア12

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Devise

Deviseとは、Ruby-on-Railsの認証機能を追加するプラグインです。

i18n

i18n(Internationalization)とは、ユーザーの国や文化によってソフトウェアの反応を変えることで国際化を図るテクニックやツールのことを言います。

0グッド

1クリップ

投稿2020/01/27 04:56

以下の設定でなぜか I18n.t('activerecord.models') で ja.yml で設定した内容が反映されないです。
% rails -v
Rails 5.2.4.1

[config/application.rb]

ruby

1 config.time_zone = "Tokyo" 2 config.i18n.default_locale = :ja 3 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s] 4

[Gemfile]

gem 'devise-i18n' gem 'devise-i18n-views'

[config/locales/devise.views.ja.yml]
一部抜粋

yaml

1ja: 2 activerecord: 3 models: 4 user: "ユーザ" 5

[config/locales/ja.yml]

yaml

1ja: 2 activerecord: 3 models: 4 user: "登録者情報" 5 workshop: "ワークショップ" 6

試したことは以下の通りです。
上記の設定でコンソールを立ち上げて workshop を読み込もうとすると読み込まれない。
[1] pry(main)> I18n.t('activerecord.models.workshop')
=> "translation missing: ja.activerecord.models.workshop"

ユーザーの設定も異なる設定が表示される。
[2] pry(main)> I18n.t('activerecord.models')
=> {:user=>"ユーザ"}

そこで devise.views.ja.yml を以下のように編集

yml

1 user: "ユーザ。。。。" 2

コンソールを立ち上げ直して
[1] pry(main)> I18n.t('activerecord.models')
=> {:user=>"ユーザ。。。。"}

ファイルが読み込まれ、設定が反映していることを確認
次に、config/locales/ja.yml を編集し、以下を追加

yml

1ja: 2 hello: 3 everybody: "皆さん" 4

コンソールを立ち上げ直して
[1] pry(main)> I18n.t(:hello)
=> {:everybody=>"皆さん"}

ファイルが読み込まれていることを確認
config/locales/devise.views.ja.yml からactiverecord の記述を削除
コンソールを立ち上げ直して
[1] pry(main)> I18n.t('activerecord.models')
=> {:user=>"ユーザ"}

と削除したにもかかわらず、 devise.veiws.ja.yml の設定が反映さ、ja.yml の設定が反映されない
そこで、activerecord の内容を確認すると
[2] pry(main)> I18n.t('activerecord')
=> {:attributes=>
{:user=>
{:confirmation_sent_at=>"パスワード確認送信時刻",
:confirmation_token=>"パスワード確認用トークン",
:confirmed_at=>"パスワード確認時刻",
:created_at=>"作成日",
:current_password=>"現在のパスワード",
:current_sign_in_at=>"現在のログイン時刻",
:current_sign_in_ip=>"現在のログインIPアドレス",
:email=>"メールアドレス",
:encrypted_password=>"暗号化パスワード",
:failed_attempts=>"失敗したログイン試行回数",
:last_sign_in_at=>"最終ログイン時刻",
:last_sign_in_ip=>"最終ログインIPアドレス",
:locked_at=>"ロック時刻",
:password=>"パスワード",
:password_confirmation=>"確認用パスワード",
:remember_created_at=>"ログイン記憶時刻",
:remember_me=>"ログインを記憶",
:reset_password_sent_at=>"パスワードリセット送信時刻",
:reset_password_token=>"パスワードリセット用トークン",
:sign_in_count=>"ログイン回数",
:unconfirmed_email=>"未確認Eメール",
:unlock_token=>"ロック解除用トークン",
:updated_at=>"更新日"}},
:models=>{:user=>"ユーザ"},
:errors=>{:messages=>{:record_invalid=>"バリデーションに失敗しました: %{errors}", :restrict_dependent_destroy=>{:has_one=>"%{record}が存在しているので削除できません", :has_many=>"%{record}が存在しているので削除できません"}}}}

となる。

Gemfile から
gem 'devise-i18n'
gem 'devise-i18n-views'
を削除し bundle し直してからコンソールを立ち上げ直して実行しても結果は変わらず。

原因が分かるようでしたらご教授いただけると大変助かります。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

返信有難うございます。
この件に関しては自己解決しております。
私の認識が正しければ、ja.yml で同じ定義をすると最初の定義が破棄される、ことが原因だったようです。
日本語化に関して色々なところからファイルをダウンロードしたり、コピペしたりしていていつの間にか、ja.yml の最後に devise.views.ja.yml の内容をコピペしていたようです。。。
そのため、Gemfile から
gem 'devise-i18n'
gem 'devise-i18n-views'
を削除し bundle し直しても結果が反映されず、ja.yml が

yaml

1ja: 2 activerecord: 3 models: 4 user: "登録者情報" 5 workshop: "ワークショップ" 6... 7ja: 8 activerecord: 9 models: 10 user: "ユーザ"

のような記述になっていたため、最初の定義が破棄されていたようです。

お騒がせいたしました。

投稿2020/02/17 06:05

NTakai

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

https://qiita.com/hyone/items/e8c2046509d841a3f64f

bundle exec spring stop で spring を再起動する必要があるのではないでしょうか

投稿2020/02/16 04:33

編集2020/02/16 04:34
unhappychoice

総合スコア1531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問