Рельсы i18n с переведенными названиями моделей - PullRequest
3 голосов
/ 01 февраля 2012

В моем приложении я хочу перевести строку ошибки проверки: «3 ошибки не позволили сохранить этот порядок».

Очевидно, что это можно сделать универсальным, чтобы соответствовать всем моделям, использующим этот перевод, поэтому в моемШаблон локали de.yml Я получил activerecord.errors.template.header примерно так:

  activerecord:
    errors:
      template:
        header:
          one:    "Konnte %{model} nicht speichern: ein Fehler."
          other:  "Konnte %{model} nicht speichern: %{count} Fehler."

Теперь проблема заключается в том, как вызвать эту проверку, не повторяя много раз.Очевидно, вы можете просто вызвать это через:

t('activerecord.errors.template.header', :count => @order.count, :model => Order)

Но это не будет переводить Order (Order называется Bestellung на немецком языке)

Я мог бы пойти дальше и исправить это, вызвав translate снова внутривызов перевода:

t('activerecord.errors.template.header', :count => @order.count, :model => t('activerecord.models.#{Order}'))

Но это действительно очень плохое решение, и я уверен, что для этого должен быть встроенный способ (как правило, есть более чистый способ делать грязные вещи)в Rails).

Буду признателен за любые указания относительно того, какой рекомендуемый способ работы с переводами подобен этому.

1 Ответ

7 голосов
/ 01 февраля 2012

Вы пробовали следующее, используя :model => Order.model_name.human вместо :model => Order?

t('activerecord.errors.template.header', :count => @order.count, :model => Order.model_name.human )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...