Ответ 1
Вы можете добавить для него пользовательский перегиб. По умолчанию Rails добавит inflections.rb
в config/initializers
. Там вы можете добавить:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular "is", "are"
end
Затем вы сможете использовать pluralize(@total_users, "is")
для возврата, используя/те же правила, что и пользователь/пользователи.
EDIT. Вы уточнили вопрос о том, как плюрализовать предложение. Это гораздо сложнее сделать в общем, но если вы хотите это сделать, вам нужно погрузиться в НЛП.
Как следует из комментария, вы можете сделать что-то с I18n, если вы просто хотите сделать это с помощью нескольких предложений, вы можете построить что-то вроде этого:
def pluralize_sentence(count, i18n_id, plural_i18n_id = nil)
if count == 1
I18n.t(i18n_id, :count => count)
else
I18n.t(plural_i18n_id || (i18n_id + "_plural"), :count => count)
end
end
pluralize_sentence(@total_users, "user_count")
И в config/locales/en.yml
:
en:
user_count: "There is %{count} user."
user_count_plural: "There are %{count} users."