rails-i18n не работает из-за ошибки заголовка

Я использую камень rails-i18n для использования :hr для моего основного языка.

Драгоценный камень работает, но для header message это не так.

(The 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

Что касается кода, я только добавил config.i18n.default_locale = :hr в config/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 файлы?

Примечание: я использую рельсы 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 %>

2 ответа

Решение

Поскольку некоторые поля четко переведены, я думаю, что вы должны искать сообщение "ошибки запрещены...". Это сообщение должно быть в вашем файле 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:'

(но потом на вашем языке)

Теперь измените на ваш взгляд код

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

в

t('errors.messages.not_saved', count: @report.errors.count, resource: Report.model_name.human)

Для того чтобы "Отчет", упомянутый в Report.model_name.human, был переведен на венгерский язык, вы должны добавить что-то в свой файл hr.yml, например

activerecord:
  models:
    report: Translation of report in Hungarian
    reports: Translation of reports in Hungarian

Это должно дать вам полную гибкость...

Вы можете попробовать изменить <%= pluralize(@report.errors.count, "error") %> prohibited this list from being saved: за <%= t( :errors, :count => @report.errors.count, :model => t("model.Report")) %> это возьмет модель и ошибки из следующих мест

hr:
  model:
    Report: "Report"
  errors:
    one: "%{model} can't be saved... 1 error custom message."
    other: "%{model} can't be saved for %{count} custom errors"
Другие вопросы по тегам