Rails 2.3.4 中新增了 Ticket #745 的对应。虽说暂时还是open的状态,但从补丁已经完成的情况看,确实如此。
这个增加填补了Rails 2.2.2 中引入的国际化(I18n)模块的少许不足之处。
config/locals/ja.yml
中本来是这样写的。
ja:
activerecord:
attributes:
user:
name: 姓名
phone: 电话号码
这样的话就希望将表格在 ERB 模板里照这样的形式写吧。
<% form_for @user do |f| %>
<%= f.label :name %>: <%= f.text_field :name %><br />
<%= f.label :phone %>: <%= f.text_field :phone %><br />
<%= f.submit %>
<% end %>
但是,在此之前 label
方法并没有对应 I18n,所以 f.label :name
只返回到“Name”字符串。
返回到“姓名”本来就是自然而然的事情。
Rails 2.3.3 之前,label
方法只是用humanize 方法更换栏名。因为与国际化没有关联。
所以必须像下面这样写。
<% I18n.with_options :scope => [:activerecord, :attributes, :user] do |locale| %>
<% form_for @user do |f| %>
<%= f.label :name, local.t(:name) %>: <%= f.text_field :name %><br />
<%= f.label :phone, local.t(:phone) %>: <%= f.text_field :phone %><br />
<%= f.submit %>
<% end %>
<% end %>
Rails 2.3.4 的问世,大大减少了书写量啊。
要是 submit
方法能在翻译文件里指定生成按钮的话更好了,当然,这是一个贪心的想法。
【提供学习】