Я хочу «сокращать» большие числа, чтобы сделать их удобочитаемыми, используя аббревиатуры, которые являются идиоматическими для данного языка. Например, число 16512
станет:Как сокращать большие числа в i18n-friendly?
"16.5k"
дляen-US
(«к» коротко для метрической приставки «тысяч», как в «километре»)"16,5тыс."
дляru
(это «ТЫС.» сокращение для «тысяча», что означает «тысяча» на русском языке)
Я не уверен, как назвать эту процедуру, которую я описываю.
Ruby on Rails имеет что-то похожее на то, что я ищу, называется #number_to_human
, но это не совсем так - оно вернет "16.5 Thousand"
в моем примере выше. Меня интересуют аббревиатуры (и, возможно, не все локали вокруг вещей до ближайшей тысячи), а не просто делают строки удобочитаемыми.
Меня особенно интересовало бы решение, которое работает для JavaScript, но даже название этой процедуры было бы огромной помощью!
Посмотрите на [globalize.js] (https://github.com/globalizejs/globalize). Он использует данные CLDR Unicode и написан на javascript. –
@NiyokoYuliawan Я не верю, что globalize.js помогает здесь; Я вижу методы форматирования числа и валюты, но ни одна из них не выполняет задачу, которую я описываю. На самом деле, я не думаю, что globalize.js делает все, что я не мог сделать с API Intl.NumberFormat. Я также не вижу каких-либо полезных данных в CLDR, если я не пропустил что-то? – ucarion
Ничего, я думаю, ты прав, @NiyokoYuliawan! Название того, что я ищу, - это «короткий» номер. [У CLDR есть данные с коротким номером] (http://cldr.unicode.org/translation/number-patterns#TOC-Short-Numbers). К сожалению, globalize.js еще не реализовал его. Для этого есть проблема: [# 406] (https://github.com/globalizejs/globalize/issues/406). – ucarion