2016-07-26 2 views
0

Я пытаюсь перевести следующую ошибку:Rails 3.2.21 Интернационализация - ошибки перевод выпуск

error

, где он говорит:

1 error prohibited this project from being saved:

это то, что я имею в моей ванной yml, который я получил от Rails Internationalization (I18n) API:

en: 
    activerecord: 
    errors: 
     [?]: 
     [?]: 
      one: "1 error prohibited this %{model} from being saved" 
      other: "%{count} errors prohibited this %{model} from being saved" 
     [?]: "There were problems with the following fields:" 
     messages: 
     record_invalid: "Validation failed: %{errors}" 
     restrict_dependent_destroy: 
      has_one: "Cannot delete record because a dependent %{record} exists" 
      has_many: "Cannot delete record because dependent %{record} exist" 

И это пример того, как я показывать мои ошибки в моих формах

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

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

Я не едва прикоснулся локализации с рельсов на всех, так что я извиняюсь, если я делаю все, что совершенно неправильно, но что мне нужно положить в [?] с я имею в моем файле YML, или то, что мне нужно сделать, чтобы изменить таким образом, чтобы, когда я изменяю испанский изменения в

1 error prohibited this project from being saved:

в

Un error prohibido este proyecto de ser salvado


Update

Это то, что я в конечном итоге с помощью:

В моей .yml файле

en: 
    activerecord: 
    form_errors: 
     one: One error prohibited this %{model} from being saved 
     other: "%{count} errors prohibited this %{model} from being saved" 

и в моих формах:

<% if @project.errors.any? %> 
     <div id="error_explanation"> 
     <h2><%= t('activerecord.form_errors', :count => @project.errors.count, 
         :model => t('models.project').downcase) %></h2> 

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

ответ

1

Это сообщение

1 error prohibited this project from being saved: 

жестко закодировано в эшафоте прямо здесь

<h2><%= pluralize(@project.errors.count, "error") %> prohibited this project from being saved:</h2> 

Этот раздел руководства вы смотрите на это ссылающегося старые версии рельсов с использованием метода error_messages_for.

4.5.3 Translations for the Active Record error_messages_for Helper

If you are using the Active Record error_messages_for helper, you will want to add translations for it.

In order to use this helper, you need to install DynamicForm gem by adding this line to your Gemfile: gem 'dynamic_form'.

Я бы не рекомендовал этот вариант, хотя потому, что этот драгоценный камень не поддерживается.

+0

Вау, как я этого не заметил ... Я смущен –

1

Вы не используете шаблон Helper (#error_messages_for), который воспользуется этой структурой YAML. Этот помощник был извлечен перед Rails 3, и вам нужно будет установить драгоценный камень dynamic_form, чтобы использовать его.

Вы в основном делаете то же самое, что помощник делает во втором фрагменте. Чтобы использовать его, вы могли бы заменить все: <%= error_messages_for @project %>, но я не знаю, получится ли вам получить разметку HTML, которую вы намеревались. Чтобы ответить на ваш вопрос напрямую, вы должны оставить ту же структуру YML, которая указана в указанной вами ссылке. Конечно, это должно быть на вашем испанском ямле.

Я думаю, что изменить второй фрагмент проще, чтобы перевести сообщение заголовка ошибки.

Вы можете сделать это на месте (1), если вам не нужно переводить приложение на другие языки или делать это с помощью помощника интернационализации (2), добавления и записи ошибки в вашем испанском файле I18n.

1.

<%= pluralize(@project.errors.count, "error") %> prohibido este proyecto de ser salvado:</h2> 

2.

<%= pluralize(@project.errors.count, "error") %> <%= t(:error_header_message) %>:</h2> 

Для этого последнего подхода, добавить перевод в файл YML.

es: 
    error_header_message: prohibido este proyecto de ser salvado 
Смежные вопросы