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"