2015-04-24 3 views
2

У меня есть следующее сообщение об ошибке на моем en.yml файле:Использование/на сообщении I18n

invalid_transition: "Cannot %{action} a %{state} timesheet"

Проблема заключается в том, что иногда состояние может быть approved, иногда это может быть rejected.

При том, что ошибка может в конечном итоге mispelled как «Не удается отправить в утвержденной табели», вместо «с утвержденного расписания».

Предоставляет ли Rails эту гибкость в I18n?

ответ

2

Самый простой ответ на ваш вопрос, я думаю, состоял бы в том, чтобы передать во всем состоянии правильную неопределенную статью вместе.

Есть question that looks at how to prepend "a" or "an" depending on a given word. Короткий ответ заключается в том, что есть драгоценный камень indefinite_article, который делает это.

Ваш перевод становится:

invalid_transition: "Cannot %{action} %{state_with_article} timesheet" 

Затем вызовите I18n.t и передать в «отвергнутый» или «одобренный» в качестве переменной интерполировать.

Однако, если вы хотите, чтобы ваши руки были немного грязнее, вы можете использовать драгоценный камень i18n-inflector и его компаньон i18n-inflector-rails gem. Для многих языков выбор более сложный, чем на английском, из-за разного пола и времени, влияющих на выбор неопределенной статьи. (Отказ от ответственности: я не использовал ни один из этих драгоценных камней, но они выглядят так, как будто они помогут вам решить проблему).