rails2.3.5与I18n.t

Rails 2.3.4通过补丁改进了国际化(I18n)支持,允许直接在表单标签中使用翻译文本,简化了开发流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 方法能在翻译文件里指定生成按钮的话更好了,当然,这是一个贪心的想法。

 

 

【提供学习】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值