平々凡々エンジニア

平凡で難しい悩みを解決

|18n を使った日本語化はエラー文とmodelにしかできないと思う

rails gem I18n を使用したエラーメッセージの日本語化

上の記事ではエラー文の日本語化とmodelを日本語化することでf.labelの中でも日本語化できたことがわかりました。

<%= form_for(@user, url: signup_path) do |f| %>
 <%= f.label :name %>
<% emd %>

↓出力結果

<label for="user_name">名前</label>


ここで疑問が湧きます。モデルを使用しない場合は日本語化できないのか?

<%= form_for(:session, url: login_path)) do |f| %>
 <%= f.label :name %>
<% emd %>


多分できません。gem |18nは、viewの内容を日本語に変換するようなものではないようです。主な使い方は、ymlファイルで記載した物を手軽く出力する物らしいです。なのでエラー文や、注意文などといった定型文を出力することが主な使い方だと思います。妥協策としてf.labelは出力する文を指定できるのでこれで十分でしょう。

<%= form_for(:session, url: login_path)) do |f| %>
 <%= f.label :name , `名前`%>
<% emd %>

↓出力結果

<label for="user_name">名前</label>


gem I18nは色々と設定しておくと動的に文字を入れ替えてくれるような機能だと思っていたのですが勘違いをしていました。

参考:[初学者]Railsのi18nによる日本語化対応