0

我正在使用 Ruby On Rails 3.2.13 Ruby 1.9.3。

我有以下代码用于显示 Rails 在模型中进行验证时提供的消息:

<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      <%=t :the_form_contains %> <%= pluralize(object.errors.count, "#{t :error_text}") %>.
      <ul>
        <% object.errors.full_messages.each do |msg| %>
          <li>* <%= msg %></li>
        <% end %>
      </ul>
    </div>
  </div>
<% end %>

我的 yaml 文件中还有一些自定义文本。以下是消息如何在一台服务器上显示的示例:

Le Formulaire contient 20 erreurs.
* Mot de passe doit être rempli(e)
* Prénom doit être rempli(e)
* Prénom est trop court (au moins 3 caractères)
* Prénom n'est pas valide

以下是消息在另一台服务器上的显示方式:

Le Formulaire contient 20 erreurs.
* Mot de passe can't be blank
* Prénom can't be blank
* Prénom is too short (minimum is 3 characters)
* Prénom is invalid

只有我在 yaml 文件中输入的部分消息才能正确显示。Rails 将翻译的那些只能在一台服务器上工作。

我在这里http://guides.rubyonrails.org/i18n.html阅读了 I18n 的 Rails 指南,但没有在配置或其他任何地方看到我需要做的任何事情来让这些工作。正如我所说,它在一台服务器上运行良好,但在另一台服务器上运行良好。

如果我在我的开发服务器上做了一些我在生产服务器上没有做过的事情,我不记得我做了什么。我已经检查了两台服务器上的 config/application.rb 和 config/environment.rb 并且它们是相同的。也许我需要在生产服务器的某个地方初始化一些东西。如果找到答案,它还可以解决我在Ruby on Rails I18n - Localization of Dates Works In localhost but Not In Production中提出的问题。

任何帮助,将不胜感激。我将继续我的研究,看看我是否能找到任何关于此的信息。到目前为止,我什么也没发现。

更新:CDT 2013 年 7 月 29 日下午 12:47 - 我可以看到两台服务器之间的唯一其他区别是开发服务器正在运行 ruby​​ 1.9.3p327,而生产服务器正在运行 ruby​​ 1.9.3p362。但是,我无法相信这可能会导致我的问题,但我觉得我应该注意这是一个差异。

4

1 回答 1

0

我找不到与此相关的任何其他问题或评论。我决定复制 rails-i18n gem 的 fr.yml 哈希值。我不必在我的开发服务器上执行此操作即可将错误消息翻译成法语。正如我所说,没有它们它工作得很好。当我在生产中部署新的 yaml 文件时,我的所有子句都是法语的。我猜想在 i18n 进程的某处有大海捞针式的错误。至少 Rails 对错误消息的翻译现在可以工作了。

于 2013-07-29T21:05:33.283 回答