Как создать переводимое успешное уведомление? - PullRequest
3 голосов
/ 17 августа 2011

Я пытаюсь создать перевод успешного уведомления.Это уведомление будет вызвано успешным вызовом действий создания и обновления.

Это то, что у меня есть до сих пор:

#config/locales/en.yml
activerecord:
  models:
    place: "Place"
  successful:
    messages:
      created: "%{model} was successfully created."
      updated: "%{model} was successfully updated."

#app/controllers/places_controller.rb
def create
  ...
  format.html { redirect_to(@place, :notice => "#{t 'activerecord.successful.messages.created'}") }

Проблема в том, что при этом появляется сообщение: "%{модель} была успешно создана. "Как мне заставить его сказать: «Место было успешно создано.»?

Ответы [ 2 ]

10 голосов
/ 17 августа 2011

Вам необходимо использовать функции интерполяции i18n (см. http://guides.rubyonrails.org/i18n.html#interpolation), сделайте что-то вроде

t('activerecord.successful.messages.created', :model => @my_newly_saved_object.class.model_name.human) 

, где model_name возвращает имя класса созданного объекта (см. http://api.rubyonrails.org/classes/ActiveModel/Name.html). вызов human для этого объекта возвращает перевод имени модели i18n (из области видимости activerecord.models. {Имя_модели})

0 голосов
/ 14 апреля 2019

Вы можете просто написать:

format.html do
  redirect_to(
    @place, 
    notice: t('activerecord.successful.messages.created', model: :place
  )
end    

(Обратите внимание, что вы пишете это в файле places_controller.rb, так что вы знаете, что будет сохранено place, нет необходимости в @place.class.model_name.humanwordy stuff.)

Это сообщит i18n перевод, который model использовать, теперь вам просто нужно локализовать названия моделей, что очень просто и делается путем добавления раздела model вactiverecord один, поэтому ваши языковые файлы yaml будут выглядеть следующим образом:

activerecord:
    successful:
      messages:
        created: 
          enqueued: "La creazione del %{model} è stata messa in coda con successo"
    error_header_message: 
      one: Un errore ha proibito il salvataggio di questo %{model}
      other: "%{count} errori hanno proibito il salvataggio di questo %{model}"
    models: 
      article: articolo
    attributes:
      article: 
        user_id: Autore
        title: Titolo
        published: Pubblicato
        text: Testo

Аналогично, как вы можете видеть в примере, вы можете также указать имена атрибутов, которые будут полезны в формах, при проверке ошибок.и другие места.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...