Change number_to_human calls to always use 3-digits precision (#16469)
Fixes #16435
This commit is contained in:
		
							parent
							
								
									225c6582d1
								
							
						
					
					
						commit
						e2844b7e58
					
				
					 14 changed files with 44 additions and 33 deletions
				
			
		| 
						 | 
				
			
			@ -80,17 +80,17 @@ module AccountsHelper
 | 
			
		|||
  def account_description(account)
 | 
			
		||||
    prepend_str = [
 | 
			
		||||
      [
 | 
			
		||||
        number_to_human(account.statuses_count, strip_insignificant_zeros: true),
 | 
			
		||||
        number_to_human(account.statuses_count, precision: 3, strip_insignificant_zeros: true),
 | 
			
		||||
        I18n.t('accounts.posts', count: account.statuses_count),
 | 
			
		||||
      ].join(' '),
 | 
			
		||||
 | 
			
		||||
      [
 | 
			
		||||
        number_to_human(account.following_count, strip_insignificant_zeros: true),
 | 
			
		||||
        number_to_human(account.following_count, precision: 3, strip_insignificant_zeros: true),
 | 
			
		||||
        I18n.t('accounts.following', count: account.following_count),
 | 
			
		||||
      ].join(' '),
 | 
			
		||||
 | 
			
		||||
      [
 | 
			
		||||
        number_to_human(account.followers_count, strip_insignificant_zeros: true),
 | 
			
		||||
        number_to_human(account.followers_count, precision: 3, strip_insignificant_zeros: true),
 | 
			
		||||
        I18n.t('accounts.followers', count: account.followers_count),
 | 
			
		||||
      ].join(' '),
 | 
			
		||||
    ].join(', ')
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,17 @@ module ApplicationHelper
 | 
			
		|||
    ku
 | 
			
		||||
  ).freeze
 | 
			
		||||
 | 
			
		||||
  def friendly_number_to_human(number, **options)
 | 
			
		||||
    # By default, the number of precision digits used by number_to_human
 | 
			
		||||
    # is looked up from the locales definition, and rails-i18n comes with
 | 
			
		||||
    # values that don't seem to make much sense for many languages, so
 | 
			
		||||
    # override these values with a default of 3 digits of precision.
 | 
			
		||||
    options[:precision] = 3
 | 
			
		||||
    options[:strip_insignificant_zeros] = true
 | 
			
		||||
 | 
			
		||||
    number_to_human(number, **options)
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def active_nav_class(*paths)
 | 
			
		||||
    paths.any? { |path| current_page?(path) } ? 'active' : ''
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,11 +17,11 @@
 | 
			
		|||
        .row__information-board
 | 
			
		||||
          .information-board__section
 | 
			
		||||
            %span= t 'about.user_count_before'
 | 
			
		||||
            %strong= number_to_human @instance_presenter.user_count, strip_insignificant_zeros: true
 | 
			
		||||
            %strong= friendly_number_to_human @instance_presenter.user_count
 | 
			
		||||
            %span= t 'about.user_count_after', count: @instance_presenter.user_count
 | 
			
		||||
          .information-board__section
 | 
			
		||||
            %span= t 'about.status_count_before'
 | 
			
		||||
            %strong= number_to_human @instance_presenter.status_count, strip_insignificant_zeros: true
 | 
			
		||||
            %strong= friendly_number_to_human @instance_presenter.status_count
 | 
			
		||||
            %span= t 'about.status_count_after', count: @instance_presenter.status_count
 | 
			
		||||
        .row__mascot
 | 
			
		||||
          .landing-page__mascot
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -70,10 +70,10 @@
 | 
			
		|||
 | 
			
		||||
            .hero-widget__counters__wrapper
 | 
			
		||||
              .hero-widget__counter
 | 
			
		||||
                %strong= number_to_human @instance_presenter.user_count, strip_insignificant_zeros: true
 | 
			
		||||
                %strong= friendly_number_to_human @instance_presenter.user_count
 | 
			
		||||
                %span= t 'about.user_count_after', count: @instance_presenter.user_count
 | 
			
		||||
              .hero-widget__counter
 | 
			
		||||
                %strong= number_to_human @instance_presenter.active_user_count, strip_insignificant_zeros: true
 | 
			
		||||
                %strong= friendly_number_to_human @instance_presenter.active_user_count
 | 
			
		||||
                %span
 | 
			
		||||
                  = t 'about.active_count_after'
 | 
			
		||||
                  %abbr{ title: t('about.active_footnote') } *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,17 +15,17 @@
 | 
			
		|||
        .details-counters
 | 
			
		||||
          .counter{ class: active_nav_class(short_account_url(account), short_account_with_replies_url(account), short_account_media_url(account)) }
 | 
			
		||||
            = link_to short_account_url(account), class: 'u-url u-uid', title: number_with_delimiter(account.statuses_count) do
 | 
			
		||||
              %span.counter-number= number_to_human account.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
              %span.counter-number= friendly_number_to_human account.statuses_count
 | 
			
		||||
              %span.counter-label= t('accounts.posts', count: account.statuses_count)
 | 
			
		||||
 | 
			
		||||
          .counter{ class: active_nav_class(account_following_index_url(account)) }
 | 
			
		||||
            = link_to account_following_index_url(account), title: number_with_delimiter(account.following_count) do
 | 
			
		||||
              %span.counter-number= number_to_human account.following_count, strip_insignificant_zeros: true
 | 
			
		||||
              %span.counter-number= friendly_number_to_human account.following_count
 | 
			
		||||
              %span.counter-label= t('accounts.following', count: account.following_count)
 | 
			
		||||
 | 
			
		||||
          .counter{ class: active_nav_class(account_followers_url(account)) }
 | 
			
		||||
            = link_to account_followers_url(account), title: number_with_delimiter(account.followers_count) do
 | 
			
		||||
              %span.counter-number= number_to_human account.followers_count, strip_insignificant_zeros: true
 | 
			
		||||
              %span.counter-number= friendly_number_to_human account.followers_count
 | 
			
		||||
              %span.counter-label= t('accounts.followers', count: account.followers_count)
 | 
			
		||||
        .spacer
 | 
			
		||||
        .public-account-header__tabs__tabs__buttons
 | 
			
		||||
| 
						 | 
				
			
			@ -36,8 +36,8 @@
 | 
			
		|||
 | 
			
		||||
      .public-account-header__extra__links
 | 
			
		||||
        = link_to account_following_index_url(account) do
 | 
			
		||||
          %strong= number_to_human account.following_count, strip_insignificant_zeros: true
 | 
			
		||||
          %strong= friendly_number_to_human account.following_count
 | 
			
		||||
          = t('accounts.following', count: account.following_count)
 | 
			
		||||
        = link_to account_followers_url(account) do
 | 
			
		||||
          %strong= number_to_human account.followers_count, strip_insignificant_zeros: true
 | 
			
		||||
          %strong= friendly_number_to_human account.followers_count
 | 
			
		||||
          = t('accounts.followers', count: account.followers_count)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -81,6 +81,6 @@
 | 
			
		|||
                  = t('accounts.nothing_here')
 | 
			
		||||
                - else
 | 
			
		||||
                  %time.formatted{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at
 | 
			
		||||
            .trends__item__current= number_to_human featured_tag.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
            .trends__item__current= friendly_number_to_human featured_tag.statuses_count
 | 
			
		||||
 | 
			
		||||
    = render 'application/sidebar'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,42 +13,42 @@
 | 
			
		|||
  %div
 | 
			
		||||
    = link_to admin_accounts_url(local: 1, recent: 1) do
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@users_count, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @users_count, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @users_count
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.total_users'
 | 
			
		||||
  %div
 | 
			
		||||
    %div
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@registrations_week, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @registrations_week, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @registrations_week
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.week_users_new'
 | 
			
		||||
  %div
 | 
			
		||||
    %div
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@logins_week, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @logins_week, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @logins_week
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.week_users_active'
 | 
			
		||||
  %div
 | 
			
		||||
    = link_to admin_pending_accounts_path do
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@pending_users_count, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @pending_users_count, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @pending_users_count
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.pending_users'
 | 
			
		||||
  %div
 | 
			
		||||
    = link_to admin_reports_url do
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@reports_count, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @reports_count, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @reports_count
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.open_reports'
 | 
			
		||||
  %div
 | 
			
		||||
    = link_to admin_tags_path(pending_review: '1') do
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@pending_tags_count, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @pending_tags_count, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @pending_tags_count
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.pending_tags'
 | 
			
		||||
  %div
 | 
			
		||||
    %div
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@interactions_week, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @interactions_week, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @interactions_week
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.week_interactions'
 | 
			
		||||
  %div
 | 
			
		||||
    = link_to sidekiq_url do
 | 
			
		||||
      .dashboard__counters__num{ title: number_with_delimiter(@queue_backlog, strip_insignificant_zeros: true) }
 | 
			
		||||
        = number_to_human @queue_backlog, strip_insignificant_zeros: true
 | 
			
		||||
        = friendly_number_to_human @queue_backlog
 | 
			
		||||
      .dashboard__counters__label= t 'admin.dashboard.backlog'
 | 
			
		||||
 | 
			
		||||
.dashboard__widgets
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,10 +7,10 @@
 | 
			
		|||
        %tr
 | 
			
		||||
          %td= account_link_to account
 | 
			
		||||
          %td.accounts-table__count.optional
 | 
			
		||||
            = number_to_human account.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.statuses_count
 | 
			
		||||
            %small= t('accounts.posts', count: account.statuses_count).downcase
 | 
			
		||||
          %td.accounts-table__count.optional
 | 
			
		||||
            = number_to_human account.followers_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.followers_count
 | 
			
		||||
            %small= t('accounts.followers', count: account.followers_count).downcase
 | 
			
		||||
          %td.accounts-table__count
 | 
			
		||||
            - if account.last_status_at.present?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -30,4 +30,4 @@
 | 
			
		|||
          = ' / '
 | 
			
		||||
          %span.negative-hint
 | 
			
		||||
            = t('admin.instances.delivery.unavailable_message')
 | 
			
		||||
    .trends__item__current{ title: t('admin.instances.known_accounts', count: instance.accounts_count) }= number_to_human instance.accounts_count, strip_insignificant_zeros: true
 | 
			
		||||
    .trends__item__current{ title: t('admin.instances.known_accounts', count: instance.accounts_count) }= friendly_number_to_human instance.accounts_count
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,4 +16,4 @@
 | 
			
		|||
            = fa_icon 'fire fw'
 | 
			
		||||
            = t('admin.tags.trending_right_now')
 | 
			
		||||
 | 
			
		||||
      .trends__item__current= number_to_human tag.history.first[:uses], strip_insignificant_zeros: true
 | 
			
		||||
      .trends__item__current= friendly_number_to_human tag.history.first[:uses]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -39,10 +39,10 @@
 | 
			
		|||
 | 
			
		||||
        .directory__card__extra
 | 
			
		||||
          .accounts-table__count
 | 
			
		||||
            = number_to_human account.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.statuses_count
 | 
			
		||||
            %small= t('accounts.posts', count: account.statuses_count).downcase
 | 
			
		||||
          .accounts-table__count
 | 
			
		||||
            = number_to_human account.followers_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.followers_count
 | 
			
		||||
            %small= t('accounts.followers', count: account.followers_count).downcase
 | 
			
		||||
          .accounts-table__count
 | 
			
		||||
            - if account.last_status_at.present?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,10 +9,10 @@
 | 
			
		|||
            = interrelationships_icon(@relationships, account.id)
 | 
			
		||||
          %td= account_link_to account
 | 
			
		||||
          %td.accounts-table__count.optional
 | 
			
		||||
            = number_to_human account.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.statuses_count
 | 
			
		||||
            %small= t('accounts.posts', count: account.statuses_count).downcase
 | 
			
		||||
          %td.accounts-table__count.optional
 | 
			
		||||
            = number_to_human account.followers_count, strip_insignificant_zeros: true
 | 
			
		||||
            = friendly_number_to_human account.followers_count
 | 
			
		||||
            %small= t('accounts.followers', count: account.followers_count).downcase
 | 
			
		||||
          %td.accounts-table__count
 | 
			
		||||
            - if account.last_status_at.present?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,4 +28,4 @@
 | 
			
		|||
          - else
 | 
			
		||||
            %time{ datetime: featured_tag.last_status_at.iso8601, title: l(featured_tag.last_status_at) }= l featured_tag.last_status_at
 | 
			
		||||
          = table_link_to 'trash', t('filters.index.delete'), settings_featured_tag_path(featured_tag), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }
 | 
			
		||||
      .trends__item__current= number_to_human featured_tag.statuses_count, strip_insignificant_zeros: true
 | 
			
		||||
      .trends__item__current= friendly_number_to_human featured_tag.statuses_count
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -55,18 +55,18 @@
 | 
			
		|||
        = fa_icon('reply')
 | 
			
		||||
      - else
 | 
			
		||||
        = fa_icon('reply-all')
 | 
			
		||||
      %span.detailed-status__reblogs>= number_to_human status.replies_count, strip_insignificant_zeros: true
 | 
			
		||||
      %span.detailed-status__reblogs>= friendly_number_to_human status.replies_count
 | 
			
		||||
      = " "
 | 
			
		||||
    ·
 | 
			
		||||
    - if status.public_visibility? || status.unlisted_visibility?
 | 
			
		||||
      = link_to remote_interaction_path(status, type: :reblog), class: 'modal-button detailed-status__link' do
 | 
			
		||||
        = fa_icon('retweet')
 | 
			
		||||
        %span.detailed-status__reblogs>= number_to_human status.reblogs_count, strip_insignificant_zeros: true
 | 
			
		||||
        %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count
 | 
			
		||||
        = " "
 | 
			
		||||
      ·
 | 
			
		||||
    = link_to remote_interaction_path(status, type: :favourite), class: 'modal-button detailed-status__link' do
 | 
			
		||||
      = fa_icon('star')
 | 
			
		||||
      %span.detailed-status__favorites>= number_to_human status.favourites_count, strip_insignificant_zeros: true
 | 
			
		||||
      %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count
 | 
			
		||||
      = " "
 | 
			
		||||
 | 
			
		||||
    - if user_signed_in?
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue