Как я могу предотвратить ActiveSupport, используя единицы, десятки и сотни локализаций в number_to_human? - PullRequest
0 голосов
/ 25 апреля 2020

Я настроил пользовательский языковой стандарт, чтобы 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'

1 Ответ

1 голос
/ 25 апреля 2020

Глядя на документы по этому методу, я думаю, что вы можете определить единицу, которую хотите использовать, следующим образом. Если ключ (например, tens) не включен в units, то эти единицы просто не будут использоваться.

number_to_human(
  @posts.count, 
  format: '%n%u',
  precision: 1, 
  significant: false
  units: {
    thousand:    'k',
    million:     'm',
    billion:     'b',
    trillion:    't',
    quadrillion: 'qd'
  }
)
...