我如何防止ActiveSupport在number_to_human中使用单位、十和百的本地化?

问题描述 投票:0回答:1

我已经设置了一个自定义的locale,以便让ActiveSupport在调用 number_to_human. 而不是 number_to_human(123456) => '123.4 Thousand'它给我 number_to_human(123456) => '123.4k'.

这一切都很好。ぐ或 的工作是,虽然默认的locale会留下较小的数字(即 number_to_human(56) => 56),而我的自定义locale却没有。我把单位、十和百的后缀都留了空,但这样做的结果是 number_to_human(52) => '5.2' (即5.2十)或 number_to_human(123) => '1.23' (对于1.23百位数).我如何告诉ActiveSupport不使用单位、十位数或百位数--只留下1000以下的数字?

我如何告诉ActiveSupport不要使用单位、十或百,只留下1000以下的数字?

这里是locale文件,如果有帮助的话(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'
ruby-on-rails ruby ruby-on-rails-5 activesupport
1个回答
1
投票

看了该方法的文档,我想你可以像下面这样定义你想使用的单位。当一个键(如 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'
  }
)
© www.soinside.com 2019 - 2024. All rights reserved.