Rails 3脚手架和i18n

时间:2011-02-01 20:27:45

标签: ruby-on-rails-3 internationalization scaffold

当在Rails 3中使用脚手架时,生成器会执行此操作:

<% if @user.errors.any? %>
<div id="error_explanation">
  <h2><%= pluralize(@user.errors.count, "error") %> prohibited this user from being saved:</h2>

  <ul>
  <% @user.errors.full_messages.each do |msg| %>
    <li><%= msg %></li>
  <% end %>
  </ul>
</div>
<% end %>

但是i18n怎么样?消息得到翻译,但为什么硬编码的标题?我应该手动翻译吗?那似乎不太干?

此致

雅各

2 个答案:

答案 0 :(得分:2)

您可以通过下载文件here on github来覆盖脚手架默认行为,并将em放入lib/templates/erb/scaffold。当你生成脚手架时,它意识到模板就在那里并使用它们。

<% this code is executed and probably result in html %><%% this is converted to snippet %>,这并不困难,然后您可以执行所有个性化设置,但自动生成yml文件可能会更难,无论如何您仍然可以获得你的模板几乎是自动完成的。

为了回答你的问题,我也认为脚手架可以改进,但我读到开发人员更喜欢从头开始编写自己的代码。因此,我认为,努力的重点是改进其他功能。当您是初学者时,脚手架至少是一个有用的发生器,可以理解并熟悉逻辑。

答案 1 :(得分:0)

我认为脚手架比最终模板更具暗示性。

您可能希望添加翻译,只需将"prohibited this user from being saved:"替换为t('my_message')并将'my_message: whatever'替换为en.yml。添加翻译你没有重复,干燥的原则是安全的。

除了评论之外:我很少使用像这样的消息“4个错误禁止此用户被保存”。根据我的经验,更常见的是列出发生的所有错误并以一种红色显示错误的字段。