【问题标题】:Rails 3 scaffold and i18nRails 3 脚手架和 i18n
【发布时间】:2011-06-19 13:12:38
【问题描述】:

当在 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 呢?消息被翻译,但为什么是硬编码的标题?我应该手动翻译吗?这似乎不太干?

问候,

雅各布

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 注意——它是lib/templates/erb/scaffold,带有复数templates
    • 支架对于开发管理功能也很有用
    • 这很有趣——我没有考虑过。您只需将挂钩添加到允许/阻止基于管理员权限的某些操作的模板?
    • 我的意思是通常管理员可以控制整个模型,不需要高级界面,控制台中的一行,一个css文件,before_filter require_admin 和工作完成。
    【解决方案2】:

    我认为脚手架更像是一个提示而不是最终模板。

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

    顺便说一句:我很少使用诸如“4 个错误禁止保存此用户”之类的消息。根据我的经验,更常见的是列出所有发生的错误并将错误的字段显示为红色。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 2011-04-09
      • 1970-01-01
      • 2011-12-20
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多