rails-i18n不适用于头错误

Vuc*_*cko 0 ruby-on-rails rails-i18n ruby-on-rails-4

我使用的轨道,国际化的宝石:hr我的主要语言.

宝石有效,但header message事实并非如此.

(4 errors prohibited this list from being saved:部分)

这是我提交带有无效属性的表单时得到的结果:

4 errors prohibited this list from being saved:             #doesn't translate
    Field1 ne smije biti prazan                              #translates/presence
    Field2 ne smije biti prazan                              #translates/presence
    Field3 ne smije biti prazan                              #translates/presence
    Filed4 nije odgovaraju?e duljine (treba biti 11 znakova) #translates/length
Run Code Online (Sandbox Code Playgroud)

至于代码,我只添加config.i18n.default_locale = :hrconfig/application.rb.

在文档中说:

以下语言环境已完成:

bs,da,en,en-US,es-PA,hr,is,ja,nl,sr,ur,zh-HK

使用其他语言环境进行测试但仍未翻译该4 errors prohibited this list from being saved:部分.

我做错了什么或者.yml文件中缺少翻译?

注意:我使用rails 4.0.0

更新:

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

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

  <div class="form-container">

    <div class="inline half">
      <div class="field">
        <%= f.label :field1 %><br>
        <%= f.text_field :field1 %>
      </div>
      <div class="field">
        <%= f.label :field2 %><br>
        <%= f.text_field :field2 %>
      </div>
      <div class="field">
        <%= f.label :field3 %><br>
        <%= f.text_field :field3 %>
      </div>
      <div class="field">
        <%= f.label :field4 %><br>
        <%= f.text_field :field4 %>
      </div>
    </div>
    <div class="inline half">

      <div class="actions">
        <%= f.submit "Create", class: "continue-button" %>
      </div>
    </div>
  </div>
<% end %>
Run Code Online (Sandbox Code Playgroud)

Dan*_*nny 7

由于某些字段明确翻译,我认为您必须查找"禁止错误..."消息.此消息应该在您的activerecord.hr.yml文件中,应该看起来像

hr:
  errors:
    messages:
      not_saved:
        one: '1 error prohibited this %{resource} from being saved:'
        other: '%{count} errors prohibited this %{resource} from being saved:'
Run Code Online (Sandbox Code Playgroud)

(但是用你的语言)

现在更改您的视图代码

= pluralize(@report.errors.count, "error") %> prohibited this list from being saved:
Run Code Online (Sandbox Code Playgroud)

t('errors.messages.not_saved', count: @report.errors.count, resource: Report.model_name.human)
Run Code Online (Sandbox Code Playgroud)

为了将Report.model_name.human中提到的"Report"翻译成匈牙利语,您应该在hr.yml文件中添加一些内容,如

activerecord:
  models:
    report: Translation of report in Hungarian
    reports: Translation of reports in Hungarian
Run Code Online (Sandbox Code Playgroud)

这应该给你完全的灵活性......