Doiya’s blog

私が所属しているプログラミングスクールの進捗を書くブログ

基礎編 課題5

本題に入る前に

「syntax error, unexpected end-of-input, expecting end (SyntaxError)」

これに近いようなエラーが出た時、全角を疑った方がいい。今回も似たようなエラーが出て、全角の()をやってたっぽい。

じゃあ本題に入る。まず「Rails 日本語化」や「Rails view 日本語化」などで検索する。

qiita.com

今回は上記のURLを元にやった感じです。viewとmodelの英語を日本語にする書き方はしっかりと覚えた方がいいかも。

view

ja:
 defaults: #すべてのコントローラーで使える
   login: 
   register:
   logout: 
 users:
   new:
     title: 
     to_login_page:
 user_sessions:
   new:
     title:
     to_register_page: 
     password_forget: 
 boards:
    index:
     title: 
    new:
     title: 
    bookmarks:
     title: 
    profiles:
     show:
     title:

model

ja:
  activerecord:
    models:
      user: 
      board: 
    attributes:
      user:
        last_name:
        first_name: 
        email: 
        password: 
        password_confirmation: 

上記の構文の配置やインデントの付け方は覚えた方がいいかも。

次にlazy lookupの使い方は大事やと思う。

https://railsguides.jp/i18n.html#%E6%8E%A2%E7%B4%A2%E3%81%AE%E3%80%8C%E9%81%85%E5%BB%B6%E3%80%8D%EF%BC%88lazy-lookup%EF%BC%89

普通のは以下の感じで書く。

<%= t '.title' %>

flashメッセージが絡むのは以下の感じで書く(のがいいみたい。)

<%= link_to  (t '.to_login_page'), login_path %>

最後にuser_sessionsのnew.html.erbを以下のように変える。

<%= f.label :email %>を<%= f.label :email, User.human_attribute_name(:email) %>

理由

「登録フォームはform_with model: @userのようにform_withのmodelオプションにUserモデルのインスタンスを設定してますよね。
なので「このフォームはユーザー用のフォームだな」とRailsが解釈してくれて翻訳までよしなにやってくれます。

一方でログインフォームは?モデルと紐づいている訳ではないのでよしなに翻訳してくれる訳ではありません。
そう言う場合は<%= f.label :email, User.human_attribute_name(:email) %>のように明示的にテキストを渡してあげないといけません。」