Приумножить и обезглавить существительные в Ruby

Я реализую функцию подсчета просмотров для определенных веб-страниц в Ruby on Rails. Я использую списки хамла, чтобы достичь своей цели. (Библиотека JavaScript берет список и отображает его в виде раскрывающихся списков.)

Вот фрагмент кода:

%li.action
  = link_to t(question.views_count.to_s + ' views')

Моя проблема здесь заключается в том, что V в представлениях пишется с большой буквы в выводе, а представление множится даже для 0 и 1 количества просмотров. Могу ли я решить эти проблемы?

2 ответа

Решение

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

Из Руководства I18N:

:count Переменная интерполяции играет особую роль в том, что она оба интерполируется в перевод и используется для выбора множественного числа из переводов в соответствии с правилами множественного числа, определенными CLDR:

I18n.backend.store_translations :en, :inbox => {
  :one => '1 message',
  :other => '%{count} messages'
}

I18n.translate :inbox, :count => 2
# => '2 messages'

Итак, если вы правильно настроили свою базу данных сообщений, вы бы сделали что-то вроде этого:

t(:views, :count => question.views_count)

И ваш файл перевода на английский будет выглядеть примерно так:

views:
  one: "1 view"
  other: "%{count} views"

См. эту ссылку для множественного числа http://apidock.com/rails/ActionView/Helpers/TextHelper/pluralize

попробуй в своем console, for example

1.9.3p125 :028 > pluralize(2, 'View')
 => "2 Views"

Обновить

попробуйте в вашей консоли и используйте заглавные буквы

"view".capitalize 
Другие вопросы по тегам