1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

I18n::InvalidLocaleエラーについて

Posted at

今回ツイート機能の投稿日時を以下の手順で日本時間に設定したところ、
deviseの新規登録時の生年月日入力欄でエラーが発生した。

原因としてはもともとen.yml(英語)で設定されていたのにも関わらず、
ツイート時間を無理やりja設定にしてしまったのが理由でエラーが出てしまったと推測する。

ツイート時間変更時に行なった作業
①config/application.rbを以下のように設定

config/application.rb
module TimeFormatSandbox
  class Application < Rails::Application
    # ...

    # デフォルトのロケールを日本(ja)に設定
    config.i18n.default_locale = :ja
  end
end

②次に表示したいhtml上を以下のようにlメソッドを使用するための設定をした

index.html.erb
<td><%= l user.created_at %></td>
config/locales/ja.yml
ja:
  time:
    formats:
      default: "%Y/%m/%d %H:%M:%S"

結果的にツイート投稿時間は日本時間に変更されたが、
デプロイ後にdevise新規投稿時に生年月日登録の個所でエラーが発生した。

解決策

(正解はわからないのですが私はこの方法でエラーが解消しました)
①新たなブランチを作成し、上で行なった作業を全て削除した。
②それでもエラーが出ていたのでエラー文を読むと「ローカルでJaは有効でありません」ということだったので
config/localesに「ja.yml」を新たに作成した。
③作成した「ja.yml」にhttps://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/ja.yml のGithubに記載されているコードを参考にさせて頂き、
ja.yml上に記述した。

この3点を行なったことでエラーが解消しデプロイも正常に成功した。
*追加でindex.html.erb上の記述を<%= tweet.created_at.strftime('%Y/%m/%d %H:%M:%S') %>にしたことでツイート日時もうまく表示することができた。

おそらく正しい方法ではないかと思いますがひとまずエラーが解消できてよかった。

もしアドバイスやご指摘等ございましたらコメントなど頂けますと幸いです。

以上

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?