Я настроил пользовательский языковой стандарт, чтобы ActiveSupport использовал короткие суффиксы при вызове number_to_human
. Вместо number_to_human(123456) => '123.4 Thousand'
, это дает мне number_to_human(123456) => '123.4k'
.
Все это прекрасно работает. Что не работает, так это то, что в то время как языковой стандарт по умолчанию оставлял бы одни меньшие числа (то есть number_to_human(56) => 56
), мой пользовательский языковой стандарт - нет. Я оставил суффиксы для единиц, десятков и сотен пустыми, но это приводит к number_to_human(52) => '5.2'
(т.е. 5,2 десятка) или number_to_human(123) => '1.23'
(для 1,23 сотни).
Как я могу сказать ActiveSupport не делать использовать единицы, десятки или сотни - чтобы просто оставить числа меньше 1000?
Вот файл локали, если он помогает (config/locales/en-ABBREV.yml
):
en-ABBREV:
datetime:
distance_in_words:
x_seconds: '%{count}s'
x_minutes: '%{count}m'
about_x_hours: '%{count}h'
x_hours: '%{count}h'
x_days: '%{count}d'
x_weeks: '%{count}w'
about_x_months: '%{count}mo'
x_months: '%{count}mo'
x_years: '%{count}y'
number:
human:
unit: ''
ten: ''
hundred: ''
thousand: 'k'
million: 'm'
billion: 'b'
trillion: 't'
quadrillion: 'qd'
И мои звонки на number_to_human
на вид выглядит так:
number_to_human @posts.count, precision: 1, significant: false, locale: 'en-ABBREV',
units: 'number.human', format: '%n%u'