如何防止 ActiveSupport 在 number_to_human 中使用单位、十位和百位本地化?
How do I prevent ActiveSupport using units, tens, and hundreds localisations in number_to_human?
我已经设置了自定义语言环境,让 ActiveSupport 在调用 number_to_human
时使用短后缀。它给了我 number_to_human(123456) => '123.4k'
.
而不是 number_to_human(123456) => '123.4 Thousand'
一切正常。 没有的是,虽然默认语言环境会保留较小的数字(即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'
查看该方法的文档,我认为您可以像下面这样定义要使用的单位。当 units
中不包含某个键(如 tens
)时,将不会使用该单位。
number_to_human(
@posts.count,
format: '%n%u',
precision: 1,
significant: false
units: {
thousand: 'k',
million: 'm',
billion: 'b',
trillion: 't',
quadrillion: 'qd'
}
)
我已经设置了自定义语言环境,让 ActiveSupport 在调用 number_to_human
时使用短后缀。它给了我 number_to_human(123456) => '123.4k'
.
number_to_human(123456) => '123.4 Thousand'
一切正常。 没有的是,虽然默认语言环境会保留较小的数字(即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'
查看该方法的文档,我认为您可以像下面这样定义要使用的单位。当 units
中不包含某个键(如 tens
)时,将不会使用该单位。
number_to_human(
@posts.count,
format: '%n%u',
precision: 1,
significant: false
units: {
thousand: 'k',
million: 'm',
billion: 'b',
trillion: 't',
quadrillion: 'qd'
}
)