GetTextが翻訳してくれるフィールド名の書き方
scaffoldが生成してくれるフィールド名を表示するコードは、以下のようになる。全てのフィールド名を順番に表示してくれる。
</tr> <% for column in Csv.columns %> <th><%= column.human_name %></th> <% end %> </tr>
しかし、時には表示したくないフィールド名があったり、順番を変更したいこともある。そこで、以下のように自分好みのフィールド名の配列を作り、その配列順に表示するようにした。
column_titles = %w{file_name file_comment editable file_size created_at file_updated_at management_section_id user_id} <% for title in column_titles %> <th><%= title %></th> <% end %>
ところが、これだとフィールド名がRubyGetTextによって、翻訳されないことに悩む。訳も分からず、<%= _(title) %> こんな風にしても駄目だった...。
もう一度、順を追って考え直す。scaffold生成のコードでは、human_nameというメソッドを呼び出している。そうすると、RubyGetTextが翻訳してくれるようだ。そこで、Railsマニュアルで human_name のソースを確認すると、その中では、human_attribute_name(@name) としている。そこで、以下のようにしてみた。
column_titles = %w{file_name file_comment editable file_size created_at file_updated_at management_section_id user_id} <% for title in column_titles %> <th><%= Csv.human_attribute_name(title) %></th> <% end %>
これで無事、翻訳されるようになった!