日本語のエラーメッセージで表示する方法

英語が苦手な私なので、使ってもらえるアプリは親切な「日本語のエラーメッセージ」が必須だと思いますので、設定方法を記載します。       ※説明は除いてコードのみ掲載

(まず、英語でエラーメッセージが表示される実装が終わったらこちらの設定をします!)

 

🌟config/application.rbに記載

# 日本語の言語設定
config.i18n.default_locale = :ja

(:ja は日本語らしいです)

 

🌟Gemfimeに記載

 
gem 'rails-i18n'

Gemfimeを記載したら、ターミナルで「bundle install」します。

%bundle install 

%rails sを実行して、ローカルサーバーで確認すると日本語になっています。

 

しかし、続きが!(一部日本語となっていない文字もありますので追加で設定が必要です)

🌟config/locales/devise.en.yml記載

en:
  devise:
    confirmations:
      confirmed: "Your email address has been successfully confirmed."
      send_instructions: "You will receive an email with instructions for how to confirm your email address in a few minutes."
   errors:
     messages:
       already_confirmed: "was already confirmed, please try signing in"
       not_found: "not found"

 

その後「英語」から「日本語」に変換するために、日本語化用のYAMLファイルを導入

ファイルを2つハンドで作成します。

まず1つ目はconfig/localesディレクトに、devise.ja.ymlというファイルを作成します。

🌟device.ja.ymlファイルに記述(長いので注意)

ja:
attributes:
user:
confirmation_sent_at: パスワード確認送信時刻
confirmation_token: パスワード確認用トーク
confirmed_at: パスワード確認時刻
created_at: 作成日
current_password: 現在のパスワード
current_sign_in_at: 現在のログイン時刻
current_sign_in_ip: 現在のログインIPアドレス
email: Eメール
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: ユーザー
devise:
confirmations:
confirmed: メールアドレスが確認できました。
new:
resend_confirmation_instructions: アカウント確認メール再送
send_instructions: アカウントの有効化について数分以内にメールでご連絡します。
send_paranoid_instructions: メールアドレスが登録済みの場合、本人確認用のメールが数分以内に送信されます。
failure:
already_authenticated: すでにログインしています。
inactive: アカウントが有効化されていません。メールに記載された手順にしたがって、アカウントを有効化してください。
invalid: "%{authentication_keys}またはパスワードが違います。"
last_attempt: もう一回誤るとアカウントがロックされます。
locked: アカウントはロックされています。
not_found_in_database: "%{authentication_keys}またはパスワードが違います。"
timeout: セッションがタイムアウトしました。もう一度ログインしてください。
unauthenticated: ログインもしくはアカウント登録してください。
unconfirmed: メールアドレスの本人確認が必要です。
mailer:
confirmation_instructions:
action: メールアドレスの確認
greeting: "%{recipient}様"
instruction: 以下のリンクをクリックし、メールアドレスの確認手続を完了させてください。
subject: メールアドレス確認メール
email_changed:
greeting: こんにちは、%{recipient}様。
message: メールアドレスの(%{email})変更が完了したため、メールを送信しています。
message_unconfirmed: メールアドレスが(%{email})変更されたため、メールを送信しています。
subject: メール変更完了
password_change:
greeting: "%{recipient}様"
message: パスワードが再設定されました。
subject: パスワードの変更について
reset_password_instructions:
action: パスワード変更
greeting: "%{recipient}様"
instruction: パスワード再設定の依頼を受けたため、メールを送信しています。下のリンクからパスワードの再設定ができます。
instruction_2: パスワード再設定の依頼をしていない場合、このメールを無視してください。
instruction_3: パスワードの再設定は、上のリンクから新しいパスワードを登録するまで完了しません。
subject: パスワードの再設定について
unlock_instructions:
action: アカウントのロック解除
greeting: "%{recipient}様"
instruction: アカウントのロックを解除するには下のリンクをクリックしてください。
message: ログイン失敗が繰り返されたため、アカウントはロックされています。
subject: アカウントのロック解除について
omniauth_callbacks:
failure: "%{kind} アカウントによる認証に失敗しました。理由:(%{reason})"
success: "%{kind} アカウントによる認証に成功しました。"
passwords:
edit:
change_my_password: パスワードを変更する
change_your_password: パスワードを変更
confirm_new_password: 確認用新しいパスワード
new_password: 新しいパスワード
new:
forgot_your_password: パスワードを忘れましたか?
send_me_reset_password_instructions: パスワードの再設定方法を送信する
no_token: このページにはアクセスできません。パスワード再設定メールのリンクからアクセスされた場合には、URL をご確認ください。
send_instructions: パスワードの再設定について数分以内にメールでご連絡いたします。
send_paranoid_instructions: メールアドレスが登録済みの場合、パスワード再設定用のメールが数分以内に送信されます。
updated: パスワードが正しく変更されました。
updated_not_active: パスワードが正しく変更されました。
registrations:
destroyed: アカウントを削除しました。またのご利用をお待ちしております。
edit:
are_you_sure: 本当によろしいですか?
cancel_my_account: アカウント削除
currently_waiting_confirmation_for_email: "%{email} の確認待ち"
leave_blank_if_you_don_t_want_to_change_it: 空欄のままなら変更しません
title: "%{resource}編集"
unhappy: 気に入りません
update: 更新
we_need_your_current_password_to_confirm_your_changes: 変更を反映するには現在のパスワードを入力してください
new:
sign_up: アカウント登録
signed_up: アカウント登録が完了しました。
signed_up_but_inactive: ログインするためには、アカウントを有効化してください。
signed_up_but_locked: アカウントがロックされているためログインできません。
signed_up_but_unconfirmed: 本人確認用のメールを送信しました。メール内のリンクからアカウントを有効化させてください。
update_needs_confirmation: アカウント情報を変更しました。変更されたメールアドレスの本人確認のため、本人確認用メールより確認処理をおこなってください。
updated: アカウント情報を変更しました。
updated_but_not_signed_in: あなたのアカウントは正常に更新されましたが、パスワードが変更されたため、再度ログインしてください。
sessions:
already_signed_out: 既にログアウト済みです。
new:
sign_in: ログイン
signed_in: ログインしました。
signed_out: ログアウトしました。
shared:
links:
back: 戻る
didn_t_receive_confirmation_instructions: アカウント確認のメールを受け取っていませんか?
didn_t_receive_unlock_instructions: アカウントのロック解除方法のメールを受け取っていませんか?
forgot_your_password: パスワードを忘れましたか?
sign_in: ログイン
sign_in_with_provider: "%{provider}でログイン"
sign_up: アカウント登録
minimum_password_length: "(%{count}字以上)"
unlocks:
new:
resend_unlock_instructions: アカウントのロック解除方法を再送する
send_instructions: アカウントのロック解除方法を数分以内にメールでご連絡します。
send_paranoid_instructions: アカウントが見つかった場合、アカウントのロック解除方法を数分以内にメールでご連絡します。
unlocked: アカウントをロック解除しました。
errors:
messages:
already_confirmed: は既に登録済みです。ログインしてください。
confirmation_period_expired: の期限が切れました。%{period} までに確認する必要があります。 新しくリクエストしてください。
expired: の有効期限が切れました。新しくリクエストしてください。
not_found: は見つかりませんでした。
not_locked: はロックされていません。
not_saved:
one: エラーが発生したため %{resource} は保存されませんでした。
other: "%{count} 件のエラーが発生したため %{resource} は保存されませんでした。

 

その後は、2つ目のファイルを同じディレクトリの中に「ja.yml」ファイルをハンドで作成します。

🌟config/locales/ja.ym

ja:
attributes:
user:
nickname: ニックネーム
text: テキスト
image: 画像

 

これで、ニックネームやテキスト、画像も日本語で表記されるようになります。

テストコード等もこちらの文字に変換されることになるので、モデルテストの際はご注意ください。

 

bundle installしたら、エラー(mimemagic)

今日はカリキュラム通り、「例外処理の実装」の準備段階でエラーが出てしまったことです。

エラー内容はこちらです。

owner@kitayamanoMacBook-Pro exception_sample % bundle install

The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.

Fetching gem metadata from https://rubygems.org/............

Your bundle is locked to mimemagic (0.3.4), but that version could not be found

in any of the sources listed in your Gemfile. If you haven't changed sources,

that means the author of mimemagic (0.3.4) has removed it. You'll need to update

your bundle to a version other than mimemagic (0.3.4) that hasn't been removed

in order to install.

↑下線で引いてる「mimemagic」のこのバージョンがないので、updateが必要だと言うことです。

 

解決する方法

% bundle update mimemagic

を実行し、アップデートしました(少し時間がかかりました)🐢

その後、もう一度

% bundle install

したら、スムーズに進みました。

 

前回、Rails 勉強会の時もこれが出ていて、勉強会前にインストール出来ずに参加しました。

この時も「mimemagic」のバージョンが削除されたとメンターさんからお聞きしました。

その時の対処法は、

% bundle update

でした。

頻繁にこのエラーが出てしまいました。

次回エラーが出たら、自力で解決します!🐢

 

 

「日本時刻の表示」の設定について(Rails)

本日学習した内容ですが、railsの「日本時刻の表示」の設定についてです。

もともと時刻が出ていたので、設定が不要なのかな?と思っていましたが、やはり設定があるようです。①から④で自分の表示させたい場所(ビューファイル)へ表示しました。(多少、時刻の表示が変更した感じです!)

少し感動しました!!!(へなちょこMegでも、ちょっとずつ🐢頑張るぞー!)

例えば、投稿時刻の表示 →  「日本時刻」の表示に設定する場合

Rails のapplication.rbへ設定(config/application.rbファイル)

 

①<config/application.rb>へ記述

  config.i18n.default_locale = :ja

  config.time_zone = 'Tokyo'

 

②config/localesディレクトリに、「ja.yml」ファイルを作成する。

 

③<config/locales/ja.yml>へ記述

  ja:

    time:

      formats:

        default: "%Y/%m/%d %H:%M:%S"

 

 

時刻を表示させたい場所(ビューファイル)へ記述

 

※ l(エル)メソッドは、日付や時刻を表示する際使用する、Railsのメソッドです。

国や地域によって時刻は異なりますが、lメソッドを使えば指定した現地時間に対応できる。

 

④<app/views/messages/_message.html.erb>へ記述(表示させたいビューファイル)

 <%= l message.created_at %>

 

 ※ ご指摘や追加情報がありましたら、ご教授お願いします!

以上

パソコンオンチな私がついにブログを開設しました!

はてなブログデビューしました。

初めまして!へなちょこMegです。(ブログの名前もhenacyokoMegになっています)どうぞよろしくお願いします。

なぜ、この名前がついてるか?気になると思いますが、実は、私はアナログ人間として生きてきました。

しかし、このコロナ禍、IT化がイッキに進みましたよね!!!

すごく考えるようになりました。

パソコンは持ってはいましたが、年賀状作成の為と時々、何か情報を検索する程で、ほぼ使わない状態が続いています。

しかし、直接人と会えない、動けない状況が続き、このままでは世の中から取り残されてしまう!!!自分の何かを変えなえれば。。。と奮起し、知識も何も無い状態でプログラミングスクールで学ぶ事を決意し、即行動したのは良いのですが、、、。

・・・しかし、もともと、パソコン操作が苦手な私、パソコンコードを書くのも遅いし、学習カリキュラムも自分の中では、いっぱいいっぱいでやっています。

ぜんぜんダメダメな時もあり、私はへなちょこだから。。。と落ち込むこともありますが、一歩、一歩学習していく中で、ちょびっとではありますが自信にもつながっている時もあります。しかし、気を抜くとまたダメダメです><;

なので、名前をへなちょこMegにし、こんなダメダメな私でも頑張ってると、勇気づけられたり、励まし合えたり出来たら嬉しいです!!!

また、アウトプットで自分の理解が間違っていた時など、教えて頂けると嬉しいです。

 

日々の学習や、好きな事を、ブログに書いていきます。

どうぞ宜しくお願いいたします。