Приумножить и обезглавить существительные в 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