about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorStarfall <us@starfall.systems>2022-03-22 11:16:06 -0500
committerStarfall <us@starfall.systems>2022-03-22 11:16:06 -0500
commitf37056e6c351a08d09c3986586cc7d27bdea85ab (patch)
treec28aaff7e0b70ba0fea07d4335777e6676bff60e /app
parent239d67fc2c0ec82617de50a9831bc1a9efc30ecc (diff)
parent9ff119eecd1079e52a8a41d7b8d61520c4303c2f (diff)
Merge remote-tracking branch 'glitch/main'
Diffstat (limited to 'app')
-rw-r--r--app/chewy/statuses_index.rb2
-rw-r--r--app/controllers/admin/custom_emojis_controller.rb3
-rw-r--r--app/controllers/admin/domain_blocks_controller.rb4
-rw-r--r--app/controllers/admin/instances_controller.rb26
-rw-r--r--app/controllers/api/v1/emails/confirmations_controller.rb4
-rw-r--r--app/controllers/api/v1/notifications_controller.rb19
-rw-r--r--app/controllers/api/v1/statuses_controller.rb1
-rw-r--r--app/controllers/auth/omniauth_callbacks_controller.rb6
-rw-r--r--app/helpers/application_helper.rb2
-rw-r--r--app/helpers/jsonld_helper.rb10
-rw-r--r--app/helpers/languages_helper.rb18
-rw-r--r--app/helpers/statuses_helper.rb12
-rw-r--r--app/javascript/flavours/glitch/components/admin/Counter.js6
-rw-r--r--app/javascript/flavours/glitch/components/media_attachments.js119
-rw-r--r--app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.js12
-rw-r--r--app/javascript/flavours/glitch/features/report/components/status_check_box.js49
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js20
-rw-r--r--app/javascript/flavours/glitch/locales/af.js7
-rw-r--r--app/javascript/flavours/glitch/locales/ckb.js7
-rw-r--r--app/javascript/flavours/glitch/locales/es-MX.js7
-rw-r--r--app/javascript/flavours/glitch/locales/gd.js7
-rw-r--r--app/javascript/flavours/glitch/locales/kw.js7
-rw-r--r--app/javascript/flavours/glitch/locales/pa.js7
-rw-r--r--app/javascript/flavours/glitch/locales/si.js7
-rw-r--r--app/javascript/flavours/glitch/locales/szl.js7
-rw-r--r--app/javascript/flavours/glitch/locales/tai.js7
-rw-r--r--app/javascript/flavours/glitch/locales/tt.js7
-rw-r--r--app/javascript/flavours/glitch/locales/ug.js7
-rw-r--r--app/javascript/flavours/glitch/styles/admin.scss50
-rw-r--r--app/javascript/flavours/glitch/styles/components/index.scss35
-rw-r--r--app/javascript/flavours/glitch/styles/components/modal.scss41
-rw-r--r--app/javascript/flavours/glitch/styles/components/status.scss2
-rw-r--r--app/javascript/flavours/glitch/styles/mastodon-light/diff.scss22
-rw-r--r--app/javascript/flavours/glitch/styles/tables.scss18
-rw-r--r--app/javascript/mastodon/components/admin/Counter.js6
-rw-r--r--app/javascript/mastodon/components/media_attachments.js116
-rw-r--r--app/javascript/mastodon/features/explore/index.js2
-rw-r--r--app/javascript/mastodon/features/getting_started/index.js14
-rw-r--r--app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js12
-rw-r--r--app/javascript/mastodon/features/report/components/status_check_box.js52
-rw-r--r--app/javascript/mastodon/features/ui/components/compare_history_modal.js20
-rw-r--r--app/javascript/mastodon/features/ui/components/navigation_panel.js2
-rw-r--r--app/javascript/mastodon/features/ui/components/tabs_bar.js6
-rw-r--r--app/javascript/mastodon/locales/af.json8
-rw-r--r--app/javascript/mastodon/locales/ar.json66
-rw-r--r--app/javascript/mastodon/locales/ast.json78
-rw-r--r--app/javascript/mastodon/locales/bg.json8
-rw-r--r--app/javascript/mastodon/locales/bn.json8
-rw-r--r--app/javascript/mastodon/locales/br.json8
-rw-r--r--app/javascript/mastodon/locales/ca.json202
-rw-r--r--app/javascript/mastodon/locales/ckb.json543
-rw-r--r--app/javascript/mastodon/locales/co.json8
-rw-r--r--app/javascript/mastodon/locales/cs.json8
-rw-r--r--app/javascript/mastodon/locales/cy.json8
-rw-r--r--app/javascript/mastodon/locales/da.json300
-rw-r--r--app/javascript/mastodon/locales/de.json6
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json48
-rw-r--r--app/javascript/mastodon/locales/el.json8
-rw-r--r--app/javascript/mastodon/locales/en.json6
-rw-r--r--app/javascript/mastodon/locales/eo.json72
-rw-r--r--app/javascript/mastodon/locales/es-AR.json86
-rw-r--r--app/javascript/mastodon/locales/es-MX.json116
-rw-r--r--app/javascript/mastodon/locales/es.json22
-rw-r--r--app/javascript/mastodon/locales/et.json8
-rw-r--r--app/javascript/mastodon/locales/eu.json86
-rw-r--r--app/javascript/mastodon/locales/fa.json8
-rw-r--r--app/javascript/mastodon/locales/fi.json6
-rw-r--r--app/javascript/mastodon/locales/fr.json8
-rw-r--r--app/javascript/mastodon/locales/ga.json6
-rw-r--r--app/javascript/mastodon/locales/gd.json6
-rw-r--r--app/javascript/mastodon/locales/gl.json86
-rw-r--r--app/javascript/mastodon/locales/he.json8
-rw-r--r--app/javascript/mastodon/locales/hi.json8
-rw-r--r--app/javascript/mastodon/locales/hr.json8
-rw-r--r--app/javascript/mastodon/locales/hu.json12
-rw-r--r--app/javascript/mastodon/locales/hy.json8
-rw-r--r--app/javascript/mastodon/locales/id.json86
-rw-r--r--app/javascript/mastodon/locales/io.json8
-rw-r--r--app/javascript/mastodon/locales/is.json6
-rw-r--r--app/javascript/mastodon/locales/it.json6
-rw-r--r--app/javascript/mastodon/locales/ja.json70
-rw-r--r--app/javascript/mastodon/locales/ka.json8
-rw-r--r--app/javascript/mastodon/locales/kab.json22
-rw-r--r--app/javascript/mastodon/locales/kk.json8
-rw-r--r--app/javascript/mastodon/locales/kmr.json541
-rw-r--r--app/javascript/mastodon/locales/kn.json8
-rw-r--r--app/javascript/mastodon/locales/ko.json92
-rw-r--r--app/javascript/mastodon/locales/ku.json1078
-rw-r--r--app/javascript/mastodon/locales/kw.json8
-rw-r--r--app/javascript/mastodon/locales/locale-data/sa.js97
-rw-r--r--app/javascript/mastodon/locales/lt.json8
-rw-r--r--app/javascript/mastodon/locales/lv.json6
-rw-r--r--app/javascript/mastodon/locales/mk.json8
-rw-r--r--app/javascript/mastodon/locales/ml.json8
-rw-r--r--app/javascript/mastodon/locales/mr.json8
-rw-r--r--app/javascript/mastodon/locales/ms.json8
-rw-r--r--app/javascript/mastodon/locales/nl.json8
-rw-r--r--app/javascript/mastodon/locales/nn.json8
-rw-r--r--app/javascript/mastodon/locales/no.json8
-rw-r--r--app/javascript/mastodon/locales/oc.json8
-rw-r--r--app/javascript/mastodon/locales/pa.json8
-rw-r--r--app/javascript/mastodon/locales/pl.json8
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json54
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json84
-rw-r--r--app/javascript/mastodon/locales/ro.json8
-rw-r--r--app/javascript/mastodon/locales/ru.json70
-rw-r--r--app/javascript/mastodon/locales/sa.json8
-rw-r--r--app/javascript/mastodon/locales/sc.json8
-rw-r--r--app/javascript/mastodon/locales/si.json12
-rw-r--r--app/javascript/mastodon/locales/sk.json66
-rw-r--r--app/javascript/mastodon/locales/sl.json86
-rw-r--r--app/javascript/mastodon/locales/sq.json6
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json8
-rw-r--r--app/javascript/mastodon/locales/sr.json8
-rw-r--r--app/javascript/mastodon/locales/sv.json32
-rw-r--r--app/javascript/mastodon/locales/szl.json8
-rw-r--r--app/javascript/mastodon/locales/ta.json8
-rw-r--r--app/javascript/mastodon/locales/tai.json8
-rw-r--r--app/javascript/mastodon/locales/te.json8
-rw-r--r--app/javascript/mastodon/locales/th.json64
-rw-r--r--app/javascript/mastodon/locales/tr.json8
-rw-r--r--app/javascript/mastodon/locales/tt.json14
-rw-r--r--app/javascript/mastodon/locales/ug.json8
-rw-r--r--app/javascript/mastodon/locales/uk.json12
-rw-r--r--app/javascript/mastodon/locales/ur.json8
-rw-r--r--app/javascript/mastodon/locales/vi.json118
-rw-r--r--app/javascript/mastodon/locales/whitelist_ckb.json (renamed from app/javascript/mastodon/locales/whitelist_kmr.json)0
-rw-r--r--app/javascript/mastodon/locales/zgh.json8
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json10
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json8
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json12
-rw-r--r--app/javascript/styles/mastodon-light/diff.scss20
-rw-r--r--app/javascript/styles/mastodon/admin.scss50
-rw-r--r--app/javascript/styles/mastodon/components.scss8
-rw-r--r--app/javascript/styles/mastodon/tables.scss18
-rw-r--r--app/lib/activitypub/activity.rb10
-rw-r--r--app/lib/activitypub/activity/update.rb4
-rw-r--r--app/lib/admin/metrics/dimension.rb2
-rw-r--r--app/lib/admin/metrics/dimension/instance_accounts_dimension.rb35
-rw-r--r--app/lib/admin/metrics/dimension/instance_languages_dimension.rb37
-rw-r--r--app/lib/admin/metrics/measure.rb6
-rw-r--r--app/lib/admin/metrics/measure/base_measure.rb8
-rw-r--r--app/lib/admin/metrics/measure/instance_accounts_measure.rb58
-rw-r--r--app/lib/admin/metrics/measure/instance_followers_measure.rb59
-rw-r--r--app/lib/admin/metrics/measure/instance_follows_measure.rb59
-rw-r--r--app/lib/admin/metrics/measure/instance_media_attachments_measure.rb69
-rw-r--r--app/lib/admin/metrics/measure/instance_reports_measure.rb59
-rw-r--r--app/lib/admin/metrics/measure/instance_statuses_measure.rb60
-rw-r--r--app/lib/delivery_failure_tracker.rb2
-rw-r--r--app/lib/feed_manager.rb2
-rw-r--r--app/lib/rss/serializer.rb2
-rw-r--r--app/models/admin/account_action.rb14
-rw-r--r--app/models/admin/status_batch_action.rb4
-rw-r--r--app/models/concerns/account_merging.rb7
-rw-r--r--app/models/concerns/omniauthable.rb23
-rw-r--r--app/models/domain_block.rb8
-rw-r--r--app/models/featured_tag.rb4
-rw-r--r--app/models/instance.rb36
-rw-r--r--app/models/instance_filter.rb16
-rw-r--r--app/models/notification.rb24
-rw-r--r--app/models/preview_card.rb4
-rw-r--r--app/models/report.rb16
-rw-r--r--app/models/status.rb132
-rw-r--r--app/models/status_edit.rb52
-rw-r--r--app/serializers/activitypub/note_serializer.rb6
-rw-r--r--app/serializers/rest/admin/measure_serializer.rb10
-rw-r--r--app/serializers/rest/status_edit_serializer.rb10
-rw-r--r--app/serializers/rest/status_serializer.rb2
-rw-r--r--app/services/activitypub/fetch_remote_status_service.rb30
-rw-r--r--app/services/activitypub/process_status_update_service.rb40
-rw-r--r--app/services/fan_out_on_write_service.rb2
-rw-r--r--app/services/post_status_service.rb8
-rw-r--r--app/services/remove_status_service.rb2
-rw-r--r--app/services/update_status_service.rb23
-rw-r--r--app/views/admin/custom_emojis/new.html.haml2
-rw-r--r--app/views/admin/domain_blocks/edit.html.haml4
-rw-r--r--app/views/admin/domain_blocks/new.html.haml4
-rw-r--r--app/views/admin/domain_blocks/show.html.haml25
-rw-r--r--app/views/admin/instances/_exhausted_deliveries_days.haml2
-rw-r--r--app/views/admin/instances/_instance.html.haml28
-rw-r--r--app/views/admin/instances/index.html.haml19
-rw-r--r--app/views/admin/instances/show.html.haml156
-rw-r--r--app/views/admin/reports/_status.html.haml14
-rw-r--r--app/views/admin/reports/index.html.haml4
-rw-r--r--app/views/admin/trends/links/_preview_card.html.haml4
-rw-r--r--app/views/admin/trends/statuses/_status.html.haml6
-rw-r--r--app/views/disputes/strikes/show.html.haml2
-rw-r--r--app/views/notification_mailer/_status.html.haml4
-rw-r--r--app/views/statuses/_detailed_status.html.haml8
-rw-r--r--app/views/statuses/_og_image.html.haml2
-rw-r--r--app/views/statuses/_simple_status.html.haml8
-rw-r--r--app/views/user_mailer/warning.text.erb3
-rw-r--r--app/workers/admin/domain_purge_worker.rb2
193 files changed, 4111 insertions, 2766 deletions
diff --git a/app/chewy/statuses_index.rb b/app/chewy/statuses_index.rb
index 1903c2ea3..65cbb6fcd 100644
--- a/app/chewy/statuses_index.rb
+++ b/app/chewy/statuses_index.rb
@@ -57,7 +57,7 @@ class StatusesIndex < Chewy::Index
     field :id, type: 'long'
     field :account_id, type: 'long'
 
-    field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do
+    field :text, type: 'text', value: ->(status) { [status.spoiler_text, Formatter.instance.plaintext(status)].concat(status.ordered_media_attachments.map(&:description)).concat(status.preloadable_poll ? status.preloadable_poll.options : []).join("\n\n") } do
       field :stemmed, type: 'text', analyzer: 'content'
     end
 
diff --git a/app/controllers/admin/custom_emojis_controller.rb b/app/controllers/admin/custom_emojis_controller.rb
index 71efb543e..47138bf6c 100644
--- a/app/controllers/admin/custom_emojis_controller.rb
+++ b/app/controllers/admin/custom_emojis_controller.rb
@@ -35,6 +35,9 @@ module Admin
       flash[:alert] = I18n.t('admin.accounts.no_account_selected')
     rescue Mastodon::NotPermittedError
       flash[:alert] = I18n.t('admin.custom_emojis.not_permitted')
+    rescue ActiveRecord::RecordInvalid => e
+      error_message = action_from_button == 'copy' ? 'admin.custom_emojis.batch_copy_error' : 'admin.custom_emojis.batch_error'
+      flash[:alert] = I18n.t(error_message, message: e.message)
     ensure
       redirect_to admin_custom_emojis_path(filter_params)
     end
diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb
index b140c454c..16defc1ea 100644
--- a/app/controllers/admin/domain_blocks_controller.rb
+++ b/app/controllers/admin/domain_blocks_controller.rb
@@ -56,10 +56,6 @@ module Admin
       end
     end
 
-    def show
-      authorize @domain_block, :show?
-    end
-
     def destroy
       authorize @domain_block, :destroy?
       UnblockDomainService.new.call(@domain_block)
diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb
index 306ec1f53..5c82331de 100644
--- a/app/controllers/admin/instances_controller.rb
+++ b/app/controllers/admin/instances_controller.rb
@@ -4,28 +4,26 @@ module Admin
   class InstancesController < BaseController
     before_action :set_instances, only: :index
     before_action :set_instance, except: :index
-    before_action :set_exhausted_deliveries_days, only: :show
 
     def index
       authorize :instance, :index?
+      preload_delivery_failures!
     end
 
     def show
       authorize :instance, :show?
+      @time_period = (6.days.ago.to_date...Time.now.utc.to_date)
     end
 
     def destroy
       authorize :instance, :destroy?
-
       Admin::DomainPurgeWorker.perform_async(@instance.domain)
-
       log_action :destroy, @instance
       redirect_to admin_instances_path, notice: I18n.t('admin.instances.destroyed_msg', domain: @instance.domain)
     end
 
     def clear_delivery_errors
       authorize :delivery, :clear_delivery_errors?
-
       @instance.delivery_failure_tracker.clear_failures!
       redirect_to admin_instance_path(@instance.domain)
     end
@@ -33,11 +31,9 @@ module Admin
     def restart_delivery
       authorize :delivery, :restart_delivery?
 
-      last_unavailable_domain = unavailable_domain
-
-      if last_unavailable_domain.present?
+      if @instance.unavailable?
         @instance.delivery_failure_tracker.track_success!
-        log_action :destroy, last_unavailable_domain
+        log_action :destroy, @instance.unavailable_domain
       end
 
       redirect_to admin_instance_path(@instance.domain)
@@ -45,8 +41,7 @@ module Admin
 
     def stop_delivery
       authorize :delivery, :stop_delivery?
-
-      UnavailableDomain.create(domain: @instance.domain)
+      unavailable_domain = UnavailableDomain.create!(domain: @instance.domain)
       log_action :create, unavailable_domain
       redirect_to admin_instance_path(@instance.domain)
     end
@@ -57,12 +52,11 @@ module Admin
       @instance = Instance.find(params[:id])
     end
 
-    def set_exhausted_deliveries_days
-      @exhausted_deliveries_days = @instance.delivery_failure_tracker.exhausted_deliveries_days
-    end
-
     def set_instances
       @instances = filtered_instances.page(params[:page])
+    end
+
+    def preload_delivery_failures!
       warning_domains_map = DeliveryFailureTracker.warning_domains_map
 
       @instances.each do |instance|
@@ -70,10 +64,6 @@ module Admin
       end
     end
 
-    def unavailable_domain
-      UnavailableDomain.find_by(domain: @instance.domain)
-    end
-
     def filtered_instances
       InstanceFilter.new(whitelist_mode? ? { allowed: true } : filter_params).results
     end
diff --git a/app/controllers/api/v1/emails/confirmations_controller.rb b/app/controllers/api/v1/emails/confirmations_controller.rb
index f1d9954d0..3faaea2fb 100644
--- a/app/controllers/api/v1/emails/confirmations_controller.rb
+++ b/app/controllers/api/v1/emails/confirmations_controller.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 class Api::V1::Emails::ConfirmationsController < Api::BaseController
-  before_action :doorkeeper_authorize!
+  before_action -> { doorkeeper_authorize! :write, :'write:accounts' }
   before_action :require_user_owned_by_application!
   before_action :require_user_not_confirmed!
 
@@ -19,6 +19,6 @@ class Api::V1::Emails::ConfirmationsController < Api::BaseController
   end
 
   def require_user_not_confirmed!
-    render json: { error: 'This method is only available while the e-mail is awaiting confirmation' }, status: :forbidden if current_user.confirmed? || current_user.unconfirmed_email.blank?
+    render json: { error: 'This method is only available while the e-mail is awaiting confirmation' }, status: :forbidden unless !current_user.confirmed? || current_user.unconfirmed_email.present?
   end
 end
diff --git a/app/controllers/api/v1/notifications_controller.rb b/app/controllers/api/v1/notifications_controller.rb
index eefd28d45..c47d6ccfd 100644
--- a/app/controllers/api/v1/notifications_controller.rb
+++ b/app/controllers/api/v1/notifications_controller.rb
@@ -44,13 +44,18 @@ class Api::V1::NotificationsController < Api::BaseController
       limit_param(DEFAULT_NOTIFICATIONS_LIMIT),
       params_slice(:max_id, :since_id, :min_id)
     )
+
     Notification.preload_cache_collection_target_statuses(notifications) do |target_statuses|
       cache_collection(target_statuses, Status)
     end
   end
 
   def browserable_account_notifications
-    current_account.notifications.without_suspended.browserable(exclude_types, from_account)
+    current_account.notifications.without_suspended.browserable(
+      types: Array(browserable_params[:types]),
+      exclude_types: Array(browserable_params[:exclude_types]),
+      from_account_id: browserable_params[:account_id]
+    )
   end
 
   def target_statuses_from_notifications
@@ -81,17 +86,11 @@ class Api::V1::NotificationsController < Api::BaseController
     @notifications.first.id
   end
 
-  def exclude_types
-    val = params.permit(exclude_types: [])[:exclude_types] || []
-    val = [val] unless val.is_a?(Enumerable)
-    val
-  end
-
-  def from_account
-    params[:account_id]
+  def browserable_params
+    params.permit(:account_id, types: [], exclude_types: [])
   end
 
   def pagination_params(core_params)
-    params.slice(:limit, :exclude_types).permit(:limit, exclude_types: []).merge(core_params)
+    params.slice(:limit, :account_id, :types, :exclude_types).permit(:limit, :account_id, types: [], exclude_types: []).merge(core_params)
   end
 end
diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb
index ddd7c33ae..7de446ac4 100644
--- a/app/controllers/api/v1/statuses_controller.rb
+++ b/app/controllers/api/v1/statuses_controller.rb
@@ -10,6 +10,7 @@ class Api::V1::StatusesController < Api::BaseController
   before_action :set_thread, only:       [:create]
 
   override_rate_limit_headers :create, family: :statuses
+  override_rate_limit_headers :update, family: :statuses
 
   # This API was originally unlimited, pagination cannot be introduced without
   # breaking backwards-compatibility. Arbitrarily high number to cover most
diff --git a/app/controllers/auth/omniauth_callbacks_controller.rb b/app/controllers/auth/omniauth_callbacks_controller.rb
index 991a50b03..f9cf6d655 100644
--- a/app/controllers/auth/omniauth_callbacks_controller.rb
+++ b/app/controllers/auth/omniauth_callbacks_controller.rb
@@ -4,8 +4,6 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
   skip_before_action :verify_authenticity_token
 
   def self.provides_callback_for(provider)
-    provider_id = provider.to_s.chomp '_oauth2'
-
     define_method provider do
       @user = User.find_for_oauth(request.env['omniauth.auth'], current_user)
 
@@ -20,7 +18,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
         )
 
         sign_in_and_redirect @user, event: :authentication
-        set_flash_message(:notice, :success, kind: provider_id.capitalize) if is_navigational_format?
+        set_flash_message(:notice, :success, kind: Devise.omniauth_configs[provider].strategy.display_name.capitalize) if is_navigational_format?
       else
         session["devise.#{provider}_data"] = request.env['omniauth.auth']
         redirect_to new_user_registration_url
@@ -33,7 +31,7 @@ class Auth::OmniauthCallbacksController < Devise::OmniauthCallbacksController
   end
 
   def after_sign_in_path_for(resource)
-    if resource.email_verified?
+    if resource.email_present?
       root_path
     else
       auth_setup_path(missing_email: '1')
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 818253e86..eace78af6 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -9,9 +9,9 @@ module ApplicationHelper
 
   RTL_LOCALES = %i(
     ar
+    ckb
     fa
     he
-    ku
   ).freeze
 
   def friendly_number_to_human(number, **options)
diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb
index c6557817d..102e4b132 100644
--- a/app/helpers/jsonld_helper.rb
+++ b/app/helpers/jsonld_helper.rb
@@ -15,6 +15,14 @@ module JsonLdHelper
     value.is_a?(Array) ? value.first : value
   end
 
+  def uri_from_bearcap(str)
+    if str&.start_with?('bear:')
+      Addressable::URI.parse(str).query_values['u']
+    else
+      str
+    end
+  end
+
   # The url attribute can be a string, an array of strings, or an array of objects.
   # The objects could include a mimeType. Not-included mimeType means it's text/html.
   def url_to_href(value, preferred_type = nil)
@@ -54,7 +62,7 @@ module JsonLdHelper
   end
 
   def unsupported_uri_scheme?(uri)
-    !uri.start_with?('http://', 'https://')
+    uri.nil? || !uri.start_with?('http://', 'https://')
   end
 
   def invalid_origin?(url)
diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb
index 626987561..cbda21b2a 100644
--- a/app/helpers/languages_helper.rb
+++ b/app/helpers/languages_helper.rb
@@ -88,7 +88,7 @@ module LanguagesHelper
     ko: ['Korean', '한국어'].freeze,
     kr: ['Kanuri', 'Kanuri'].freeze,
     ks: ['Kashmiri', 'कश्मीरी'].freeze,
-    ku: ['Kurdish', 'Kurdî'].freeze,
+    ku: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze,
     kv: ['Komi', 'коми кыв'].freeze,
     kw: ['Cornish', 'Kernewek'].freeze,
     ky: ['Kyrgyz', 'Кыргызча'].freeze,
@@ -108,7 +108,7 @@ module LanguagesHelper
     ml: ['Malayalam', 'മലയാളം'].freeze,
     mn: ['Mongolian', 'Монгол хэл'].freeze,
     mr: ['Marathi', 'मराठी'].freeze,
-    ms: ['Malay', 'Bahasa Malaysia'].freeze,
+    ms: ['Malay', 'Bahasa Melayu'].freeze,
     mt: ['Maltese', 'Malti'].freeze,
     my: ['Burmese', 'ဗမာစာ'].freeze,
     na: ['Nauru', 'Ekakairũ Naoero'].freeze,
@@ -117,7 +117,7 @@ module LanguagesHelper
     ne: ['Nepali', 'नेपाली'].freeze,
     ng: ['Ndonga', 'Owambo'].freeze,
     nl: ['Dutch', 'Nederlands'].freeze,
-    nn: ['Norwegian Nynorsk', 'Norsk nynorsk'].freeze,
+    nn: ['Norwegian Nynorsk', 'Norsk Nynorsk'].freeze,
     no: ['Norwegian', 'Norsk'].freeze,
     nr: ['Southern Ndebele', 'isiNdebele'].freeze,
     nv: ['Navajo', 'Diné bizaad'].freeze,
@@ -188,8 +188,9 @@ module LanguagesHelper
 
   ISO_639_3 = {
     ast: ['Asturian', 'Asturianu'].freeze,
+    ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze,
     kab: ['Kabyle', 'Taqbaylit'].freeze,
-    kmr: ['Northern Kurdish', 'Kurmancî'].freeze,
+    kmr: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze,
     zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze,
   }.freeze
   
@@ -245,6 +246,15 @@ module LanguagesHelper
     code
   end
 
+  def valid_locale_cascade(*arr)
+    arr.each do |str|
+      locale = valid_locale_or_nil(str)
+      return locale if locale.present?
+    end
+
+    nil
+  end
+
   def valid_locale?(locale)
     locale.present? && SUPPORTED_LOCALES.key?(locale.to_sym)
   end
diff --git a/app/helpers/statuses_helper.rb b/app/helpers/statuses_helper.rb
index 25f079e9d..d328f89b7 100644
--- a/app/helpers/statuses_helper.rb
+++ b/app/helpers/statuses_helper.rb
@@ -132,7 +132,7 @@ module StatusesHelper
   end
 
   def render_video_component(status, **options)
-    video = status.media_attachments.first
+    video = status.ordered_media_attachments.first
 
     meta = video.file.meta || {}
 
@@ -150,12 +150,12 @@ module StatusesHelper
     }.merge(**options)
 
     react_component :video, component_params do
-      render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+      render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
     end
   end
 
   def render_audio_component(status, **options)
-    audio = status.media_attachments.first
+    audio = status.ordered_media_attachments.first
 
     meta = audio.file.meta || {}
 
@@ -170,7 +170,7 @@ module StatusesHelper
     }.merge(**options)
 
     react_component :audio, component_params do
-      render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+      render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
     end
   end
 
@@ -178,11 +178,11 @@ module StatusesHelper
     component_params = {
       sensitive: sensitized?(status, current_account),
       autoplay: prefers_autoplay?,
-      media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json },
+      media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json },
     }.merge(**options)
 
     react_component :media_gallery, component_params do
-      render partial: 'statuses/attachment_list', locals: { attachments: status.media_attachments }
+      render partial: 'statuses/attachment_list', locals: { attachments: status.ordered_media_attachments }
     end
   end
 
diff --git a/app/javascript/flavours/glitch/components/admin/Counter.js b/app/javascript/flavours/glitch/components/admin/Counter.js
index 2bc9ce482..ecb242950 100644
--- a/app/javascript/flavours/glitch/components/admin/Counter.js
+++ b/app/javascript/flavours/glitch/components/admin/Counter.js
@@ -68,12 +68,12 @@ export default class Counter extends React.PureComponent {
       );
     } else {
       const measure = data[0];
-      const percentChange = percIncrease(measure.previous_total * 1, measure.total * 1);
+      const percentChange = measure.previous_total && percIncrease(measure.previous_total * 1, measure.total * 1);
 
       content = (
         <React.Fragment>
-          <span className='sparkline__value__total'><FormattedNumber value={measure.total} /></span>
-          <span className={classNames('sparkline__value__change', { positive: percentChange > 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'}<FormattedNumber value={percentChange} style='percent' /></span>
+          <span className='sparkline__value__total'>{measure.human_value || <FormattedNumber value={measure.total} />}</span>
+          {measure.previous_total && (<span className={classNames('sparkline__value__change', { positive: percentChange > 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'}<FormattedNumber value={percentChange} style='percent' /></span>)}
         </React.Fragment>
       );
     }
diff --git a/app/javascript/flavours/glitch/components/media_attachments.js b/app/javascript/flavours/glitch/components/media_attachments.js
new file mode 100644
index 000000000..c8d133f09
--- /dev/null
+++ b/app/javascript/flavours/glitch/components/media_attachments.js
@@ -0,0 +1,119 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import { MediaGallery, Video, Audio } from 'flavours/glitch/util/async-components';
+import Bundle from 'flavours/glitch/features/ui/components/bundle';
+import noop from 'lodash/noop';
+
+export default class MediaAttachments extends ImmutablePureComponent {
+
+  static propTypes = {
+    status: ImmutablePropTypes.map.isRequired,
+    height: PropTypes.number,
+    width: PropTypes.number,
+    revealed: PropTypes.bool,
+  };
+
+  static defaultProps = {
+    height: 110,
+    width: 239,
+  };
+
+  updateOnProps = [
+    'status',
+  ];
+
+  renderLoadingMediaGallery = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='media-gallery' style={{ height, width }} />
+    );
+  }
+
+  renderLoadingVideoPlayer = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='video-player' style={{ height, width }} />
+    );
+  }
+
+  renderLoadingAudioPlayer = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='audio-player' style={{ height, width }} />
+    );
+  }
+
+  render () {
+    const { status, width, height, revealed } = this.props;
+    const mediaAttachments = status.get('media_attachments');
+
+    if (mediaAttachments.size === 0) {
+      return null;
+    }
+
+    if (mediaAttachments.getIn([0, 'type']) === 'audio') {
+      const audio = mediaAttachments.get(0);
+
+      return (
+        <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} >
+          {Component => (
+            <Component
+              src={audio.get('url')}
+              alt={audio.get('description')}
+              width={width}
+              height={height}
+              poster={audio.get('preview_url') || status.getIn(['account', 'avatar_static'])}
+              backgroundColor={audio.getIn(['meta', 'colors', 'background'])}
+              foregroundColor={audio.getIn(['meta', 'colors', 'foreground'])}
+              accentColor={audio.getIn(['meta', 'colors', 'accent'])}
+              duration={audio.getIn(['meta', 'original', 'duration'], 0)}
+            />
+          )}
+        </Bundle>
+      );
+    } else if (mediaAttachments.getIn([0, 'type']) === 'video') {
+      const video = mediaAttachments.get(0);
+
+      return (
+        <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >
+          {Component => (
+            <Component
+              preview={video.get('preview_url')}
+              frameRate={video.getIn(['meta', 'original', 'frame_rate'])}
+              blurhash={video.get('blurhash')}
+              src={video.get('url')}
+              alt={video.get('description')}
+              width={width}
+              height={height}
+              inline
+              sensitive={status.get('sensitive')}
+              revealed={revealed}
+              onOpenVideo={noop}
+            />
+          )}
+        </Bundle>
+      );
+    } else {
+      return (
+        <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
+          {Component => (
+            <Component
+              media={mediaAttachments}
+              sensitive={status.get('sensitive')}
+              defaultWidth={width}
+              revealed={revealed}
+              height={height}
+              onOpenMedia={noop}
+            />
+          )}
+        </Bundle>
+      );
+    }
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.js b/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.js
index 142118cef..ede8907e5 100644
--- a/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.js
+++ b/app/javascript/flavours/glitch/features/hashtag_timeline/components/column_settings.js
@@ -40,7 +40,17 @@ class ColumnSettings extends React.PureComponent {
     }
   };
 
-  onSelect = mode => value => this.props.onChange(['tags', mode], value);
+  onSelect = mode => value => {
+    const oldValue = this.tags(mode);
+
+    // Prevent changes that add more than 4 tags, but allow removing
+    // tags that were already added before
+    if ((value.length > 4) && !(value < oldValue)) {
+      return;
+    }
+
+    this.props.onChange(['tags', mode], value);
+  };
 
   onToggle = () => {
     if (this.state.open && this.hasTags()) {
diff --git a/app/javascript/flavours/glitch/features/report/components/status_check_box.js b/app/javascript/flavours/glitch/features/report/components/status_check_box.js
index adb5e77a7..76bf0eb85 100644
--- a/app/javascript/flavours/glitch/features/report/components/status_check_box.js
+++ b/app/javascript/flavours/glitch/features/report/components/status_check_box.js
@@ -1,14 +1,12 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import ImmutablePropTypes from 'react-immutable-proptypes';
-import noop from 'lodash/noop';
 import StatusContent from 'flavours/glitch/components/status_content';
-import { MediaGallery, Video } from 'flavours/glitch/util/async-components';
-import Bundle from 'flavours/glitch/features/ui/components/bundle';
 import Avatar from 'flavours/glitch/components/avatar';
 import DisplayName from 'flavours/glitch/components/display_name';
 import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp';
 import Option from './option';
+import MediaAttachments from 'flavours/glitch/components/media_attachments';
 
 export default class StatusCheckBox extends React.PureComponent {
 
@@ -27,53 +25,10 @@ export default class StatusCheckBox extends React.PureComponent {
   render () {
     const { status, checked } = this.props;
 
-    let media = null;
-
     if (status.get('reblog')) {
       return null;
     }
 
-    if (status.get('media_attachments').size > 0) {
-      if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {
-
-      } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
-        const video = status.getIn(['media_attachments', 0]);
-
-        media = (
-          <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >
-            {Component => (
-              <Component
-                preview={video.get('preview_url')}
-                blurhash={video.get('blurhash')}
-                src={video.get('url')}
-                alt={video.get('description')}
-                width={239}
-                height={110}
-                inline
-                sensitive={status.get('sensitive')}
-                revealed={false}
-                onOpenVideo={noop}
-              />
-            )}
-          </Bundle>
-        );
-      } else {
-        media = (
-          <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
-            {Component => (
-              <Component
-                media={status.get('media_attachments')}
-                sensitive={status.get('sensitive')}
-                revealed={false}
-                height={110}
-                onOpenMedia={noop}
-              />
-            )}
-          </Bundle>
-        );
-      }
-    }
-
     const labelComponent = (
       <div className='status-check-box__status poll__option__text'>
         <div className='detailed-status__display-name'>
@@ -84,7 +39,7 @@ export default class StatusCheckBox extends React.PureComponent {
           <div><DisplayName account={status.get('account')} /> · <RelativeTimestamp timestamp={status.get('created_at')} /></div>
         </div>
 
-        <StatusContent status={status} media={media} />
+        <StatusContent status={status} media={<MediaAttachments status={status} revealed={false} />} />
       </div>
     );
 
diff --git a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js
index 198443221..8fd528da0 100644
--- a/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js
+++ b/app/javascript/flavours/glitch/features/ui/components/compare_history_modal.js
@@ -9,6 +9,7 @@ import escapeTextContentForBrowser from 'escape-html';
 import InlineAccount from 'flavours/glitch/components/inline_account';
 import IconButton from 'flavours/glitch/components/icon_button';
 import RelativeTimestamp from 'flavours/glitch/components/relative_timestamp';
+import MediaAttachments from 'flavours/glitch/components/media_attachments';
 
 const mapStateToProps = (state, { statusId }) => ({
   versions: state.getIn(['history', statusId, 'items']),
@@ -70,6 +71,25 @@ class CompareHistoryModal extends React.PureComponent {
             )}
 
             <div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} />
+
+            {!!currentVersion.get('poll') && (
+              <div className='poll'>
+                <ul>
+                  {currentVersion.getIn(['poll', 'options']).map(option => (
+                    <li key={option.get('title')}>
+                      <span className='poll__input disabled' />
+
+                      <span
+                        className='poll__option__text translate'
+                        dangerouslySetInnerHTML={{ __html: emojify(escapeTextContentForBrowser(option.get('title')), emojiMap) }}
+                      />
+                    </li>
+                  ))}
+                </ul>
+              </div>
+            )}
+
+            <MediaAttachments status={currentVersion} />
           </div>
         </div>
       </div>
diff --git a/app/javascript/flavours/glitch/locales/af.js b/app/javascript/flavours/glitch/locales/af.js
new file mode 100644
index 000000000..4c97b644a
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/af.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/af.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/ckb.js b/app/javascript/flavours/glitch/locales/ckb.js
new file mode 100644
index 000000000..c2e177d5f
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/ckb.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/ckb.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/es-MX.js b/app/javascript/flavours/glitch/locales/es-MX.js
new file mode 100644
index 000000000..eaefa20ef
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/es-MX.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/es-MX.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/gd.js b/app/javascript/flavours/glitch/locales/gd.js
new file mode 100644
index 000000000..604ee86dc
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/gd.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/gd.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/kw.js b/app/javascript/flavours/glitch/locales/kw.js
new file mode 100644
index 000000000..1325ca825
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/kw.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/kw.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/pa.js b/app/javascript/flavours/glitch/locales/pa.js
new file mode 100644
index 000000000..c3e0e2b84
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/pa.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/pa.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/si.js b/app/javascript/flavours/glitch/locales/si.js
new file mode 100644
index 000000000..d43266254
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/si.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/si.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/szl.js b/app/javascript/flavours/glitch/locales/szl.js
new file mode 100644
index 000000000..0b50afe45
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/szl.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/szl.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/tai.js b/app/javascript/flavours/glitch/locales/tai.js
new file mode 100644
index 000000000..f26cec5bd
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/tai.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/tai.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/tt.js b/app/javascript/flavours/glitch/locales/tt.js
new file mode 100644
index 000000000..ff74f6c29
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/tt.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/tt.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/locales/ug.js b/app/javascript/flavours/glitch/locales/ug.js
new file mode 100644
index 000000000..ab7ee0761
--- /dev/null
+++ b/app/javascript/flavours/glitch/locales/ug.js
@@ -0,0 +1,7 @@
+import inherited from 'mastodon/locales/ug.json';
+
+const messages = {
+  //  No translations available.
+};
+
+export default Object.assign({}, inherited, messages);
diff --git a/app/javascript/flavours/glitch/styles/admin.scss b/app/javascript/flavours/glitch/styles/admin.scss
index 0873ac300..40cd899b3 100644
--- a/app/javascript/flavours/glitch/styles/admin.scss
+++ b/app/javascript/flavours/glitch/styles/admin.scss
@@ -367,6 +367,21 @@ body,
     }
   }
 
+  .positive-hint,
+  .negative-hint,
+  .neutral-hint {
+    a {
+      color: inherit;
+      text-decoration: underline;
+
+      &:focus,
+      &:hover,
+      &:active {
+        text-decoration: none;
+      }
+    }
+  }
+
   .positive-hint {
     color: $valid-value-color;
     font-weight: 500;
@@ -1612,3 +1627,38 @@ a.sparkline {
     }
   }
 }
+
+.availability-indicator {
+  display: flex;
+  align-items: center;
+  margin-bottom: 30px;
+  font-size: 14px;
+  line-height: 21px;
+
+  &__hint {
+    padding: 0 15px;
+  }
+
+  &__graphic {
+    display: flex;
+    margin: 0 -2px;
+
+    &__item {
+      display: block;
+      flex: 0 0 auto;
+      width: 4px;
+      height: 21px;
+      background: lighten($ui-base-color, 8%);
+      margin: 0 2px;
+      border-radius: 2px;
+
+      &.positive {
+        background: $valid-value-color;
+      }
+
+      &.negative {
+        background: $error-value-color;
+      }
+    }
+  }
+}
diff --git a/app/javascript/flavours/glitch/styles/components/index.scss b/app/javascript/flavours/glitch/styles/components/index.scss
index 7364eba91..016e31c63 100644
--- a/app/javascript/flavours/glitch/styles/components/index.scss
+++ b/app/javascript/flavours/glitch/styles/components/index.scss
@@ -1563,41 +1563,6 @@ button.icon-button.active i.fa-retweet {
   filter: none;
 }
 
-.compare-history-modal {
-  .report-modal__target {
-    border-bottom: 1px solid $ui-secondary-color;
-  }
-
-  &__container {
-    padding: 30px;
-    pointer-events: all;
-  }
-
-  .status__content {
-    color: $inverted-text-color;
-    font-size: 19px;
-    line-height: 24px;
-
-    .emojione {
-      width: 24px;
-      height: 24px;
-      margin: -1px 0 0;
-    }
-
-    a {
-      color: $highlight-text-color;
-    }
-
-    hr {
-      height: 0.25rem;
-      padding: 0;
-      background-color: $ui-secondary-color;
-      border: 0;
-      margin: 20px 0;
-    }
-  }
-}
-
 .loading-bar {
   background-color: $ui-highlight-color;
   height: 3px;
diff --git a/app/javascript/flavours/glitch/styles/components/modal.scss b/app/javascript/flavours/glitch/styles/components/modal.scss
index ae1afc320..7e6918356 100644
--- a/app/javascript/flavours/glitch/styles/components/modal.scss
+++ b/app/javascript/flavours/glitch/styles/components/modal.scss
@@ -1041,6 +1041,47 @@
   }
 }
 
+.compare-history-modal {
+  .report-modal__target {
+    border-bottom: 1px solid $ui-secondary-color;
+  }
+
+  &__container {
+    padding: 30px;
+    pointer-events: all;
+  }
+
+  .status__content {
+    color: $inverted-text-color;
+    font-size: 19px;
+    line-height: 24px;
+
+    .emojione {
+      width: 24px;
+      height: 24px;
+      margin: -1px 0 0;
+    }
+
+    a {
+      color: $highlight-text-color;
+    }
+
+    hr {
+      height: 0.25rem;
+      padding: 0;
+      background-color: $ui-secondary-color;
+      border: 0;
+      margin: 20px 0;
+    }
+  }
+
+  .media-gallery,
+  .audio-player,
+  .video-player {
+    margin-top: 15px;
+  }
+}
+
 .embed-modal {
   width: auto;
   max-width: 80vw;
diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss
index 77541ab74..b9dd3107b 100644
--- a/app/javascript/flavours/glitch/styles/components/status.scss
+++ b/app/javascript/flavours/glitch/styles/components/status.scss
@@ -542,7 +542,7 @@
   .media-gallery,
   .audio-player,
   .video-player {
-    margin-top: 8px;
+    margin-top: 15px;
     max-width: 250px;
   }
 
diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
index 8f5309f2b..020d39aff 100644
--- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
+++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
@@ -116,7 +116,8 @@
 }
 
 .dropdown-menu__item {
-  a {
+  a,
+  button {
     background: $ui-base-color;
     color: $ui-secondary-color;
   }
@@ -172,7 +173,15 @@
   }
 }
 
-.dropdown-menu__separator {
+.dropdown-menu__separator,
+.dropdown-menu__item.edited-timestamp__history__item,
+.dropdown-menu__container__header,
+.compare-history-modal .report-modal__target,
+.report-dialog-modal .poll__option.dialog-option {
+  border-bottom-color: lighten($ui-base-color, 12%);
+}
+
+.report-dialog-modal__container {
   border-bottom-color: lighten($ui-base-color, 12%);
 }
 
@@ -229,15 +238,22 @@
 .mute-modal,
 .block-modal,
 .report-modal,
+.report-dialog-modal,
 .embed-modal,
 .error-modal,
 .onboarding-modal,
+.compare-history-modal,
 .report-modal__comment .setting-text__wrapper,
-.report-modal__comment .setting-text {
+.report-modal__comment .setting-text,
+.report-dialog-modal__textarea {
   background: $white;
   border: 1px solid lighten($ui-base-color, 8%);
 }
 
+.report-dialog-modal .dialog-option .poll__input {
+  color: $white;
+}
+
 .report-modal__comment {
   border-right-color: lighten($ui-base-color, 8%);
 }
diff --git a/app/javascript/flavours/glitch/styles/tables.scss b/app/javascript/flavours/glitch/styles/tables.scss
index 8b5933b7b..598c67034 100644
--- a/app/javascript/flavours/glitch/styles/tables.scss
+++ b/app/javascript/flavours/glitch/styles/tables.scss
@@ -65,6 +65,24 @@
     }
   }
 
+  &.horizontal-table {
+    border-collapse: collapse;
+    border-style: hidden;
+
+    & > tbody > tr > th,
+    & > tbody > tr > td {
+      padding: 11px 10px;
+      background: transparent;
+      border: 1px solid lighten($ui-base-color, 8%);
+      color: $secondary-text-color;
+    }
+
+    & > tbody > tr > th {
+      color: $darker-text-color;
+      font-weight: 600;
+    }
+  }
+
   &.batch-table {
     & > thead > tr > th {
       background: $ui-base-color;
diff --git a/app/javascript/mastodon/components/admin/Counter.js b/app/javascript/mastodon/components/admin/Counter.js
index 047e864b2..6edb7bcfc 100644
--- a/app/javascript/mastodon/components/admin/Counter.js
+++ b/app/javascript/mastodon/components/admin/Counter.js
@@ -68,12 +68,12 @@ export default class Counter extends React.PureComponent {
       );
     } else {
       const measure = data[0];
-      const percentChange = percIncrease(measure.previous_total * 1, measure.total * 1);
+      const percentChange = measure.previous_total && percIncrease(measure.previous_total * 1, measure.total * 1);
 
       content = (
         <React.Fragment>
-          <span className='sparkline__value__total'><FormattedNumber value={measure.total} /></span>
-          <span className={classNames('sparkline__value__change', { positive: percentChange > 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'}<FormattedNumber value={percentChange} style='percent' /></span>
+          <span className='sparkline__value__total'>{measure.human_value || <FormattedNumber value={measure.total} />}</span>
+          {measure.previous_total && (<span className={classNames('sparkline__value__change', { positive: percentChange > 0, negative: percentChange < 0 })}>{percentChange > 0 && '+'}<FormattedNumber value={percentChange} style='percent' /></span>)}
         </React.Fragment>
       );
     }
diff --git a/app/javascript/mastodon/components/media_attachments.js b/app/javascript/mastodon/components/media_attachments.js
new file mode 100644
index 000000000..d27720de4
--- /dev/null
+++ b/app/javascript/mastodon/components/media_attachments.js
@@ -0,0 +1,116 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import ImmutablePureComponent from 'react-immutable-pure-component';
+import { MediaGallery, Video, Audio } from 'mastodon/features/ui/util/async-components';
+import Bundle from 'mastodon/features/ui/components/bundle';
+import noop from 'lodash/noop';
+
+export default class MediaAttachments extends ImmutablePureComponent {
+
+  static propTypes = {
+    status: ImmutablePropTypes.map.isRequired,
+    height: PropTypes.number,
+    width: PropTypes.number,
+  };
+
+  static defaultProps = {
+    height: 110,
+    width: 239,
+  };
+
+  updateOnProps = [
+    'status',
+  ];
+
+  renderLoadingMediaGallery = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='media-gallery' style={{ height, width }} />
+    );
+  }
+
+  renderLoadingVideoPlayer = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='video-player' style={{ height, width }} />
+    );
+  }
+
+  renderLoadingAudioPlayer = () => {
+    const { height, width } = this.props;
+
+    return (
+      <div className='audio-player' style={{ height, width }} />
+    );
+  }
+
+  render () {
+    const { status, width, height } = this.props;
+    const mediaAttachments = status.get('media_attachments');
+
+    if (mediaAttachments.size === 0) {
+      return null;
+    }
+
+    if (mediaAttachments.getIn([0, 'type']) === 'audio') {
+      const audio = mediaAttachments.get(0);
+
+      return (
+        <Bundle fetchComponent={Audio} loading={this.renderLoadingAudioPlayer} >
+          {Component => (
+            <Component
+              src={audio.get('url')}
+              alt={audio.get('description')}
+              width={width}
+              height={height}
+              poster={audio.get('preview_url') || status.getIn(['account', 'avatar_static'])}
+              backgroundColor={audio.getIn(['meta', 'colors', 'background'])}
+              foregroundColor={audio.getIn(['meta', 'colors', 'foreground'])}
+              accentColor={audio.getIn(['meta', 'colors', 'accent'])}
+              duration={audio.getIn(['meta', 'original', 'duration'], 0)}
+            />
+          )}
+        </Bundle>
+      );
+    } else if (mediaAttachments.getIn([0, 'type']) === 'video') {
+      const video = mediaAttachments.get(0);
+
+      return (
+        <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >
+          {Component => (
+            <Component
+              preview={video.get('preview_url')}
+              frameRate={video.getIn(['meta', 'original', 'frame_rate'])}
+              blurhash={video.get('blurhash')}
+              src={video.get('url')}
+              alt={video.get('description')}
+              width={width}
+              height={height}
+              inline
+              sensitive={status.get('sensitive')}
+              onOpenVideo={noop}
+            />
+          )}
+        </Bundle>
+      );
+    } else {
+      return (
+        <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
+          {Component => (
+            <Component
+              media={mediaAttachments}
+              sensitive={status.get('sensitive')}
+              defaultWidth={width}
+              height={height}
+              onOpenMedia={noop}
+            />
+          )}
+        </Bundle>
+      );
+    }
+  }
+
+}
diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js
index ddacf5812..8082f2d99 100644
--- a/app/javascript/mastodon/features/explore/index.js
+++ b/app/javascript/mastodon/features/explore/index.js
@@ -56,7 +56,7 @@ class Explore extends React.PureComponent {
           </div>
         ) : (
           <ColumnHeader
-            icon={isSearching ? 'search' : 'globe'}
+            icon={isSearching ? 'search' : 'hashtag'}
             title={intl.formatMessage(isSearching ? messages.searchResults : messages.title)}
             onClick={this.handleHeaderClick}
             multiColumn={multiColumn}
diff --git a/app/javascript/mastodon/features/getting_started/index.js b/app/javascript/mastodon/features/getting_started/index.js
index 07572c530..a9000a3d9 100644
--- a/app/javascript/mastodon/features/getting_started/index.js
+++ b/app/javascript/mastodon/features/getting_started/index.js
@@ -21,6 +21,7 @@ const messages = defineMessages({
   public_timeline: { id: 'navigation_bar.public_timeline', defaultMessage: 'Federated timeline' },
   settings_subheading: { id: 'column_subheading.settings', defaultMessage: 'Settings' },
   community_timeline: { id: 'navigation_bar.community_timeline', defaultMessage: 'Local timeline' },
+  explore: { id: 'navigation_bar.explore', defaultMessage: 'Explore' },
   direct: { id: 'navigation_bar.direct', defaultMessage: 'Direct messages' },
   bookmarks: { id: 'navigation_bar.bookmarks', defaultMessage: 'Bookmarks' },
   preferences: { id: 'navigation_bar.preferences', defaultMessage: 'Preferences' },
@@ -97,11 +98,22 @@ class GettingStarted extends ImmutablePureComponent {
     if (multiColumn) {
       navItems.push(
         <ColumnSubheading key='header-discover' text={intl.formatMessage(messages.discover)} />,
+      );
+      height += 34;
+    }
+
+    navItems.push(
+      <ColumnLink key='explore' icon='hashtag' text={intl.formatMessage(messages.explore)} to='/explore' />,
+    );
+    height += 48;
+
+    if (multiColumn) {
+      navItems.push(
         <ColumnLink key='community_timeline' icon='users' text={intl.formatMessage(messages.community_timeline)} to='/public/local' />,
         <ColumnLink key='public_timeline' icon='globe' text={intl.formatMessage(messages.public_timeline)} to='/public' />,
       );
 
-      height += 34 + 48*2;
+      height += 48*2;
 
       navItems.push(
         <ColumnSubheading key='header-personal' text={intl.formatMessage(messages.personal)} />,
diff --git a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js
index 142118cef..ede8907e5 100644
--- a/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js
+++ b/app/javascript/mastodon/features/hashtag_timeline/components/column_settings.js
@@ -40,7 +40,17 @@ class ColumnSettings extends React.PureComponent {
     }
   };
 
-  onSelect = mode => value => this.props.onChange(['tags', mode], value);
+  onSelect = mode => value => {
+    const oldValue = this.tags(mode);
+
+    // Prevent changes that add more than 4 tags, but allow removing
+    // tags that were already added before
+    if ((value.length > 4) && !(value < oldValue)) {
+      return;
+    }
+
+    this.props.onChange(['tags', mode], value);
+  };
 
   onToggle = () => {
     if (this.state.open && this.hasTags()) {
diff --git a/app/javascript/mastodon/features/report/components/status_check_box.js b/app/javascript/mastodon/features/report/components/status_check_box.js
index a2eb3d6f5..373c60e21 100644
--- a/app/javascript/mastodon/features/report/components/status_check_box.js
+++ b/app/javascript/mastodon/features/report/components/status_check_box.js
@@ -1,14 +1,12 @@
 import React from 'react';
 import PropTypes from 'prop-types';
 import ImmutablePropTypes from 'react-immutable-proptypes';
-import noop from 'lodash/noop';
 import StatusContent from 'mastodon/components/status_content';
-import { MediaGallery, Video } from 'mastodon/features/ui/util/async-components';
-import Bundle from 'mastodon/features/ui/components/bundle';
 import Avatar from 'mastodon/components/avatar';
 import DisplayName from 'mastodon/components/display_name';
 import RelativeTimestamp from 'mastodon/components/relative_timestamp';
 import Option from './option';
+import MediaAttachments from 'mastodon/components/media_attachments';
 
 export default class StatusCheckBox extends React.PureComponent {
 
@@ -27,51 +25,10 @@ export default class StatusCheckBox extends React.PureComponent {
   render () {
     const { status, checked } = this.props;
 
-    let media = null;
-
     if (status.get('reblog')) {
       return null;
     }
 
-    if (status.get('media_attachments').size > 0) {
-      if (status.get('media_attachments').some(item => item.get('type') === 'unknown')) {
-
-      } else if (status.getIn(['media_attachments', 0, 'type']) === 'video') {
-        const video = status.getIn(['media_attachments', 0]);
-
-        media = (
-          <Bundle fetchComponent={Video} loading={this.renderLoadingVideoPlayer} >
-            {Component => (
-              <Component
-                preview={video.get('preview_url')}
-                blurhash={video.get('blurhash')}
-                src={video.get('url')}
-                alt={video.get('description')}
-                width={239}
-                height={110}
-                inline
-                sensitive={status.get('sensitive')}
-                onOpenVideo={noop}
-              />
-            )}
-          </Bundle>
-        );
-      } else {
-        media = (
-          <Bundle fetchComponent={MediaGallery} loading={this.renderLoadingMediaGallery} >
-            {Component => (
-              <Component
-                media={status.get('media_attachments')}
-                sensitive={status.get('sensitive')}
-                height={110}
-                onOpenMedia={noop}
-              />
-            )}
-          </Bundle>
-        );
-      }
-    }
-
     const labelComponent = (
       <div className='status-check-box__status poll__option__text'>
         <div className='detailed-status__display-name'>
@@ -79,12 +36,13 @@ export default class StatusCheckBox extends React.PureComponent {
             <Avatar account={status.get('account')} size={46} />
           </div>
 
-          <div><DisplayName account={status.get('account')} /> · <RelativeTimestamp timestamp={status.get('created_at')} /></div>
+          <div>
+            <DisplayName account={status.get('account')} /> · <RelativeTimestamp timestamp={status.get('created_at')} />
+          </div>
         </div>
 
         <StatusContent status={status} />
-
-        {media}
+        <MediaAttachments status={status} />
       </div>
     );
 
diff --git a/app/javascript/mastodon/features/ui/components/compare_history_modal.js b/app/javascript/mastodon/features/ui/components/compare_history_modal.js
index 40cfba335..ecccc8f7d 100644
--- a/app/javascript/mastodon/features/ui/components/compare_history_modal.js
+++ b/app/javascript/mastodon/features/ui/components/compare_history_modal.js
@@ -9,6 +9,7 @@ import escapeTextContentForBrowser from 'escape-html';
 import InlineAccount from 'mastodon/components/inline_account';
 import IconButton from 'mastodon/components/icon_button';
 import RelativeTimestamp from 'mastodon/components/relative_timestamp';
+import MediaAttachments from 'mastodon/components/media_attachments';
 
 const mapStateToProps = (state, { statusId }) => ({
   versions: state.getIn(['history', statusId, 'items']),
@@ -70,6 +71,25 @@ class CompareHistoryModal extends React.PureComponent {
             )}
 
             <div className='status__content__text status__content__text--visible translate' dangerouslySetInnerHTML={content} />
+
+            {!!currentVersion.get('poll') && (
+              <div className='poll'>
+                <ul>
+                  {currentVersion.getIn(['poll', 'options']).map(option => (
+                    <li key={option.get('title')}>
+                      <span className='poll__input disabled' />
+
+                      <span
+                        className='poll__option__text translate'
+                        dangerouslySetInnerHTML={{ __html: emojify(escapeTextContentForBrowser(option.get('title')), emojiMap) }}
+                      />
+                    </li>
+                  ))}
+                </ul>
+              </div>
+            )}
+
+            <MediaAttachments status={currentVersion} />
           </div>
         </div>
       </div>
diff --git a/app/javascript/mastodon/features/ui/components/navigation_panel.js b/app/javascript/mastodon/features/ui/components/navigation_panel.js
index 51a0757bc..eb42115b7 100644
--- a/app/javascript/mastodon/features/ui/components/navigation_panel.js
+++ b/app/javascript/mastodon/features/ui/components/navigation_panel.js
@@ -13,7 +13,7 @@ const NavigationPanel = () => (
     <NavLink className='column-link column-link--transparent' to='/home' data-preview-title-id='column.home' data-preview-icon='home' ><Icon className='column-link__icon' id='home' fixedWidth /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>
     <NavLink className='column-link column-link--transparent' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon className='column-link__icon' /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>
     <FollowRequestsNavLink />
-    <NavLink className='column-link column-link--transparent' to='/explore' data-preview-title-id='explore.title' data-preview-icon='globe'><Icon className='column-link__icon' id='globe' fixedWidth /><FormattedMessage id='explore.title' defaultMessage='Explore' /></NavLink>
+    <NavLink className='column-link column-link--transparent' to='/explore' data-preview-title-id='explore.title' data-preview-icon='hashtag'><Icon className='column-link__icon' id='hashtag' fixedWidth /><FormattedMessage id='explore.title' defaultMessage='Explore' /></NavLink>
     <NavLink className='column-link column-link--transparent' to='/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon className='column-link__icon' id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>
     <NavLink className='column-link column-link--transparent' exact to='/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon className='column-link__icon' id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>
     <NavLink className='column-link column-link--transparent' to='/conversations'><Icon className='column-link__icon' id='envelope' fixedWidth /><FormattedMessage id='navigation_bar.direct' defaultMessage='Direct messages' /></NavLink>
diff --git a/app/javascript/mastodon/features/ui/components/tabs_bar.js b/app/javascript/mastodon/features/ui/components/tabs_bar.js
index 195403fd3..55668cab6 100644
--- a/app/javascript/mastodon/features/ui/components/tabs_bar.js
+++ b/app/javascript/mastodon/features/ui/components/tabs_bar.js
@@ -10,9 +10,9 @@ import NotificationsCounterIcon from './notifications_counter_icon';
 export const links = [
   <NavLink className='tabs-bar__link' to='/home' data-preview-title-id='column.home' data-preview-icon='home' ><Icon id='home' fixedWidth /><FormattedMessage id='tabs_bar.home' defaultMessage='Home' /></NavLink>,
   <NavLink className='tabs-bar__link' to='/notifications' data-preview-title-id='column.notifications' data-preview-icon='bell' ><NotificationsCounterIcon /><FormattedMessage id='tabs_bar.notifications' defaultMessage='Notifications' /></NavLink>,
-  <NavLink className='tabs-bar__link optional' to='/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
-  <NavLink className='tabs-bar__link optional' exact to='/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
-  <NavLink className='tabs-bar__link' to='/explore' data-preview-title-id='tabs_bar.search' data-preview-icon='search' ><Icon id='search' fixedWidth /><FormattedMessage id='tabs_bar.search' defaultMessage='Search' /></NavLink>,
+  <NavLink className='tabs-bar__link' to='/public/local' data-preview-title-id='column.community' data-preview-icon='users' ><Icon id='users' fixedWidth /><FormattedMessage id='tabs_bar.local_timeline' defaultMessage='Local' /></NavLink>,
+  <NavLink className='tabs-bar__link' exact to='/public' data-preview-title-id='column.public' data-preview-icon='globe' ><Icon id='globe' fixedWidth /><FormattedMessage id='tabs_bar.federated_timeline' defaultMessage='Federated' /></NavLink>,
+  <NavLink className='tabs-bar__link optional' to='/explore' data-preview-title-id='tabs_bar.search' data-preview-icon='search' ><Icon id='search' fixedWidth /><FormattedMessage id='tabs_bar.search' defaultMessage='Search' /></NavLink>,
   <NavLink className='tabs-bar__link' style={{ flexGrow: '0', flexBasis: '30px' }} to='/getting-started' data-preview-title-id='getting_started.heading' data-preview-icon='bars' ><Icon id='bars' fixedWidth /></NavLink>,
 ];
 
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index a7e5313a3..088b5ff36 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 84708b1e2..6580f5d44 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -18,12 +18,12 @@
   "account.followers": "المُتابِعون",
   "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم حتى الآن.",
   "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter}  مُتابِعًا} other {{counter}  مُتابع}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}",
   "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.",
   "account.follows_you": "يُتابِعُك",
   "account.hide_reblogs": "إخفاء مشاركات @{name}",
   "account.joined": "انضم في {date}",
-  "account.last_status": "آخر نشاط",
   "account.link_verified_on": "تمَّ التَّحقق مِن مِلْكيّة هذا الرابط بتاريخ {date}",
   "account.locked_info": "تمَّ تعيين حالة خصوصية هذا الحساب إلى مُقفَل. يُراجع المالك يدويًا من يمكنه متابعته.",
   "account.media": "وسائط",
@@ -32,7 +32,6 @@
   "account.mute": "كَتم @{name}",
   "account.mute_notifications": "كَتم الإشعارات من @{name}",
   "account.muted": "مَكتوم",
-  "account.never_active": "أبدًا",
   "account.posts": "منشورات",
   "account.posts_with_replies": "المنشورات والرُدود",
   "account.report": "الإبلاغ عن @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, zero {لَا تَبويقات} one {تَبويقةٌ واحدة} two {تَبويقَتانِ اِثنتان} few {{counter} تَبويقات} many {{counter} تَبويقتًا} other {{counter} تَبويقة}}",
   "account.unblock": "إلغاء الحَظر عن @{name}",
   "account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "لا تُرَوِّج لهُ في الملف الشخصي",
   "account.unfollow": "إلغاء المُتابعة",
   "account.unmute": "إلغاء الكَتم عن @{name}",
   "account.unmute_notifications": "إلغاء كَتم الإشعارات عن @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "اضغط لإضافة مُلاحظة",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "حاول تعطيلهم وإنعاش الصفحة. إن لم ينجح ذلك، يمكنك دائمًا استخدام ماستدون عبر متصفح آخر أو تطبيق أصلي.",
   "errors.unexpected_crash.copy_stacktrace": "انسخ تتبع الارتباطات إلى الحافظة",
   "errors.unexpected_crash.report_issue": "الإبلاغ عن خلل",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "نتائج البحث",
+  "explore.suggested_follows": "لك",
+  "explore.title": "استكشف",
+  "explore.trending_links": "الأخبار",
+  "explore.trending_statuses": "المنشورات",
+  "explore.trending_tags": "الوسوم",
   "follow_recommendations.done": "تم",
   "follow_recommendations.heading": "تابع الأشخاص الذين ترغب في رؤية منشوراتهم! إليك بعض الاقتراحات.",
   "follow_recommendations.lead": "ستظهر منشورات الأشخاص الذين تُتابعتهم بترتيب تسلسلي زمني على صفحتك الرئيسية. لا تخف إذا ارتكبت أي أخطاء، تستطيع إلغاء متابعة أي شخص في أي وقت تريد!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "اكتشف",
   "navigation_bar.domain_blocks": "النطاقات المخفية",
   "navigation_bar.edit_profile": "عدّل الملف التعريفي",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "المفضلة",
   "navigation_bar.filters": "الكلمات المكتومة",
   "navigation_bar.follow_requests": "طلبات المتابعة",
@@ -319,7 +321,7 @@
   "notification.update": "{name} edited a post",
   "notifications.clear": "امسح الإخطارات",
   "notifications.clear_confirmation": "أمتأكد من أنك تود مسح جل الإخطارات الخاصة بك و المتلقاة إلى حد الآن ؟",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "التسجيلات الجديدة:",
   "notifications.column_settings.alert": "إشعارات سطح المكتب",
   "notifications.column_settings.favourite": "المُفَضَّلة:",
   "notifications.column_settings.filter_bar.advanced": "اعرض كافة الفئات",
@@ -336,7 +338,7 @@
   "notifications.column_settings.status": "منشورات جديدة:",
   "notifications.column_settings.unread_notifications.category": "إشعارات غير مقروءة",
   "notifications.column_settings.unread_notifications.highlight": "علّم الإشعارات غير المقرؤة",
-  "notifications.column_settings.update": "Edits:",
+  "notifications.column_settings.update": "التعديلات:",
   "notifications.filter.all": "الكل",
   "notifications.filter.boosts": "الترقيات",
   "notifications.filter.favourites": "المفضلة",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}ثا",
   "relative_time.today": "اليوم",
   "reply_indicator.cancel": "إلغاء",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "حظر",
+  "report.block_explanation": "لن ترى مشاركاتهم ولن يمكنهم متابعتك أو رؤية مشاركاتك، سيكون بديهيا لهم أنهم مكتمون.",
   "report.categories.other": "أخرى",
   "report.categories.spam": "مزعج",
   "report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.title_account": "ملف تعريفي",
+  "report.category.title_status": "منشور",
+  "report.close": "تم",
+  "report.comment.title": "هل لديك شيء آخر لتخبرنا به؟",
   "report.forward": "التحويل إلى {target}",
   "report.forward_hint": "هذا الحساب ينتمي إلى خادوم آخَر. هل تودّ إرسال نسخة مجهولة مِن التقرير إلى هنالك أيضًا؟",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "كتم",
+  "report.mute_explanation": "لن ترى مشاركاتهم. لكن سيبقى بإمكانهم متابعتك ورؤية مشاركاتك دون أن يعرفوا أنهم مكتمون.",
+  "report.next": "التالي",
   "report.placeholder": "تعليقات إضافية",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
+  "report.reasons.dislike": "لايعجبني",
+  "report.reasons.dislike_description": "ألا ترغب برؤيته",
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.violation": "ينتهك قواعد الخادم",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
+  "report.rules.title": "ما هي القواعد المنتهكة؟",
   "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.statuses.title": "هل توجد مشاركات تدعم صحة هذا البلاغ؟",
   "report.submit": "إرسال",
   "report.target": "ابلغ عن {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action_actionable": "في أثناء مراجعتنا للبلاغ، يمكنك اتخاذ إجراء ضد @{name}:",
+  "report.thanks.title": "هل ترغب في مشاهدة هذا؟",
+  "report.thanks.title_actionable": "شُكرًا لَكَ على الإبلاغ، سَوفَ نَنظُرُ فِي هَذَا الأمر.",
+  "report.unfollow": "إلغاء متابعة @{name}",
+  "report.unfollow_explanation": "أنت تتابع هذا الحساب، لإزالة مَنشوراته من تغذيَتِكَ الرئيسة ألغ متابعته.",
   "search.placeholder": "ابحث",
   "search_popout.search_format": "نمط البحث المتقدم",
   "search_popout.tips.full_text": "النص البسيط يقوم بعرض المنشورات التي كتبتها أو قمت بإرسالها أو ترقيتها أو تمت الإشارة إليك فيها من طرف آخرين ، بالإضافة إلى مطابقة أسماء المستخدمين وأسماء العرض وعلامات التصنيف.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "جملة قصيرة تُمكّنُك من عرض أسماء و حسابات و كلمات رمزية",
   "search_popout.tips.user": "مستخدِم",
   "search_results.accounts": "أشخاص",
-  "search_results.all": "All",
+  "search_results.all": "الكل",
   "search_results.hashtags": "الوُسوم",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات",
   "search_results.statuses": "المنشورات",
   "search_results.statuses_fts_disabled": "البحث عن المنشورات عن طريق المحتوى ليس مفعل في خادم ماستدون هذا.",
   "search_results.total": "{count, number} {count, plural, zero {} one {نتيجة} two {نتيجتين} few {نتائج} many {نتائج} other {نتائج}}",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 0627f57e1..14e46e458 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -18,12 +18,12 @@
   "account.followers": "Siguidores",
   "account.followers.empty": "Naide sigue a esti usuariu entá.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "Esti usuariu entá nun sigue a naide.",
   "account.follows_you": "Síguete",
   "account.hide_reblogs": "Anubrir les comparticiones de @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Cabera actividá",
   "account.link_verified_on": "La propiedá d'esti enllaz foi comprobada'l {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,20 +32,21 @@
   "account.mute": "Silenciar a @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Enxamás",
   "account.posts": "Barritos",
   "account.posts_with_replies": "Barritos y rempuestes",
   "account.report": "Report @{name}",
   "account.requested": "Esperando pola aprobación. Calca pa encaboxar la solicitú de siguimientu",
   "account.share": "Share @{name}'s profile",
   "account.show_reblogs": "Amosar les comparticiones de @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
+  "account.statuses_counter": "{count, plural, one {{counter} artículu} other {{counter} artículos}}",
   "account.unblock": "Desbloquiar a @{name}",
   "account.unblock_domain": "Amosar {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Nun destacar nel perfil",
   "account.unfollow": "Dexar de siguir",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -155,14 +156,14 @@
   "emoji_button.objects": "Oxetos",
   "emoji_button.people": "Persones",
   "emoji_button.recent": "Úsase davezu",
-  "emoji_button.search": "Guetar…",
+  "emoji_button.search": "Buscar…",
   "emoji_button.search_results": "Search results",
   "emoji_button.symbols": "Símbolos",
   "emoji_button.travel": "Viaxes y llugares",
   "empty_column.account_suspended": "Account suspended",
   "empty_column.account_timeline": "¡Equí nun hai barritos!",
   "empty_column.account_unavailable": "Profile unavailable",
-  "empty_column.blocks": "Entá nun bloquiesti a nunengún usuariu.",
+  "empty_column.blocks": "Entá nun bloquiesti a nengún usuariu.",
   "empty_column.bookmarked_statuses": "Entá nun tienes nengún barritu en Marcadores. Cuando amiestes unu, va amosase equí.",
   "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
   "empty_column.direct": "Entá nun tienes nuengún mensaxe direutu. Cuando unvies o recibas dalgún, va apaecer equí.",
@@ -181,17 +182,17 @@
   "empty_column.notifications": "Entá nun tienes nunengún avisu. Interactúa con otros p'aniciar la conversación.",
   "empty_column.public": "¡Equí nun hai nada! Escribi daqué público o sigui a usuarios d'otros sirvidores pa rellenar esto",
   "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.",
-  "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
+  "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti fallu.",
   "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
   "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
   "errors.unexpected_crash.report_issue": "Report issue",
   "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
+  "explore.suggested_follows": "Pa ti",
   "explore.title": "Explore",
-  "explore.trending_links": "News",
+  "explore.trending_links": "Noticies",
   "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_tags": "Etiquetes",
   "follow_recommendations.done": "Done",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
   "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
@@ -217,7 +218,7 @@
   "hashtag.column_settings.tag_mode.none": "Nenguna d'estes",
   "hashtag.column_settings.tag_toggle": "Incluyir les etiquetes adicionales d'esta columna",
   "home.column_settings.basic": "Basic",
-  "home.column_settings.show_reblogs": "Amosar toots compartíos",
+  "home.column_settings.show_reblogs": "Show boosts",
   "home.column_settings.show_replies": "Amosar rempuestes",
   "home.hide_announcements": "Hide announcements",
   "home.show_announcements": "Show announcements",
@@ -225,38 +226,38 @@
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
   "intervals.full.minutes": "{number, plural, one {# minutu} other {# minutos}}",
   "keyboard_shortcuts.back": "pa dir p'atrás",
-  "keyboard_shortcuts.blocked": "p'abrir la llista d'usuarios bloquiaos",
+  "keyboard_shortcuts.blocked": "Abrir la llista d'usuarios bloquiaos",
   "keyboard_shortcuts.boost": "pa compartir un toot",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
-  "keyboard_shortcuts.compose": "pa enfocar l'área de composición",
+  "keyboard_shortcuts.compose": "Enfocar l'área de composición",
   "keyboard_shortcuts.description": "Descripción",
-  "keyboard_shortcuts.direct": "p'abrir la columna de los mensaxes direutos",
+  "keyboard_shortcuts.direct": "Abrir la columna de los mensaxes direutos",
   "keyboard_shortcuts.down": "pa baxar na llista",
   "keyboard_shortcuts.enter": "p'abrir estaos",
   "keyboard_shortcuts.favourite": "p'amestar a Favoritos",
-  "keyboard_shortcuts.favourites": "p'abrir la llista de favoritos",
-  "keyboard_shortcuts.federated": "p'abrir la llinia temporal federada",
+  "keyboard_shortcuts.favourites": "Abrir la llista de favoritos",
+  "keyboard_shortcuts.federated": "Abrir la llinia temporal federada",
   "keyboard_shortcuts.heading": "Atayos del tecláu",
   "keyboard_shortcuts.home": "p'abrir la llinia temporal d'aniciu",
   "keyboard_shortcuts.hotkey": "Atayu",
   "keyboard_shortcuts.legend": "p'amosar esta lleenda",
   "keyboard_shortcuts.local": "p'abrir la llinia temporal llocal",
   "keyboard_shortcuts.mention": "pa mentar al autor",
-  "keyboard_shortcuts.muted": "p'abrir la llista d'usuarios silenciaos",
+  "keyboard_shortcuts.muted": "Abrir la llista d'usuarios colos avisos desactivaos",
   "keyboard_shortcuts.my_profile": "p'abrir el to perfil",
-  "keyboard_shortcuts.notifications": "p'abrir la columna d'avisos",
+  "keyboard_shortcuts.notifications": "Abrir la columna d'avisos",
   "keyboard_shortcuts.open_media": "to open media",
-  "keyboard_shortcuts.pinned": "p'abrir la llista de barritos fixaos",
-  "keyboard_shortcuts.profile": "p'abrir el perfil del autor",
+  "keyboard_shortcuts.pinned": "Abrir la llista d'artículos fixaos",
+  "keyboard_shortcuts.profile": "Abrir el perfil del autor/a",
   "keyboard_shortcuts.reply": "pa responder",
-  "keyboard_shortcuts.requests": "p'abrir la llista de solicitúes de siguimientu",
-  "keyboard_shortcuts.search": "pa enfocar la gueta",
+  "keyboard_shortcuts.requests": "Abrir la llista de solicitúes de siguimientu",
+  "keyboard_shortcuts.search": "Enfocar la barra de busca",
   "keyboard_shortcuts.spoilers": "to show/hide CW field",
-  "keyboard_shortcuts.start": "p'abrir la columna «entamar»",
+  "keyboard_shortcuts.start": "Abrir la columna «Entamar»",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
   "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
   "keyboard_shortcuts.toot": "p'apenzar un barritu nuevu",
-  "keyboard_shortcuts.unfocus": "pa desenfocar l'área de composición/gueta",
+  "keyboard_shortcuts.unfocus": "Desenfocar l'área de composición/busca",
   "keyboard_shortcuts.up": "pa xubir na llista",
   "lightbox.close": "Close",
   "lightbox.compress": "Compress image view box",
@@ -274,14 +275,14 @@
   "lists.replies_policy.list": "Members of the list",
   "lists.replies_policy.none": "No one",
   "lists.replies_policy.title": "Show replies to:",
-  "lists.search": "Guetar ente la xente que sigues",
+  "lists.search": "Buscar ente la xente que sigues",
   "lists.subheading": "Les tos llistes",
   "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
   "loading_indicator.label": "Cargando…",
   "media_gallery.toggle_visible": "Alternar la visibilidá",
-  "missing_indicator.label": "Nun s'alcontró",
-  "missing_indicator.sublabel": "Esti recursu nun pudo alcontrase",
-  "mute_modal.duration": "Duration",
+  "missing_indicator.label": "Nun s'atopó",
+  "missing_indicator.sublabel": "Nun se pudo atopar esti recursu",
+  "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "¿Anubrir los avisos d'esti usuariu?",
   "mute_modal.indefinite": "Indefinite",
   "navigation_bar.apps": "Aplicaciones pa móviles",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Dominios anubríos",
   "navigation_bar.edit_profile": "Editar el perfil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Pallabres silenciaes",
   "navigation_bar.follow_requests": "Solicitúes de siguimientu",
@@ -315,8 +317,8 @@
   "notification.own_poll": "Your poll has ended",
   "notification.poll": "Finó una encuesta na que votesti",
   "notification.reblog": "{name} compartió'l to estáu",
-  "notification.status": "{name} just posted",
-  "notification.update": "{name} edited a post",
+  "notification.status": "{name} ta acabante d'espublizar",
+  "notification.update": "{name} editó l'artículu",
   "notifications.clear": "Llimpiar avisos",
   "notifications.clear_confirmation": "¿De xuru que quies llimpiar dafechu tolos avisos?",
   "notifications.column_settings.admin.sign_up": "New sign-ups:",
@@ -349,7 +351,7 @@
   "notifications.mark_as_read": "Mark every notification as read",
   "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
   "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+  "notifications.permission_required": "Los avisos d'escritoriu nun tán disponibles porque nun se concedió'l permisu riquíu.",
   "notifications_permission_banner.enable": "Activar los avisos d'escritoriu",
   "notifications_permission_banner.how_to_control": "Pa recibir avisos cuando Mastodon nun tea abiertu, activa los avisos del escritoriu. Pues controlar al milímetru qué tipu d'interaiciones xeneren avisos namás que s'activen, pente'l botón {icon} d'arriba.",
   "notifications_permission_banner.title": "Never miss a thing",
@@ -360,7 +362,7 @@
   "poll.total_votes": "{count, plural, one {# votu} other {# votos}}",
   "poll.vote": "Vote",
   "poll.voted": "You voted for this answer",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
+  "poll.votes": "{votes, plural, one {# votu} other {# votos}}",
   "poll_button.add_poll": "Amestar una encuesta",
   "poll_button.remove_poll": "Quitar la encuesta",
   "privacy.change": "Adjust status privacy",
@@ -368,7 +370,7 @@
   "privacy.direct.short": "Direct",
   "privacy.private.long": "Post to followers only",
   "privacy.private.short": "Namái siguidores",
-  "privacy.public.long": "Post to public timelines",
+  "privacy.public.long": "Visible for all, shown in public timelines",
   "privacy.public.short": "Public",
   "privacy.unlisted.long": "Nun apaez nes llinies temporales públiques",
   "privacy.unlisted.short": "Nun llistar",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
@@ -424,7 +426,7 @@
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
   "report.unfollow": "Unfollow @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
-  "search.placeholder": "Guetar",
+  "search.placeholder": "Buscar",
   "search_popout.search_format": "Formatu de gueta avanzada",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "etiqueta",
@@ -434,7 +436,7 @@
   "search_results.accounts": "Xente",
   "search_results.all": "All",
   "search_results.hashtags": "Etiquetes",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Nun se pudo atopar nada con esos términos de busca",
   "search_results.statuses": "Barritos",
   "search_results.statuses_fts_disabled": "Esti sirvidor de Mastodon tien activada la gueta de barritos pol so conteníu.",
   "search_results.total": "{count, number} {count, plural, one {resultáu} other {resultaos}}",
@@ -443,7 +445,7 @@
   "status.block": "Bloquiar a @{name}",
   "status.bookmark": "Amestar a Marcadores",
   "status.cancel_reblog_private": "Dexar de compartir",
-  "status.cannot_reblog": "Esti artículu nun pue compartise",
+  "status.cannot_reblog": "Esti artículu nun se pue compartir",
   "status.copy": "Copiar l'enllaz al estáu",
   "status.delete": "Desaniciar",
   "status.detailed_status": "Detailed conversation view",
@@ -493,10 +495,10 @@
   "tabs_bar.notifications": "Avisos",
   "tabs_bar.search": "Search",
   "time_remaining.days": "{number, plural, one {Queda # día} other {Queden # díes}}",
-  "time_remaining.hours": "{number, plural, one {# hora restante} other {# hores restantes}}",
+  "time_remaining.hours": "{number, plural, one {Queda # hora} other {Queden # hores}}",
   "time_remaining.minutes": "{number, plural, one {Queda # minutu} other {Queden # minutos}}",
   "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# segundu restante} other {# segundos restantes}}",
+  "time_remaining.seconds": "{number, plural, one {Queda # segundu} other {Queden # segundos}}",
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index f037444d6..e65681394 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -18,12 +18,12 @@
   "account.followers": "Последователи",
   "account.followers.empty": "Все още никой не следва този потребител.",
   "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}",
   "account.follows.empty": "Този потребител все още не следва никого.",
   "account.follows_you": "Твой последовател",
   "account.hide_reblogs": "Скриване на споделяния от @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Последно активен/а",
   "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}",
   "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.",
   "account.media": "Мултимедия",
@@ -32,7 +32,6 @@
   "account.mute": "Заглушаване на @{name}",
   "account.mute_notifications": "Заглушаване на известия от @{name}",
   "account.muted": "Заглушено",
-  "account.never_active": "Никога",
   "account.posts": "Публикации",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "Докладване на @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}",
   "account.unblock": "Не блокирай",
   "account.unblock_domain": "Unhide {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Не включвайте в профила",
   "account.unfollow": "Не следвай",
   "account.unmute": "Раззаглушаване на @{name}",
   "account.unmute_notifications": "Раззаглушаване на известия от @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Откриване",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Редактирай профил",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Любими",
   "navigation_bar.filters": "Заглушени думи",
   "navigation_bar.follow_requests": "Заявки за последване",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 3387289a4..3542c4e46 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -18,12 +18,12 @@
   "account.followers": "অনুসরণকারী",
   "account.followers.empty": "এই ব্যক্তিকে এখনো কেউ অনুসরণ করে না।",
   "account.followers_counter": "{count, plural,one {{counter} জন অনুসরণকারী } other {{counter} জন অনুসরণকারী}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural,one {{counter} জনকে অনুসরণ} other {{counter} জনকে অনুসরণ}}",
   "account.follows.empty": "এই সদস্য কাওকে এখনো অনুসরণ করেন না.",
   "account.follows_you": "তোমাকে অনুসরণ করে",
   "account.hide_reblogs": "@{name}'র সমর্থনগুলি লুকিয়ে ফেলুন",
   "account.joined": "Joined {date}",
-  "account.last_status": "শেষ সক্রিয় ছিল",
   "account.link_verified_on": "এই লিংকের মালিকানা চেক করা হয়েছে {date} তারিখে",
   "account.locked_info": "এই নিবন্ধনের গোপনীয়তার ক্ষেত্র তালা দেওয়া আছে। নিবন্ধনকারী অনুসরণ করার অনুমতি যাদেরকে দেবেন, শুধু তারাই অনুসরণ করতে পারবেন।",
   "account.media": "মিডিয়া",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} কে নিঃশব্দ করুন",
   "account.mute_notifications": "@{name} র প্রজ্ঞাপন আপনার কাছে নিঃশব্দ করুন",
   "account.muted": "নিঃশব্দ",
-  "account.never_active": "কখনও নয়",
   "account.posts": "টুট",
   "account.posts_with_replies": "টুট এবং মতামত",
   "account.report": "@{name} কে রিপোর্ট করুন",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural,one {{counter} টুট} other {{counter} টুট}}",
   "account.unblock": "@{name} র কার্যকলাপ দেখুন",
   "account.unblock_domain": "{domain} কে আবার দেখুন",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "আপনার নিজের পাতায় এটা দেখবেন না",
   "account.unfollow": "অনুসরণ করো না",
   "account.unmute": "@{name} র কার্যকলাপ আবার দেখুন",
   "account.unmute_notifications": "@{name} র প্রজ্ঞাপন দেখুন",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "নোট যোগ করতে ক্লিক করুন",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "ঘুরে দেখুন",
   "navigation_bar.domain_blocks": "লুকানো ডোমেনগুলি",
   "navigation_bar.edit_profile": "নিজের পাতা সম্পাদনা করতে",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "পছন্দের",
   "navigation_bar.filters": "বন্ধ করা শব্দ",
   "navigation_bar.follow_requests": "অনুসরণের অনুরোধগুলি",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 9a78feaab..51b78f777 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -18,12 +18,12 @@
   "account.followers": "Heulier·ezed·ien",
   "account.followers.empty": "Den na heul an implijer-mañ c'hoazh.",
   "account.followers_counter": "{count, plural, other{{counter} Heulier}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, other {{counter} Heuliañ}}",
   "account.follows.empty": "An implijer·ez-mañ na heul den ebet.",
   "account.follows_you": "Ho heul",
   "account.hide_reblogs": "Kuzh toudoù rannet gant @{name}",
   "account.joined": "Amañ abaoe {date}",
-  "account.last_status": "Oberiantiz zivezhañ",
   "account.link_verified_on": "Gwiriet eo bet perc'hennidigezh al liamm d'an deiziad-mañ : {date}",
   "account.locked_info": "Prennet eo ar gont-mañ. Dibab a ra ar perc'henn ar re a c'hall heuliañ anezhi pe anezhañ.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Kuzhat @{name}",
   "account.mute_notifications": "Kuzh kemennoù eus @{name}",
   "account.muted": "Kuzhet",
-  "account.never_active": "Birviken",
   "account.posts": "a doudoù",
   "account.posts_with_replies": "Toudoù ha respontoù",
   "account.report": "Disklêriañ @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toud} other {{counter} Toud}}",
   "account.unblock": "Diverzañ @{name}",
   "account.unblock_domain": "Diverzañ an domani {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Paouez da lakaat war-wel war ar profil",
   "account.unfollow": "Diheuliañ",
   "account.unmute": "Diguzhat @{name}",
   "account.unmute_notifications": "Diguzhat kemennoù a @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klikit evit ouzhpenniñ un notenn",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Dizoleiñ",
   "navigation_bar.domain_blocks": "Domanioù kuzhet",
   "navigation_bar.edit_profile": "Aozañ ar profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Ar re vuiañ-karet",
   "navigation_bar.filters": "Gerioù kuzhet",
   "navigation_bar.follow_requests": "Pedadoù heuliañ",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 915278f95..287fd0771 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -9,50 +9,51 @@
   "account.browse_more_on_origin_server": "Navega més en el perfil original",
   "account.cancel_follow_request": "Anul·la la sol·licitud de seguiment",
   "account.direct": "Missatge directe @{name}",
-  "account.disable_notifications": "Deixa de notificar-me els tuts de @{name}",
-  "account.domain_blocked": "Domini ocult",
+  "account.disable_notifications": "Deixa de notificar-me les publicacions de @{name}",
+  "account.domain_blocked": "Domini bloquejat",
   "account.edit_profile": "Edita el perfil",
-  "account.enable_notifications": "Notifica’m els tuts de @{name}",
+  "account.enable_notifications": "Notifica’m les publicacions de @{name}",
   "account.endorse": "Recomana en el teu perfil",
   "account.follow": "Segueix",
   "account.followers": "Seguidors",
   "account.followers.empty": "Encara ningú no segueix aquest usuari.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}",
+  "account.following": "Seguint",
   "account.following_counter": "{count, plural, other {{counter} Seguint}}",
   "account.follows.empty": "Aquest usuari encara no segueix a ningú.",
   "account.follows_you": "Et segueix",
   "account.hide_reblogs": "Amaga els impulsos de @{name}",
   "account.joined": "Unit des de {date}",
-  "account.last_status": "Darrer actiu",
   "account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}",
   "account.locked_info": "Aquest estat de privadesa del compte està definit com a bloquejat. El propietari revisa manualment qui pot seguir-lo.",
   "account.media": "Mèdia",
-  "account.mention": "Esmentar @{name}",
+  "account.mention": "Esmenta @{name}",
   "account.moved_to": "{name} s'ha mogut a:",
   "account.mute": "Silencia @{name}",
-  "account.mute_notifications": "Notificacions desactivades de @{name}",
+  "account.mute_notifications": "Notificacions silenciades de @{name}",
   "account.muted": "Silenciat",
-  "account.never_active": "Mai",
-  "account.posts": "Tuts",
-  "account.posts_with_replies": "Tuts i respostes",
+  "account.posts": "Publicacions",
+  "account.posts_with_replies": "Publicacions i respostes",
   "account.report": "Informar sobre @{name}",
   "account.requested": "Esperant aprovació. Clic per a cancel·lar la petició de seguiment",
   "account.share": "Comparteix el perfil de @{name}",
   "account.show_reblogs": "Mostra els impulsos de @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}",
   "account.unblock": "Desbloqueja @{name}",
-  "account.unblock_domain": "Mostra {domain}",
+  "account.unblock_domain": "Desbloqueja el domini {domain}",
+  "account.unblock_short": "Desbloqueja",
   "account.unendorse": "No recomanar en el perfil",
   "account.unfollow": "Deixa de seguir",
   "account.unmute": "Treure silenci de @{name}",
   "account.unmute_notifications": "Activar notificacions de @{name}",
+  "account.unmute_short": "Deixa de silenciar",
   "account_note.placeholder": "Fes clic per afegir una nota",
   "admin.dashboard.daily_retention": "Ràtio de retenció per dia després del registre",
   "admin.dashboard.monthly_retention": "Ràtio de retenció per mes després del registre",
   "admin.dashboard.retention.average": "Mitjana",
   "admin.dashboard.retention.cohort": "Registres mes",
   "admin.dashboard.retention.cohort_size": "Nous usuaris",
-  "alert.rate_limited.message": "Si us plau torna-ho a provar després de {retry_time, time, medium}.",
+  "alert.rate_limited.message": "Si us plau prova-ho després de {retry_time, time, medium}.",
   "alert.rate_limited.title": "Límit de freqüència",
   "alert.unexpected.message": "S'ha produït un error inesperat.",
   "alert.unexpected.title": "Vaja!",
@@ -71,14 +72,14 @@
   "column.community": "Línia de temps local",
   "column.direct": "Missatges directes",
   "column.directory": "Navega els perfils",
-  "column.domain_blocks": "Dominis ocults",
+  "column.domain_blocks": "Dominis bloquejats",
   "column.favourites": "Favorits",
-  "column.follow_requests": "Peticions per seguir-te",
+  "column.follow_requests": "Peticions per a seguir-te",
   "column.home": "Inici",
   "column.lists": "Llistes",
   "column.mutes": "Usuaris silenciats",
   "column.notifications": "Notificacions",
-  "column.pins": "Tuts fixats",
+  "column.pins": "Publicacions fixades",
   "column.public": "Línia de temps federada",
   "column_back_button.label": "Enrere",
   "column_header.hide_settings": "Amaga la configuració",
@@ -91,10 +92,10 @@
   "community.column_settings.local_only": "Només local",
   "community.column_settings.media_only": "Només multimèdia",
   "community.column_settings.remote_only": "Només remot",
-  "compose_form.direct_message_warning": "Aquest tut només serà enviat als usuaris esmentats.",
+  "compose_form.direct_message_warning": "Aquesta publicació només serà enviat als usuaris esmentats.",
   "compose_form.direct_message_warning_learn_more": "Aprèn més",
-  "compose_form.hashtag_warning": "Aquesta tut no es mostrarà en cap etiqueta ja que no està llistat. Només els tuts públics poden ser cercats per etiqueta.",
-  "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
+  "compose_form.hashtag_warning": "Aquesta publicació no es mostrarà en cap etiqueta ja que no està llistada. Només les publicacions públiques poden ser cercades per etiqueta.",
+  "compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges només a seguidors.",
   "compose_form.lock_disclaimer.lock": "bloquejat",
   "compose_form.placeholder": "En què penses?",
   "compose_form.poll.add_option": "Afegir una opció",
@@ -106,23 +107,23 @@
   "compose_form.publish": "Publicar",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Desa els canvis",
-  "compose_form.sensitive.hide": "Marcar mèdia com a sensible",
-  "compose_form.sensitive.marked": "Mèdia marcat com a sensible",
-  "compose_form.sensitive.unmarked": "Mèdia no està marcat com a sensible",
-  "compose_form.spoiler.marked": "Text es ocult sota l'avís",
-  "compose_form.spoiler.unmarked": "Text no ocult",
+  "compose_form.sensitive.hide": "{count, plural, one {Marca mèdia com a sensible} other {Marca mèdia com a sensible}}",
+  "compose_form.sensitive.marked": "{count, plural, one {Mèdia està marcat com a sensible} other {Mèdia estan marcats com a sensible}}",
+  "compose_form.sensitive.unmarked": "{count, plural, one {Mèdia no està marcada com a sensible} other {Mèdia no estan marcats com a sensibles}}",
+  "compose_form.spoiler.marked": "Treu l'avís de contingut",
+  "compose_form.spoiler.unmarked": "Afegeix avís de contingut",
   "compose_form.spoiler_placeholder": "Escriu l'avís aquí",
   "confirmation_modal.cancel": "Cancel·la",
-  "confirmations.block.block_and_report": "Bloquejar i informar",
+  "confirmations.block.block_and_report": "Bloqueja i informa",
   "confirmations.block.confirm": "Bloqueja",
   "confirmations.block.message": "Estàs segur que vols bloquejar a {name}?",
   "confirmations.delete.confirm": "Suprimeix",
-  "confirmations.delete.message": "Estàs segur que vols suprimir aquest tut?",
+  "confirmations.delete.message": "Estàs segur que vols suprimir aquesta publicació?",
   "confirmations.delete_list.confirm": "Suprimeix",
   "confirmations.delete_list.message": "Estàs segur que vols suprimir permanentment aquesta llista?",
   "confirmations.discard_edit_media.confirm": "Descarta",
   "confirmations.discard_edit_media.message": "Tens canvis no desats de la descripciò de mèdia o previsualització, els vols descartar?",
-  "confirmations.domain_block.confirm": "Amaga tot el domini",
+  "confirmations.domain_block.confirm": "Bloqueja el domini sencer",
   "confirmations.domain_block.message": "Estàs segur, realment segur que vols bloquejar totalment {domain}? En la majoria dels casos bloquejar o silenciar uns pocs objectius és suficient i preferible. No veuràs contingut d’aquest domini en cap de les línies de temps ni en les notificacions. Els teus seguidors d’aquest domini seran eliminats.",
   "confirmations.logout.confirm": "Tancar sessió",
   "confirmations.logout.message": "Segur que vols tancar la sessió?",
@@ -130,7 +131,7 @@
   "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen però encara els permetrà veure les teves i seguir-te.",
   "confirmations.mute.message": "Estàs segur que vols silenciar {name}?",
   "confirmations.redraft.confirm": "Esborrar i refer",
-  "confirmations.redraft.message": "Estàs segur que vols esborrar aquest tut i tornar a redactar-lo? Perdràs tots els impulsos i favorits, i les respostes al tut original es quedaran orfes.",
+  "confirmations.redraft.message": "Estàs segur que vols esborrar aquesta publicació i tornar a redactar-la? Perdràs tots els impulsos i favorits, i les respostes a la publicació original es quedaran orfes.",
   "confirmations.reply.confirm": "Respon",
   "confirmations.reply.message": "Responen ara es sobreescriurà el missatge que estàs editant. Estàs segur que vols continuar?",
   "confirmations.unfollow.confirm": "Deixa de seguir",
@@ -144,14 +145,14 @@
   "directory.new_arrivals": "Arribades noves",
   "directory.recently_active": "Recentment actius",
   "embed.instructions": "Incrusta aquest tut al lloc web copiant el codi a continuació.",
-  "embed.preview": "Aquí tenim quin aspecte tindrà:",
+  "embed.preview": "Aquí està quin aspecte tindrà:",
   "emoji_button.activity": "Activitat",
   "emoji_button.custom": "Personalitzat",
   "emoji_button.flags": "Banderes",
   "emoji_button.food": "Menjar i beure",
   "emoji_button.label": "Insereix un emoji",
   "emoji_button.nature": "Natura",
-  "emoji_button.not_found": "Emojis no!! (╯°□°)╯︵ ┻━┻",
+  "emoji_button.not_found": "No s'han trobat emojis coincidents",
   "emoji_button.objects": "Objectes",
   "emoji_button.people": "Gent",
   "emoji_button.recent": "Usats freqüentment",
@@ -160,26 +161,26 @@
   "emoji_button.symbols": "Símbols",
   "emoji_button.travel": "Viatges i Llocs",
   "empty_column.account_suspended": "Compte suspès",
-  "empty_column.account_timeline": "No hi ha tuts aquí!",
+  "empty_column.account_timeline": "No hi ha publicacions aquí!",
   "empty_column.account_unavailable": "Perfil no disponible",
   "empty_column.blocks": "Encara no has bloquejat cap usuari.",
-  "empty_column.bookmarked_statuses": "Encara no tens marcat cap tut. Quan marquis un apareixerà aquí.",
+  "empty_column.bookmarked_statuses": "Encara no tens desada a marcadors cap publicació. Quan desis una apareixerà aquí.",
   "empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per a fer rodar la pilota!",
   "empty_column.direct": "Encara no tens missatges directes. Quan enviïs o rebis un, es mostrarà aquí.",
-  "empty_column.domain_blocks": "Encara no hi ha dominis ocults.",
+  "empty_column.domain_blocks": "Encara no hi ha dominis bloquejats.",
   "empty_column.explore_statuses": "No hi ha res en tendència ara mateix. Verifica-ho més tard!",
-  "empty_column.favourited_statuses": "Encara no has marcat com a favorit cap tut. Quan en facis, apareixerà aquí.",
-  "empty_column.favourites": "Ningú no ha marcat aquest tut com a preferit encara. Quan algú ho faci, apareixerà aquí.",
+  "empty_column.favourited_statuses": "Encara no has afavorit cap publicació. Quan ho facis, apareixerà aquí.",
+  "empty_column.favourites": "Ningú no ha afavorit aquesta publicació encara. Quan algú ho faci, apareixerà aquí.",
   "empty_column.follow_recommendations": "Sembla que no es poden generar sugerencies per a tu. Pots provar d'emprar la cerca per a trobar gent que voldries conèixer o explorar les etiquetes en tendència.",
-  "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan rebis una, apareixerà aquí.",
+  "empty_column.follow_requests": "Encara no tens cap petició de seguiment. Quan en rebis una, apareixerà aquí.",
   "empty_column.hashtag": "Encara no hi ha res en aquesta etiqueta.",
-  "empty_column.home": "Encara no segueixes ningú. Visita {public} o fes cerca per començar i conèixer altres usuaris.",
+  "empty_column.home": "La teva línia de temps és buida! Segueix més gent per a emplenar-la. {suggestions}",
   "empty_column.home.suggestions": "Mira algunes sugerencies",
-  "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin nous tuts, apareixeran aquí.",
+  "empty_column.list": "Encara no hi ha res en aquesta llista. Quan els membres d'aquesta llista publiquin noves publicacions, apareixeran aquí.",
   "empty_column.lists": "Encara no tens cap llista. Quan en facis una, apareixerà aquí.",
   "empty_column.mutes": "Encara no has silenciat cap usuari.",
-  "empty_column.notifications": "Encara no tens notificacions. Interactua amb altres per iniciar la conversa.",
-  "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per omplir-ho",
+  "empty_column.notifications": "Encara no tens notificacions. Quan altre gent interactuï amb tu, les veuràs aquí.",
+  "empty_column.public": "No hi ha res aquí! Escriu públicament alguna cosa o manualment segueix usuaris d'altres servidors per a omplir-ho",
   "error.unexpected_crash.explanation": "A causa d'un bug en el nostre codi o un problema de compatibilitat del navegador, aquesta pàgina podria no ser mostrada correctament.",
   "error.unexpected_crash.explanation_addons": "Aquesta pàgina podria no mostrar-se correctament. Aquest error és possiblement causat per una extensió del navegador o per eienes automàtiques de traducció.",
   "error.unexpected_crash.next_steps": "Prova recarregant la pàgina. Si això no ajuda, encara podries ser capaç d'utilitzar Mastodon a través d'un navegador diferent o amb una aplicació nativa.",
@@ -193,19 +194,19 @@
   "explore.trending_statuses": "Publicacions",
   "explore.trending_tags": "Etiquetes",
   "follow_recommendations.done": "Fet",
-  "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure els seus tuts! Aquí hi ha algunes recomanacions.",
-  "follow_recommendations.lead": "Els tuts del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!",
-  "follow_request.authorize": "Autoritzar",
-  "follow_request.reject": "Rebutjar",
+  "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.",
+  "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!",
+  "follow_request.authorize": "Autoritza",
+  "follow_request.reject": "Rebutja",
   "follow_requests.unlocked_explanation": "Tot i que el teu compte no està bloquejat, el personal de {domain} ha pensat que és possible que vulguis revisar les sol·licituds de seguiment d’aquests comptes de forma manual.",
-  "generic.saved": "Guardat",
+  "generic.saved": "Desat",
   "getting_started.developers": "Desenvolupadors",
   "getting_started.directory": "Directori de perfils",
   "getting_started.documentation": "Documentació",
-  "getting_started.heading": "Començant",
+  "getting_started.heading": "Primeres passes",
   "getting_started.invite": "Convida gent",
   "getting_started.open_source_notice": "Mastodon és un programari de codi obert. Pots contribuir-hi o informar de problemes a GitHub a {github}.",
-  "getting_started.security": "Seguretat",
+  "getting_started.security": "Configuració del compte",
   "getting_started.terms": "Termes del servei",
   "hashtag.column_header.tag_mode.all": "i {additional}",
   "hashtag.column_header.tag_mode.any": "o {additional}",
@@ -224,41 +225,41 @@
   "intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
-  "keyboard_shortcuts.back": "navegar enrere",
-  "keyboard_shortcuts.blocked": "per obrir la llista d'usuaris bloquejats",
-  "keyboard_shortcuts.boost": "impulsar",
-  "keyboard_shortcuts.column": "per a centrar un tut en una de les columnes",
-  "keyboard_shortcuts.compose": "per centrar l'àrea de composició de text",
+  "keyboard_shortcuts.back": "Navegar enrere",
+  "keyboard_shortcuts.blocked": "Obre la llista d'usuaris bloquejats",
+  "keyboard_shortcuts.boost": "Impulsa publicació",
+  "keyboard_shortcuts.column": "Centra columna",
+  "keyboard_shortcuts.compose": "Centra l'àrea de composició de text",
   "keyboard_shortcuts.description": "Descripció",
-  "keyboard_shortcuts.direct": "per obrir la columna de missatges directes",
-  "keyboard_shortcuts.down": "per baixar en la llista",
-  "keyboard_shortcuts.enter": "per a obrir el tut",
-  "keyboard_shortcuts.favourite": "afavorir",
-  "keyboard_shortcuts.favourites": "per obrir la llista de favorits",
-  "keyboard_shortcuts.federated": "per obrir la línia de temps federada",
+  "keyboard_shortcuts.direct": "Obre la columna de missatges directes",
+  "keyboard_shortcuts.down": "Baixar en la llista",
+  "keyboard_shortcuts.enter": "Obre publicació",
+  "keyboard_shortcuts.favourite": "Afavorir publicació",
+  "keyboard_shortcuts.favourites": "Obre la llista de favorits",
+  "keyboard_shortcuts.federated": "Obre la línia de temps federada",
   "keyboard_shortcuts.heading": "Dreceres de teclat",
-  "keyboard_shortcuts.home": "per a obrir la línia de temps Inici",
+  "keyboard_shortcuts.home": "Obre la línia de temps Inici",
   "keyboard_shortcuts.hotkey": "Tecla d'accés directe",
-  "keyboard_shortcuts.legend": "per a mostrar aquesta llegenda",
-  "keyboard_shortcuts.local": "per a obrir la línia de temps local",
-  "keyboard_shortcuts.mention": "per a esmentar l'autor",
-  "keyboard_shortcuts.muted": "per a obrir la llista d'usuaris silenciats",
-  "keyboard_shortcuts.my_profile": "per a obrir el teu perfil",
-  "keyboard_shortcuts.notifications": "per a obrir la columna de notificacions",
-  "keyboard_shortcuts.open_media": "obrir mèdia",
-  "keyboard_shortcuts.pinned": "per a obrir la llista de tuts fixats",
-  "keyboard_shortcuts.profile": "per a obrir el perfil de l'autor",
-  "keyboard_shortcuts.reply": "respondre",
-  "keyboard_shortcuts.requests": "per a obrir la llista de sol·licituds de seguiment",
-  "keyboard_shortcuts.search": "per a centrar la cerca",
-  "keyboard_shortcuts.spoilers": "mostrar/amagar el camp CW",
-  "keyboard_shortcuts.start": "per a obrir la columna \"Començar\"",
-  "keyboard_shortcuts.toggle_hidden": "Mostrar/ocultar el text marcat com a sensible",
-  "keyboard_shortcuts.toggle_sensitivity": "per a mostrar o amagar contingut multimèdia",
+  "keyboard_shortcuts.legend": "Mostra aquesta llegenda",
+  "keyboard_shortcuts.local": "Obre la línia de temps local",
+  "keyboard_shortcuts.mention": "Esmenta l'autor",
+  "keyboard_shortcuts.muted": "Obre la llista d'usuaris silenciats",
+  "keyboard_shortcuts.my_profile": "Obre el teu perfil",
+  "keyboard_shortcuts.notifications": "Obre la columna de notificacions",
+  "keyboard_shortcuts.open_media": "Obre mèdia",
+  "keyboard_shortcuts.pinned": "Obre la llista de publicacions fixades",
+  "keyboard_shortcuts.profile": "Obre el perfil de l'autor",
+  "keyboard_shortcuts.reply": "Respon publicació",
+  "keyboard_shortcuts.requests": "Obre la llista de sol·licituds de seguiment",
+  "keyboard_shortcuts.search": "Centra la barra de cerca",
+  "keyboard_shortcuts.spoilers": "Mostra/amaga el camp CW",
+  "keyboard_shortcuts.start": "Obre la columna \"Primeres passes\"",
+  "keyboard_shortcuts.toggle_hidden": "Mostra/oculta el text marcat com a sensible",
+  "keyboard_shortcuts.toggle_sensitivity": "Mostra/amaga contingut multimèdia",
   "keyboard_shortcuts.toot": "per a començar un tut nou de trinca",
-  "keyboard_shortcuts.unfocus": "descentrar l'àrea de composició de text/cerca",
-  "keyboard_shortcuts.up": "moure amunt en la llista",
-  "lightbox.close": "Tancar",
+  "keyboard_shortcuts.unfocus": "Descentra l'àrea de composició de text/cerca",
+  "keyboard_shortcuts.up": "Moure amunt en la llista",
+  "lightbox.close": "Tanca",
   "lightbox.compress": "Quadre de visualització d’imatge comprimida",
   "lightbox.expand": "Amplia el quadre de visualització de l’imatge",
   "lightbox.next": "Següent",
@@ -269,7 +270,7 @@
   "lists.edit": "Editar llista",
   "lists.edit.submit": "Canvi de títol",
   "lists.new.create": "Afegir llista",
-  "lists.new.title_placeholder": "Nova llista",
+  "lists.new.title_placeholder": "Nou títol de llista",
   "lists.replies_policy.followed": "Qualsevol usuari seguit",
   "lists.replies_policy.list": "Membres de la llista",
   "lists.replies_policy.none": "Ningú",
@@ -278,22 +279,23 @@
   "lists.subheading": "Les teves llistes",
   "load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
   "loading_indicator.label": "Carregant...",
-  "media_gallery.toggle_visible": "Alternar visibilitat",
+  "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}",
   "missing_indicator.label": "No trobat",
   "missing_indicator.sublabel": "Aquest recurs no pot ser trobat",
   "mute_modal.duration": "Durada",
   "mute_modal.hide_notifications": "Amagar notificacions d'aquest usuari?",
   "mute_modal.indefinite": "Indefinit",
-  "navigation_bar.apps": "Apps mòbils",
+  "navigation_bar.apps": "Aplicacions mòbils",
   "navigation_bar.blocks": "Usuaris bloquejats",
   "navigation_bar.bookmarks": "Marcadors",
   "navigation_bar.community_timeline": "Línia de temps Local",
-  "navigation_bar.compose": "Redacta un nou tut",
+  "navigation_bar.compose": "Redacta una nova publicació",
   "navigation_bar.direct": "Missatges directes",
   "navigation_bar.discover": "Descobrir",
-  "navigation_bar.domain_blocks": "Dominis ocults",
+  "navigation_bar.domain_blocks": "Dominis bloquejats",
   "navigation_bar.edit_profile": "Editar perfil",
-  "navigation_bar.favourites": "Preferits",
+  "navigation_bar.explore": "Explora",
+  "navigation_bar.favourites": "Favorits",
   "navigation_bar.filters": "Paraules silenciades",
   "navigation_bar.follow_requests": "Sol·licituds de seguiment",
   "navigation_bar.follows_and_followers": "Seguits i seguidors",
@@ -303,12 +305,12 @@
   "navigation_bar.logout": "Tancar sessió",
   "navigation_bar.mutes": "Usuaris silenciats",
   "navigation_bar.personal": "Personal",
-  "navigation_bar.pins": "Tuts fixats",
+  "navigation_bar.pins": "Publicacions fixades",
   "navigation_bar.preferences": "Preferències",
   "navigation_bar.public_timeline": "Línia de temps federada",
   "navigation_bar.security": "Seguretat",
   "notification.admin.sign_up": "{name} s'ha registrat",
-  "notification.favourite": "{name} ha afavorit el teu estat",
+  "notification.favourite": "{name} ha afavorit la teva publicació",
   "notification.follow": "{name} et segueix",
   "notification.follow_request": "{name} ha sol·licitat seguir-te",
   "notification.mention": "{name} t'ha esmentat",
@@ -333,7 +335,7 @@
   "notifications.column_settings.reblog": "Impulsos:",
   "notifications.column_settings.show": "Mostra en la columna",
   "notifications.column_settings.sound": "Reproduir so",
-  "notifications.column_settings.status": "Nous tuts:",
+  "notifications.column_settings.status": "Noves publicacions:",
   "notifications.column_settings.unread_notifications.category": "Notificacions no llegides",
   "notifications.column_settings.unread_notifications.highlight": "Destaca notificacions no llegides",
   "notifications.column_settings.update": "Edicions:",
@@ -347,7 +349,7 @@
   "notifications.grant_permission": "Concedir permís.",
   "notifications.group": "{count} notificacions",
   "notifications.mark_as_read": "Marca cada notificació com a llegida",
-  "notifications.permission_denied": "No s’ha pogut activar les notificacions d’escriptori perquè s’ha denegat el permís.",
+  "notifications.permission_denied": "Les notificacions d’escriptori no estan disponibles perquè prèviament s’ha denegat el permís al navegador",
   "notifications.permission_denied_alert": "No es poden activar les notificacions del escriptori perquè el permís del navegador ha estat denegat abans",
   "notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.",
   "notifications_permission_banner.enable": "Activar les notificacions d’escriptori",
@@ -363,14 +365,14 @@
   "poll.votes": "{votes, plural, one {# vot} other {# vots}}",
   "poll_button.add_poll": "Afegir una enquesta",
   "poll_button.remove_poll": "Elimina l'enquesta",
-  "privacy.change": "Ajustar l'estat de privacitat",
-  "privacy.direct.long": "Publicar només per als usuaris esmentats",
+  "privacy.change": "Ajustar la privacitat de la publicació",
+  "privacy.direct.long": "Visible només per als usuaris esmentats",
   "privacy.direct.short": "Directe",
-  "privacy.private.long": "Publicar només a seguidors",
+  "privacy.private.long": "Visible només pels seguidors",
   "privacy.private.short": "Només seguidors",
-  "privacy.public.long": "Publicar en línies de temps públiques",
+  "privacy.public.long": "Visible per a tothom, mostrat en línies de temps públiques",
   "privacy.public.short": "Públic",
-  "privacy.unlisted.long": "No publicar en línies de temps públiques",
+  "privacy.unlisted.long": "Visible per a tothom però no en les línies de temps públiques",
   "privacy.unlisted.short": "No llistat",
   "refresh": "Actualitza",
   "regeneration_indicator.label": "Carregant…",
@@ -388,7 +390,7 @@
   "relative_time.today": "avui",
   "reply_indicator.cancel": "Cancel·lar",
   "report.block": "Bloqueja",
-  "report.block_explanation": "No veuràs les seves publicacions. Ell no podran veure les teves publicacions ni seguir-te. Ell podran dir que estan bloquejats.",
+  "report.block_explanation": "No veuràs les seves publicacions. Ell no podran veure les teves publicacions ni seguir-te. Ells podran dir que estan bloquejats.",
   "report.categories.other": "Altres",
   "report.categories.spam": "Contingut brossa",
   "report.categories.violation": "El contingut viola una o més regles del servidor",
@@ -426,20 +428,20 @@
   "report.unfollow_explanation": "Estàs seguint aquest compte. Per a no veure més les seves publicacions en la teva línia de temps Inici, deixa de seguir-lo.",
   "search.placeholder": "Cercar",
   "search_popout.search_format": "Format de cerca avançada",
-  "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les marcades com a preferides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.",
+  "search_popout.tips.full_text": "Text simple recupera publicacions que has escrit, les afavorides, les impulsades o en les que has estat esmentat, així com usuaris, noms d'usuari i etiquetes.",
   "search_popout.tips.hashtag": "etiqueta",
-  "search_popout.tips.status": "tut",
+  "search_popout.tips.status": "publicació",
   "search_popout.tips.text": "El text simple retorna coincidències amb els noms de visualització, els noms d'usuari i les etiquetes",
   "search_popout.tips.user": "usuari",
   "search_results.accounts": "Gent",
   "search_results.all": "Tots",
   "search_results.hashtags": "Etiquetes",
   "search_results.nothing_found": "No s'ha pogut trobar res per a aquests termes de cerca",
-  "search_results.statuses": "Tuts",
-  "search_results.statuses_fts_disabled": "La cerca de tuts pel seu contingut no està habilitada en aquest servidor Mastodon.",
+  "search_results.statuses": "Publicacions",
+  "search_results.statuses_fts_disabled": "La cerca de publicacions pel seu contingut no està habilitada en aquest servidor Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultat} other {resultats}}",
   "status.admin_account": "Obre l'interfície de moderació per a @{name}",
-  "status.admin_status": "Obre aquest tut a la interfície de moderació",
+  "status.admin_status": "Obre aquesta publicació a la interfície de moderació",
   "status.block": "Bloqueja @{name}",
   "status.bookmark": "Marcador",
   "status.cancel_reblog_private": "Desfer l'impuls",
@@ -451,7 +453,7 @@
   "status.edit": "Edita",
   "status.edited": "Editat {date}",
   "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}",
-  "status.embed": "Incrustar",
+  "status.embed": "Incrustat",
   "status.favourite": "Favorit",
   "status.filtered": "Filtrat",
   "status.history.created": "{name} ha creat {date}",
@@ -464,12 +466,12 @@
   "status.mute_conversation": "Silenciar conversació",
   "status.open": "Ampliar aquest estat",
   "status.pin": "Fixat en el perfil",
-  "status.pinned": "Tut fixat",
+  "status.pinned": "Publicació fixada",
   "status.read_more": "Llegir més",
   "status.reblog": "Impuls",
   "status.reblog_private": "Impulsar a l'audiència original",
   "status.reblogged_by": "{name} ha impulsat",
-  "status.reblogs.empty": "Encara ningú no ha impulsat aquest tut. Quan algú ho faci, apareixeran aquí.",
+  "status.reblogs.empty": "Encara ningú no ha impulsat aquesta publicació. Quan algú ho faci, apareixeran aquí.",
   "status.redraft": "Esborrar i reescriure",
   "status.remove_bookmark": "Suprimeix el marcador",
   "status.reply": "Respondre",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
new file mode 100644
index 000000000..7209633ad
--- /dev/null
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -0,0 +1,543 @@
+{
+  "account.account_note_header": "تێبینی    ",
+  "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان",
+  "account.badges.bot": "بوت",
+  "account.badges.group": "گرووپ",
+  "account.block": "بلۆکی @{name}",
+  "account.block_domain": "بلۆکی هەموو شتێک لە {domain}",
+  "account.blocked": "بلۆککرا",
+  "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی",
+  "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن",
+  "account.direct": "پەیامی تایبەت بە @{name}",
+  "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت",
+  "account.domain_blocked": "دۆمەین قەپاتکرا",
+  "account.edit_profile": "دەستکاری پرۆفایل",
+  "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان",
+  "account.endorse": "ناساندن لە پرۆفایل",
+  "account.follow": "شوێنکەوتن",
+  "account.followers": "شوێنکەوتووان",
+  "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە",
+  "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}",
+  "account.following": "Following",
+  "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
+  "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.",
+  "account.follows_you": "شوێنکەوتووەکانت",
+  "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}",
+  "account.joined": "Joined {date}",
+  "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە",
+  "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.",
+  "account.media": "میدیا",
+  "account.mention": "ئاماژە @{name}",
+  "account.moved_to": "{name} گواسترایەوە بۆ:",
+  "account.mute": "بێدەنگکردن @{name}",
+  "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}",
+  "account.muted": "بێ دەنگ",
+  "account.posts": "توتس",
+  "account.posts_with_replies": "توتس و وەڵامەکان",
+  "account.report": "گوزارشت @{name}",
+  "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن",
+  "account.share": "پرۆفایلی @{name} هاوبەش بکە",
+  "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}",
+  "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
+  "account.unblock": "@{name} لاببە",
+  "account.unblock_domain": "کردنەوەی دۆمەینی {domain}",
+  "account.unblock_short": "Unblock",
+  "account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە",
+  "account.unfollow": "بەدوادانەچو",
+  "account.unmute": "بێدەنگکردنی @{name}",
+  "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}",
+  "account.unmute_short": "Unmute",
+  "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی",
+  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
+  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
+  "admin.dashboard.retention.average": "Average",
+  "admin.dashboard.retention.cohort": "Sign-up month",
+  "admin.dashboard.retention.cohort_size": "New users",
+  "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.",
+  "alert.rate_limited.title": "ڕێژەی سنووردار",
+  "alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.",
+  "alert.unexpected.title": "تەححح!",
+  "announcement.announcement": "بانگەواز",
+  "attachments_list.unprocessed": "(unprocessed)",
+  "autosuggest_hashtag.per_week": "{count} هەرهەفتە",
+  "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو",
+  "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.",
+  "bundle_column_error.retry": "دووبارە هەوڵبدە",
+  "bundle_column_error.title": "هەڵيی تۆڕ",
+  "bundle_modal_error.close": "داخستن",
+  "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.",
+  "bundle_modal_error.retry": "دووبارە تاقی بکەوە",
+  "column.blocks": "بەکارهێنەرە بلۆککراوەکان",
+  "column.bookmarks": "نیشانەکان",
+  "column.community": "هێڵی کاتی ناوخۆیی",
+  "column.direct": "نامە ڕاستەوخۆکان",
+  "column.directory": "گەڕان لە پرۆفایلەکان",
+  "column.domain_blocks": "دۆمەینە داخراوەکان",
+  "column.favourites": "دڵخوازترینەکان",
+  "column.follow_requests": "بەدواداچوی داواکاریەکان بکە",
+  "column.home": "سەرەتا",
+  "column.lists": "پێرست",
+  "column.mutes": "بێدەنگکردنی بەکارهێنەران",
+  "column.notifications": "ئاگادارییەکان",
+  "column.pins": "تووتسی چەسپاو",
+  "column.public": "نووسراوەکانی هەمووشوێنێک",
+  "column_back_button.label": "دواوە",
+  "column_header.hide_settings": "شاردنەوەی ڕێکخستنەکان",
+  "column_header.moveLeft_settings": "ستوون بگوێزەرەوە بۆ لای چەپ",
+  "column_header.moveRight_settings": "جوولاندنی ئەستوون بۆ لای ڕاست",
+  "column_header.pin": "سنجاق",
+  "column_header.show_settings": "نیشاندانی رێکخستنەکان",
+  "column_header.unpin": "سنجاق نەکردن",
+  "column_subheading.settings": "رێکخستنەکان",
+  "community.column_settings.local_only": "تەنها خۆماڵی",
+  "community.column_settings.media_only": "تەنها میدیا",
+  "community.column_settings.remote_only": "تەنها بۆ دوور",
+  "compose_form.direct_message_warning": "ئەم توتە تەنیا بۆ بەکارهێنەرانی ناوبراو دەنێردرێت.",
+  "compose_form.direct_message_warning_learn_more": "زیاتر فێربه",
+  "compose_form.hashtag_warning": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.",
+  "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.",
+  "compose_form.lock_disclaimer.lock": "قفڵ دراوە",
+  "compose_form.placeholder": "چی لە مێشکتدایە?",
+  "compose_form.poll.add_option": "زیادکردنی هەڵبژاردەیەک",
+  "compose_form.poll.duration": "ماوەی ڕاپرسی",
+  "compose_form.poll.option_placeholder": "هەڵبژاردن {number}",
+  "compose_form.poll.remove_option": "لابردنی ئەم هەڵبژاردەیە",
+  "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک",
+  "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک",
+  "compose_form.publish": "توت",
+  "compose_form.publish_loud": "{publish}!",
+  "compose_form.save_changes": "Save changes",
+  "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار",
+  "compose_form.sensitive.marked": "وادەی کۆتایی",
+  "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە",
+  "compose_form.spoiler.marked": "دەق لە پشت ئاگاداریدا شاراوەتەوە",
+  "compose_form.spoiler.unmarked": "دەق شاراوە نییە",
+  "compose_form.spoiler_placeholder": "ئاگاداریەکەت لێرە بنووسە",
+  "confirmation_modal.cancel": "هەڵوەشاندنەوه",
+  "confirmations.block.block_and_report": "بلۆک & گوزارشت",
+  "confirmations.block.confirm": "بلۆک",
+  "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?",
+  "confirmations.delete.confirm": "سڕینەوە",
+  "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?",
+  "confirmations.delete_list.confirm": "سڕینەوە",
+  "confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?",
+  "confirmations.discard_edit_media.confirm": "Discard",
+  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
+  "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە",
+  "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.",
+  "confirmations.logout.confirm": "چوونە دەرەوە",
+  "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?",
+  "confirmations.mute.confirm": "بێدەنگ",
+  "confirmations.mute.explanation": "ئەمەش دەبێتە هۆی شاردنەوەی پۆستەکان یان ئەو بابەتانەی کە ئاماژەیان پێ دەکات ، بەڵام هێشتا ڕێگەیان پێ دەدات کە پۆستەکانتان ببینن و شوێنتان بکەون.",
+  "confirmations.mute.message": "ئایا دڵنیایت لەوەی دەتەوێت بیلێیت {name}?",
+  "confirmations.redraft.confirm": "سڕینەوە & دووبارە ڕەشکردنەوە",
+  "confirmations.redraft.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە و دووبارە دایبنووسیتەوە؟ دڵخوازەکان و بەرزکردنەوەکان وون دەبن، و وەڵامەکان بۆ پۆستە ڕەسەنەکە هەتیو دەبن.",
+  "confirmations.reply.confirm": "وەڵام",
+  "confirmations.reply.message": "وەڵامدانەوە ئێستا ئەو نامەیە ی کە تۆ ئێستا دایڕشتووە، دەنووسێتەوە. ئایا دڵنیایت کە دەتەوێت بەردەوام بیت?",
+  "confirmations.unfollow.confirm": "بەدوادانەچو",
+  "confirmations.unfollow.message": "ئایا دڵنیایت لەوەی دەتەوێت پەیڕەوی {name}?",
+  "conversation.delete": "سڕینەوەی گفتوگۆ",
+  "conversation.mark_as_read": "نیشانەکردن وەک خوێندراوە",
+  "conversation.open": "نیشاندان گفتوگۆ",
+  "conversation.with": "لەگەڵ{names}",
+  "directory.federated": "لە ڕاژەکانی ناسراو",
+  "directory.local": "تەنها لە {domain}",
+  "directory.new_arrivals": "تازە گەیشتنەکان",
+  "directory.recently_active": "بەم دواییانە چالاکە",
+  "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.",
+  "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:",
+  "emoji_button.activity": "چالاکی",
+  "emoji_button.custom": "ئاسایی",
+  "emoji_button.flags": "ئاڵاکان",
+  "emoji_button.food": "خواردن& خواردنەوە",
+  "emoji_button.label": "ئیمۆجی بکەنێو",
+  "emoji_button.nature": "سروشت",
+  "emoji_button.not_found": "بێ ئیمۆجی! (╯°□°)╯( ┻━┻",
+  "emoji_button.objects": "ئامانجەکان",
+  "emoji_button.people": "خەڵک",
+  "emoji_button.recent": "زۆرجار بەکارهێنراوە",
+  "emoji_button.search": "گەڕان...",
+  "emoji_button.search_results": "ئەنجامەکانی گەڕان",
+  "emoji_button.symbols": "هێماکان",
+  "emoji_button.travel": "گەشت & شوێنەکان",
+  "empty_column.account_suspended": "Account suspended",
+  "empty_column.account_timeline": "لێرە هیچ توتەک نییە!",
+  "empty_column.account_unavailable": "پرۆفایل بەردەست نیە",
+  "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.",
+  "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.",
+  "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!",
+  "empty_column.direct": "تۆ هیچ نامەی ڕاستەوخۆت نیە تا ئێستا. کاتێک دانەیەک دەنێریت یان وەرت دەگرێت، لێرە پیشان دەدات.",
+  "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.",
+  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.",
+  "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.",
+  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
+  "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.",
+  "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.",
+  "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.",
+  "empty_column.home.suggestions": "See some suggestions",
+  "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.",
+  "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.",
+  "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.",
+  "empty_column.notifications": "تۆ هێشتا هیچ ئاگانامێکت نیە. چالاکی لەگەڵ کەسانی دیکە بکە بۆ دەستپێکردنی گفتوگۆکە.",
+  "empty_column.public": "لێرە هیچ نییە! شتێک بە ئاشکرا بنووسە(بەگشتی)، یان بە دەستی شوێن بەکارهێنەران بکەوە لە ڕاژەکانی ترەوە بۆ پڕکردنەوەی",
+  "error.unexpected_crash.explanation": "بەهۆی بوونی کێشە لە کۆدەکەمان یان کێشەی گونجانی وێبگەڕەکە، ئەم لاپەڕەیە بە دروستی پیشان نادرێت.",
+  "error.unexpected_crash.explanation_addons": "ئەم لاپەڕەیە ناتوانرێت بە دروستی پیشان بدرێت. ئەم هەڵەیە لەوانەیە بەهۆی ئامێری وەرگێڕانی خۆکار یان زیادکراوی وێبگەڕەوە بێت.",
+  "error.unexpected_crash.next_steps": "هەوڵدە لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکەیان کاربەرنامەی ڕەسەن.",
+  "error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.",
+  "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
+  "errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
+  "explore.search_results": "Search results",
+  "explore.suggested_follows": "For you",
+  "explore.title": "Explore",
+  "explore.trending_links": "News",
+  "explore.trending_statuses": "Posts",
+  "explore.trending_tags": "Hashtags",
+  "follow_recommendations.done": "Done",
+  "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
+  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
+  "follow_request.authorize": "ده‌سه‌ڵاتپێدراو",
+  "follow_request.reject": "ڕەتکردنەوە",
+  "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.",
+  "generic.saved": "پاشکەوتکرا",
+  "getting_started.developers": "پەرەپێدەران",
+  "getting_started.directory": "پەڕەی پرۆفایل",
+  "getting_started.documentation": "بەڵگەنامە",
+  "getting_started.heading": "دەست پێکردن",
+  "getting_started.invite": "بانگهێشتکردنی خەڵک",
+  "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.",
+  "getting_started.security": "ڕێکخستنەکانی هەژمارە",
+  "getting_started.terms": "مەرجەکانی خزمەتگوزاری",
+  "hashtag.column_header.tag_mode.all": "و {additional}",
+  "hashtag.column_header.tag_mode.any": "یا {additional}",
+  "hashtag.column_header.tag_mode.none": "بەبێ {additional}",
+  "hashtag.column_settings.select.no_options_message": "هیچ پێشنیارێک نەدۆزرایەوە",
+  "hashtag.column_settings.select.placeholder": "هاشتاگی تێبنووسە…",
+  "hashtag.column_settings.tag_mode.all": "هەموو ئەمانە",
+  "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە",
+  "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە",
+  "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە",
+  "home.column_settings.basic": "بنەڕەتی",
+  "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن",
+  "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە",
+  "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان",
+  "home.show_announcements": "پیشاندانی راگەیەنراوەکان",
+  "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}",
+  "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}",
+  "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}",
+  "keyboard_shortcuts.back": "بۆ گەڕانەوە",
+  "keyboard_shortcuts.blocked": "بۆ کردنەوەی لیستی بەکارهێنەرە بلۆککراوەکان",
+  "keyboard_shortcuts.boost": "بۆ بەهێزکردن",
+  "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان",
+  "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق",
+  "keyboard_shortcuts.description": "وه‌سف",
+  "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان",
+  "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا",
+  "keyboard_shortcuts.enter": "بۆ کردنەوەی توت",
+  "keyboard_shortcuts.favourite": "بۆ دڵخواز",
+  "keyboard_shortcuts.favourites": "بۆ کردنەوەی لیستی دڵخوازەکان",
+  "keyboard_shortcuts.federated": "بۆ کردنەوەی نووسراوەکانی هەمووشوێن",
+  "keyboard_shortcuts.heading": "قه‌دبڕەکانی تەختەکلیل",
+  "keyboard_shortcuts.home": "بۆ کردنەوەی هێڵی کاتی ماڵەوە",
+  "keyboard_shortcuts.hotkey": "هۆتکەی",
+  "keyboard_shortcuts.legend": "بۆ نیشاندانی ئەم نیشانە",
+  "keyboard_shortcuts.local": "بۆ کردنەوەی نووسراوەکانی خۆماڵی",
+  "keyboard_shortcuts.mention": "نۆ ناوبردن لە نووسەر",
+  "keyboard_shortcuts.muted": "بۆ کردنەوەی پێرستی بەکارهێنەرانی بێدەنگ",
+  "keyboard_shortcuts.my_profile": "بۆ کردنەوەی پرۆفایڵ",
+  "keyboard_shortcuts.notifications": "بۆ کردنەوەی ستوونی ئاگانامەکان",
+  "keyboard_shortcuts.open_media": "بۆ کردنەوەی میدیا",
+  "keyboard_shortcuts.pinned": "بۆ کردنەوەی لیستی توتەکانی چەسپێنراو",
+  "keyboard_shortcuts.profile": "بۆ کردنەوەی پرۆفایڵی نووسەر",
+  "keyboard_shortcuts.reply": "بۆ وەڵامدانەوە",
+  "keyboard_shortcuts.requests": "بۆ کردنەوەی لیستی داواکاریەکانی بەدوادا",
+  "keyboard_shortcuts.search": "بۆ جەختکردن لەسەر گەڕان",
+  "keyboard_shortcuts.spoilers": "بۆ پیشاندان/شاردنەوەی خانەی CW",
+  "keyboard_shortcuts.start": "بۆ کردنەوەی ستوونی \"دەست پێبکە\"",
+  "keyboard_shortcuts.toggle_hidden": "بۆ پیشاندان/شاردنەوەی دەق لە پشت CW",
+  "keyboard_shortcuts.toggle_sensitivity": "بۆ پیشاندان/شاردنەوەی میدیا",
+  "keyboard_shortcuts.toot": "بۆ دەست کردن بە براندێکی تازە",
+  "keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان",
+  "keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت",
+  "lightbox.close": "دابخە",
+  "lightbox.compress": "سندوقی نیشاندانی وێنە بپەستێنە",
+  "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە",
+  "lightbox.next": "داهاتوو",
+  "lightbox.previous": "پێشوو",
+  "lists.account.add": "زیادکردن بۆ لیست",
+  "lists.account.remove": "لابردن لە لیست",
+  "lists.delete": "سڕینەوەی لیست",
+  "lists.edit": "دەستکاری لیست",
+  "lists.edit.submit": "گۆڕینی ناونیشان",
+  "lists.new.create": "زیادکردنی لیست",
+  "lists.new.title_placeholder": "ناونیشانی لیستی نوێ",
+  "lists.replies_policy.followed": "Any followed user",
+  "lists.replies_policy.list": "Members of the list",
+  "lists.replies_policy.none": "No one",
+  "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:",
+  "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
+  "lists.subheading": "لیستەکانت",
+  "load_pending": "{count, plural, one {# new item} other {# new items}}",
+  "loading_indicator.label": "بارکردن...",
+  "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}",
+  "missing_indicator.label": "نەدۆزرایەوە",
+  "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە",
+  "mute_modal.duration": "ماوە",
+  "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ",
+  "mute_modal.indefinite": "نادیار",
+  "navigation_bar.apps": "بەرنامەی مۆبایل",
+  "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان",
+  "navigation_bar.bookmarks": "نیشانکراوەکان",
+  "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی",
+  "navigation_bar.compose": "نووسینی توتی نوێ",
+  "navigation_bar.direct": "نامە ڕاستەوخۆکان",
+  "navigation_bar.discover": "دۆزینەوە",
+  "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان",
+  "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە",
+  "navigation_bar.explore": "Explore",
+  "navigation_bar.favourites": "دڵخوازەکان",
+  "navigation_bar.filters": "وشە کپەکان",
+  "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە",
+  "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان",
+  "navigation_bar.info": "دەربارەی ئەم ڕاژە",
+  "navigation_bar.keyboard_shortcuts": "هۆتکەی",
+  "navigation_bar.lists": "لیستەکان",
+  "navigation_bar.logout": "دەرچوون",
+  "navigation_bar.mutes": "کپکردنی بەکارهێنەران",
+  "navigation_bar.personal": "کەسی",
+  "navigation_bar.pins": "توتی چەسپاو",
+  "navigation_bar.preferences": "پەسەندەکان",
+  "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک",
+  "navigation_bar.security": "ئاسایش",
+  "notification.admin.sign_up": "{name} signed up",
+  "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد",
+  "notification.follow": "{name} دوای تۆ کەوت",
+  "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت",
+  "notification.mention": "{name} باسی ئێوەی کرد",
+  "notification.own_poll": "ڕاپرسیەکەت کۆتایی هات",
+  "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات",
+  "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند",
+  "notification.status": "{name} تازە بڵاوکرایەوە",
+  "notification.update": "{name} edited a post",
+  "notifications.clear": "ئاگانامەکان بسڕیەوە",
+  "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?",
+  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی",
+  "notifications.column_settings.favourite": "دڵخوازترین:",
+  "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە",
+  "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا",
+  "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
+  "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:",
+  "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:",
+  "notifications.column_settings.mention": "ئاماژەکان:",
+  "notifications.column_settings.poll": "ئەنجامەکانی ڕاپرسی:",
+  "notifications.column_settings.push": "ئاگانامەکان پاڵ بنێ",
+  "notifications.column_settings.reblog": "دووبارەتوتەکان:",
+  "notifications.column_settings.show": "لە ستووندا پیشان بدە",
+  "notifications.column_settings.sound": "لێدانی دەنگ",
+  "notifications.column_settings.status": "توتەکانی نوێ:",
+  "notifications.column_settings.unread_notifications.category": "Unread notifications",
+  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
+  "notifications.column_settings.update": "Edits:",
+  "notifications.filter.all": "هەموو",
+  "notifications.filter.boosts": "دووبارەتوتەکان",
+  "notifications.filter.favourites": "دڵخوازەکان",
+  "notifications.filter.follows": "شوێنکەوتن",
+  "notifications.filter.mentions": "ئاماژەکان",
+  "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی",
+  "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت",
+  "notifications.grant_permission": "Grant permission.",
+  "notifications.group": "{count} ئاگانامە",
+  "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە",
+  "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.",
+  "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە",
+  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+  "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
+  "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
+  "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",
+  "picture_in_picture.restore": "بیگەڕێنەوە",
+  "poll.closed": "دابخە",
+  "poll.refresh": "نوێکردنەوە",
+  "poll.total_people": "{count, plural, one {# خەڵک} other {# خەڵک}}",
+  "poll.total_votes": "{count, plural, one {# دەنگ} other {# دەنگ}}\n",
+  "poll.vote": "دەنگ",
+  "poll.voted": "تۆ دەنگت بەو وەڵامە دا",
+  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
+  "poll_button.add_poll": "ڕاپرسییەک زیاد بکە",
+  "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌",
+  "privacy.change": "ڕێکخستنی تایبەتمەندی توت",
+  "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو",
+  "privacy.direct.short": "ڕاستەوخۆ",
+  "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان",
+  "privacy.private.short": "تەنها بۆ شوێنکەوتوان",
+  "privacy.public.long": "بۆ هەمووان دیاربێت، لە هێڵی کاتی گشتی دا نیشان دەدرێت",
+  "privacy.public.short": "گشتی",
+  "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە هێڵی کاتی گشتیدا نا",
+  "privacy.unlisted.short": "لە لیست نەکراو",
+  "refresh": "نوێکردنەوە",
+  "regeneration_indicator.label": "بارکردن…",
+  "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!",
+  "relative_time.days": "{number}ڕۆژ",
+  "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
+  "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
+  "relative_time.full.just_now": "just now",
+  "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
+  "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
+  "relative_time.hours": "{number}کات",
+  "relative_time.just_now": "ئێستا",
+  "relative_time.minutes": "{number}کات",
+  "relative_time.seconds": "{number}کات",
+  "relative_time.today": "ئیمڕۆ",
+  "reply_indicator.cancel": "هەڵوەشاندنەوه",
+  "report.block": "Block",
+  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.categories.other": "Other",
+  "report.categories.spam": "Spam",
+  "report.categories.violation": "Content violates one or more server rules",
+  "report.category.subtitle": "Choose the best match",
+  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.title_account": "profile",
+  "report.category.title_status": "post",
+  "report.close": "Done",
+  "report.comment.title": "Is there anything else you think we should know?",
+  "report.forward": "ناردن بۆ {target}",
+  "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?",
+  "report.mute": "Mute",
+  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
+  "report.next": "Next",
+  "report.placeholder": "سەرنجەکانی زیاتر",
+  "report.reasons.dislike": "I don't like it",
+  "report.reasons.dislike_description": "It is not something you want to see",
+  "report.reasons.other": "It's something else",
+  "report.reasons.other_description": "The issue does not fit into other categories",
+  "report.reasons.spam": "It's spam",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.violation": "It violates server rules",
+  "report.reasons.violation_description": "You are aware that it breaks specific rules",
+  "report.rules.subtitle": "Select all that apply",
+  "report.rules.title": "Which rules are being violated?",
+  "report.statuses.subtitle": "Select all that apply",
+  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.submit": "ناردن",
+  "report.target": "گوزارشتکردنی{target}",
+  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
+  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
+  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
+  "report.unfollow": "Unfollow @{name}",
+  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "search.placeholder": "گەڕان",
+  "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو",
+  "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.",
+  "search_popout.tips.hashtag": "هەشتاگ",
+  "search_popout.tips.status": "توت",
+  "search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان",
+  "search_popout.tips.user": "بەکارهێنەر",
+  "search_results.accounts": "خەڵک",
+  "search_results.all": "All",
+  "search_results.hashtags": "هەشتاگ",
+  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.statuses": "توتەکان",
+  "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.",
+  "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}",
+  "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}",
+  "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر",
+  "status.block": "بلۆکی @{name}",
+  "status.bookmark": "نیشانه",
+  "status.cancel_reblog_private": "بێبەهێزکردن",
+  "status.cannot_reblog": "ئەم بابەتە ناتوانرێت بەرزبکرێتەوە",
+  "status.copy": "ڕوونووسی بەستەر بۆ توت",
+  "status.delete": "سڕینەوە",
+  "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری",
+  "status.direct": "پەیامی ڕاستەوخۆ @{name}",
+  "status.edit": "Edit",
+  "status.edited": "Edited {date}",
+  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.embed": "نیشتەجێ بکە",
+  "status.favourite": "دڵخواز",
+  "status.filtered": "پاڵاوتن",
+  "status.history.created": "{name} created {date}",
+  "status.history.edited": "{name} edited {date}",
+  "status.load_more": "بارکردنی زیاتر",
+  "status.media_hidden": "میدیای شاراوە",
+  "status.mention": "ناوبنێ @{name}",
+  "status.more": "زیاتر",
+  "status.mute": "بێدەنگکردن @{name}",
+  "status.mute_conversation": "گفتوگۆی بێدەنگ",
+  "status.open": "ئەم توتە فراوان بکە",
+  "status.pin": "لکاندن لەسەر پرۆفایل",
+  "status.pinned": "توتی چەسپکراو",
+  "status.read_more": "زیاتر بخوێنەوە",
+  "status.reblog": "بەهێزکردن",
+  "status.reblog_private": "بەهێزکردن بۆ بینەرانی سەرەتایی",
+  "status.reblogged_by": "{name} توتی کردەوە",
+  "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.",
+  "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس",
+  "status.remove_bookmark": "لابردنی نیشانه",
+  "status.reply": "وەڵام",
+  "status.replyAll": "بە نووسراوە وەڵام بدەوە",
+  "status.report": "گوزارشت @{name}",
+  "status.sensitive_warning": "ناوەڕۆکی هەستیار",
+  "status.share": "هاوبەش کردن",
+  "status.show_less": "کەمتر نیشان بدە",
+  "status.show_less_all": "کەمتر نیشان بدە بۆ هەمووی",
+  "status.show_more": "زیاتر پیشان بدە",
+  "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی",
+  "status.show_thread": "نیشاندانی گفتوگۆ",
+  "status.uncached_media_warning": "بەردەست نیە",
+  "status.unmute_conversation": "گفتوگۆی بێدەنگ",
+  "status.unpin": "لابردن لە پرۆفایل",
+  "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار",
+  "suggestions.header": "لەوانەیە حەزت لەمەش بێت…",
+  "tabs_bar.federated_timeline": "گشتی",
+  "tabs_bar.home": "سەرەتا",
+  "tabs_bar.local_timeline": "ناوخۆیی",
+  "tabs_bar.notifications": "ئاگادارییەکان",
+  "tabs_bar.search": "گەڕان",
+  "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە",
+  "time_remaining.hours": "{number, plural, one {# کات} other {# کات}} ماوە",
+  "time_remaining.minutes": "{number, plural, one {# خۆلەک} other {# خولەک}} ماوە",
+  "time_remaining.moments": "ئەو ساتانەی ماونەتەوە",
+  "time_remaining.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە",
+  "timeline_hint.remote_resource_not_displayed": "{resource} لە ڕاژەکانی ترەوە پیشان نادرێت.",
+  "timeline_hint.resources.followers": "شوێنکەوتووان",
+  "timeline_hint.resources.follows": "شوێنکەوتن",
+  "timeline_hint.resources.statuses": "توتی کۆن",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا",
+  "trends.trending_now": "گۆگران",
+  "ui.beforeunload": "ڕەشنووسەکەت لە دەست دەچێت ئەگەر لە ماستۆدۆن بڕۆیت.",
+  "units.short.billion": "{count}ملیار",
+  "units.short.million": "{count}ملیۆن",
+  "units.short.thousand": "{count}هەزار",
+  "upload_area.title": "ڕاکێشان & دانان بۆ بارکردن",
+  "upload_button.label": "زیادکردنی وێنەکان، ڤیدیۆیەک یان فایلێکی دەنگی",
+  "upload_error.limit": "سنووری بارکردنی فایل تێپەڕیوە.",
+  "upload_error.poll": "پەڕگەکە ڕێی پێنەدراوە بە ڕاپرسی باربکرێت.",
+  "upload_form.audio_description": "بۆ ئەو کەسانەی کە گوێ بیستیان هەیە وەسف دەکات",
+  "upload_form.description": "وەسف بکە بۆ کەمبینایان",
+  "upload_form.edit": "دەستکاری",
+  "upload_form.thumbnail": "گۆڕانی وینۆچکە",
+  "upload_form.undo": "سڕینەوە",
+  "upload_form.video_description": "بۆ کەم بینایان و کەم بیستان وەسفی بکە",
+  "upload_modal.analyzing_picture": "شیکردنەوەی وێنە…",
+  "upload_modal.apply": "جێبەجێ کردن",
+  "upload_modal.applying": "Applying…",
+  "upload_modal.choose_image": "وێنە هەڵبژێرە",
+  "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا",
+  "upload_modal.detect_text": "دەقی وێنەکە بدۆزیەوە",
+  "upload_modal.edit_media": "دەستکاریکردنی میدیا",
+  "upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.",
+  "upload_modal.preparing_ocr": "ئامادەکردنی OCR…",
+  "upload_modal.preview_label": "پێشبینی ({ratio})",
+  "upload_progress.label": "بارکردن...",
+  "video.close": "داخستنی ڤیدیۆ",
+  "video.download": "داگرتنی فایل",
+  "video.exit_fullscreen": "دەرچوون لە پڕ شاشە",
+  "video.expand": "ڤیدیۆفراوان بکە",
+  "video.fullscreen": "پڕپیشانگەر",
+  "video.hide": "شاردنەوەی ڤیدیۆ",
+  "video.mute": "دەنگی کپ",
+  "video.pause": "وەستان",
+  "video.play": "پەخشکردن",
+  "video.unmute": "دەنگ لابدە"
+}
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 799fc877d..21240bc3b 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -18,12 +18,12 @@
   "account.followers": "Abbunati",
   "account.followers.empty": "Nisunu hè abbunatu à st'utilizatore.",
   "account.followers_counter": "{count, plural, one {{counter} Abbunatu} other {{counter} Abbunati}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Abbunamentu} other {{counter} Abbunamenti}}",
   "account.follows.empty": "St'utilizatore ùn seguita nisunu.",
   "account.follows_you": "Vi seguita",
   "account.hide_reblogs": "Piattà spartere da @{name}",
   "account.joined": "Quì dapoi {date}",
-  "account.last_status": "Ultima attività",
   "account.link_verified_on": "A prupietà di stu ligame hè stata verificata u {date}",
   "account.locked_info": "U statutu di vita privata di u contu hè chjosu. U pruprietariu esamina manualmente e dumande d'abbunamentu.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Piattà @{name}",
   "account.mute_notifications": "Piattà nutificazione da @{name}",
   "account.muted": "Piattatu",
-  "account.never_active": "Mai",
   "account.posts": "Statuti",
   "account.posts_with_replies": "Statuti è risposte",
   "account.report": "Palisà @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Statutu} other {{counter} Statuti}}",
   "account.unblock": "Sbluccà @{name}",
   "account.unblock_domain": "Ùn piattà più {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ùn fà figurà nant'à u prufilu",
   "account.unfollow": "Ùn siguità più",
   "account.unmute": "Ùn piattà più @{name}",
   "account.unmute_notifications": "Ùn piattà più nutificazione da @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Senza cummentariu",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Scopre",
   "navigation_bar.domain_blocks": "Duminii piattati",
   "navigation_bar.edit_profile": "Mudificà u prufile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favuriti",
   "navigation_bar.filters": "Parolle silenzate",
   "navigation_bar.follow_requests": "Dumande d'abbunamentu",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 65043cc0e..d48780042 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -18,12 +18,12 @@
   "account.followers": "Sledující",
   "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
   "account.followers_counter": "{count, plural, one {{counter} Sledující} few {{counter} Sledující} many {{counter} Sledujících} other {{counter} Sledujících}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}",
   "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.",
   "account.follows_you": "Sleduje vás",
   "account.hide_reblogs": "Skrýt boosty od @{name}",
   "account.joined": "Založen {date}",
-  "account.last_status": "Naposledy aktivní",
   "account.link_verified_on": "Vlastnictví tohoto odkazu bylo zkontrolováno {date}",
   "account.locked_info": "Stav soukromí tohoto účtu je nastaven na zamčeno. Jeho vlastník ručně posuzuje, kdo ho může sledovat.",
   "account.media": "Média",
@@ -32,7 +32,6 @@
   "account.mute": "Skrýt @{name}",
   "account.mute_notifications": "Skrýt oznámení od @{name}",
   "account.muted": "Skryt",
-  "account.never_active": "Nikdy",
   "account.posts": "Příspěvky",
   "account.posts_with_replies": "Příspěvky a odpovědi",
   "account.report": "Nahlásit @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Příspěvek} few {{counter} Příspěvky} many {{counter} Příspěvků} other {{counter} Příspěvků}}",
   "account.unblock": "Odblokovat @{name}",
   "account.unblock_domain": "Odblokovat doménu {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Nezvýrazňovat na profilu",
   "account.unfollow": "Přestat sledovat",
   "account.unmute": "Zrušit skrytí @{name}",
   "account.unmute_notifications": "Zrušit skrytí oznámení od @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klikněte pro přidání poznámky",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Objevujte",
   "navigation_bar.domain_blocks": "Blokované domény",
   "navigation_bar.edit_profile": "Upravit profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Oblíbené",
   "navigation_bar.filters": "Skrytá slova",
   "navigation_bar.follow_requests": "Žádosti o sledování",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index ad7316865..d3ac8d806 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -18,12 +18,12 @@
   "account.followers": "Dilynwyr",
   "account.followers.empty": "Nid oes neb yn dilyn y defnyddiwr hwn eto.",
   "account.followers_counter": "{count, plural, one {{counter} Ddilynwr} other {{counter} o Ddilynwyr}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}",
   "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
   "account.follows_you": "Yn eich dilyn chi",
   "account.hide_reblogs": "Cuddio bwstiau o @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Gweithredol olaf",
   "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}",
   "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.",
   "account.media": "Cyfryngau",
@@ -32,7 +32,6 @@
   "account.mute": "Tawelu @{name}",
   "account.mute_notifications": "Cuddio hysbysiadau o @{name}",
   "account.muted": "Distewyd",
-  "account.never_active": "Byth",
   "account.posts": "Tŵtiau",
   "account.posts_with_replies": "Tŵtiau ac atebion",
   "account.report": "Adrodd @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Dŵt} other {{counter} o Dŵtiau}}",
   "account.unblock": "Dadflocio @{name}",
   "account.unblock_domain": "Dadguddio {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Peidio a'i arddangos ar fy mhroffil",
   "account.unfollow": "Dad-ddilyn",
   "account.unmute": "Dad-dawelu @{name}",
   "account.unmute_notifications": "Dad-dawelu hysbysiadau o @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Clicio i ychwanegu nodyn",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Darganfod",
   "navigation_bar.domain_blocks": "Parthau cuddiedig",
   "navigation_bar.edit_profile": "Golygu proffil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Ffefrynnau",
   "navigation_bar.filters": "Geiriau a dawelwyd",
   "navigation_bar.follow_requests": "Ceisiadau dilyn",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 3c7a658a3..12023bfb0 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -1,29 +1,29 @@
 {
-  "account.account_note_header": "Note",
+  "account.account_note_header": "Notat",
   "account.add_or_remove_from_list": "Tilføj eller fjern fra lister",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppe",
   "account.block": "Blokér @{name}",
   "account.block_domain": "Blokér domænet {domain}",
   "account.blocked": "Blokeret",
-  "account.browse_more_on_origin_server": "Se mere på den oprindelige profil",
+  "account.browse_more_on_origin_server": "Tjek mere ud på den oprindelige profil",
   "account.cancel_follow_request": "Annullér følgeanmodning",
   "account.direct": "Direkte besked til @{name}",
   "account.disable_notifications": "Advisér mig ikke længere, når @{name} poster",
   "account.domain_blocked": "Domæne blokeret",
   "account.edit_profile": "Redigér profil",
-  "account.enable_notifications": "Giv besked når @{name} udgiver nyt",
+  "account.enable_notifications": "Advisér mig, når @{name} poster",
   "account.endorse": "Fremhæv på profil",
   "account.follow": "Følg",
   "account.followers": "Følgere",
-  "account.followers.empty": "Ingen følger brugeren endnu.",
+  "account.followers.empty": "Ingen følger denne bruger endnu.",
   "account.followers_counter": "{count, plural, one {{counter} Følger} other {{counter} Følgere}}",
+  "account.following": "Følger",
   "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}",
   "account.follows.empty": "Denne bruger følger ikke nogen endnu.",
   "account.follows_you": "Følger dig",
-  "account.hide_reblogs": "Skjul fremhævelser fra @{name}",
+  "account.hide_reblogs": "Skjul boosts fra @{name}",
   "account.joined": "Tilmeldt {date}",
-  "account.last_status": "Senest aktiv",
   "account.link_verified_on": "Ejerskab af dette link blev tjekket {date}",
   "account.locked_info": "Denne kontos fortrolighedsstatus er sat til låst. Ejeren bedømmer manuelt, hvem der kan følge vedkommende.",
   "account.media": "Medier",
@@ -32,7 +32,6 @@
   "account.mute": "Skjul @{name}",
   "account.mute_notifications": "Skjul notifikationer fra @{name}",
   "account.muted": "Tystnet",
-  "account.never_active": "Aldrig",
   "account.posts": "Indlæg",
   "account.posts_with_replies": "Indlæg og svar",
   "account.report": "Anmeld @{name}",
@@ -40,40 +39,42 @@
   "account.share": "Del @{name}s profil",
   "account.show_reblogs": "Vis fremhævelser fra @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Indlæg} other {{counter} Indlæg}}",
-  "account.unblock": "Fjern blokeringen af @{name}",
+  "account.unblock": "Afblokér @{name}",
   "account.unblock_domain": "Afblokér domænet {domain}",
+  "account.unblock_short": "Afblokér",
   "account.unendorse": "Fjern visning på din profil",
   "account.unfollow": "Følg ikke længere",
-  "account.unmute": "Fjern tavsgjort for @{name}",
-  "account.unmute_notifications": "Slå notifikationer om @{name} til igen",
+  "account.unmute": "Fjern tavsgørelsen af @{name}",
+  "account.unmute_notifications": "Fjern tavsgørelsen af notifikationer fra @{name}",
+  "account.unmute_short": "Fjern tavsgørelse",
   "account_note.placeholder": "Klik for at tilføje notat",
   "admin.dashboard.daily_retention": "Brugerfastholdelsesrate efter dag efter tilmelding",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
+  "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding",
   "admin.dashboard.retention.average": "Gennemsnitlig",
   "admin.dashboard.retention.cohort": "Tilmeldingsmåned",
   "admin.dashboard.retention.cohort_size": "Nye brugere",
   "alert.rate_limited.message": "Forsøg igen efter {retry_time, time, medium}.",
   "alert.rate_limited.title": "Hastighedsbegrænset",
-  "alert.unexpected.message": "Der skete en uventet fejl.",
+  "alert.unexpected.message": "En uventet fejl opstod.",
   "alert.unexpected.title": "Ups!",
   "announcement.announcement": "Bekendtgørelse",
-  "attachments_list.unprocessed": "(ubearbejdet)",
+  "attachments_list.unprocessed": "(ubehandlet)",
   "autosuggest_hashtag.per_week": "{count} pr. uge",
-  "boost_modal.combo": "Du kan trykke på {combo} for at springe over næste gang",
+  "boost_modal.combo": "Du kan trykke på {combo} for at overspringe dette næste gang",
   "bundle_column_error.body": "Noget gik galt under indlæsningen af denne komponent.",
-  "bundle_column_error.retry": "Prøv igen",
+  "bundle_column_error.retry": "Forsøg igen",
   "bundle_column_error.title": "Netværksfejl",
   "bundle_modal_error.close": "Luk",
   "bundle_modal_error.message": "Noget gik galt under indlæsningen af denne komponent.",
-  "bundle_modal_error.retry": "Prøv igen",
+  "bundle_modal_error.retry": "Forsøg igen",
   "column.blocks": "Blokerede brugere",
   "column.bookmarks": "Bogmærker",
   "column.community": "Lokal tidslinje",
   "column.direct": "Direkte beskeder",
-  "column.directory": "Se profiler",
+  "column.directory": "Tjek profiler",
   "column.domain_blocks": "Blokerede domæner",
   "column.favourites": "Favoritter",
-  "column.follow_requests": "Følg-anmodninger",
+  "column.follow_requests": "Følgeanmodninger",
   "column.home": "Hjem",
   "column.lists": "Lister",
   "column.mutes": "Tavsgjorte brugere",
@@ -91,16 +92,16 @@
   "community.column_settings.local_only": "Kun lokalt",
   "community.column_settings.media_only": "Kun medier",
   "community.column_settings.remote_only": "Kun udefra",
-  "compose_form.direct_message_warning": "Indlægget bliver kun sendt til de nævnte brugere.",
+  "compose_form.direct_message_warning": "Indlægget sendes kun til de nævnte brugere.",
   "compose_form.direct_message_warning_learn_more": "Få mere at vide",
-  "compose_form.hashtag_warning": "Dette trut vises ikke under noget hashtag, da det ikke er listet. Kun offentlige trut kan søges via hashtags.",
-  "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Alle kan følge dig, så de også kan se de indlæg, der kun er til følgere.",
+  "compose_form.hashtag_warning": "Da indlægget ikke er offentligt, vises det ikke under noget hashtag, idet kun offentlige indlæg kan søges via hashtags.",
+  "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Enhver kan følge dig og se indlæg kun beregnet for følgere.",
   "compose_form.lock_disclaimer.lock": "låst",
-  "compose_form.placeholder": "Hvad vil du gerne fortælle om?",
+  "compose_form.placeholder": "Hvad tænker du på?",
   "compose_form.poll.add_option": "Tilføj valgmulighed",
   "compose_form.poll.duration": "Afstemningens varighed",
   "compose_form.poll.option_placeholder": "Valgmulighed {number}",
-  "compose_form.poll.remove_option": "Fjern valgmulighed",
+  "compose_form.poll.remove_option": "Fjern denne valgmulighed",
   "compose_form.poll.switch_to_multiple": "Ændr afstemning til flervalgstype",
   "compose_form.poll.switch_to_single": "Ændr afstemning til enkeltvalgstype",
   "compose_form.publish": "Udgiv",
@@ -109,41 +110,41 @@
   "compose_form.sensitive.hide": "{count, plural, one {Markér medie som følsomt} other {Markér medier som følsomme}}",
   "compose_form.sensitive.marked": "{count, plural, one {Medie er markeret som sensitivt} other {Medier er markerede som sensitive}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Medie er ikke market som sensitivt} other {Medier er ikke markerede som sensitive}}",
-  "compose_form.spoiler.marked": "Fjern advarsel",
-  "compose_form.spoiler.unmarked": "Skjul bag advarsel",
+  "compose_form.spoiler.marked": "Fjern indholdsadvarsel",
+  "compose_form.spoiler.unmarked": "Tilføj indholdsadvarsel",
   "compose_form.spoiler_placeholder": "Skriv din advarsel hér",
   "confirmation_modal.cancel": "Afbryd",
   "confirmations.block.block_and_report": "Blokér og Anmeld",
   "confirmations.block.confirm": "Blokér",
-  "confirmations.block.message": "Er du sikker på, du vil blokere {name}?",
+  "confirmations.block.message": "Sikker på, at du vil blokere {name}?",
   "confirmations.delete.confirm": "Slet",
-  "confirmations.delete.message": "Er du sikker på, at du vil slette indlægget?",
+  "confirmations.delete.message": "Sikker på, at du vil slette dette indlæg?",
   "confirmations.delete_list.confirm": "Slet",
   "confirmations.delete_list.message": "Sikker på, at du vil slette denne liste permanent?",
   "confirmations.discard_edit_media.confirm": "Kassér",
   "confirmations.discard_edit_media.message": "Der er ugemte ændringer i mediebeskrivelsen eller forhåndsvisningen, kassér dem alligevel?",
   "confirmations.domain_block.confirm": "Blokér hele domænet",
-  "confirmations.domain_block.message": "Er du helt sikker på, at du vil blokere hele {domain}-domænet? Oftest vil det være at foretrække istedet målrettet at blokere eller skjule nogle få brugere. Hvis du blokerer domænet, vil du ikke se indhold fra domænet på offentlige tidslinjer eller i dine notifikationer. Dine følgere fra domænet fjernes.",
+  "confirmations.domain_block.message": "Fuldstændig sikker på, at du vil blokere hele {domain}-domænet? Oftest vil nogle få målrettede blokeringer eller tavsgørelser være tilstrækkelige og at foretrække. Du vil ikke se indhold fra dette domæne i nogle offentlige tidslinjer eller i dine notifikationer, og dine følgere herfra fjernes ligeledes.",
   "confirmations.logout.confirm": "Log ud",
   "confirmations.logout.message": "Log ud, sikker?",
-  "confirmations.mute.confirm": "Skjul",
-  "confirmations.mute.explanation": "Dette skjuler indlæg fra (og om) dem, men de kan stadig se dine indlæg og følge dig.",
+  "confirmations.mute.confirm": "Tavsgør",
+  "confirmations.mute.explanation": "Dette skjuler indlæg fra (og om) dem, men lader dem fortsat se dine indlæg og følge dig.",
   "confirmations.mute.message": "Er du sikker på, du vil skjule {name}?",
-  "confirmations.redraft.confirm": "Slet og omskriv",
-  "confirmations.redraft.message": "Er du sikker på, at du vil slette og omskrive indlægget? Favoritter og fremhævelser går tabt og svar til det oprindelige indlæg afassocieres.",
+  "confirmations.redraft.confirm": "Slet og omformulér",
+  "confirmations.redraft.message": "Sikker på, at du vil slette dette indlæg for at omskrive det? Favoritter og boosts går tabt, og svar til det oprindelige indlæg afassocieres.",
   "confirmations.reply.confirm": "Svar",
   "confirmations.reply.message": "At svare nu vil overskrive den besked, du er ved at skrive. Fortsæt alligevel?",
   "confirmations.unfollow.confirm": "Følg ikke længere",
-  "confirmations.unfollow.message": "Er du sikker på, at du ikke vil følge {name}?",
+  "confirmations.unfollow.message": "Sikker på, at du ikke længere vil følge {name}?",
   "conversation.delete": "Slet samtale",
   "conversation.mark_as_read": "Markér som læst",
-  "conversation.open": "Vis samtale",
+  "conversation.open": "Vis konversation",
   "conversation.with": "Med {names}",
-  "directory.federated": "Fra kendt Fællesvers",
+  "directory.federated": "Fra kendt fedivers",
   "directory.local": "Kun fra {domain}",
   "directory.new_arrivals": "Nye ankomster",
-  "directory.recently_active": "Aktive for nyligt",
-  "embed.instructions": "Indlejr indlægget på din side ved at kopiere koden nedenfor.",
+  "directory.recently_active": "Nyligt aktive",
+  "embed.instructions": "Indlejr dette indlæg på dit websted ved at kopiere nedenstående kode.",
   "embed.preview": "Sådan kommer det til at se ud:",
   "emoji_button.activity": "Aktivitet",
   "emoji_button.custom": "Tilpasset",
@@ -151,38 +152,38 @@
   "emoji_button.food": "Mad og drikke",
   "emoji_button.label": "Indsæt emoji",
   "emoji_button.nature": "Natur",
-  "emoji_button.not_found": "Kunne ikke finde tilsvarende emojis",
+  "emoji_button.not_found": "Ingen matchende emojis fundet",
   "emoji_button.objects": "Objekter",
   "emoji_button.people": "Personer",
-  "emoji_button.recent": "De sædvanlige",
+  "emoji_button.recent": "Oftest brugt",
   "emoji_button.search": "Søg...",
   "emoji_button.search_results": "Søgeresultater",
   "emoji_button.symbols": "Symboler",
   "emoji_button.travel": "Rejser og steder",
   "empty_column.account_suspended": "Konto suspenderet",
-  "empty_column.account_timeline": "Ingen trut her!",
+  "empty_column.account_timeline": "Ingen indlæg hér!",
   "empty_column.account_unavailable": "Profil utilgængelig",
-  "empty_column.blocks": "Du har ikke blokeret nogen endnu.",
-  "empty_column.bookmarked_statuses": "Du har ingen indlæg med bogmærke endnu. Når du sætter et bogmærke, vil det dukke op hér.",
+  "empty_column.blocks": "Ingen brugere blokeret endnu.",
+  "empty_column.bookmarked_statuses": "Du har ingen bogmærkede indlæg endnu. Når du bogmærker ét, vil det dukke op hér.",
   "empty_column.community": "Den lokale tidslinje er tom. Skriv noget offentligt for at sætte tingene i gang!",
-  "empty_column.direct": "Du har ingen direkte beskeder endnu. Hvis du sender eller modtager en, bliver den vist hér.",
-  "empty_column.domain_blocks": "Der er ingen skjulte domæner endnu.",
-  "empty_column.explore_statuses": "Intet nye tendensen pt. Tjek igen senere!",
-  "empty_column.favourited_statuses": "Du har ikke markeret nogle indlæg som favorit. Når du markerer ét, bliver det vist hér.",
-  "empty_column.favourites": "Ingen har markeret indlægget som favorit endnu. Hvis der er nogen der gør, bliver det vist hér.",
-  "empty_column.follow_recommendations": "Det ser ud til, at der ikke kunne blive lavet forslag til dig. Du kan prøve med Søg for at finde personer, du kender, eller udforske hashtags.",
-  "empty_column.follow_requests": "Du har ingen følgeanmodninger endnu. Hvis du modtager en, bliver den vist her.",
-  "empty_column.hashtag": "Der er ingen indlæg med hashtagget endnu.",
-  "empty_column.home": "Din hjemmetidslinje er tom! Besøg {public} eller brug søgningen for at komme igang og møde andre brugere.",
-  "empty_column.home.suggestions": "Se nogle foreslag",
+  "empty_column.direct": "Du har endnu ingen direkte beskeder. Når du sender eller modtager én, vil den dukke op hér.",
+  "empty_column.domain_blocks": "Ingen blokerede domæner endnu.",
+  "empty_column.explore_statuses": "Ingen nye tendensen pt. Tjek igen senere!",
+  "empty_column.favourited_statuses": "Du har endnu ingen favoritindlæg. Når du favoritmarkerer ét, vil det dukke op hér.",
+  "empty_column.favourites": "Ingen har endnu gjort dette indlæg til favorit. Når nogen gør dét, vil det dukke op hér.",
+  "empty_column.follow_recommendations": "Ser ud til, at der ikke kunne genereres forslag til dig. Du kan prøve med Søg for at lede efter personer, du måske kender, eller udforske hashtags.",
+  "empty_column.follow_requests": "Du har endnu ingen følgeanmodninger. Når du modtager én, vil den dukke op hér.",
+  "empty_column.hashtag": "Der er intet med dette hashtag endnu.",
+  "empty_column.home": "Din hjemmetidslinje er tom! Følg nogle personer, for at udfylde den. {suggestions}",
+  "empty_column.home.suggestions": "Se nogle forslag",
   "empty_column.list": "Der er ikke noget på denne liste endnu. Når medlemmer af listen udgiver nye indlæg vil de fremgå hér.",
   "empty_column.lists": "Du har endnu ingen lister. Når du opretter én, vil den fremgå hér.",
   "empty_column.mutes": "Du har endnu ikke tystnet nogle brugere.",
-  "empty_column.notifications": "Du har ingen notifikationer. Hvis andre interagerer med dig, bliver det vist her.",
+  "empty_column.notifications": "Du har endnu ingen notifikationer. Når andre interagerer med dig, vil det fremgå hér.",
   "empty_column.public": "Der er intet hér! Skriv noget offentligt eller følg manuelt brugere fra andre servere for at se indhold",
   "error.unexpected_crash.explanation": "Grundet en fejl i vores kode, eller en browser-kompatibilitetsfejl, kunne siden ikke vises korrekt.",
   "error.unexpected_crash.explanation_addons": "Denne side kunne ikke vises korrekt. Fejlen skyldes sandsynligvis en browsertilføjelse eller automatiske oversættelsesværktøjer.",
-  "error.unexpected_crash.next_steps": "Prøv at genindlæs siden. Hvis dette ikke hjælper, så forsøg venligst, at tilgå Mastodon via en anden browser eller app.",
+  "error.unexpected_crash.next_steps": "Prøv at opfriske siden. Hjælper dette ikke, kan Mastodon muligvis stadig bruges via en anden browser eller app.",
   "error.unexpected_crash.next_steps_addons": "Prøv at deaktivere dem og genindlæse siden. Hvis det ikke hjælper, kan Mastodon muligvis stadig bruges via en anden browser eller app.",
   "errors.unexpected_crash.copy_stacktrace": "Kopiér stacktrace til udklipsholderen",
   "errors.unexpected_crash.report_issue": "Anmeld problem",
@@ -194,13 +195,13 @@
   "explore.trending_tags": "Hashtags",
   "follow_recommendations.done": "Udført",
   "follow_recommendations.heading": "Følg personer du gerne vil se indlæg fra! Her er nogle forslag.",
-  "follow_recommendations.lead": "Indlæg, fra personer du følger, vises i kronologisk rækkefølge i hjemmetidslinjen. Bare prøv dig frem med hvem du følger her. Du kan altid vælge om igen!",
+  "follow_recommendations.lead": "Indlæg, fra personer du følger, vil fremgå kronologisk ordnet i dit hjemmefeed. Vær ikke bange for at begå fejl, da du altid og meget nemt kan ændre dit valg!",
   "follow_request.authorize": "Godkend",
   "follow_request.reject": "Afvis",
   "follow_requests.unlocked_explanation": "Selvom din konto ikke er låst, antog {domain}-personalet, at du måske vil gennemgå dine anmodninger manuelt.",
   "generic.saved": "Gemt",
   "getting_started.developers": "Udviklere",
-  "getting_started.directory": "Profilliste",
+  "getting_started.directory": "Profilmappe",
   "getting_started.documentation": "Dokumentation",
   "getting_started.heading": "Startmenu",
   "getting_started.invite": "Invitér folk",
@@ -212,52 +213,52 @@
   "hashtag.column_header.tag_mode.none": "uden {additional}",
   "hashtag.column_settings.select.no_options_message": "Ingen forslag fundet",
   "hashtag.column_settings.select.placeholder": "Angiv hashtags…",
-  "hashtag.column_settings.tag_mode.all": "Allesammen",
+  "hashtag.column_settings.tag_mode.all": "Alle disse",
   "hashtag.column_settings.tag_mode.any": "Nogle af disse",
   "hashtag.column_settings.tag_mode.none": "Ingen af disse",
   "hashtag.column_settings.tag_toggle": "Inkludér ekstra tags for denne kolonne",
   "home.column_settings.basic": "Grundlæggende",
-  "home.column_settings.show_reblogs": "Vis fremhævelser",
+  "home.column_settings.show_reblogs": "Vis boosts",
   "home.column_settings.show_replies": "Vis svar",
   "home.hide_announcements": "Skjul bekendtgørelser",
   "home.show_announcements": "Vis bekendtgørelser",
   "intervals.full.days": "{number, plural, one {# dag} other {# dage}}",
   "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minutter}}",
-  "keyboard_shortcuts.back": "for at navigere tilbage",
-  "keyboard_shortcuts.blocked": "Vis listen over blokerede brugere",
-  "keyboard_shortcuts.boost": "Fremhæv indlæg",
-  "keyboard_shortcuts.column": "for at fokusere et trut i en af kolonnerne",
-  "keyboard_shortcuts.compose": "for at fokusere på skriveområdet",
+  "keyboard_shortcuts.back": "Gå tilbage",
+  "keyboard_shortcuts.blocked": "Åbn Blokerede brugere-listen",
+  "keyboard_shortcuts.boost": "Boost indlæg",
+  "keyboard_shortcuts.column": "Fokusér kolonne",
+  "keyboard_shortcuts.compose": "Fokusér skriveområdet",
   "keyboard_shortcuts.description": "Beskrivelse",
-  "keyboard_shortcuts.direct": "Åben kolonnen med direkte beskeder",
-  "keyboard_shortcuts.down": "for at rykke nedad på listen",
-  "keyboard_shortcuts.enter": "Åben indlæg",
-  "keyboard_shortcuts.favourite": "Markér som favorit",
-  "keyboard_shortcuts.favourites": "for at åbne favoritlisten",
-  "keyboard_shortcuts.federated": "Åben den fælles tidslinje",
+  "keyboard_shortcuts.direct": "Åbn Direkte beskeder-kolonnen",
+  "keyboard_shortcuts.down": "Flyt nedad på listen",
+  "keyboard_shortcuts.enter": "Åbn indlæg",
+  "keyboard_shortcuts.favourite": "Favoritmarkér indlæg",
+  "keyboard_shortcuts.favourites": "Åbn favoritlisten",
+  "keyboard_shortcuts.federated": "Åbn fælles tidslinje",
   "keyboard_shortcuts.heading": "Tastaturgenveje",
-  "keyboard_shortcuts.home": "for at åbne hjemmetidslinjen",
+  "keyboard_shortcuts.home": "Åbn hjemmetidslinje",
   "keyboard_shortcuts.hotkey": "Hurtigtast",
-  "keyboard_shortcuts.legend": "for at vise dette symbol",
-  "keyboard_shortcuts.local": "for at åbne den lokale tidslinje",
-  "keyboard_shortcuts.mention": "for at nævne forfatteren",
-  "keyboard_shortcuts.muted": "for at åbne listen over tavsgjorte brugere",
-  "keyboard_shortcuts.my_profile": "for at åbne din profil",
+  "keyboard_shortcuts.legend": "Vis dette symbol",
+  "keyboard_shortcuts.local": "Åbn lokal tidslinje",
+  "keyboard_shortcuts.mention": "Nævn forfatter",
+  "keyboard_shortcuts.muted": "Åbn listen over tavsgjorte brugere",
+  "keyboard_shortcuts.my_profile": "Åbn din profil",
   "keyboard_shortcuts.notifications": "for at åbne notifikationskolonnen",
-  "keyboard_shortcuts.open_media": "for at åbne medier",
-  "keyboard_shortcuts.pinned": "Åben listen over fastgjorte indlæg",
-  "keyboard_shortcuts.profile": "for at åbne forfatterens profil",
-  "keyboard_shortcuts.reply": "for at besvare",
-  "keyboard_shortcuts.requests": "Åben listen over følgeanmodninger",
-  "keyboard_shortcuts.search": "for at fokusere søgningen",
-  "keyboard_shortcuts.spoilers": "for at vise/skjule CW-felt",
-  "keyboard_shortcuts.start": "for at åbne \"komme i gang\"-kolonnen",
-  "keyboard_shortcuts.toggle_hidden": "for at vise/skjule tekst bag CW",
-  "keyboard_shortcuts.toggle_sensitivity": "for at vise/skjule medier",
-  "keyboard_shortcuts.toot": "for at påbegynde et helt nyt indlæg",
-  "keyboard_shortcuts.unfocus": "for at fjerne fokus fra skriveområde/søgning",
-  "keyboard_shortcuts.up": "for at bevæge sig opad på listen",
+  "keyboard_shortcuts.open_media": "Åbn medier",
+  "keyboard_shortcuts.pinned": "Åbn liste over fastgjorte indlæg",
+  "keyboard_shortcuts.profile": "Åbn forfatters profil",
+  "keyboard_shortcuts.reply": "Besvar indlægget",
+  "keyboard_shortcuts.requests": "Åbn liste over følgeanmodninger",
+  "keyboard_shortcuts.search": "Fokusér søgebjælke",
+  "keyboard_shortcuts.spoilers": "Vis/skjul CW-felt",
+  "keyboard_shortcuts.start": "Åbn \"komme i gang\"-kolonne",
+  "keyboard_shortcuts.toggle_hidden": "Vis/skjul tekst bag CW",
+  "keyboard_shortcuts.toggle_sensitivity": "Vis/skjul medier",
+  "keyboard_shortcuts.toot": "Påbegynd nyt indlæg",
+  "keyboard_shortcuts.unfocus": "Fjern fokus fra teksskrivningsområde/søgning",
+  "keyboard_shortcuts.up": "Flyt opad på listen",
   "lightbox.close": "Luk",
   "lightbox.compress": "Komprimér billedvisningsfelt",
   "lightbox.expand": "Udvid billedevisningsfelt",
@@ -270,21 +271,21 @@
   "lists.edit.submit": "Skift titel",
   "lists.new.create": "Tilføj liste",
   "lists.new.title_placeholder": "Ny listetitel",
-  "lists.replies_policy.followed": "Enhver fulgt bruger",
-  "lists.replies_policy.list": "Medlemmer af listen",
+  "lists.replies_policy.followed": "Enhver bruger, der følges",
+  "lists.replies_policy.list": "Listemedlemmer",
   "lists.replies_policy.none": "Ingen",
   "lists.replies_policy.title": "Vis svar til:",
-  "lists.search": "Søg blandt personer, du følger",
+  "lists.search": "Søg blandt personer, som følges",
   "lists.subheading": "Dine lister",
-  "load_pending": "{count, plural, one {# nyt punkt} other {# nye punkter}}",
+  "load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}",
   "loading_indicator.label": "Indlæser...",
-  "media_gallery.toggle_visible": "Skjul {number, plural, one {billede} other {billeder}}",
+  "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}",
   "missing_indicator.label": "Ikke fundet",
   "missing_indicator.sublabel": "Denne ressource kunne ikke findes",
   "mute_modal.duration": "Varighed",
-  "mute_modal.hide_notifications": "Skjul notifikationer fra brugeren?",
+  "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?",
   "mute_modal.indefinite": "Tidsubegrænset",
-  "navigation_bar.apps": "Apps til mobilen",
+  "navigation_bar.apps": "Mobil-apps",
   "navigation_bar.blocks": "Blokerede brugere",
   "navigation_bar.bookmarks": "Bogmærker",
   "navigation_bar.community_timeline": "Lokal tidslinje",
@@ -293,34 +294,35 @@
   "navigation_bar.discover": "Opdag",
   "navigation_bar.domain_blocks": "Blokerede domæner",
   "navigation_bar.edit_profile": "Redigér profil",
+  "navigation_bar.explore": "Udforsk",
   "navigation_bar.favourites": "Favoritter",
-  "navigation_bar.filters": "Tystnede ord",
+  "navigation_bar.filters": "Tavsgjorte ord",
   "navigation_bar.follow_requests": "Følgeanmodninger",
   "navigation_bar.follows_and_followers": "Følges og følgere",
   "navigation_bar.info": "Om denne server",
-  "navigation_bar.keyboard_shortcuts": "Hurtigtaster",
+  "navigation_bar.keyboard_shortcuts": "Genvejstaster",
   "navigation_bar.lists": "Lister",
   "navigation_bar.logout": "Log af",
-  "navigation_bar.mutes": "Tystnede brugere",
+  "navigation_bar.mutes": "Tavsgjorte brugere",
   "navigation_bar.personal": "Personlig",
   "navigation_bar.pins": "Fastgjorte indlæg",
   "navigation_bar.preferences": "Præferencer",
   "navigation_bar.public_timeline": "Fælles tidslinje",
   "navigation_bar.security": "Sikkerhed",
   "notification.admin.sign_up": "{name} tilmeldte sig",
-  "notification.favourite": "{name} favoriserede dit trut",
-  "notification.follow": "{name} fulgte dig",
+  "notification.favourite": "{name} favoritmarkerede dit indlæg",
+  "notification.follow": "{name} begyndte at følge dig",
   "notification.follow_request": "{name} har anmodet om at følge dig",
   "notification.mention": "{name} nævnte dig",
   "notification.own_poll": "Din afstemning er afsluttet",
-  "notification.poll": "En afstemning, du deltog i, er færdig",
-  "notification.reblog": "{name} fremhævede dit indlæg",
-  "notification.status": "{name} har netop udgivet",
+  "notification.poll": "En afstemning, hvori du stemte, er slut",
+  "notification.reblog": "{name} boostede dit indlæg",
+  "notification.status": "{name} har netop postet",
   "notification.update": "{name} redigerede et indlæg",
   "notifications.clear": "Ryd notifikationer",
-  "notifications.clear_confirmation": "Er du sikker på, du vil rydde alle dine notifikationer permanent?",
+  "notifications.clear_confirmation": "Sikker på, at du vil rydde alle dine notifikationer permanent?",
   "notifications.column_settings.admin.sign_up": "Nye tilmeldinger:",
-  "notifications.column_settings.alert": "Skrivebordsnotifikationer",
+  "notifications.column_settings.alert": "Computernotifikationer",
   "notifications.column_settings.favourite": "Favoritter:",
   "notifications.column_settings.filter_bar.advanced": "Vis alle kategorier",
   "notifications.column_settings.filter_bar.category": "Hurtigfilterbjælke",
@@ -329,8 +331,8 @@
   "notifications.column_settings.follow_request": "Nye følgeanmodninger:",
   "notifications.column_settings.mention": "Omtaler:",
   "notifications.column_settings.poll": "Afstemningsresultater:",
-  "notifications.column_settings.push": "Pushnotifikationer",
-  "notifications.column_settings.reblog": "Fremhævelser:",
+  "notifications.column_settings.push": "Push-notifikationer",
+  "notifications.column_settings.reblog": "Boosts:",
   "notifications.column_settings.show": "Vis i kolonne",
   "notifications.column_settings.sound": "Afspil lyd",
   "notifications.column_settings.status": "Nye indlæg:",
@@ -338,7 +340,7 @@
   "notifications.column_settings.unread_notifications.highlight": "Fremhæv ulæste notifikationer",
   "notifications.column_settings.update": "Redigeringer:",
   "notifications.filter.all": "Alle",
-  "notifications.filter.boosts": "Fremhævelser",
+  "notifications.filter.boosts": "Boosts",
   "notifications.filter.favourites": "Favoritter",
   "notifications.filter.follows": "Følger",
   "notifications.filter.mentions": "Omtaler",
@@ -347,13 +349,13 @@
   "notifications.grant_permission": "Tildel tilladelse.",
   "notifications.group": "{count} notifikationer",
   "notifications.mark_as_read": "Markér alle notifikationer som læst",
-  "notifications.permission_denied": "Skrivebordsnotifikationer er utilgængelige grundet tidligere afvist browsertilladelsesanmodning",
-  "notifications.permission_denied_alert": "Skrivebordsnotifikationer kan ikke aktiveres, da browsertilladelse er blevet nægtet før",
-  "notifications.permission_required": "Skrivebordsnotifikationer er utilgængelige, da den krævede tilladelse ikke er tildelt.",
-  "notifications_permission_banner.enable": "Aktivér skrivebordsnotifikationer",
-  "notifications_permission_banner.how_to_control": "Aktivér skrivebordsnotifikationer for at modtage notifikationer, når Mastodon ikke er åben. Du kan styre, præcist hvilke typer af interaktioner, som genererer skrivebordsnotifikationer via knappen {icon} ovenfor, når de er aktiveret.",
+  "notifications.permission_denied": "Computernotifikationer er utilgængelige grundet tidligere afvist browsertilladelsesanmodning",
+  "notifications.permission_denied_alert": "Computernotifikationer kan ikke aktiveres, da browsertilladelse tidligere blev nægtet",
+  "notifications.permission_required": "Computernotifikationer er utilgængelige, da den krævede tilladelse ikke er tildelt.",
+  "notifications_permission_banner.enable": "Aktivér computernotifikationer",
+  "notifications_permission_banner.how_to_control": "Aktivér computernotifikationer for at få besked, når Mastodon ikke er åben. Når de er aktiveret, kan man via knappen {icon} ovenfor præcist styre, hvilke typer af interaktioner, som genererer computernotifikationer.",
   "notifications_permission_banner.title": "Gå aldrig glip af noget",
-  "picture_in_picture.restore": "Sæt det tilbage",
+  "picture_in_picture.restore": "Indsæt det igen",
   "poll.closed": "Lukket",
   "poll.refresh": "Opdatér",
   "poll.total_people": "{count, plural, one {# person} other {# personer}}",
@@ -363,14 +365,14 @@
   "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}",
   "poll_button.add_poll": "Tilføj en afstemning",
   "poll_button.remove_poll": "Fjern afstemning",
-  "privacy.change": "Justér fortrolighed",
+  "privacy.change": "Justér indlægsfortrolighed",
   "privacy.direct.long": "Kun synlig for nævnte brugere",
   "privacy.direct.short": "Direkte",
   "privacy.private.long": "Kun synlig for følgere",
   "privacy.private.short": "Kun for følgere",
-  "privacy.public.long": "Synlig for alle og vises på offentlige tidslinjer",
+  "privacy.public.long": "Synlig for alle, fremgår på offentlige tidslinjer",
   "privacy.public.short": "Offentlig",
-  "privacy.unlisted.long": "Synlig for alle, men vises ikke på offentlige tidslinjer",
+  "privacy.unlisted.long": "Synlig for alle, fremgår ikke på offentlige tidslinjer",
   "privacy.unlisted.short": "Diskret",
   "refresh": "Genindlæs",
   "regeneration_indicator.label": "Indlæser…",
@@ -397,11 +399,11 @@
   "report.category.title_account": "profil",
   "report.category.title_status": "indlæg",
   "report.close": "Udført",
-  "report.comment.title": "Findes der noget andet, som vi burde vide?",
+  "report.comment.title": "Er der andet, som vi bør vide?",
   "report.forward": "Videresend til {target}",
-  "report.forward_hint": "Kontoen er fra en anden server. Send en anonymiseret kopi af anmeldelsen dertil også?",
+  "report.forward_hint": "Kontoen er fra en anden server. Send også en anonymiseret anmeldelseskopi dertil?",
   "report.mute": "Tavsgør",
-  "report.mute_explanation": "Du vil ikke se vedkommendes indlæg, men vedkommende kan stadig se dine/følge dig. Vedkommende vil ikke være bekendt med tavsgørelsen.",
+  "report.mute_explanation": "Du vil ikke se vedkommendes indlæg, men vedkommende kan stadig se dine og følge dig. Vedkommende vil ikke være bekendt med tavsgørelsen.",
   "report.next": "Næste",
   "report.placeholder": "Yderligere kommentarer",
   "report.reasons.dislike": "Synes ikke om den/dem",
@@ -413,20 +415,20 @@
   "report.reasons.violation": "Overtræder serverregler",
   "report.reasons.violation_description": "Det står klart, at det bryder bestemte regler",
   "report.rules.subtitle": "Vælg alle relevante",
-  "report.rules.title": "Hvilke regler brydes?",
+  "report.rules.title": "Hvilke regler overtrædes?",
   "report.statuses.subtitle": "Vælg alle relevante",
   "report.statuses.title": "Er der indlæg, som kan bekræfte denne anmeldelse?",
   "report.submit": "Indsend",
   "report.target": "Anmelder {target}",
-  "report.thanks.take_action": "Her er mulighederne styring af, hvad man ses på Mastodon:",
+  "report.thanks.take_action": "Dette er mulighederne for styring af, hvad man ses på Mastodon:",
   "report.thanks.take_action_actionable": "Mens dette gennemgås, kan der skrides til handling mod @{name}:",
   "report.thanks.title": "Ønsker ikke at se dette?",
-  "report.thanks.title_actionable": "Tak for anmeldelsen, der vil set nærmere på dette.",
+  "report.thanks.title_actionable": "Tak for anmeldelsen, der vil blive set nærmere på dette.",
   "report.unfollow": "Følg ikke længere @{name}",
-  "report.unfollow_explanation": "Denne konto følges. For at ophøre medat se vedkommendes indlæg i hjemmefeedet, vælg Følg ikke længere.",
+  "report.unfollow_explanation": "Denne konto følges. For at ophøre med at se vedkommendes indlæg på hjemmetidslinjen, vælg Følg ikke længere.",
   "search.placeholder": "Søg",
   "search_popout.search_format": "Avanceret søgeformat",
-  "search_popout.tips.full_text": "Simpel tekst returnerer trut, du har skrevet, favoriseret, fremhævede eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.",
+  "search_popout.tips.full_text": "Simpel tekst returnerer indlæg, du har skrevet, favoritmarkeret, boostet eller som er nævnt i/matcher bruger- og profilnavne samt hashtags.",
   "search_popout.tips.hashtag": "hashtag",
   "search_popout.tips.status": "indlæg",
   "search_popout.tips.text": "Simpel tekst returnerer matchende visnings- og brugernavne samt hashtags",
@@ -436,15 +438,15 @@
   "search_results.hashtags": "Hashtags",
   "search_results.nothing_found": "Ingen resultater for disse søgeord",
   "search_results.statuses": "Indlæg",
-  "search_results.statuses_fts_disabled": "På denne Mastodon-server er trutsøgning efter deres indhold ikke aktiveret.",
+  "search_results.statuses_fts_disabled": "Søgning på indlæg efter deres indhold ikke aktiveret på denne Mastodon-server.",
   "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}",
   "status.admin_account": "Åbn modereringsbrugerflade for @{name}",
-  "status.admin_status": "Åbn dette trut i modereringsbrugerflade",
+  "status.admin_status": "Åbn dette indlæg i modereringsbrugerfladen",
   "status.block": "Blokér @{name}",
-  "status.bookmark": "Tilføj bogmærke",
+  "status.bookmark": "Bogmærk",
   "status.cancel_reblog_private": "Fjern fremhævning",
-  "status.cannot_reblog": "Indlægget kan ikke fremhæves",
-  "status.copy": "Kopiér link til trut",
+  "status.cannot_reblog": "Dette indlæg kan ikke boostes",
+  "status.copy": "Kopiér link til indlæg",
   "status.delete": "Slet",
   "status.detailed_status": "Detaljeret samtalevisning",
   "status.direct": "Direkte besked til @{name}",
@@ -460,20 +462,20 @@
   "status.media_hidden": "Medie skjult",
   "status.mention": "Nævn @{name}",
   "status.more": "Mere",
-  "status.mute": "Skjul @{name}",
-  "status.mute_conversation": "Skjul samtale",
-  "status.open": "Udvid indlægget",
+  "status.mute": "Tystn @{name}",
+  "status.mute_conversation": "Tystn samtale",
+  "status.open": "Udvid dette indlæg",
   "status.pin": "Fastgør til profil",
-  "status.pinned": "Fastgjort trut",
+  "status.pinned": "Fastgjort indlæg",
   "status.read_more": "Læs mere",
   "status.reblog": "Fremhæv",
-  "status.reblog_private": "Fremhæv med oprindelig synlighed",
-  "status.reblogged_by": "{name} fremhævet",
-  "status.reblogs.empty": "Ingen har fremhævet indlægget endnu. Når nogen gør, vil det fremgå hér.",
-  "status.redraft": "Slet og omskriv",
+  "status.reblog_private": "Boost med oprindelig synlighed",
+  "status.reblogged_by": "{name} boostede",
+  "status.reblogs.empty": "Ingen har endnu boostet dette indlæg. Når nogen gør, vil det fremgå hér.",
+  "status.redraft": "Slet og omformulér",
   "status.remove_bookmark": "Fjern bogmærke",
   "status.reply": "Besvar",
-  "status.replyAll": "Svar på tråd",
+  "status.replyAll": "Besvar alle",
   "status.report": "Anmeld @{name}",
   "status.sensitive_warning": "Følsomt indhold",
   "status.share": "Del",
@@ -495,7 +497,7 @@
   "time_remaining.days": "{number, plural, one {# dag} other {# dage}} tilbage",
   "time_remaining.hours": "{number, plural, one {# time} other {# timer}} tilbage",
   "time_remaining.minutes": "{number, plural, one {# minut} other {# minutter}} tilbage",
-  "time_remaining.moments": "Et øjeblik tilbage",
+  "time_remaining.moments": "Få øjeblikke tilbage",
   "time_remaining.seconds": "{number, plural, one {# sekund} other {# sekunder}} tilbage",
   "timeline_hint.remote_resource_not_displayed": "{resource} fra andre servere vises ikke.",
   "timeline_hint.resources.followers": "Følgere",
@@ -504,24 +506,24 @@
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler",
   "trends.trending_now": "Hot lige nu",
   "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.",
-  "units.short.billion": "{count}G",
-  "units.short.million": "{count}M",
-  "units.short.thousand": "{count}k",
+  "units.short.billion": "{count} MIA",
+  "units.short.million": "{count} M",
+  "units.short.thousand": "{count} K",
   "upload_area.title": "Træk og slip for at uploade",
-  "upload_button.label": "Tilføj billeder, en video- eller lydfil",
+  "upload_button.label": "Tilføj billed-, video- eller lydfil(er)",
   "upload_error.limit": "Grænse for filupload nået.",
   "upload_error.poll": "Filupload ikke tilladt for afstemninger.",
   "upload_form.audio_description": "Beskrivelse til hørehæmmede",
   "upload_form.description": "Beskrivelse til svagtseende",
   "upload_form.edit": "Redigér",
-  "upload_form.thumbnail": "Skift miniaturer",
+  "upload_form.thumbnail": "Skift miniature",
   "upload_form.undo": "Slet",
   "upload_form.video_description": "Beskrivelse for hørehæmmede eller synshandicappede personer",
   "upload_modal.analyzing_picture": "Analyserer billede…",
   "upload_modal.apply": "Anvend",
   "upload_modal.applying": "Effektuerer…",
   "upload_modal.choose_image": "Vælg billede",
-  "upload_modal.description_placeholder": "Høj bly gom vandt fræk sexquiz på wc",
+  "upload_modal.description_placeholder": "En hurtig brun ræv hopper over den dovne hund",
   "upload_modal.detect_text": "Detektér tekst i billede",
   "upload_modal.edit_media": "Redigér medie",
   "upload_modal.hint": "Klik eller træk cirklen i forhåndsvisningen for at vælge det fokuspunkt, der altid vil være synligt på alle miniaturer.",
@@ -534,8 +536,8 @@
   "video.expand": "Udvid video",
   "video.fullscreen": "Fuldskærm",
   "video.hide": "Skjul video",
-  "video.mute": "Sluk lyden",
-  "video.pause": "Sæt på pause",
+  "video.mute": "Tavsgør lyd",
+  "video.pause": "Pausér",
   "video.play": "Afspil",
-  "video.unmute": "Tænd for lyden"
+  "video.unmute": "Fjern lydtavsgørelse"
 }
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 5c5618962..1178c0260 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -18,12 +18,12 @@
   "account.followers": "Follower",
   "account.followers.empty": "Diesem Profil folgt noch niemand.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
+  "account.following": "Folgt",
   "account.following_counter": "{count, plural, one {{counter} Folgender} other {{counter} Folgende}}",
   "account.follows.empty": "Dieses Profil folgt noch niemandem.",
   "account.follows_you": "Folgt dir",
   "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
   "account.joined": "Beigetreten am {date}",
-  "account.last_status": "Zuletzt aktiv",
   "account.link_verified_on": "Besitz dieses Links wurde geprüft am {date}",
   "account.locked_info": "Der Privatsphärenstatus dieses Accounts wurde auf gesperrt gesetzt. Die Person bestimmt manuell wer ihm/ihr folgen darf.",
   "account.media": "Medien",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} stummschalten",
   "account.mute_notifications": "Benachrichtigungen von @{name} stummschalten",
   "account.muted": "Stummgeschaltet",
-  "account.never_active": "Nie",
   "account.posts": "Beiträge",
   "account.posts_with_replies": "Beiträge und Antworten",
   "account.report": "@{name} melden",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Beitrag} other {{counter} Beiträge}}",
   "account.unblock": "@{name} entblocken",
   "account.unblock_domain": "{domain} wieder anzeigen",
+  "account.unblock_short": "Blockierung aufheben",
   "account.unendorse": "Nicht auf Profil hervorheben",
   "account.unfollow": "Entfolgen",
   "account.unmute": "@{name} nicht mehr stummschalten",
   "account.unmute_notifications": "Benachrichtigungen von @{name} einschalten",
+  "account.unmute_short": "Nicht mehr stummschalten",
   "account_note.placeholder": "Notiz durch Klicken hinzufügen",
   "admin.dashboard.daily_retention": "Benutzerverbleibrate nach Tag nach Anmeldung",
   "admin.dashboard.monthly_retention": "Benutzerverbleibrate nach Monat nach Anmeldung",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Entdecken",
   "navigation_bar.domain_blocks": "Versteckte Domains",
   "navigation_bar.edit_profile": "Profil bearbeiten",
+  "navigation_bar.explore": "Entdecken",
   "navigation_bar.favourites": "Favoriten",
   "navigation_bar.filters": "Stummgeschaltene Wörter",
   "navigation_bar.follow_requests": "Folgeanfragen",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 42e84d9b8..4b6aef7b0 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -1625,30 +1625,38 @@
   {
     "descriptors": [
       {
+        "defaultMessage": "Unfollow",
+        "id": "account.unfollow"
+      },
+      {
         "defaultMessage": "Follow",
         "id": "account.follow"
       },
       {
-        "defaultMessage": "Unfollow",
-        "id": "account.unfollow"
+        "defaultMessage": "Cancel follow request",
+        "id": "account.cancel_follow_request"
       },
       {
-        "defaultMessage": "Awaiting approval",
+        "defaultMessage": "Awaiting approval. Click to cancel follow request",
         "id": "account.requested"
       },
       {
-        "defaultMessage": "Unblock @{name}",
-        "id": "account.unblock"
+        "defaultMessage": "Unblock",
+        "id": "account.unblock_short"
       },
       {
-        "defaultMessage": "Unmute @{name}",
-        "id": "account.unmute"
+        "defaultMessage": "Unmute",
+        "id": "account.unmute_short"
       },
       {
         "defaultMessage": "Unfollow",
         "id": "confirmations.unfollow.confirm"
       },
       {
+        "defaultMessage": "Edit profile",
+        "id": "account.edit_profile"
+      },
+      {
         "defaultMessage": "Are you sure you want to unfollow {name}?",
         "id": "confirmations.unfollow.message"
       },
@@ -1661,12 +1669,8 @@
         "id": "account.followers"
       },
       {
-        "defaultMessage": "Never",
-        "id": "account.never_active"
-      },
-      {
-        "defaultMessage": "Last active",
-        "id": "account.last_status"
+        "defaultMessage": "Following",
+        "id": "account.following"
       }
     ],
     "path": "app/javascript/mastodon/features/directory/components/account_card.json"
@@ -1953,6 +1957,10 @@
         "id": "navigation_bar.community_timeline"
       },
       {
+        "defaultMessage": "Explore",
+        "id": "navigation_bar.explore"
+      },
+      {
         "defaultMessage": "Direct messages",
         "id": "navigation_bar.direct"
       },
@@ -2007,10 +2015,6 @@
       {
         "defaultMessage": "Getting started",
         "id": "getting_started.heading"
-      },
-      {
-        "defaultMessage": "Profile directory",
-        "id": "getting_started.directory"
       }
     ],
     "path": "app/javascript/mastodon/features/getting_started/index.json"
@@ -2742,7 +2746,7 @@
         "id": "report.reasons.spam"
       },
       {
-        "defaultMessage": "Malicious links, fake engagement, or repetetive replies",
+        "defaultMessage": "Malicious links, fake engagement, or repetitive replies",
         "id": "report.reasons.spam_description"
       },
       {
@@ -3403,6 +3407,10 @@
         "id": "navigation_bar.info"
       },
       {
+        "defaultMessage": "Profile directory",
+        "id": "getting_started.directory"
+      },
+      {
         "defaultMessage": "Mobile apps",
         "id": "navigation_bar.apps"
       },
@@ -3530,10 +3538,6 @@
         "id": "navigation_bar.lists"
       },
       {
-        "defaultMessage": "Profile directory",
-        "id": "getting_started.directory"
-      },
-      {
         "defaultMessage": "Preferences",
         "id": "navigation_bar.preferences"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 96fe6c609..3c797d47d 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -18,12 +18,12 @@
   "account.followers": "Ακόλουθοι",
   "account.followers.empty": "Κανείς δεν ακολουθεί αυτό τον χρήστη ακόμα.",
   "account.followers_counter": "{count, plural, one {{counter} Ακόλουθος} other {{counter} Ακόλουθοι}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}",
   "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
   "account.follows_you": "Σε ακολουθεί",
   "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
   "account.joined": "Μέλος από τις {date}",
-  "account.last_status": "Τελευταία δραστηριότητα",
   "account.link_verified_on": "Η ιδιοκτησία αυτού του συνδέσμου ελέχθηκε την {date}",
   "account.locked_info": "Η κατάσταση απορρήτου αυτού του λογαριασμού είναι κλειδωμένη. Ο ιδιοκτήτης επιβεβαιώνει χειροκίνητα ποιος μπορεί να τον ακολουθήσει.",
   "account.media": "Πολυμέσα",
@@ -32,7 +32,6 @@
   "account.mute": "Σώπασε @{name}",
   "account.mute_notifications": "Σώπασε τις ειδοποιήσεις από @{name}",
   "account.muted": "Αποσιωπημένος/η",
-  "account.never_active": "Ποτέ",
   "account.posts": "Τουτ",
   "account.posts_with_replies": "Τουτ και απαντήσεις",
   "account.report": "Κατάγγειλε @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Τουτ} other {{counter} Τουτ}}",
   "account.unblock": "Ξεμπλόκαρε @{name}",
   "account.unblock_domain": "Αποκάλυψε το {domain}",
+  "account.unblock_short": "Ξεμπλοκάρισμα",
   "account.unendorse": "Άνευ προβολής στο προφίλ",
   "account.unfollow": "Διακοπή παρακολούθησης",
   "account.unmute": "Διακοπή αποσιώπησης @{name}",
   "account.unmute_notifications": "Διακοπή αποσιώπησης ειδοποιήσεων του/της @{name}",
+  "account.unmute_short": "Κατάργηση σίγασης",
   "account_note.placeholder": "Κλικ για να βάλεις σημείωση",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Ανακάλυψη",
   "navigation_bar.domain_blocks": "Κρυμμένοι τομείς",
   "navigation_bar.edit_profile": "Επεξεργασία προφίλ",
+  "navigation_bar.explore": "Εξερεύνηση",
   "navigation_bar.favourites": "Αγαπημένα",
   "navigation_bar.filters": "Αποσιωπημένες λέξεις",
   "navigation_bar.follow_requests": "Αιτήματα ακολούθησης",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index d520ccf5f..6b638c3ae 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Posts",
   "account.posts_with_replies": "Posts and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Posts}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -297,6 +298,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Blocked domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 8ef35c03b..7f999c34f 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -18,21 +18,20 @@
   "account.followers": "Sekvantoj",
   "account.followers.empty": "Ankoraŭ neniu sekvas tiun uzanton.",
   "account.followers_counter": "{count, plural, one{{counter} Sekvanto} other {{counter} Sekvantoj}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Sekvato} other {{counter} Sekvatoj}}",
   "account.follows.empty": "Tiu uzanto ankoraŭ ne sekvas iun.",
   "account.follows_you": "Sekvas vin",
   "account.hide_reblogs": "Kaŝi diskonigojn de @{name}",
   "account.joined": "Kuniĝis {date}",
-  "account.last_status": "Laste aktiva",
   "account.link_verified_on": "La posedanto de tiu ligilo estis kontrolita je {date}",
   "account.locked_info": "La privateco de tiu konto estas elektita kiel fermita. La posedanto povas mane akcepti tiun, kiu povas sekvi rin.",
-  "account.media": "Amaskomunikiloj",
+  "account.media": "Aŭdovidaĵoj",
   "account.mention": "Mencii @{name}",
   "account.moved_to": "{name} moviĝis al:",
   "account.mute": "Silentigi @{name}",
   "account.mute_notifications": "Silentigi sciigojn de @{name}",
   "account.muted": "Silentigita",
-  "account.never_active": "Neniam",
   "account.posts": "Mesaĝoj",
   "account.posts_with_replies": "Kun respondoj",
   "account.report": "Signali @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Mesaĝo} other {{counter} Mesaĝoj}}",
   "account.unblock": "Malbloki @{name}",
   "account.unblock_domain": "Malbloki {domain}",
+  "account.unblock_short": "Malbloki",
   "account.unendorse": "Ne montri en profilo",
   "account.unfollow": "Ne plu sekvi",
   "account.unmute": "Malsilentigi @{name}",
   "account.unmute_notifications": "Malsilentigi sciigojn de @{name}",
+  "account.unmute_short": "Malsilentigi",
   "account_note.placeholder": "Alklaku por aldoni noton",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -105,7 +106,7 @@
   "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton",
   "compose_form.publish": "Hup",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "Konservi ŝanĝojn",
   "compose_form.sensitive.hide": "Marki la aŭdovidaĵojn kiel tiklaj",
   "compose_form.sensitive.marked": "Aŭdovidaĵo markita tikla",
   "compose_form.sensitive.unmarked": "Aŭdovidaĵo ne markita tikla",
@@ -124,8 +125,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Bloki la tutan domajnon",
   "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.",
-  "confirmations.logout.confirm": "Elsaluti",
-  "confirmations.logout.message": "Ĉu vi certas ke vi volas elsaluti?",
+  "confirmations.logout.confirm": "Adiaŭi",
+  "confirmations.logout.message": "Ĉu vi certas ke vi volas adiaŭi?",
   "confirmations.mute.confirm": "Silentigi",
   "confirmations.mute.explanation": "Ĉi-tio kaŝos mesaĝojn el ili kaj mesaĝojn kiuj mencias ilin, sed ili ankoraŭ rajtos vidi viajn mesaĝojn kaj sekvi vin.",
   "confirmations.mute.message": "Ĉu vi certas, ke vi volas silentigi {name}?",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Provu malaktivigi ilin kaj tiam refreŝigi la paĝon. Se tio ne helpas, vi ankoraŭ povus uzi Mastodon per malsama retumilo aŭ operaciuma aplikajo.",
   "errors.unexpected_crash.copy_stacktrace": "Kopii stakspuron en tondujo",
   "errors.unexpected_crash.report_issue": "Raporti problemon",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Serĉaj rezultoj",
+  "explore.suggested_follows": "Por vi",
+  "explore.title": "Esplori",
+  "explore.trending_links": "Novaĵoj",
+  "explore.trending_statuses": "Afiŝoj",
+  "explore.trending_tags": "Kradvortoj",
   "follow_recommendations.done": "Farita",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
   "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Esplori",
   "navigation_bar.domain_blocks": "Blokitaj domajnoj",
   "navigation_bar.edit_profile": "Redakti profilon",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Stelumoj",
   "navigation_bar.filters": "Silentigitaj vortoj",
   "navigation_bar.follow_requests": "Petoj de sekvado",
@@ -300,14 +302,14 @@
   "navigation_bar.info": "Pri ĉi tiu servilo",
   "navigation_bar.keyboard_shortcuts": "Rapidklavoj",
   "navigation_bar.lists": "Listoj",
-  "navigation_bar.logout": "Elsaluti",
+  "navigation_bar.logout": "Adiaŭi",
   "navigation_bar.mutes": "Silentigitaj uzantoj",
   "navigation_bar.personal": "Persone",
   "navigation_bar.pins": "Alpinglitaj mesaĝoj",
   "navigation_bar.preferences": "Preferoj",
   "navigation_bar.public_timeline": "Fratara templinio",
   "navigation_bar.security": "Sekureco",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} registris",
   "notification.favourite": "{name} stelumis vian mesaĝon",
   "notification.follow": "{name} eksekvis vin",
   "notification.follow_request": "{name} petis sekvi vin",
@@ -316,7 +318,7 @@
   "notification.poll": "Partoprenita balotenketo finiĝis",
   "notification.reblog": "{name} diskonigis vian mesaĝon",
   "notification.status": "{name} ĵus afiŝita",
-  "notification.update": "{name} edited a post",
+  "notification.update": "{name} redaktis afiŝon",
   "notifications.clear": "Forviŝi sciigojn",
   "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?",
   "notifications.column_settings.admin.sign_up": "New sign-ups:",
@@ -336,7 +338,7 @@
   "notifications.column_settings.status": "Novaj mesaĝoj:",
   "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj",
   "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
-  "notifications.column_settings.update": "Edits:",
+  "notifications.column_settings.update": "Redaktoj:",
   "notifications.filter.all": "Ĉiuj",
   "notifications.filter.boosts": "Diskonigoj",
   "notifications.filter.favourites": "Stelumoj",
@@ -378,7 +380,7 @@
   "relative_time.days": "{number}t",
   "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
   "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
-  "relative_time.full.just_now": "just now",
+  "relative_time.full.just_now": "ĵus nun",
   "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
   "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
   "relative_time.hours": "{number}h",
@@ -387,30 +389,30 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hodiaŭ",
   "reply_indicator.cancel": "Nuligi",
-  "report.block": "Block",
+  "report.block": "Bloki",
   "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
-  "report.categories.spam": "Spam",
+  "report.categories.other": "Aliaj",
+  "report.categories.spam": "Spamo",
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.category.title_account": "profilo",
+  "report.category.title_status": "afiŝo",
+  "report.close": "Farita",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Plusendi al {target}",
   "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?",
-  "report.mute": "Mute",
+  "report.mute": "Silentigi",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.next": "Sekva",
   "report.placeholder": "Pliaj komentoj",
-  "report.reasons.dislike": "I don't like it",
+  "report.reasons.dislike": "Mi ne ŝatas ĝin",
   "report.reasons.dislike_description": "It is not something you want to see",
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.violation": "Ĝi malrespektas servilajn regulojn",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
   "report.rules.title": "Which rules are being violated?",
@@ -422,7 +424,7 @@
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
   "report.thanks.title": "Don't want to see this?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
+  "report.unfollow": "Malsekvi @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
   "search.placeholder": "Serĉi",
   "search_popout.search_format": "Detala serĉo",
@@ -432,7 +434,7 @@
   "search_popout.tips.text": "Simpla teksto montras la kongruajn afiŝitajn nomojn, uzantnomojn kaj kradvortojn",
   "search_popout.tips.user": "uzanto",
   "search_results.accounts": "Homoj",
-  "search_results.all": "All",
+  "search_results.all": "Ĉiuj",
   "search_results.hashtags": "Kradvortoj",
   "search_results.nothing_found": "Could not find anything for these search terms",
   "search_results.statuses": "Mesaĝoj",
@@ -448,14 +450,14 @@
   "status.delete": "Forigi",
   "status.detailed_status": "Detala konversacia vido",
   "status.direct": "Rekte mesaĝi @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.edit": "Redakti",
+  "status.edited": "Redaktita {date}",
+  "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}",
   "status.embed": "Enkorpigi",
   "status.favourite": "Stelumi",
   "status.filtered": "Filtrita",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.history.created": "{name} kreis {date}",
+  "status.history.edited": "{name} redaktis {date}",
   "status.load_more": "Ŝargi pli",
   "status.media_hidden": "Aŭdovidaĵo kaŝita",
   "status.mention": "Mencii @{name}",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index cfda3360f..b239c69e6 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following": "Siguiendo",
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Todavía este usuario no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar adhesiones de @{name}",
   "account.joined": "En este servidor desde {date}",
-  "account.last_status": "Última actividad",
   "account.link_verified_on": "La propiedad de este enlace fue verificada el {date}",
   "account.locked_info": "Esta cuenta es privada. El propietario manualmente revisa quién puede seguirle.",
   "account.media": "Medios",
@@ -32,7 +32,6 @@
   "account.mute": "Silenciar a @{name}",
   "account.mute_notifications": "Silenciar notificaciones de @{name}",
   "account.muted": "Silenciado",
-  "account.never_active": "Nunca",
   "account.posts": "Mensajes",
   "account.posts_with_replies": "Mensajes y respuestas públicas",
   "account.report": "Denunciar a @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Mensaje} other {{counter} Mensajes}}",
   "account.unblock": "Desbloquear a @{name}",
   "account.unblock_domain": "Desbloquear dominio {domain}",
+  "account.unblock_short": "Desbloquear",
   "account.unendorse": "No destacar en el perfil",
   "account.unfollow": "Dejar de seguir",
   "account.unmute": "Dejar de silenciar a @{name}",
   "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
+  "account.unmute_short": "Dejar de silenciar",
   "account_note.placeholder": "Hacé clic par agregar una nota",
   "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día, después del registro",
   "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes, después del registro",
@@ -167,7 +168,7 @@
   "empty_column.community": "La línea temporal local está vacía. ¡Escribí algo en modo público para que se empiece a correr la bola!",
   "empty_column.direct": "Todavía no tenés ningún mensaje directo. Cuando enviés o recibás uno, se mostrará acá.",
   "empty_column.domain_blocks": "Todavía no hay dominios bloqueados.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "No hay nada en tendencia ahora mismo. ¡Volvé a revisar más tarde!",
   "empty_column.favourited_statuses": "Todavía no tenés mensajes favoritos. Cuando marqués uno como favorito, se mostrará acá.",
   "empty_column.favourites": "Todavía nadie marcó este mensaje como favorito. Cuando alguien lo haga, se mostrará acá.",
   "empty_column.follow_recommendations": "Parece que no se pudieron generar sugerencias para vos. Podés intentar buscar gente que conozcas o explorar las tendencias de las etiquetas.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Intentá deshabilitarlos y recargá la página. Si eso no ayuda, podés usar Mastodon a través de un navegador web diferente o aplicación nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar stacktrace al portapapeles",
   "errors.unexpected_crash.report_issue": "Informar problema",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Resultados de búsqueda",
+  "explore.suggested_follows": "Para vos",
+  "explore.title": "Explorá",
+  "explore.trending_links": "Noticias",
+  "explore.trending_statuses": "Mensajes",
+  "explore.trending_tags": "Etiquetas",
   "follow_recommendations.done": "Listo",
   "follow_recommendations.heading": "¡Seguí cuentas cuyos mensajes te gustaría ver! Acá tenés algunas sugerencias.",
   "follow_recommendations.lead": "Los mensajes de las cuentas que seguís aparecerán en orden cronológico en la columna \"Inicio\". No tengás miedo de meter la pata, ¡podés dejar de seguir cuentas fácilmente en cualquier momento!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descubrir",
   "navigation_bar.domain_blocks": "Dominios bloqueados",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Explorá",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Solicitudes de seguimiento",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Configuración",
   "navigation_bar.public_timeline": "Línea temporal federada",
   "navigation_bar.security": "Seguridad",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "Se registró {name}",
   "notification.favourite": "{name} marcó tu mensaje como favorito",
   "notification.follow": "{name} te empezó a seguir",
   "notification.follow_request": "{name} solicitó seguirte",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editó un mensaje",
   "notifications.clear": "Limpiar notificaciones",
   "notifications.clear_confirmation": "¿Estás seguro que querés limpiar todas tus notificaciones permanentemente?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Nuevos registros:",
   "notifications.column_settings.alert": "Notificaciones de escritorio",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hoy",
   "reply_indicator.cancel": "Cancelar",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Bloquear",
+  "report.block_explanation": "No verás sus mensajes. No podrán ver tus mensajes ni seguirte. Se van a dar cuentra de que están bloqueados.",
   "report.categories.other": "Otra",
   "report.categories.spam": "Spam",
   "report.categories.violation": "El contenido viola una o más reglas del servidor",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Elegí la mejor coincidencia",
+  "report.category.title": "Contanos lo que pasa con este {type}",
+  "report.category.title_account": "perfil",
+  "report.category.title_status": "mensaje",
+  "report.close": "Listo",
+  "report.comment.title": "¿Hay algo más que creés que deberíamos saber?",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "La cuenta es de otro servidor. ¿Querés enviar una copia anonimizada del informe también ahí?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Silenciar",
+  "report.mute_explanation": "No verás sus mensajes. Todavía pueden seguirte y ver tus mensajes y no sabrán que están silenciados.",
+  "report.next": "Siguiente",
   "report.placeholder": "Comentarios adicionales",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "No me gusta",
+  "report.reasons.dislike_description": "No es algo que querés ver",
+  "report.reasons.other": "Es otra cosa",
+  "report.reasons.other_description": "El problema no aplica en otras categorías",
+  "report.reasons.spam": "Es spam",
+  "report.reasons.spam_description": "Enlaces maliciosos, interacciones falsas o respuestas repetitivas",
+  "report.reasons.violation": "Viola las reglas del servidor",
+  "report.reasons.violation_description": "Sos consciente de que infringe normas específicas",
+  "report.rules.subtitle": "Seleccioná todo lo que corresponda",
+  "report.rules.title": "¿Qué reglas se están violando?",
+  "report.statuses.subtitle": "Seleccioná todo lo que corresponda",
+  "report.statuses.title": "¿Hay algún mensaje que respalde esta denuncia?",
   "report.submit": "Enviar",
   "report.target": "Denunciando a {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Acá están tus opciones para controlar lo que ves en Mastodon:",
+  "report.thanks.take_action_actionable": "Mientras revisamos esto, podés tomar medidas contra @{name}:",
+  "report.thanks.title": "¿No querés ver esto?",
+  "report.thanks.title_actionable": "Gracias por tu denuncia, vamos a revisarla.",
+  "report.unfollow": "Dejar de seguir a @{name}",
+  "report.unfollow_explanation": "Estás siguiendo a esta cuenta. Para no ver sus mensajes en tu línea temporal principal, dejá de seguirla.",
   "search.placeholder": "Buscar",
   "search_popout.search_format": "Formato de búsqueda avanzada",
   "search_popout.tips.full_text": "Las búsquedas de texto simple devuelven los mensajes que escribiste, los marcados como favoritos, los adheridos o en los que te mencionaron, así como nombres de usuarios, nombres mostrados y etiquetas.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Las búsquedas de texto simple devuelven nombres de usuarios, nombres mostrados y etiquetas que coincidan",
   "search_popout.tips.user": "usuario",
   "search_results.accounts": "Gente",
-  "search_results.all": "All",
+  "search_results.all": "Todos",
   "search_results.hashtags": "Etiquetas",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "No se pudo encontrar nada para estos términos de búsqueda",
   "search_results.statuses": "Mensajes",
   "search_results.statuses_fts_disabled": "No se pueden buscar mensajes por contenido en este servidor de Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index e243bb8d8..ccdca8d9c 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -4,7 +4,7 @@
   "account.badges.bot": "Bot",
   "account.badges.group": "Grupo",
   "account.block": "Bloquear a @{name}",
-  "account.block_domain": "Ocultar todo de {domain}",
+  "account.block_domain": "Bloquear dominio {domain}",
   "account.blocked": "Bloqueado",
   "account.browse_more_on_origin_server": "Ver más en el perfil original",
   "account.cancel_follow_request": "Cancelar la solicitud de seguimiento",
@@ -13,42 +13,43 @@
   "account.domain_blocked": "Dominio oculto",
   "account.edit_profile": "Editar perfil",
   "account.enable_notifications": "Notificarme cuando @{name} publique algo",
-  "account.endorse": "Mostrar en perfil",
+  "account.endorse": "Destacar en mi perfil",
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following": "Siguiendo",
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Este usuario todavía no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
   "account.joined": "Se unió el {date}",
-  "account.last_status": "Última actividad",
   "account.link_verified_on": "El proprietario de este link fue comprobado el {date}",
   "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.",
   "account.media": "Multimedia",
-  "account.mention": "Mencionar a @{name}",
+  "account.mention": "Mencionar @{name}",
   "account.moved_to": "{name} se ha mudado a:",
   "account.mute": "Silenciar a @{name}",
   "account.mute_notifications": "Silenciar notificaciones de @{name}",
   "account.muted": "Silenciado",
-  "account.never_active": "Nunca",
-  "account.posts": "Toots",
-  "account.posts_with_replies": "Toots con respuestas",
+  "account.posts": "Publicaciones",
+  "account.posts_with_replies": "Publicaciones y respuestas",
   "account.report": "Reportar a @{name}",
-  "account.requested": "Esperando aprobación",
+  "account.requested": "Esperando aprobación. Haga clic para cancelar la solicitud de seguimiento",
   "account.share": "Compartir el perfil de @{name}",
   "account.show_reblogs": "Mostrar retoots de @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear a @{name}",
   "account.unblock_domain": "Mostrar a {domain}",
+  "account.unblock_short": "Desbloquear",
   "account.unendorse": "No mostrar en el perfil",
   "account.unfollow": "Dejar de seguir",
   "account.unmute": "Dejar de silenciar a @{name}",
   "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
+  "account.unmute_short": "Desmutear",
   "account_note.placeholder": "Clic para añadir nota",
-  "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro",
-  "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro",
+  "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después de unirse",
+  "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después de unirse",
   "admin.dashboard.retention.average": "Promedio",
   "admin.dashboard.retention.cohort": "Mes de registro",
   "admin.dashboard.retention.cohort_size": "Nuevos usuarios",
@@ -167,7 +168,7 @@
   "empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
   "empty_column.direct": "Aún no tienes ningún mensaje directo. Cuando envíes o recibas uno, se mostrará aquí.",
   "empty_column.domain_blocks": "Todavía no hay dominios ocultos.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Nada es tendencia en este momento. ¡Revisa más tarde!",
   "empty_column.favourited_statuses": "Aún no tienes toots preferidos. Cuando marques uno como favorito, aparecerá aquí.",
   "empty_column.favourites": "Nadie ha marcado este toot como preferido. Cuando alguien lo haga, aparecerá aquí.",
   "empty_column.follow_recommendations": "Parece que no se ha podido generar ninguna sugerencia para ti. Puedes probar a buscar a gente que quizá conozcas o explorar los hashtags que están en tendencia.",
@@ -186,11 +187,11 @@
   "error.unexpected_crash.next_steps_addons": "Intenta deshabilitarlos y recarga la página. Si eso no ayuda, podrías usar Mastodon a través de un navegador web diferente o aplicación nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar el seguimiento de pila en el portapapeles",
   "errors.unexpected_crash.report_issue": "Informar de un problema/error",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
+  "explore.search_results": "Resultados de búsqueda",
+  "explore.suggested_follows": "Para ti",
+  "explore.title": "Descubrir",
+  "explore.trending_links": "Noticias",
+  "explore.trending_statuses": "Publicaciones",
   "explore.trending_tags": "Hashtags",
   "follow_recommendations.done": "Hecho",
   "follow_recommendations.heading": "¡Sigue a gente que publique cosas que te gusten! Aquí tienes algunas sugerencias.",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descubrir",
   "navigation_bar.domain_blocks": "Dominios ocultos",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Explorar",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Solicitudes para seguirte",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Preferencias",
   "navigation_bar.public_timeline": "Historia federada",
   "navigation_bar.security": "Seguridad",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} se unio",
   "notification.favourite": "{name} marcó tu estado como favorito",
   "notification.follow": "{name} te empezó a seguir",
   "notification.follow_request": "{name} ha solicitado seguirte",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editó una publicación",
   "notifications.clear": "Limpiar notificaciones",
   "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Registros nuevos:",
   "notifications.column_settings.alert": "Notificaciones de escritorio",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías",
@@ -360,7 +362,7 @@
   "poll.total_votes": "{count, plural, one {# voto} other {# votos}}",
   "poll.vote": "Votar",
   "poll.voted": "Has votado a favor de esta respuesta",
-  "poll.votes": "{votes, plural, one {# voto} other {# votos}}",
+  "poll.votes": "{votes, plural, one {# voto} other {# votes}}",
   "poll_button.add_poll": "Añadir una encuesta",
   "poll_button.remove_poll": "Eliminar encuesta",
   "privacy.change": "Ajustar privacidad",
@@ -376,54 +378,54 @@
   "regeneration_indicator.label": "Cargando…",
   "regeneration_indicator.sublabel": "¡Tu historia de inicio se está preparando!",
   "relative_time.days": "{number} d",
-  "relative_time.full.days": "hace {number, plural, one {# día} other {# días}}",
-  "relative_time.full.hours": "hace {number, plural, one {# hora} other {# horas}}",
+  "relative_time.full.days": "{number, plural, one {# día} other {# días hace}}",
+  "relative_time.full.hours": "{number, plural, one {# hora} other {# horas}} hace",
   "relative_time.full.just_now": "justo ahora",
-  "relative_time.full.minutes": "hace {number, plural, one {# minuto} other {# minutos}}",
-  "relative_time.full.seconds": "hace {number, plural, one {# segundo} other {# segundos}}",
+  "relative_time.full.minutes": "Hace {number, plural, one {# minute} other {# minutos}}",
+  "relative_time.full.seconds": "Hace {number, plural, one {# second} other {# segundos}}",
   "relative_time.hours": "{number} h",
   "relative_time.just_now": "ahora",
   "relative_time.minutes": "{number} m",
   "relative_time.seconds": "{number} s",
   "relative_time.today": "hoy",
   "reply_indicator.cancel": "Cancelar",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Otros",
+  "report.block": "Bloquear",
+  "report.block_explanation": "No veras sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán saber que están bloqueados.",
+  "report.categories.other": "Otro",
   "report.categories.spam": "Spam",
   "report.categories.violation": "El contenido viola una o más reglas del servidor",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Selecciona la mejor coincidencia",
+  "report.category.title": "Cuéntanos lo que sucede con este {type}",
+  "report.category.title_account": "perfil",
+  "report.category.title_status": "publicación",
+  "report.close": "Realizado",
+  "report.comment.title": "¿Hay algo más que usted cree que debamos saber?",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "Esta cuenta es de otro servidor. ¿Enviar una copia anonimizada del informe allí también?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Silenciar",
+  "report.mute_explanation": "No veras sus publiaciones. Todavía pueden seguirte y ver tus publicaciones y no sabrán que están silenciados.",
+  "report.next": "Siguiente",
   "report.placeholder": "Comentarios adicionales",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "No me gusta",
+  "report.reasons.dislike_description": "No es algo que desee ver",
+  "report.reasons.other": "Es algo más",
+  "report.reasons.other_description": "El problema no encaja en otras categorías",
+  "report.reasons.spam": "Es spam",
+  "report.reasons.spam_description": "Enlaces maliciosos, Interacciones falsas, o respuestas repetitivas",
+  "report.reasons.violation": "Viola las reglas del servidor",
+  "report.reasons.violation_description": "Es consciente de que infringe normas específicas",
+  "report.rules.subtitle": "Selecciona todos los que apliquen",
+  "report.rules.title": "¿Qué reglas se están violando?",
+  "report.statuses.subtitle": "Seleccione todos lo que aplican",
+  "report.statuses.title": "¿Hay alguna publicación que respalde este informe?",
   "report.submit": "Publicar",
   "report.target": "Reportando",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Aqui hay algunas opciones para controlar lo que ves en Mastodon:",
+  "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:",
+  "report.thanks.title": "¿No quieres ver esto?",
+  "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.",
+  "report.unfollow": "Dejar de seguir @{name}",
+  "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu sección de noticias, deja de seguirlo.",
   "search.placeholder": "Buscar",
   "search_popout.search_format": "Formato de búsqueda avanzada",
   "search_popout.tips.full_text": "Búsquedas de texto recuperan posts que has escrito, marcado como favoritos, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "El texto simple devuelve correspondencias de nombre, usuario y hashtag",
   "search_popout.tips.user": "usuario",
   "search_results.accounts": "Gente",
-  "search_results.all": "All",
+  "search_results.all": "Todos",
   "search_results.hashtags": "Etiquetas",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "No se pudo encontrar nada para estos términos de busqueda",
   "search_results.statuses": "Toots",
   "search_results.statuses_fts_disabled": "Buscar toots por su contenido no está disponible en este servidor de Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
@@ -450,12 +452,12 @@
   "status.direct": "Mensaje directo a @{name}",
   "status.edit": "Editar",
   "status.edited": "Editado {date}",
-  "status.edited_x_times": "Editado {count, plural, one {{count} vez} other {{count} veces}}",
+  "status.edited_x_times": "Editado {count, plural, one {{count} time} other {{count} veces}}",
   "status.embed": "Incrustado",
   "status.favourite": "Favorito",
   "status.filtered": "Filtrado",
   "status.history.created": "{name} creó {date}",
-  "status.history.edited": "{name} editó {date}",
+  "status.history.edited": "{name} editado {date}",
   "status.load_more": "Cargar más",
   "status.media_hidden": "Contenido multimedia oculto",
   "status.mention": "Mencionar",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index bfe9c1534..9215c65d1 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following": "Siguiendo",
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Este usuario todavía no sigue a nadie.",
   "account.follows_you": "Te sigue",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
   "account.joined": "Se unió el {date}",
-  "account.last_status": "Última actividad",
   "account.link_verified_on": "El proprietario de este link fue comprobado el {date}",
   "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.",
   "account.media": "Multimedia",
@@ -32,7 +32,6 @@
   "account.mute": "Silenciar a @{name}",
   "account.mute_notifications": "Silenciar notificaciones de @{name}",
   "account.muted": "Silenciado",
-  "account.never_active": "Nunca",
   "account.posts": "Publicaciones",
   "account.posts_with_replies": "Publicaciones y respuestas",
   "account.report": "Reportar a @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicaciones}}",
   "account.unblock": "Desbloquear a @{name}",
   "account.unblock_domain": "Mostrar a {domain}",
+  "account.unblock_short": "Desbloquear",
   "account.unendorse": "No mostrar en el perfil",
   "account.unfollow": "Dejar de seguir",
   "account.unmute": "Dejar de silenciar a @{name}",
   "account.unmute_notifications": "Dejar de silenciar las notificaciones de @{name}",
+  "account.unmute_short": "Dejar de silenciar",
   "account_note.placeholder": "Clic para añadir nota",
   "admin.dashboard.daily_retention": "Tasa de retención de usuarios por día después del registro",
   "admin.dashboard.monthly_retention": "Tasa de retención de usuarios por mes después del registro",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descubrir",
   "navigation_bar.domain_blocks": "Dominios ocultos",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Explorar",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Solicitudes para seguirte",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editó una publicación",
   "notifications.clear": "Limpiar notificaciones",
   "notifications.clear_confirmation": "¿Seguro que quieres limpiar permanentemente todas tus notificaciones?",
-  "notifications.column_settings.admin.sign_up": "Nuevas inscripciones:",
+  "notifications.column_settings.admin.sign_up": "Nuevos registros:",
   "notifications.column_settings.alert": "Notificaciones de escritorio",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Mostrar todas las categorías",
@@ -388,7 +390,7 @@
   "relative_time.today": "hoy",
   "reply_indicator.cancel": "Cancelar",
   "report.block": "Bloquear",
-  "report.block_explanation": "No verás sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán decir que están bloqueados.",
+  "report.block_explanation": "No verás sus publicaciones. No podrán ver tus publicaciones ni seguirte. Podrán saber que están bloqueados.",
   "report.categories.other": "Otros",
   "report.categories.spam": "Spam",
   "report.categories.violation": "El contenido viola una o más reglas del servidor",
@@ -409,21 +411,21 @@
   "report.reasons.other": "Es otra cosa",
   "report.reasons.other_description": "El problema no encaja en otras categorías",
   "report.reasons.spam": "Es spam",
-  "report.reasons.spam_description": "Enlaces maliciosos, compromisos falsos o respuestas repetitivas",
+  "report.reasons.spam_description": "Enlaces maliciosos, interacciones falsas o respuestas repetitivas",
   "report.reasons.violation": "Viola las reglas del servidor",
-  "report.reasons.violation_description": "Usted es consciente de que infringe las normas específicas",
-  "report.rules.subtitle": "Selecciona todos los que aplica",
+  "report.reasons.violation_description": "Eres consciente de que infringe las normas específicas",
+  "report.rules.subtitle": "Selecciona todos los que correspondan",
   "report.rules.title": "¿Qué normas se están violando?",
-  "report.statuses.subtitle": "Selecciona todos los que aplican",
+  "report.statuses.subtitle": "Selecciona todos los que correspondan",
   "report.statuses.title": "¿Hay alguna publicación que respalde este informe?",
   "report.submit": "Publicar",
   "report.target": "Reportando",
   "report.thanks.take_action": "Aquí están tus opciones para controlar lo que ves en Mastodon:",
   "report.thanks.take_action_actionable": "Mientras revisamos esto, puedes tomar medidas contra @{name}:",
   "report.thanks.title": "¿No quieres esto?",
-  "report.thanks.title_actionable": "Gracias por reportar, estudiaremos esto.",
+  "report.thanks.title_actionable": "Gracias por informar, estudiaremos esto.",
   "report.unfollow": "Dejar de seguir a @{name}",
-  "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirlas.",
+  "report.unfollow_explanation": "Estás siguiendo esta cuenta. Para no ver sus publicaciones en tu muro de inicio, deja de seguirla.",
   "search.placeholder": "Buscar",
   "search_popout.search_format": "Formato de búsqueda avanzada",
   "search_popout.tips.full_text": "Las búsquedas de texto recuperan publicaciones que has escrito, marcado como favoritas, retooteado o en los que has sido mencionado, así como usuarios, nombres y hashtags.",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 2eca42e09..e3bcdb521 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -18,12 +18,12 @@
   "account.followers": "Jälgijad",
   "account.followers.empty": "Keegi ei jälgi seda kasutajat veel.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "See kasutaja ei jälgi veel kedagi.",
   "account.follows_you": "Jälgib Teid",
   "account.hide_reblogs": "Peida upitused kasutajalt @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Viimati aktiivne",
   "account.link_verified_on": "Selle lingi autorsust kontrolliti {date}",
   "account.locked_info": "Selle konto privaatsussätteks on lukustatud. Omanik vaatab manuaalselt üle, kes teda jägida saab.",
   "account.media": "Meedia",
@@ -32,7 +32,6 @@
   "account.mute": "Vaigista @{name}",
   "account.mute_notifications": "Vaigista teated kasutajalt @{name}",
   "account.muted": "Vaigistatud",
-  "account.never_active": "Mitte kunagi",
   "account.posts": "Tuututused",
   "account.posts_with_replies": "Tuututused ja vastused",
   "account.report": "Raporteeri @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Eemalda blokeering @{name}",
   "account.unblock_domain": "Tee {domain} nähtavaks",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ära kuva profiilil",
   "account.unfollow": "Ära jälgi",
   "account.unmute": "Ära vaigista @{name}",
   "account.unmute_notifications": "Ära vaigista teateid kasutajalt @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Avasta",
   "navigation_bar.domain_blocks": "Peidetud domeenid",
   "navigation_bar.edit_profile": "Muuda profiili",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Lemmikud",
   "navigation_bar.filters": "Vaigistatud sõnad",
   "navigation_bar.follow_requests": "Jälgimistaotlused",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 0d3eec701..a5cbf5128 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -18,12 +18,12 @@
   "account.followers": "Jarraitzaileak",
   "account.followers.empty": "Ez du inork erabiltzaile hau jarraitzen oraindik.",
   "account.followers_counter": "{count, plural, one {Jarraitzaile {counter}} other {{counter} jarraitzaile}}",
+  "account.following": "Jarraitzen",
   "account.following_counter": "{count, plural, one {{counter} jarraitzen} other {{counter} jarraitzen}}",
   "account.follows.empty": "Erabiltzaile honek ez du inor jarraitzen oraindik.",
   "account.follows_you": "Jarraitzen dizu",
   "account.hide_reblogs": "Ezkutatu @{name}(r)en bultzadak",
   "account.joined": "{date}(e)an elkartua",
-  "account.last_status": "Azkenekoz aktiboa",
   "account.link_verified_on": "Esteka honen jabetzaren egiaztaketa data: {date}",
   "account.locked_info": "Kontu honen pribatutasun egoera blokeatuta gisa ezarri da. Jabeak eskuz erabakitzen du nork jarraitu diezaioken.",
   "account.media": "Multimedia",
@@ -32,7 +32,6 @@
   "account.mute": "Mututu @{name}",
   "account.mute_notifications": "Mututu @{name}(r)en jakinarazpenak",
   "account.muted": "Mutututa",
-  "account.never_active": "Inoiz ez",
   "account.posts": "Bidalketa",
   "account.posts_with_replies": "Bidalketak eta erantzunak",
   "account.report": "Salatu @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {Bidalketa {counter}} other {{counter} bidalketa}}",
   "account.unblock": "Desblokeatu @{name}",
   "account.unblock_domain": "Berriz erakutsi {domain}",
+  "account.unblock_short": "Desblokeatu",
   "account.unendorse": "Ez nabarmendu profilean",
   "account.unfollow": "Utzi jarraitzeari",
   "account.unmute": "Desmututu @{name}",
   "account.unmute_notifications": "Desmututu @{name}(r)en jakinarazpenak",
+  "account.unmute_short": "Desmututu",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo eguneko",
   "admin.dashboard.monthly_retention": "Erabiltzaile atxikitze-tasa izena eman ondorengo hilabeteko",
@@ -167,7 +168,7 @@
   "empty_column.community": "Denbora-lerro lokala hutsik dago. Idatzi zerbait publikoki pilota biraka jartzeko!",
   "empty_column.direct": "Ez duzu mezu zuzenik oraindik. Baten bat bidali edo jasotzen duzunean, hemen agertuko da.",
   "empty_column.domain_blocks": "Ez dago ezkutatutako domeinurik oraindik.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Ez dago joerarik une honetan. Begiratu beranduago!",
   "empty_column.favourited_statuses": "Ez duzu gogokorik oraindik. Gogokoren bat duzunean hemen agertuko da.",
   "empty_column.favourites": "Ez du inork gogokoetara gehitu bidalketa hau oraindik. Inork egiten duenean, hemen agertuko dira.",
   "empty_column.follow_recommendations": "Dirudienez ezin izan da zuretzako proposamenik sortu. Bilaketa erabili dezakezu ezagutzen duzun jendea aurkitzeko edo traolen joerak arakatu.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Saiatu desgaitu eta orria berritzen. Horrek ez badu laguntzen, agian Mastodon erabiltzeko aukera duzu oraindik ere beste nabigatzaile bat edo aplikazio natibo bat erabilita.",
   "errors.unexpected_crash.copy_stacktrace": "Kopiatu irteera arbelera",
   "errors.unexpected_crash.report_issue": "Eman arazoaren berri",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Bilaketaren emaitzak",
+  "explore.suggested_follows": "Zuretzat",
+  "explore.title": "Arakatu",
+  "explore.trending_links": "Berriak",
+  "explore.trending_statuses": "Bidalketak",
+  "explore.trending_tags": "Traolak",
   "follow_recommendations.done": "Egina",
   "follow_recommendations.heading": "Jarraitu jendea beren bidalketak ikusteko! Hemen dituzu iradokizun batzuk.",
   "follow_recommendations.lead": "Jarraitzen duzun jendearen bidalketak ordena kronologikoan agertuko dira zure hasierako jarioan. Ez izan akatsak egiteko beldurrik, jendea jarraitzeari uztea erraza da!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Aurkitu",
   "navigation_bar.domain_blocks": "Ezkutatutako domeinuak",
   "navigation_bar.edit_profile": "Aldatu profila",
+  "navigation_bar.explore": "Arakatu",
   "navigation_bar.favourites": "Gogokoak",
   "navigation_bar.filters": "Mutututako hitzak",
   "navigation_bar.follow_requests": "Jarraitzeko eskariak",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Hobespenak",
   "navigation_bar.public_timeline": "Federatutako denbora-lerroa",
   "navigation_bar.security": "Segurtasuna",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} erabiltzailea erregistratu da",
   "notification.favourite": "{name}(e)k zure bidalketa gogoko du",
   "notification.follow": "{name}(e)k jarraitzen zaitu",
   "notification.follow_request": "{name}(e)k zu jarraitzeko eskaera egin du",
@@ -319,7 +321,7 @@
   "notification.update": "{name} erabiltzaileak bidalketa bat editatu du",
   "notifications.clear": "Garbitu jakinarazpenak",
   "notifications.clear_confirmation": "Ziur zure jakinarazpen guztiak behin betirako garbitu nahi dituzula?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Izen-emate berriak:",
   "notifications.column_settings.alert": "Mahaigaineko jakinarazpenak",
   "notifications.column_settings.favourite": "Gogokoak:",
   "notifications.column_settings.filter_bar.advanced": "Erakutsi kategoria guztiak",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "gaur",
   "reply_indicator.cancel": "Utzi",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Blokeatu",
+  "report.block_explanation": "Ez dituzu bere bidalketak ikusiko. Ezingo dituzte zure bidalketak ikusi eta ez jarraitu. Blokeatu dituzula jakin dezakete.",
   "report.categories.other": "Bestelakoak",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Edukiak zerbitzariko arau bat edo gehiago urratzen ditu",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Aukeratu egokiena",
+  "report.category.title": "Kontaiguzu zer gertatzen den {type} honekin",
+  "report.category.title_account": "profil",
+  "report.category.title_status": "bidalketa",
+  "report.close": "Egina",
+  "report.comment.title": "Beste zerbait jakin beharko genuke?",
   "report.forward": "Birbidali hona: {target}",
   "report.forward_hint": "Kontu hau beste zerbitzari batekoa da. Bidali txostenaren kopia anonimo hara ere?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Mututu",
+  "report.mute_explanation": "Ez dituzu bere bidalketak ikusiko. Zu jarraitu eta zure bidalketak ikusteko aukera izango dute eta ezingo dute jakin mututu dituzula.",
+  "report.next": "Hurrengoa",
   "report.placeholder": "Iruzkin gehigarriak",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Ez dut gustukoa",
+  "report.reasons.dislike_description": "Ikusi nahi ez dudan zerbait da",
+  "report.reasons.other": "Beste zerbait da",
+  "report.reasons.other_description": "Arazoa ezin da beste kategorietan sailkatu",
+  "report.reasons.spam": "Spama da",
+  "report.reasons.spam_description": "Esteka maltzurrak, gezurrezko elkarrekintzak edo erantzun errepikakorrak",
+  "report.reasons.violation": "Zerbitzariaren arauak hausten ditu",
+  "report.reasons.violation_description": "Arau zehatzak urratzen dituela badakizu",
+  "report.rules.subtitle": "Hautatu dagozkion guztiak",
+  "report.rules.title": "Ze arau hautsi ditu?",
+  "report.statuses.subtitle": "Hautatu dagozkion guztiak",
+  "report.statuses.title": "Salaketa hau babesten duen bidalketarik badago?",
   "report.submit": "Bidali",
   "report.target": "{target} salatzen",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Hemen dituzu Mastodonen ikusiko duzuna kontrolatzeko aukerak:",
+  "report.thanks.take_action_actionable": "Hau berrikusten dugun bitartean, @{name} erabiltzailearen aurkako neurriak hartu ditzakezu:",
+  "report.thanks.title": "Ez duzu hau ikusi nahi?",
+  "report.thanks.title_actionable": "Mila esker salaketagatik, berrikusiko dugu.",
+  "report.unfollow": "@{name} jarraitzeari utzi",
+  "report.unfollow_explanation": "Kontu hau jarraitzen ari zara. Zure denbora-lerro nagusian bere bidalketak ez ikusteko, jarraitzeari utzi.",
   "search.placeholder": "Bilatu",
   "search_popout.search_format": "Bilaketa aurreratuaren formatua",
   "search_popout.tips.full_text": "Testu hutsarekin zuk idatzitako bidalketak, gogokoak, bultzadak edo aipamenak aurkitu ditzakezu, bat datozen erabiltzaile-izenak, pantaila-izenak, eta traolak.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Testu hutsak pantaila-izenak, erabiltzaile-izenak eta traolak bilatzen ditu",
   "search_popout.tips.user": "erabiltzailea",
   "search_results.accounts": "Jendea",
-  "search_results.all": "All",
+  "search_results.all": "Guztiak",
   "search_results.hashtags": "Traolak",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Ez da emaitzarik aurkitu bilaketa-termino horientzat",
   "search_results.statuses": "Bidalketak",
   "search_results.statuses_fts_disabled": "Mastodon zerbitzari honek ez du bidalketen edukiaren bilaketa gaitu.",
   "search_results.total": "{count, number} {count, plural, one {emaitza} other {emaitza}}",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 2024903d0..659336393 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -18,12 +18,12 @@
   "account.followers": "پی‌گیرندگان",
   "account.followers.empty": "هنوز کسی این کاربر را پی‌گیری نمی‌کند.",
   "account.followers_counter": "{count, plural, one {{counter} پی‌گیرنده} other {{counter} پی‌گیرنده}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} پی‌گرفته} other {{counter} پی‌گرفته}}",
   "account.follows.empty": "این کاربر هنوز پی‌گیر کسی نیست.",
   "account.follows_you": "پی می‌گیردتان",
   "account.hide_reblogs": "نهفتن تقویت‌های @{name}",
   "account.joined": "پیوسته از {date}",
-  "account.last_status": "آخرین فعّالیت",
   "account.link_verified_on": "مالکیت این پیوند در {date} بررسی شد",
   "account.locked_info": "این حساب خصوصی است. صاحبش تصمیم می‌گیرد که چه کسی پی‌گیرش باشد.",
   "account.media": "رسانه",
@@ -32,7 +32,6 @@
   "account.mute": "خموشاندن @{name}",
   "account.mute_notifications": "خموشاندن آگاهی‌ها از @{name}",
   "account.muted": "خموش",
-  "account.never_active": "هرگز",
   "account.posts": "فرسته",
   "account.posts_with_replies": "فرسته‌ها و پاسخ‌ها",
   "account.report": "گزارش @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} فرسته} other {{counter} فرسته}}",
   "account.unblock": "رفع مسدودیت @{name}",
   "account.unblock_domain": "رفع مسدودیت دامنهٔ {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "معرّفی نکردن در نمایه",
   "account.unfollow": "ناپی‌گیری",
   "account.unmute": "ناخموشی @{name}",
   "account.unmute_notifications": "ناخموشی آگاهی‌ها از @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "برای افزودن یادداشت کلیک کنید",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "گشت و گذار",
   "navigation_bar.domain_blocks": "دامنه‌های مسدود شده",
   "navigation_bar.edit_profile": "ویرایش نمایه",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "پسندیده‌ها",
   "navigation_bar.filters": "واژه‌های خموش",
   "navigation_bar.follow_requests": "درخواست‌های پی‌گیری",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index a508ddbdc..b1ad55088 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -18,12 +18,12 @@
   "account.followers": "Seuraajat",
   "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.",
   "account.followers_counter": "{count, plural, one {{counter} seuraaja} other {{counter} seuraajat}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}",
   "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
   "account.follows_you": "Seuraa sinua",
   "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}",
   "account.joined": "Liittynyt {date}",
-  "account.last_status": "Aktiivinen viimeksi",
   "account.link_verified_on": "Tämän linkin omistaja tarkistettiin {date}",
   "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mykistä @{name}",
   "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}",
   "account.muted": "Mykistetty",
-  "account.never_active": "Ei koskaan",
   "account.posts": "Viestit",
   "account.posts_with_replies": "Viestit ja vastaukset",
   "account.report": "Raportoi @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Salli @{name}",
   "account.unblock_domain": "Salli {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Poista suosittelu profiilistasi",
   "account.unfollow": "Lopeta seuraaminen",
   "account.unmute": "Poista käyttäjän @{name} mykistys",
   "account.unmute_notifications": "Poista mykistys käyttäjän @{name} ilmoituksilta",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Lisää muistiinpano napsauttamalla",
   "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä",
   "admin.dashboard.monthly_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen kuukauteen mennessä",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Löydä uutta",
   "navigation_bar.domain_blocks": "Estetyt verkkotunnukset",
   "navigation_bar.edit_profile": "Muokkaa profiilia",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Suosikit",
   "navigation_bar.filters": "Mykistetyt sanat",
   "navigation_bar.follow_requests": "Seuraamispyynnöt",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index fc050a7da..791b802a1 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -18,12 +18,12 @@
   "account.followers": "Abonnés",
   "account.followers.empty": "Personne ne suit cet·te utilisateur·rice pour l’instant.",
   "account.followers_counter": "{count, plural, one {{counter} Abonné·e} other {{counter} Abonné·e·s}}",
+  "account.following": "Abonnements",
   "account.following_counter": "{count, plural, other {{counter} Abonnements}}",
   "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.",
   "account.follows_you": "Vous suit",
   "account.hide_reblogs": "Masquer les partages de @{name}",
   "account.joined": "Ici depuis {date}",
-  "account.last_status": "Dernière activité",
   "account.link_verified_on": "La propriété de ce lien a été vérifiée le {date}",
   "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.",
   "account.media": "Médias",
@@ -32,7 +32,6 @@
   "account.mute": "Masquer @{name}",
   "account.mute_notifications": "Ignorer les notifications de @{name}",
   "account.muted": "Masqué·e",
-  "account.never_active": "Jamais",
   "account.posts": "Messages",
   "account.posts_with_replies": "Messages et réponses",
   "account.report": "Signaler @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Message} other {{counter} Messages}}",
   "account.unblock": "Débloquer @{name}",
   "account.unblock_domain": "Débloquer le domaine {domain}",
+  "account.unblock_short": "Débloquer",
   "account.unendorse": "Ne plus recommander sur le profil",
   "account.unfollow": "Ne plus suivre",
   "account.unmute": "Ne plus masquer @{name}",
   "account.unmute_notifications": "Ne plus masquer les notifications de @{name}",
+  "account.unmute_short": "Ne plus masquer",
   "account_note.placeholder": "Cliquez pour ajouter une note",
   "admin.dashboard.daily_retention": "Taux de maintien des utilisateur·rice·s par jour après inscription",
   "admin.dashboard.monthly_retention": "Brugerfastholdelsesrate efter måned efter tilmelding",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Découvrir",
   "navigation_bar.domain_blocks": "Domaines bloqués",
   "navigation_bar.edit_profile": "Modifier le profil",
+  "navigation_bar.explore": "Explorer",
   "navigation_bar.favourites": "Favoris",
   "navigation_bar.filters": "Mots masqués",
   "navigation_bar.follow_requests": "Demandes d’abonnement",
@@ -409,7 +411,7 @@
   "report.reasons.other": "Pour une autre raison",
   "report.reasons.other_description": "Le problème ne correspond pas aux autres catégories",
   "report.reasons.spam": "C'est du spam",
-  "report.reasons.spam_description": "Liens malveillants, engagement mensonger ou réponses répétitives",
+  "report.reasons.spam_description": "Liens malveillants, faux engagement ou réponses répétitives",
   "report.reasons.violation": "Infraction des règles du serveur",
   "report.reasons.violation_description": "Vous savez que des règles précises sont enfreintes",
   "report.rules.subtitle": "Sélectionnez toutes les réponses appropriées",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 06a6bca5b..5bf1681a8 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "No comment provided",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 35ab5e83e..aae73a23e 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -18,12 +18,12 @@
   "account.followers": "Luchd-leantainn",
   "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.",
   "account.followers_counter": "{count, plural, one {{counter} neach-leantainn} two {{counter} neach-leantainn} few {{counter} luchd-leantainn} other {{counter} luchd-leantainn}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {A’ leantainn air {counter}} two {A’ leantainn air {counter}} few {A’ leantainn air {counter}} other {A’ leantainn air {counter}}}",
   "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.",
   "account.follows_you": "’Gad leantainn",
   "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}",
   "account.joined": "Air ballrachd fhaighinn {date}",
-  "account.last_status": "An gnìomh mu dheireadh",
   "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}",
   "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.",
   "account.media": "Meadhanan",
@@ -32,7 +32,6 @@
   "account.mute": "Mùch @{name}",
   "account.mute_notifications": "Mùch na brathan o @{name}",
   "account.muted": "’Ga mhùchadh",
-  "account.never_active": "Chan ann idir",
   "account.posts": "Postaichean",
   "account.posts_with_replies": "Postaichean ’s freagairtean",
   "account.report": "Dèan gearan mu @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}}",
   "account.unblock": "Dì-bhac @{name}",
   "account.unblock_domain": "Dì-bhac an àrainn {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Na brosnaich air a’ phròifil",
   "account.unfollow": "Na lean tuilleadh",
   "account.unmute": "Dì-mhùch @{name}",
   "account.unmute_notifications": "Dì-mhùch na brathan o @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Briog airson nòta a chur ris",
   "admin.dashboard.daily_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir latha",
   "admin.dashboard.monthly_retention": "Reat glèidheadh nan cleachdaichean às dèidh an clàradh a-rèir mìos",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Fidir",
   "navigation_bar.domain_blocks": "Àrainnean bacte",
   "navigation_bar.edit_profile": "Deasaich a’ phròifil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Na h-annsachdan",
   "navigation_bar.filters": "Faclan mùchte",
   "navigation_bar.follow_requests": "Iarrtasan leantainn",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 63d4d7dbc..56fd5ca7f 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidoras",
   "account.followers.empty": "Aínda ninguén segue esta usuaria.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidora} other {{counter} Seguidoras}}",
+  "account.following": "Seguindo",
   "account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}",
   "account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
   "account.follows_you": "Séguete",
   "account.hide_reblogs": "Agochar repeticións de @{name}",
   "account.joined": "Uníuse {date}",
-  "account.last_status": "Última actividade",
   "account.link_verified_on": "A propiedade desta ligazón foi verificada o {date}",
   "account.locked_info": "Esta é unha conta privada. A propietaria revisa de xeito manual quen pode seguila.",
   "account.media": "Multimedia",
@@ -32,7 +32,6 @@
   "account.mute": "Acalar @{name}",
   "account.mute_notifications": "Acalar as notificacións de @{name}",
   "account.muted": "Acalada",
-  "account.never_active": "Nunca",
   "account.posts": "Publicacións",
   "account.posts_with_replies": "Publicacións e respostas",
   "account.report": "Informar sobre @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Publicación} other {{counter} Publicacións}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Amosar {domain}",
+  "account.unblock_short": "Desbloquear",
   "account.unendorse": "Non amosar no perfil",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Deixar de silenciar a @{name}",
   "account.unmute_notifications": "Deixar de silenciar as notificacións de @{name}",
+  "account.unmute_short": "Non silenciar",
   "account_note.placeholder": "Preme para engadir nota",
   "admin.dashboard.daily_retention": "Ratio de retención de usuarias após rexistrarse",
   "admin.dashboard.monthly_retention": "Ratio de retención de usuarias após un mes do rexistro",
@@ -167,7 +168,7 @@
   "empty_column.community": "A cronoloxía local está baleira. Escribe algo de xeito público para espallalo!",
   "empty_column.direct": "Aínda non tes mensaxes directas. Cando envíes ou recibas unha, amosarase aquí.",
   "empty_column.domain_blocks": "Aínda non hai dominios agochados.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Non hai temas en voga. Volve máis tarde!",
   "empty_column.favourited_statuses": "Aínda non tes publicacións favoritas. Cando che guste algunha, aparecerá aquí.",
   "empty_column.favourites": "A ninguén lle gustou esta publicación polo momento. Cando a alguén lle guste, aparecerá aquí.",
   "empty_column.follow_recommendations": "Semella que non temos suxestións para ti. Podes utilizar a busca para atopar persoas que coñezas ou explorar os cancelos en voga.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Intenta desactivalas e actualiza a páxina. Se isto non funciona, podes seguir usando Mastodon nun navegador diferente ou aplicación nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar trazas (stacktrace) ó portapapeis",
   "errors.unexpected_crash.report_issue": "Informar sobre un problema",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Resultados da busca",
+  "explore.suggested_follows": "Para ti",
+  "explore.title": "Descubrir",
+  "explore.trending_links": "Novas",
+  "explore.trending_statuses": "Publicacións",
+  "explore.trending_tags": "Cancelos",
   "follow_recommendations.done": "Feito",
   "follow_recommendations.heading": "Segue a persoas das que queiras ler publicacións! Aqui tes unhas suxestións.",
   "follow_recommendations.lead": "As publicacións das persoas que segues aparecerán na túa cronoloxía de inicio ordenadas temporalmente. Non teñas medo a equivocarte, podes deixar de seguirlas igual de fácil en calquera momento!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descubrir",
   "navigation_bar.domain_blocks": "Dominios agochados",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Descubrir",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palabras silenciadas",
   "navigation_bar.follow_requests": "Peticións de seguimento",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Preferencias",
   "navigation_bar.public_timeline": "Cronoloxía federada",
   "navigation_bar.security": "Seguranza",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} rexistrouse",
   "notification.favourite": "{name} marcou a túa publicación como favorita",
   "notification.follow": "{name} comezou a seguirte",
   "notification.follow_request": "{name} solicitou seguirte",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editou unha publicación",
   "notifications.clear": "Limpar notificacións",
   "notifications.clear_confirmation": "Tes a certeza de querer limpar de xeito permanente todas as túas notificacións?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Novas usuarias:",
   "notifications.column_settings.alert": "Notificacións de escritorio",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Amosar todas as categorías",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hoxe",
   "reply_indicator.cancel": "Desbotar",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Bloquear",
+  "report.block_explanation": "Non vas ver as súas publicacións. Nin verán as túas publicacións nin poderán seguirte. Poderán comprobar que as bloqueaches.",
   "report.categories.other": "Outro",
   "report.categories.spam": "Spam",
   "report.categories.violation": "O contido viola unha ou máis regras do servidor",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Elixe a mellor coincidencia",
+  "report.category.title": "Dinos o que está a pasar con {type}",
+  "report.category.title_account": "perfil",
+  "report.category.title_status": "publicación",
+  "report.close": "Feito",
+  "report.comment.title": "Hai algo máis que creas debamos saber?",
   "report.forward": "Reenviar a {target}",
   "report.forward_hint": "A conta é doutro servidor. Enviar unha copia anónima da denuncia aló tamén?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Acalar",
+  "report.mute_explanation": "Non verás as súas publicacións. Poderán seguirte e ver as túas publicacións e non saberán que as acalaches.",
+  "report.next": "Seguinte",
   "report.placeholder": "Comentarios adicionais",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Non me gusta",
+  "report.reasons.dislike_description": "Non é algo que queiras ver",
+  "report.reasons.other": "É outra cousa",
+  "report.reasons.other_description": "O asunto non cae dentro de outras categorías",
+  "report.reasons.spam": "É spam",
+  "report.reasons.spam_description": "Ligazóns perigosas, relacións falsas, ou respostas repetitivas",
+  "report.reasons.violation": "Viola as regras do servidor",
+  "report.reasons.violation_description": "Daste conta de que quebra unhas normas en concreto",
+  "report.rules.subtitle": "Elixe todo o que sexa de aplicación",
+  "report.rules.title": "Que regras foron incumpridas?",
+  "report.statuses.subtitle": "Elixe todo o que corresponda",
+  "report.statuses.title": "Hai algunha publicación que apoie esta denuncia?",
   "report.submit": "Enviar",
   "report.target": "Denunciar a {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Aquí tes unhas opcións para controlar o que ves en Mastodon:",
+  "report.thanks.take_action_actionable": "Mentras revisamos esto, podes tomar accións contra @{name}:",
+  "report.thanks.title": "Non queres ver esto?",
+  "report.thanks.title_actionable": "Grazas pola denuncia, investigarémola.",
+  "report.unfollow": "Non seguir a @{name}",
+  "report.unfollow_explanation": "Estás a seguir esta conta. Deixar de ver as súas publicacións na túa cronoloxía, non seguila.",
   "search.placeholder": "Procurar",
   "search_popout.search_format": "Formato de procura avanzada",
   "search_popout.tips.full_text": "Texto simple devolve toots que ti escribiches, promoviches, marcaches favoritos, ou foches mencionada, así como nomes de usuaria coincidentes, nomes públicos e cancelos.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Texto simple devolve coincidencias con nomes públicos, nomes de usuaria e cancelos",
   "search_popout.tips.user": "usuaria",
   "search_results.accounts": "Persoas",
-  "search_results.all": "All",
+  "search_results.all": "Todo",
   "search_results.hashtags": "Cancelos",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Non atopamos nada con estos termos de busca",
   "search_results.statuses": "Publicacións",
   "search_results.statuses_fts_disabled": "Procurar publicacións polo seu contido non está activado neste servidor do Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index fd97ce53c..db25a33fd 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -18,12 +18,12 @@
   "account.followers": "עוקבים",
   "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
   "account.followers_counter": "{count, plural,one {עוקב אחד} other {{counter} עוקבים}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}",
   "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.",
   "account.follows_you": "במעקב אחריך",
   "account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
   "account.joined": "הצטרפו ב{date}",
-  "account.last_status": "פעילות אחרונה",
   "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}",
   "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.",
   "account.media": "מדיה",
@@ -32,7 +32,6 @@
   "account.mute": "להשתיק את @{name}",
   "account.mute_notifications": "להסתיר התראות מאת @{name}",
   "account.muted": "מושתק",
-  "account.never_active": "אף פעם",
   "account.posts": "הודעות",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "לדווח על @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "הסרת חסימה מעל @{name}",
   "account.unblock_domain": "הסר חסימה מקהילת {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "לא להציג בפרופיל",
   "account.unfollow": "הפסקת מעקב",
   "account.unmute": "הפסקת השתקת @{name}",
   "account.unmute_notifications": "להפסיק הסתרת הודעות מעם @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "ללא הערה",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "עריכת פרופיל",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "חיבובים",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "בקשות מעקב",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index b5d731ac4..8a464f7ec 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -18,12 +18,12 @@
   "account.followers": "फॉलोवर",
   "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
   "account.followers_counter": "{count, plural, one {{counter} अनुगामी} other {{counter} समर्थक}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} निम्नलिखित} other {{counter} निम्नलिखित}}",
   "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
   "account.follows_you": "आपको फॉलो करता है",
   "account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
   "account.joined": "Joined {date}",
-  "account.last_status": "अंतिम सक्रिय",
   "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था",
   "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।",
   "account.media": "मीडिया",
@@ -32,7 +32,6 @@
   "account.mute": "म्यूट @{name}",
   "account.mute_notifications": "@{name} के नोटिफिकेशन म्यूट करे",
   "account.muted": "म्यूट है",
-  "account.never_active": "कभी नहीं दिखे",
   "account.posts": "टूट्स",
   "account.posts_with_replies": "टूट्स एवं जवाब",
   "account.report": "रिपोर्ट @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} भोंपू} other {{counter} भोंपू}}",
   "account.unblock": "@{name} को अनब्लॉक करें",
   "account.unblock_domain": "{domain} दिखाए",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "प्रोफ़ाइल पर न दिखाए",
   "account.unfollow": "अनफॉलो करें",
   "account.unmute": "अनम्यूट @{name}",
   "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "नोट्स जोड़ने के लिए क्लिक करें",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "खोजें",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "प्रोफ़ाइल संपादित करें",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "अनुसरण करने के अनुरोध",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index e8798aaba..bbe62cf38 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -18,12 +18,12 @@
   "account.followers": "Pratitelji",
   "account.followers.empty": "Nitko još ne prati korisnika/cu.",
   "account.followers_counter": "{count, plural, one {{counter} pratitelj} other {{counter} pratitelja}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} praćeni} few{{counter} praćena} other {{counter} praćenih}}",
   "account.follows.empty": "Korisnik/ca još ne prati nikoga.",
   "account.follows_you": "Prati te",
   "account.hide_reblogs": "Sakrij boostove od @{name}",
   "account.joined": "Pridružio se {date}",
-  "account.last_status": "Posljednja aktivnost",
   "account.link_verified_on": "Vlasništvo ove poveznice provjereno je {date}",
   "account.locked_info": "Status privatnosti ovog računa postavljen je na zaključano. Vlasnik ručno pregledava tko ih može pratiti.",
   "account.media": "Medijski sadržaj",
@@ -32,7 +32,6 @@
   "account.mute": "Utišaj @{name}",
   "account.mute_notifications": "Utišaj obavijesti od @{name}",
   "account.muted": "Utišano",
-  "account.never_active": "Nikad",
   "account.posts": "Tootovi",
   "account.posts_with_replies": "Tootovi i odgovori",
   "account.report": "Prijavi @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toota}}",
   "account.unblock": "Deblokiraj @{name}",
   "account.unblock_domain": "Deblokiraj domenu {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ne ističi na profilu",
   "account.unfollow": "Prestani pratiti",
   "account.unmute": "Poništi utišavanje @{name}",
   "account.unmute_notifications": "Ne utišavaj obavijesti od @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Kliknite za dodavanje bilješke",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Istraživanje",
   "navigation_bar.domain_blocks": "Blokirane domene",
   "navigation_bar.edit_profile": "Uredi profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favoriti",
   "navigation_bar.filters": "Utišane riječi",
   "navigation_bar.follow_requests": "Zahtjevi za praćenje",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 107b47b73..d121d6573 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -18,12 +18,12 @@
   "account.followers": "Követő",
   "account.followers.empty": "Ezt a felhasználót még senki sem követi.",
   "account.followers_counter": "{count, plural, one {{counter} Követő} other {{counter} Követő}}",
+  "account.following": "Követve",
   "account.following_counter": "{count, plural, other {{counter} Követett}}",
   "account.follows.empty": "Ez a felhasználó még senkit sem követ.",
   "account.follows_you": "Követ téged",
   "account.hide_reblogs": "@{name} megtolásainak elrejtése",
   "account.joined": "Csatlakozott {date}",
-  "account.last_status": "Utoljára aktív",
   "account.link_verified_on": "A linket eredetiségét ebben az időpontban ellenőriztük: {date}",
   "account.locked_info": "Ennek a fióknak zárolt a láthatósága. A tulajdonos kézzel engedélyezi, hogy ki követheti őt.",
   "account.media": "Média",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} némítása",
   "account.mute_notifications": "@{name} értesítéseinek némítása",
   "account.muted": "Némítva",
-  "account.never_active": "Soha",
   "account.posts": "Bejegyzések",
   "account.posts_with_replies": "Bejegyzések és válaszok",
   "account.report": "@{name} jelentése",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Bejegyzés} other {{counter} Bejegyzés}}",
   "account.unblock": "@{name} letiltásának feloldása",
   "account.unblock_domain": "{domain} elrejtésének feloldása",
+  "account.unblock_short": "Tiltás feloldása",
   "account.unendorse": "Ne jelenjen meg a profilodon",
   "account.unfollow": "Követés megszüntetése",
   "account.unmute": "@{name} némítás feloldása",
   "account.unmute_notifications": "@{name} némított értesítéseinek feloldása",
+  "account.unmute_short": "Némitás feloldása",
   "account_note.placeholder": "Klikk a feljegyzéshez",
   "admin.dashboard.daily_retention": "Napi regisztráció utáni felhasználómegtartási arány",
   "admin.dashboard.monthly_retention": "Havi regisztráció utáni felhasználómegtartási arány",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Felfedezés",
   "navigation_bar.domain_blocks": "Rejtett domainek",
   "navigation_bar.edit_profile": "Profil szerkesztése",
+  "navigation_bar.explore": "Felfedezés",
   "navigation_bar.favourites": "Kedvencek",
   "navigation_bar.filters": "Némított szavak",
   "navigation_bar.follow_requests": "Követési kérelmek",
@@ -388,7 +390,7 @@
   "relative_time.today": "ma",
   "reply_indicator.cancel": "Mégsem",
   "report.block": "Letiltás",
-  "report.block_explanation": "Nem fogod látni a bejegyzéseit. Nem fogja tudni megnézni a bejegyzéseidet és nem követni sem fog tudni. Azt is meg fogja tudni mondani, hogy letiltottad.",
+  "report.block_explanation": "Nem fogod látni a bejegyzéseit. Nem fogja tudni megnézni a bejegyzéseidet és nem fog tudni követni sem. Azt is meg fogja tudni mondani, hogy letiltottad.",
   "report.categories.other": "Egyéb",
   "report.categories.spam": "Kéretlen üzenet",
   "report.categories.violation": "A tartalom a kiszolgáló egy vagy több szabályát sérti",
@@ -419,7 +421,7 @@
   "report.submit": "Küldés",
   "report.target": "{target} jelentése",
   "report.thanks.take_action": "Itt vannak a beállítások, melyek szabályozzák, hogy mit látsz a Mastodonon:",
-  "report.thanks.take_action_actionable": "Míg átnézzük, a következőket tehet @{name} ellen:",
+  "report.thanks.take_action_actionable": "Míg átnézzük, a következőket teheted @{name} ellen:",
   "report.thanks.title": "Nem akarod ezt látni?",
   "report.thanks.title_actionable": "Köszönjük, hogy jelentetted, megnézzük.",
   "report.unfollow": "@{name} követésének leállítása",
@@ -434,7 +436,7 @@
   "search_results.accounts": "Emberek",
   "search_results.all": "Összes",
   "search_results.hashtags": "Hashtagek",
-  "search_results.nothing_found": "Nincs találat erre a keresési kifejezésekre",
+  "search_results.nothing_found": "Nincs találat ezekre a keresési kifejezésekre",
   "search_results.statuses": "Bejegyzések",
   "search_results.statuses_fts_disabled": "Ezen a Mastodon szerveren nem engedélyezett a bejegyzések tartalom szerinti keresése.",
   "search_results.total": "{count, number} {count, plural, one {találat} other {találat}}",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 0f984b0bc..2b7cdf5ac 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -18,12 +18,12 @@
   "account.followers": "Հետեւողներ",
   "account.followers.empty": "Այս օգտատիրոջը դեռ ոչ մէկ չի հետեւում։",
   "account.followers_counter": "{count, plural, one {{counter} Հետեւորդ} other {{counter} Հետեւորդ}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} հետեւած} other {{counter} հետեւած}}",
   "account.follows.empty": "Այս օգտատէրը դեռ ոչ մէկի չի հետեւում։",
   "account.follows_you": "Հետեւում է քեզ",
   "account.hide_reblogs": "Թաքցնել @{name}֊ի տարածածները",
   "account.joined": "Միացել է {date}-ից",
-  "account.last_status": "Վերջին այցը",
   "account.link_verified_on": "Սոյն յղման տիրապետումը ստուգուած է՝ {date}֊ին",
   "account.locked_info": "Սոյն հաշուի գաղտնիութեան մակարդակը նշուած է որպէս՝ փակ։ Հաշուի տէրն ընտրում է, թէ ով կարող է հետեւել իրեն։",
   "account.media": "Մեդիա",
@@ -32,7 +32,6 @@
   "account.mute": "Լռեցնել @{name}֊ին",
   "account.mute_notifications": "Անջատել ծանուցումները @{name}֊ից",
   "account.muted": "Լռեցուած",
-  "account.never_active": "Երբեք",
   "account.posts": "Գրառումներ",
   "account.posts_with_replies": "Գրառումներ եւ պատասխաններ",
   "account.report": "Բողոքել @{name}֊ի մասին",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Գրառում} other {{counter} Գրառումներ}}",
   "account.unblock": "Ապաարգելափակել @{name}֊ին",
   "account.unblock_domain": "Ցուցադրել {domain} թաքցուած տիրոյթի գրառումները",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Չցուցադրել անձնական էջում",
   "account.unfollow": "Ապահետեւել",
   "account.unmute": "Ապալռեցնել @{name}֊ին",
   "account.unmute_notifications": "Միացնել ծանուցումները @{name}֊ից",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Սեղմէ՛ք գրառելու համար\n",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Բացայայտել",
   "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ",
   "navigation_bar.edit_profile": "Խմբագրել անձնական էջը",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Հաւանածներ",
   "navigation_bar.filters": "Լռեցուած բառեր",
   "navigation_bar.follow_requests": "Հետեւելու հայցեր",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index d9a66373a..ee7810379 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -18,12 +18,12 @@
   "account.followers": "Pengikut",
   "account.followers.empty": "Pengguna ini belum ada pengikut.",
   "account.followers_counter": "{count, plural, other {{counter} Pengikut}}",
+  "account.following": "Mengikuti",
   "account.following_counter": "{count, plural, other {{counter} Mengikuti}}",
   "account.follows.empty": "Pengguna ini belum mengikuti siapapun.",
   "account.follows_you": "Mengikuti anda",
   "account.hide_reblogs": "Sembunyikan boosts dari @{name}",
   "account.joined": "Bergabung {date}",
-  "account.last_status": "Terakhir aktif",
   "account.link_verified_on": "Kepemilikan tautan ini telah dicek pada {date}",
   "account.locked_info": "Status privasi akun ini disetel untuk dikunci. Pemilik secara manual meninjau siapa yang dapat mengikutinya.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Bisukan @{name}",
   "account.mute_notifications": "Bisukan pemberitahuan dari @{name}",
   "account.muted": "Dibisukan",
-  "account.never_active": "Tak pernah",
   "account.posts": "Kiriman",
   "account.posts_with_replies": "Postingan dengan balasan",
   "account.report": "Laporkan @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, other {{counter} Toot}}",
   "account.unblock": "Hapus blokir @{name}",
   "account.unblock_domain": "Buka blokir domain {domain}",
+  "account.unblock_short": "Buka blokir",
   "account.unendorse": "Jangan tampilkan di profil",
   "account.unfollow": "Berhenti mengikuti",
   "account.unmute": "Berhenti membisukan @{name}",
   "account.unmute_notifications": "Berhenti bisukan pemberitahuan dari @{name}",
+  "account.unmute_short": "Bunyikan",
   "account_note.placeholder": "Klik untuk menambah catatan",
   "admin.dashboard.daily_retention": "Tingkat retensi pengguna perhari setelah mendaftar",
   "admin.dashboard.monthly_retention": "Tingkat retensi pengguna perbulan setelah mendaftar",
@@ -167,7 +168,7 @@
   "empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
   "empty_column.direct": "Anda belum memiliki pesan langsung. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.",
   "empty_column.domain_blocks": "Tidak ada topik tersembunyi.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Tidak ada yang sedang tren pada saat ini. Silakan mengecek lagi nanti!",
   "empty_column.favourited_statuses": "Anda belum memiliki toot favorit. Ketika Anda mengirim atau menerimanya, maka akan muncul di sini.",
   "empty_column.favourites": "Belum ada yang memfavoritkan toot ini. Ketika seseorang melakukannya, akan muncul disini.",
   "empty_column.follow_recommendations": "Sepertinya tak ada saran yang dibuat untuk Anda. Anda dapat mencoba menggunakan pencarian untuk menemukan orang yang Anda ketahui atau menjelajahi tagar yang sedang tren.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Coba nonaktifkan mereka lalu segarkan halaman. Jika tak membantu, Anda masih bisa memakai Mastodon dengan peramban berbeda atau aplikasi murni.",
   "errors.unexpected_crash.copy_stacktrace": "Salin stacktrace ke papan klip",
   "errors.unexpected_crash.report_issue": "Laporkan masalah",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Hasil pencarian",
+  "explore.suggested_follows": "Untuk Anda",
+  "explore.title": "Jelajahi",
+  "explore.trending_links": "Berita",
+  "explore.trending_statuses": "Postingan",
+  "explore.trending_tags": "Tagar",
   "follow_recommendations.done": "Selesai",
   "follow_recommendations.heading": "Ikuti orang yang ingin Anda lihat kirimannya! Ini ada beberapa saran.",
   "follow_recommendations.lead": "Kiriman dari orang yang Anda ikuti akan tampil berdasar waktu di beranda Anda. Jangan takut membuat kesalahan, Anda dapat berhenti mengikuti mereka dengan mudah kapan saja!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Temukan",
   "navigation_bar.domain_blocks": "Domain tersembunyi",
   "navigation_bar.edit_profile": "Ubah profil",
+  "navigation_bar.explore": "Jelajahi",
   "navigation_bar.favourites": "Favorit",
   "navigation_bar.filters": "Kata yang dibisukan",
   "navigation_bar.follow_requests": "Permintaan mengikuti",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Pengaturan",
   "navigation_bar.public_timeline": "Linimasa gabungan",
   "navigation_bar.security": "Keamanan",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} mendaftar",
   "notification.favourite": "{name} menyukai status anda",
   "notification.follow": "{name} mengikuti anda",
   "notification.follow_request": "{name} ingin mengikuti Anda",
@@ -319,7 +321,7 @@
   "notification.update": "{name} mengedit kiriman",
   "notifications.clear": "Hapus notifikasi",
   "notifications.clear_confirmation": "Apa anda yakin hendak menghapus semua notifikasi anda?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Pendaftaran baru:",
   "notifications.column_settings.alert": "Notifikasi desktop",
   "notifications.column_settings.favourite": "Favorit:",
   "notifications.column_settings.filter_bar.advanced": "Tampilkan semua kategori",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}d",
   "relative_time.today": "hari ini",
   "reply_indicator.cancel": "Batal",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Blokir",
+  "report.block_explanation": "Anda tidak akan melihat postingan mereka. Mereka tidak akan bisa melihat postingan Anda atau mengikuti Anda. Mereka akan mampu menduga bahwa mereka diblokir.",
   "report.categories.other": "Lainnya",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Konten melanggar satu atau lebih peraturan server",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Pilih pasangan terbaik",
+  "report.category.title": "Beritahu kami apa yang terjadi dengan {type} ini",
+  "report.category.title_account": "profil",
+  "report.category.title_status": "postingan",
+  "report.close": "Selesai",
+  "report.comment.title": "Adakah hal lain yang perlu kami ketahui?",
   "report.forward": "Teruskan ke {target}",
   "report.forward_hint": "Akun dari server lain. Kirim salinan laporan scr anonim ke sana?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Bisukan",
+  "report.mute_explanation": "Anda tidak akan melihat postingan mereka. Mereka masih dapat mengikuti Anda dan melihat postingan Anda dan tidak akan mengetahui bahwa mereka dibisukan.",
+  "report.next": "Selanjutnya",
   "report.placeholder": "Komentar tambahan",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Saya tidak menyukainya",
+  "report.reasons.dislike_description": "Ini bukan hal yang ingin Anda lihat",
+  "report.reasons.other": "Itu sesuatu yang lain",
+  "report.reasons.other_description": "Permasalahan ini tidak sesuai pada kategori lain",
+  "report.reasons.spam": "Ini spam",
+  "report.reasons.spam_description": "Tautan berbahaya, interaksi palsu, atau balasan berulang",
+  "report.reasons.violation": "Melanggar ketentuan server",
+  "report.reasons.violation_description": "Anda menyadari bahwa ia melanggar ketentuan tertentu",
+  "report.rules.subtitle": "Pilih semua yang berlaku",
+  "report.rules.title": "Ketentuan manakah yang dilanggar?",
+  "report.statuses.subtitle": "Pilih semua yang berlaku",
+  "report.statuses.title": "Adakah postingan yang mendukung pelaporan ini?",
   "report.submit": "Kirim",
   "report.target": "Melaporkan",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Berikut adalah pilihan Anda untuk mengatur apa yang Anda lihat di Mastodon:",
+  "report.thanks.take_action_actionable": "Ketika kami meninjau ini, Anda dapat mengambil tindakan terhadap @{name}:",
+  "report.thanks.title": "Tidak ingin melihat ini?",
+  "report.thanks.title_actionable": "Terima kasih atas pelaporan Anda, kami akan memeriksa ini lebih lanjut.",
+  "report.unfollow": "Berhenti mengikuti @{name}",
+  "report.unfollow_explanation": "Anda mengikuti akun ini. Untuk tidak melihat postingan mereka di Beranda Anda, berhenti mengikuti mereka.",
   "search.placeholder": "Pencarian",
   "search_popout.search_format": "Format pencarian mahir",
   "search_popout.tips.full_text": "Teks simpel menampilkan status yang Anda tulis, favoritkan, boost-kan, atau status yang menyebut Anda, serta nama pengguna, nama yang ditampilkan, dan tagar yang cocok.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Teks sederhana menampilkan nama yang ditampilkan, nama pengguna, dan tagar yang cocok",
   "search_popout.tips.user": "pengguna",
   "search_results.accounts": "Orang",
-  "search_results.all": "All",
+  "search_results.all": "Semua",
   "search_results.hashtags": "Tagar",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Tidak dapat menemukan apapun untuk istilah-istilah pencarian ini",
   "search_results.statuses": "Toot",
   "search_results.statuses_fts_disabled": "Pencarian toot berdasarkan konten tidak diaktifkan di server Mastadon ini.",
   "search_results.total": "{count, number} {count, plural, one {hasil} other {hasil}}",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index ef4a489ad..77c6871a4 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -18,12 +18,12 @@
   "account.followers": "Sequanti",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Sequas tu",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Celar @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Mesaji",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "Denuncar @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desblokusar @{name}",
   "account.unblock_domain": "Unhide {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Ne plus sequar",
   "account.unmute": "Ne plus celar @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Modifikar profilo",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favorati",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Demandi di sequado",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 34e539360..bf1b892e6 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -18,12 +18,12 @@
   "account.followers": "Fylgjendur",
   "account.followers.empty": "Ennþá fylgist enginn með þessum notanda.",
   "account.followers_counter": "{count, plural, one {{counter} fylgjandi} other {{counter} fylgjendur}}",
+  "account.following": "Fylgist með",
   "account.following_counter": "{count, plural, one {{counter} fylgist með} other {{counter} fylgjast með}}",
   "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.",
   "account.follows_you": "Fylgir þér",
   "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
   "account.joined": "Gerðist þátttakandi {date}",
-  "account.last_status": "Síðasta virkni",
   "account.link_verified_on": "Eignarhald á þessum tengli var athugað þann {date}",
   "account.locked_info": "Staða gagnaleyndar á þessum aðgangi er stillt á læsingu. Eigandinn yfirfer handvirkt hverjir geti fylgst með honum.",
   "account.media": "Myndskrár",
@@ -32,7 +32,6 @@
   "account.mute": "Þagga niður í @{name}",
   "account.mute_notifications": "Þagga tilkynningar frá @{name}",
   "account.muted": "Þaggað",
-  "account.never_active": "Aldrei",
   "account.posts": "Færslur",
   "account.posts_with_replies": "Færslur og svör",
   "account.report": "Kæra @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} færsla} other {{counter} færslur}}",
   "account.unblock": "Aflétta útilokun af @{name}",
   "account.unblock_domain": "Aflétta útilokun lénsins {domain}",
+  "account.unblock_short": "Hætta að loka á",
   "account.unendorse": "Ekki birta á notandasniði",
   "account.unfollow": "Hætta að fylgja",
   "account.unmute": "Hætta að þagga niður í @{name}",
   "account.unmute_notifications": "Hætta að þagga tilkynningar frá @{name}",
+  "account.unmute_short": "Hætta að þagga niður",
   "account_note.placeholder": "Smelltu til að bæta við minnispunkti",
   "admin.dashboard.daily_retention": "Hlutfall virkra notenda eftir nýskráningu eftir dögum",
   "admin.dashboard.monthly_retention": "Hlutfall virkra notenda eftir nýskráningu eftir mánuðum",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Uppgötva",
   "navigation_bar.domain_blocks": "Útilokuð lén",
   "navigation_bar.edit_profile": "Breyta notandasniði",
+  "navigation_bar.explore": "Kanna",
   "navigation_bar.favourites": "Eftirlæti",
   "navigation_bar.filters": "Þögguð orð",
   "navigation_bar.follow_requests": "Beiðnir um að fylgjast með",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 5530c5abf..1985450a5 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -18,12 +18,12 @@
   "account.followers": "Follower",
   "account.followers.empty": "Nessuno segue ancora questo utente.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Follower}}",
+  "account.following": "Seguiti",
   "account.following_counter": "{count, plural, other {{counter} Seguiti}}",
   "account.follows.empty": "Questo utente non segue nessuno ancora.",
   "account.follows_you": "Ti segue",
   "account.hide_reblogs": "Nascondi condivisioni da @{name}",
   "account.joined": "Su questa istanza dal {date}",
-  "account.last_status": "Ultima attività",
   "account.link_verified_on": "La proprietà di questo link è stata controllata il {date}",
   "account.locked_info": "Questo è un account privato. Il proprietario approva manualmente chi può seguirlo.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Silenzia @{name}",
   "account.mute_notifications": "Silenzia notifiche da @{name}",
   "account.muted": "Silenziato",
-  "account.never_active": "Mai",
   "account.posts": "Post",
   "account.posts_with_replies": "Post e risposte",
   "account.report": "Segnala @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Post} other {{counter} Post}}",
   "account.unblock": "Sblocca @{name}",
   "account.unblock_domain": "Sblocca il dominio {domain}",
+  "account.unblock_short": "Sblocca",
   "account.unendorse": "Non mostrare sul profilo",
   "account.unfollow": "Smetti di seguire",
   "account.unmute": "Riattiva @{name}",
   "account.unmute_notifications": "Riattiva le notifiche da @{name}",
+  "account.unmute_short": "Riattiva l'audio",
   "account_note.placeholder": "Clicca per aggiungere una nota",
   "admin.dashboard.daily_retention": "Tasso di ritenzione utente per giorno dopo la registrazione",
   "admin.dashboard.monthly_retention": "Tasso di ritenzione utente per mese dopo la registrazione",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Scopri",
   "navigation_bar.domain_blocks": "Domini nascosti",
   "navigation_bar.edit_profile": "Modifica profilo",
+  "navigation_bar.explore": "Esplora",
   "navigation_bar.favourites": "Apprezzati",
   "navigation_bar.filters": "Parole silenziate",
   "navigation_bar.follow_requests": "Richieste di seguirti",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 0ae51ff04..3fd164f85 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -18,12 +18,12 @@
   "account.followers": "フォロワー",
   "account.followers.empty": "まだ誰もフォローしていません。",
   "account.followers_counter": "{counter} フォロワー",
+  "account.following": "Following",
   "account.following_counter": "{counter} フォロー",
   "account.follows.empty": "まだ誰もフォローしていません。",
   "account.follows_you": "フォローされています",
   "account.hide_reblogs": "@{name}さんからのブーストを非表示",
   "account.joined": "{date} に登録",
-  "account.last_status": "最後の活動",
   "account.link_verified_on": "このリンクの所有権は{date}に確認されました",
   "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。",
   "account.media": "メディア",
@@ -32,7 +32,6 @@
   "account.mute": "@{name}さんをミュート",
   "account.mute_notifications": "@{name}さんからの通知を受け取らない",
   "account.muted": "ミュート済み",
-  "account.never_active": "活動なし",
   "account.posts": "投稿",
   "account.posts_with_replies": "投稿と返信",
   "account.report": "@{name}さんを通報",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{counter} 投稿",
   "account.unblock": "@{name}さんのブロックを解除",
   "account.unblock_domain": "{domain}のブロックを解除",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "プロフィールから外す",
   "account.unfollow": "フォロー解除",
   "account.unmute": "@{name}さんのミュートを解除",
   "account.unmute_notifications": "@{name}さんからの通知を受け取るようにする",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "クリックしてメモを追加",
   "admin.dashboard.daily_retention": "サインアップ後の日ごとのユーザー継続率",
   "admin.dashboard.monthly_retention": "サインアップ後の月ごとのユーザー継続率",
@@ -171,7 +172,7 @@
   "empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
   "empty_column.direct": "ダイレクトメッセージはまだありません。ダイレクトメッセージをやりとりすると、ここに表示されます。",
   "empty_column.domain_blocks": "ブロックしているドメインはありません。",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "まだ何もありません。後で確認してください。",
   "empty_column.favourited_statuses": "まだ何もお気に入り登録していません。お気に入り登録するとここに表示されます。",
   "empty_column.favourites": "まだ誰もお気に入り登録していません。お気に入り登録されるとここに表示されます。",
   "empty_column.follow_recommendations": "おすすめを生成できませんでした。検索を使って知り合いを探したり、トレンドハッシュタグを見てみましょう。",
@@ -190,12 +191,12 @@
   "error.unexpected_crash.next_steps_addons": "それらを無効化してからリロードをお試しください。それでも解決しない場合、他のブラウザやアプリで Mastodon をお試しください。",
   "errors.unexpected_crash.copy_stacktrace": "スタックトレースをクリップボードにコピー",
   "errors.unexpected_crash.report_issue": "問題を報告",
-  "explore.search_results": "Search results",
+  "explore.search_results": "検索結果",
   "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.title": "エクスプローラー",
+  "explore.trending_links": "ニュース",
+  "explore.trending_statuses": "投稿",
+  "explore.trending_tags": "ハッシュタグ",
   "follow_recommendations.done": "完了",
   "follow_recommendations.heading": "投稿を見たい人をフォローしてください!ここにおすすめがあります。",
   "follow_recommendations.lead": "あなたがフォローしている人の投稿は、ホームフィードに時系列で表示されます。いつでも簡単に解除できるので、気軽にフォローしてみてください!",
@@ -297,6 +298,7 @@
   "navigation_bar.discover": "見つける",
   "navigation_bar.domain_blocks": "ブロックしたドメイン",
   "navigation_bar.edit_profile": "プロフィールを編集",
+  "navigation_bar.explore": "エクスプローラー",
   "navigation_bar.favourites": "お気に入り",
   "navigation_bar.filters": "フィルター設定",
   "navigation_bar.follow_requests": "フォローリクエスト",
@@ -312,7 +314,7 @@
   "navigation_bar.public_timeline": "連合タイムライン",
   "navigation_bar.misc": "その他",
   "navigation_bar.security": "セキュリティ",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} がサインアップしました",
   "notification.favourite": "{name}さんがあなたの投稿をお気に入りに登録しました",
   "notification.follow": "{name}さんにフォローされました",
   "notification.follow_request": "{name} さんがあなたにフォローリクエストしました",
@@ -392,43 +394,43 @@
   "relative_time.seconds": "{number}秒前",
   "relative_time.today": "今日",
   "reply_indicator.cancel": "キャンセル",
-  "report.block": "Block",
+  "report.block": "ブロック",
   "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
   "report.categories.other": "その他",
   "report.categories.spam": "スパム",
   "report.categories.violation": "サーバーのルールに違反",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.category.subtitle": "近いものを選択してください",
+  "report.category.title": "この{type}について教えてください",
+  "report.category.title_account": "プロフィール",
+  "report.category.title_status": "投稿",
+  "report.close": "完了",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "{target} に転送する",
   "report.forward_hint": "このアカウントは別のサーバーに所属しています。通報内容を匿名で転送しますか?",
-  "report.mute": "Mute",
+  "report.mute": "ミュート",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.next": "次へ",
   "report.placeholder": "追加コメント",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "興味がありません",
+  "report.reasons.dislike_description": "見たくない内容の場合",
+  "report.reasons.other": "その他",
+  "report.reasons.other_description": "当てはまる選択肢がない場合",
+  "report.reasons.spam": "これはスパムです",
+  "report.reasons.spam_description": "悪意のあるリンクや虚偽の情報、執拗な返信など",
+  "report.reasons.violation": "サーバーのルールに違反しています",
+  "report.reasons.violation_description": "ルールに違反しているのを見つけた場合",
+  "report.rules.subtitle": "当てはまるものをすべて選んでください:",
+  "report.rules.title": "どのルールに違反していますか?",
+  "report.statuses.subtitle": "当てはまるものをすべて選んでください:",
+  "report.statuses.title": "この通報を裏付けるような投稿はありますか?",
   "report.submit": "通報する",
   "report.target": "{target}さんを通報する",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
+  "report.thanks.take_action": "次のような方法はいかがでしょうか?",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.title": "見えないようにしたいですか?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.unfollow": "@{name}のフォローを解除",
+  "report.unfollow_explanation": "このアカウントをフォローしています。ホームフィードに彼らの投稿を表示しないようにするには、彼らのフォローを外してください。",
   "search.placeholder": "検索",
   "search_popout.search_format": "高度な検索フォーマット",
   "search_popout.tips.full_text": "表示名やユーザー名、ハッシュタグのほか、あなたの投稿やお気に入り、ブーストした投稿、返信に一致する単純なテキスト。",
@@ -437,7 +439,7 @@
   "search_popout.tips.text": "表示名やユーザー名、ハッシュタグに一致する単純なテキスト",
   "search_popout.tips.user": "ユーザー",
   "search_results.accounts": "人々",
-  "search_results.all": "All",
+  "search_results.all": "すべて",
   "search_results.hashtags": "ハッシュタグ",
   "search_results.nothing_found": "Could not find anything for these search terms",
   "search_results.statuses": "投稿",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 561770060..f6f3f1e10 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -18,12 +18,12 @@
   "account.followers": "მიმდევრები",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "მოგყვებათ",
   "account.hide_reblogs": "დაიმალოს ბუსტები @{name}-სგან",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "მედია",
@@ -32,7 +32,6 @@
   "account.mute": "გააჩუმე @{name}",
   "account.mute_notifications": "გააჩუმე შეტყობინებები @{name}-სგან",
   "account.muted": "გაჩუმებული",
-  "account.never_active": "Never",
   "account.posts": "ტუტები",
   "account.posts_with_replies": "ტუტები და პასუხები",
   "account.report": "დაარეპორტე @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "განბლოკე @{name}",
   "account.unblock_domain": "გამოაჩინე {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "არ გამოირჩეს პროფილზე",
   "account.unfollow": "ნუღარ მიჰყვები",
   "account.unmute": "ნუღარ აჩუმებ @{name}-ს",
   "account.unmute_notifications": "ნუღარ აჩუმებ შეტყობინებებს @{name}-სგან",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "აღმოაჩინე",
   "navigation_bar.domain_blocks": "დამალული დომენები",
   "navigation_bar.edit_profile": "შეცვალე პროფილი",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "ფავორიტები",
   "navigation_bar.filters": "გაჩუმებული სიტყვები",
   "navigation_bar.follow_requests": "დადევნების მოთხოვნები",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 0f0880100..d6fcc2c7b 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -18,12 +18,12 @@
   "account.followers": "Imeḍfaren",
   "account.followers.empty": "Ar tura, ulac yiwen i yeṭṭafaṛen amseqdac-agi.",
   "account.followers_counter": "{count, plural, one {{count} n umeḍfar} other {{count} n imeḍfaren}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} yeṭṭafaren} aḍfar {{counter} wayeḍ}}",
   "account.follows.empty": "Ar tura, amseqdac-agi ur yeṭṭafaṛ yiwen.",
   "account.follows_you": "Yeṭṭafaṛ-ik",
   "account.hide_reblogs": "Ffer ayen i ibeṭṭu @{name}",
   "account.joined": "Yerna-d {date}",
-  "account.last_status": "Armud aneggaru",
   "account.link_verified_on": "Taɣara n useɣwen-a tettwasenqed ass n {date}",
   "account.locked_info": "Amiḍan-agi uslig isekweṛ. D bab-is kan i izemren ad yeǧǧ, s ufus-is, win ara t-iḍefṛen.",
   "account.media": "Amidya",
@@ -32,7 +32,6 @@
   "account.mute": "Sgugem @{name}",
   "account.mute_notifications": "Sgugem tilɣa sγur @{name}",
   "account.muted": "Yettwasgugem",
-  "account.never_active": "Werǧin",
   "account.posts": "Tijewwaqin",
   "account.posts_with_replies": "Tijewwaqin akked tririyin",
   "account.report": "Cetki ɣef @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} ajewwaq} other {{counter} ijewwaqen}}",
   "account.unblock": "Serreḥ i @{name}",
   "account.unblock_domain": "Ssken-d {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ur ttwellih ara fell-as deg umaɣnu-inek",
   "account.unfollow": "Ur ṭṭafaṛ ara",
   "account.unmute": "Kkes asgugem ɣef @{name}",
   "account.unmute_notifications": "Serreḥ ilɣa sɣur @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Ulac iwenniten",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -187,11 +188,11 @@
   "errors.unexpected_crash.copy_stacktrace": "Nɣel stacktrace ɣef wafus",
   "errors.unexpected_crash.report_issue": "Mmel ugur",
   "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
+  "explore.suggested_follows": "I kečč·kem",
   "explore.title": "Explore",
   "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_statuses": "Tisuffaɣ",
+  "explore.trending_tags": "Ihacṭagen",
   "follow_recommendations.done": "Immed",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
   "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Ẓer",
   "navigation_bar.domain_blocks": "Tiɣula yeffren",
   "navigation_bar.edit_profile": "Ẓreg amaɣnu",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Ismenyifen",
   "navigation_bar.filters": "Awalen i yettwasgugmen",
   "navigation_bar.follow_requests": "Isuturen n teḍfeṛt",
@@ -394,13 +396,13 @@
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.category.title_account": "ameγnu",
+  "report.category.title_status": "tasuffeɣt",
+  "report.close": "Immed",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Bren-it ɣeṛ {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
-  "report.mute": "Mute",
+  "report.mute": "Sgugem",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
   "report.next": "Next",
   "report.placeholder": "Iwenniten-nniḍen",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 3bd56653c..28156f956 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -18,12 +18,12 @@
   "account.followers": "Оқырмандар",
   "account.followers.empty": "Әлі ешкім жазылмаған.",
   "account.followers_counter": "{count, plural, one {{counter} Оқырман} other {{counter} Оқырман}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Жазылым} other {{counter} Жазылым}}",
   "account.follows.empty": "Ешкімге жазылмапты.",
   "account.follows_you": "Сізге жазылыпты",
   "account.hide_reblogs": "@{name} атты қолданушының әрекеттерін жасыру",
   "account.joined": "Joined {date}",
-  "account.last_status": "Соңғы белсенділік",
   "account.link_verified_on": "Сілтеме меншігі расталған күн {date}",
   "account.locked_info": "Бұл қолданушы өзі туралы мәліметтерді жасырған. Тек жазылғандар ғана көре алады.",
   "account.media": "Медиа",
@@ -32,7 +32,6 @@
   "account.mute": "Үнсіз қылу @{name}",
   "account.mute_notifications": "@{name} туралы ескертпелерді жасыру",
   "account.muted": "Үнсіз",
-  "account.never_active": "Ешқашан",
   "account.posts": "Жазбалар",
   "account.posts_with_replies": "Жазбалар мен жауаптар",
   "account.report": "Шағымдану @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Пост} other {{counter} Пост}}",
   "account.unblock": "Бұғаттан шығару @{name}",
   "account.unblock_domain": "Бұғаттан шығару {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Профильде рекомендемеу",
   "account.unfollow": "Оқымау",
   "account.unmute": "@{name} ескертпелерін қосу",
   "account.unmute_notifications": "@{name} ескертпелерін көрсету",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Жазба қалдыру үшін бас",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "шарлау",
   "navigation_bar.domain_blocks": "Жабық домендер",
   "navigation_bar.edit_profile": "Профиль түзету",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Таңдаулылар",
   "navigation_bar.filters": "Үнсіз сөздер",
   "navigation_bar.follow_requests": "Жазылуға сұранғандар",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/kmr.json b/app/javascript/mastodon/locales/kmr.json
deleted file mode 100644
index 84c8978a4..000000000
--- a/app/javascript/mastodon/locales/kmr.json
+++ /dev/null
@@ -1,541 +0,0 @@
-{
-  "account.account_note_header": "Nîşe",
-  "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê",
-  "account.badges.bot": "Bot",
-  "account.badges.group": "Kom",
-  "account.block": "@{name} asteng bike",
-  "account.block_domain": "{domain} navpar asteng bike",
-  "account.blocked": "Astengkirî",
-  "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere",
-  "account.cancel_follow_request": "Daxwaza şopandinê rake",
-  "account.direct": "Peyamekê bişîne @{name}",
-  "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne",
-  "account.domain_blocked": "Navper hate astengkirin",
-  "account.edit_profile": "Profîl serrast bike",
-  "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne",
-  "account.endorse": "Taybetiyên li ser profîl",
-  "account.follow": "Bişopîne",
-  "account.followers": "Şopîner",
-  "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.",
-  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
-  "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}",
-  "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.",
-  "account.follows_you": "Te dişopîne",
-  "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre",
-  "account.joined": "Tevlîbû di {date} de",
-  "account.last_status": "Çalakiya dawî",
-  "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin",
-  "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.",
-  "account.media": "Medya",
-  "account.mention": "Qal @{name} bike",
-  "account.moved_to": "{name} hate livandin bo:",
-  "account.mute": "@{name} Bêdeng bike",
-  "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike",
-  "account.muted": "Bêdengkirî",
-  "account.never_active": "Tu car",
-  "account.posts": "Şandî",
-  "account.posts_with_replies": "Şandî û bersiv",
-  "account.report": "@{name} Ragihîne",
-  "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin",
-  "account.share": "Profîla @{name} parve bike",
-  "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike",
-  "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}",
-  "account.unblock": "Astengê li ser @{name} rake",
-  "account.unblock_domain": "Astengê li ser navperê {domain} rake",
-  "account.unendorse": "Li ser profîl nîşan neke",
-  "account.unfollow": "Neşopîne",
-  "account.unmute": "@{name} Bêdeng bike",
-  "account.unmute_notifications": "Agahdariyan ji @{name} bêdeng bike",
-  "account_note.placeholder": "Bitikîne bo nîşeyekê tevlî bikî",
-  "admin.dashboard.daily_retention": "Rêjeya ragirtina bikarhêner bi roj piştî tomarkirinê",
-  "admin.dashboard.monthly_retention": "Rêjeya ragirtina bikarhêner bi meh piştî tomarkirinê",
-  "admin.dashboard.retention.average": "Navîn",
-  "admin.dashboard.retention.cohort": "Meha tomarkirinê",
-  "admin.dashboard.retention.cohort_size": "Bikarhênerên nû",
-  "alert.rate_limited.message": "Jkx dîsa biceribîne piştî {retry_time, time, medium}.\n \n",
-  "alert.rate_limited.title": "Rêje sînorkirî ye",
-  "alert.unexpected.message": "Çewtiyeke bêhêvî çê bû.",
-  "alert.unexpected.title": "Wey li min!",
-  "announcement.announcement": "Daxuyanî",
-  "attachments_list.unprocessed": "(bêpêvajo)",
-  "autosuggest_hashtag.per_week": "Her hefte {count}",
-  "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike",
-  "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.",
-  "bundle_column_error.retry": "Dîsa biceribîne",
-  "bundle_column_error.title": "Çewtiya torê",
-  "bundle_modal_error.close": "Bigire",
-  "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.",
-  "bundle_modal_error.retry": "Dîsa bicerbîne",
-  "column.blocks": "Bikarhênerên astengkirî",
-  "column.bookmarks": "Şûnpel",
-  "column.community": "Demnameya herêmî",
-  "column.direct": "Peyamên taybet",
-  "column.directory": "Li profîlan bigere",
-  "column.domain_blocks": "Navperên astengkirî",
-  "column.favourites": "Bijarte",
-  "column.follow_requests": "Daxwazên şopandinê",
-  "column.home": "Serrûpel",
-  "column.lists": "Rêzok",
-  "column.mutes": "Bikarhênerên bêdengkirî",
-  "column.notifications": "Agahdarî",
-  "column.pins": "Şandiya derzîkirî",
-  "column.public": "Demnameyê federalîkirî",
-  "column_back_button.label": "Veger",
-  "column_header.hide_settings": "Sazkariyan veşêre",
-  "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê",
-  "column_header.moveRight_settings": "Stûnê bilivîne bo rastê",
-  "column_header.pin": "Bi derzî bike",
-  "column_header.show_settings": "Sazkariyan nîşan bide",
-  "column_header.unpin": "Bi derzî neke",
-  "column_subheading.settings": "Sazkarî",
-  "community.column_settings.local_only": "Tenê herêmî",
-  "community.column_settings.media_only": "Tenê media",
-  "community.column_settings.remote_only": "Tenê ji dûr ve",
-  "compose_form.direct_message_warning": "Ev şandî tenê ji bikarhênerên qalkirî re wê were şandin.",
-  "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe",
-  "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.",
-  "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.",
-  "compose_form.lock_disclaimer.lock": "girtî ye",
-  "compose_form.placeholder": "Çi di hişê te derbas dibe?",
-  "compose_form.poll.add_option": "Hilbijarekî tevlî bike",
-  "compose_form.poll.duration": "Dema rapirsî yê",
-  "compose_form.poll.option_placeholder": "{number} Hilbijêre",
-  "compose_form.poll.remove_option": "Vê hilbijarê rake",
-  "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar",
-  "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek",
-  "compose_form.publish": "Toot",
-  "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Guhertinan tomar bike",
-  "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}",
-  "compose_form.sensitive.marked": "{count, plural, one {Medya wekî hestiyar hate nîşan} other {Medya wekî hestiyar nîşan}}",
-  "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekî hestiyar nehatiye nîşan} other {Medya wekî hestiyar nehatiye nîşan}}",
-  "compose_form.spoiler.marked": "Hişyariya naverokê rake",
-  "compose_form.spoiler.unmarked": "Hişyariya naverokê tevlî bike",
-  "compose_form.spoiler_placeholder": "Li vir hişyariya xwe binivîse",
-  "confirmation_modal.cancel": "Dev jê berde",
-  "confirmations.block.block_and_report": "Asteng bike & ragihîne",
-  "confirmations.block.confirm": "Asteng bike",
-  "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?",
-  "confirmations.delete.confirm": "Jê bibe",
-  "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?",
-  "confirmations.delete_list.confirm": "Jê bibe",
-  "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?",
-  "confirmations.discard_edit_media.confirm": "Biavêje",
-  "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?",
-  "confirmations.domain_block.confirm": "Hemî navperê asteng bike",
-  "confirmations.domain_block.message": "Tu ji xwe bawerî, bi rastî tu dixwazî hemû {domain} asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin.",
-  "confirmations.logout.confirm": "Derkeve",
-  "confirmations.logout.message": "Ma tu dixwazî ku derkevî?",
-  "confirmations.mute.confirm": "Bêdeng bike",
-  "confirmations.mute.explanation": "Ev ê şandinên ji wan tê û şandinên ku behsa wan dike veşêre, lê hê jî maf dide ku ew şandinên te bibînin û te bişopînin.",
-  "confirmations.mute.message": "Bi rastî tu dixwazî {name} bêdeng bikî?",
-  "confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike",
-  "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijare û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.",
-  "confirmations.reply.confirm": "Bersivê bide",
-  "confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?",
-  "confirmations.unfollow.confirm": "Neşopîne",
-  "confirmations.unfollow.message": "Ma tu dixwazî ku dev ji şopa {name} berdî?",
-  "conversation.delete": "Axaftinê jê bibe",
-  "conversation.mark_as_read": "Wekî xwendî nîşan bide",
-  "conversation.open": "Axaftinê nîşan bide",
-  "conversation.with": "Bi {names} re",
-  "directory.federated": "Ji fediversên naskirî",
-  "directory.local": "Tenê ji {domain}",
-  "directory.new_arrivals": "Kesên ku nû hatine",
-  "directory.recently_active": "Di demên dawî de çalak",
-  "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.",
-  "embed.preview": "Wa ye wê wusa xuya bike:",
-  "emoji_button.activity": "Çalakî",
-  "emoji_button.custom": "Kesanekirî",
-  "emoji_button.flags": "Nîşankirî",
-  "emoji_button.food": "Xwarin û vexwarin",
-  "emoji_button.label": "Emoji têxe",
-  "emoji_button.nature": "Sirûştî",
-  "emoji_button.not_found": "Hestokên lihevhatî nehate dîtin",
-  "emoji_button.objects": "Tişt",
-  "emoji_button.people": "Mirov",
-  "emoji_button.recent": "Pir caran tê bikaranîn",
-  "emoji_button.search": "Bigere...",
-  "emoji_button.search_results": "Encamên lêgerînê",
-  "emoji_button.symbols": "Sembol",
-  "emoji_button.travel": "Geşt û şûn",
-  "empty_column.account_suspended": "Ajimêr hatiye rawestandin",
-  "empty_column.account_timeline": "Li vir şandî tune!",
-  "empty_column.account_unavailable": "Profîl nayê peydakirin",
-  "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.",
-  "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.",
-  "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!",
-  "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.",
-  "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.",
-  "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!",
-  "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.",
-  "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.",
-  "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.",
-  "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.",
-  "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.",
-  "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}",
-  "empty_column.home.suggestions": "Hinek pêşniyaran bibîne",
-  "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.",
-  "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.",
-  "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.",
-  "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.",
-  "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin",
-  "error.unexpected_crash.explanation": "Ji ber xeletîyeke di koda me da an jî ji ber mijara lihevhatina gerokan, ev rûpel rast nehat nîşandan.",
-  "error.unexpected_crash.explanation_addons": "Ev rûpel bi awayekî rast nehat nîşandan. Ev çewtî mimkûn e ji ber lêzêdekirina gerokan an jî amûrên wergera xweberî pêk tê.",
-  "error.unexpected_crash.next_steps": "Nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.",
-  "error.unexpected_crash.next_steps_addons": "Ne çalak kirin û nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.",
-  "errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire",
-  "errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne",
-  "explore.search_results": "Encamên lêgerînê",
-  "explore.suggested_follows": "Ji bo te",
-  "explore.title": "Vekole",
-  "explore.trending_links": "Nûçe",
-  "explore.trending_statuses": "Şandî",
-  "explore.trending_tags": "Hashtag",
-  "follow_recommendations.done": "Qediya",
-  "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.",
-  "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!",
-  "follow_request.authorize": "Mafê bide",
-  "follow_request.reject": "Nepejirîne",
-  "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.",
-  "generic.saved": "Tomarkirî",
-  "getting_started.developers": "Pêşdebir",
-  "getting_started.directory": "Rêgeha profîlê",
-  "getting_started.documentation": "Pelbend",
-  "getting_started.heading": "Destpêkirin",
-  "getting_started.invite": "Mirovan Vexwîne",
-  "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.",
-  "getting_started.security": "Sazkariyên ajimêr",
-  "getting_started.terms": "Mercên karûberan",
-  "hashtag.column_header.tag_mode.all": "û {additional}",
-  "hashtag.column_header.tag_mode.any": "an {additional}",
-  "hashtag.column_header.tag_mode.none": "bêyî {additional}",
-  "hashtag.column_settings.select.no_options_message": "Ti pêşniyar nehatin dîtin",
-  "hashtag.column_settings.select.placeholder": "Têkeve hashtagê…",
-  "hashtag.column_settings.tag_mode.all": "Van hemûyan",
-  "hashtag.column_settings.tag_mode.any": "Yek ji van",
-  "hashtag.column_settings.tag_mode.none": "Ne yek ji van",
-  "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike",
-  "home.column_settings.basic": "Bingehîn",
-  "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike",
-  "home.column_settings.show_replies": "Bersivan nîşan bide",
-  "home.hide_announcements": "Reklaman veşêre",
-  "home.show_announcements": "Reklaman nîşan bide",
-  "intervals.full.days": "{number, plural, one {# roj} other {# roj}}",
-  "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n",
-  "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}",
-  "keyboard_shortcuts.back": "Vegere paşê",
-  "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke",
-  "keyboard_shortcuts.boost": "Şandiyê bilind bike",
-  "keyboard_shortcuts.column": "Stûna balkişandinê",
-  "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea",
-  "keyboard_shortcuts.description": "Danasîn",
-  "keyboard_shortcuts.direct": "Ji stûnê peyamên rasterast veke",
-  "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr",
-  "keyboard_shortcuts.enter": "Şandiyê veke",
-  "keyboard_shortcuts.favourite": "Şandiya bijarte",
-  "keyboard_shortcuts.favourites": "Rêzokên bijarte veke",
-  "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke",
-  "keyboard_shortcuts.heading": "Kurterêyên klavyeyê",
-  "keyboard_shortcuts.home": "Demnameyê veke",
-  "keyboard_shortcuts.hotkey": "Bişkoka kurterê",
-  "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike",
-  "keyboard_shortcuts.local": "Demnameya herêmî veke",
-  "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike",
-  "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke",
-  "keyboard_shortcuts.my_profile": "Profîla xwe veke",
-  "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke",
-  "keyboard_shortcuts.open_media": "Medya veke",
-  "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke",
-  "keyboard_shortcuts.profile": "Profîla nivîskaran veke",
-  "keyboard_shortcuts.reply": "Bersivê bide şandiyê",
-  "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke",
-  "keyboard_shortcuts.search": "Bal bide şivika lêgerînê",
-  "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre",
-  "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke",
-  "keyboard_shortcuts.toggle_hidden": "Nivîsa paş hişyariya naverokê nîşan bide/veşêre",
-  "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre",
-  "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike",
-  "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê",
-  "keyboard_shortcuts.up": "Di rêzokê de rake jor",
-  "lightbox.close": "Bigire",
-  "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne",
-  "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike",
-  "lightbox.next": "Pêş",
-  "lightbox.previous": "Paş",
-  "lists.account.add": "Tevlî rêzokê bike",
-  "lists.account.remove": "Ji rêzokê rake",
-  "lists.delete": "Rêzokê jê bibe",
-  "lists.edit": "Rêzokê serrast bike",
-  "lists.edit.submit": "Sernavê biguherîne",
-  "lists.new.create": "Rêzokê tevlî bike",
-  "lists.new.title_placeholder": "Sernavê rêzoka nû",
-  "lists.replies_policy.followed": "Bikarhênereke şopandî",
-  "lists.replies_policy.list": "Endamên rêzokê",
-  "lists.replies_policy.none": "Ne yek",
-  "lists.replies_policy.title": "Bersivan nîşan bide:",
-  "lists.search": "Di navbera kesên ku te dişopînin bigere",
-  "lists.subheading": "Rêzokên te",
-  "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}",
-  "loading_indicator.label": "Tê barkirin...",
-  "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}",
-  "missing_indicator.label": "Nehate dîtin",
-  "missing_indicator.sublabel": "Ev çavkanî nehat dîtin",
-  "mute_modal.duration": "Dem",
-  "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?",
-  "mute_modal.indefinite": "Nediyar",
-  "navigation_bar.apps": "Sepana mobîl",
-  "navigation_bar.blocks": "Bikarhênerên astengkirî",
-  "navigation_bar.bookmarks": "Şûnpel",
-  "navigation_bar.community_timeline": "Demnameya herêmî",
-  "navigation_bar.compose": "Şandiyeke nû binivsîne",
-  "navigation_bar.direct": "Peyamên rasterast",
-  "navigation_bar.discover": "Vekolê",
-  "navigation_bar.domain_blocks": "Navparên astengkirî",
-  "navigation_bar.edit_profile": "Profîl serrast bike",
-  "navigation_bar.favourites": "Bijarte",
-  "navigation_bar.filters": "Peyvên bêdengkirî",
-  "navigation_bar.follow_requests": "Daxwazên şopandinê",
-  "navigation_bar.follows_and_followers": "Yên tê şopandin û şopîner",
-  "navigation_bar.info": "Derbarê vî rajekarî",
-  "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê",
-  "navigation_bar.lists": "Rêzok",
-  "navigation_bar.logout": "Derkeve",
-  "navigation_bar.mutes": "Bikarhênerên bêdengkirî",
-  "navigation_bar.personal": "Kesanî",
-  "navigation_bar.pins": "Şandiya derzîkirî",
-  "navigation_bar.preferences": "Sazkarî",
-  "navigation_bar.public_timeline": "Demnameyê federalîkirî",
-  "navigation_bar.security": "Ewlehî",
-  "notification.admin.sign_up": "{name} tomar bû",
-  "notification.favourite": "{name} şandiya te hez kir",
-  "notification.follow": "{name} te şopand",
-  "notification.follow_request": "{name} dixwazê te bişopîne",
-  "notification.mention": "{name} qale te kir",
-  "notification.own_poll": "Rapirsîya te qediya",
-  "notification.poll": "Rapirsiyeke ku te deng daye qediya",
-  "notification.reblog": "{name} şandiya te bilind kir",
-  "notification.status": "{name} niha şand",
-  "notification.update": "{name} şandiyek serrast kir",
-  "notifications.clear": "Agahdariyan pak bike",
-  "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?",
-  "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:",
-  "notifications.column_settings.alert": "Agahdariyên sermaseyê",
-  "notifications.column_settings.favourite": "Bijarte:",
-  "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide",
-  "notifications.column_settings.filter_bar.category": "Şivika parzûna bilêz",
-  "notifications.column_settings.filter_bar.show_bar": "Darika parzûnê nîşan bide",
-  "notifications.column_settings.follow": "Şopînerên nû:",
-  "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:",
-  "notifications.column_settings.mention": "Qalkirin:",
-  "notifications.column_settings.poll": "Encamên rapirsiyê:",
-  "notifications.column_settings.push": "Agahdarîyên yekser",
-  "notifications.column_settings.reblog": "Bilindkirî:",
-  "notifications.column_settings.show": "Di nav stûnê de nîşan bike",
-  "notifications.column_settings.sound": "Deng lêxe",
-  "notifications.column_settings.status": "Şandiyên nû:",
-  "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî",
-  "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike",
-  "notifications.column_settings.update": "Serrastkirin:",
-  "notifications.filter.all": "Hemû",
-  "notifications.filter.boosts": "Bilindkirî",
-  "notifications.filter.favourites": "Bijarte",
-  "notifications.filter.follows": "Şopîner",
-  "notifications.filter.mentions": "Qalkirin",
-  "notifications.filter.polls": "Encamên rapirsiyê",
-  "notifications.filter.statuses": "Ji kesên tu dişopînî re rojanekirin",
-  "notifications.grant_permission": "Destûrê bide.",
-  "notifications.group": "{count} agahdarî",
-  "notifications.mark_as_read": "Hemî agahdarîya wek xwendî nîşan bike",
-  "notifications.permission_denied": "Agahdarîyên sermaseyê naxebite ji ber ku berê de daxwazî ya destûr dayîna gerokê hati bû red kirin",
-  "notifications.permission_denied_alert": "Agahdarîyên sermaseyê nay çalak kirin, ji ber ku destûr kirina gerokê pêşî de hati bû red kirin",
-  "notifications.permission_required": "Agahdarîyên sermaseyê naxebite çunkî mafê pêwîst dike nehatiye dayîn.",
-  "notifications_permission_banner.enable": "Agahdarîyên sermaseyê çalak bike",
-  "notifications_permission_banner.how_to_control": "Da ku agahdariyên mastodon bistînî gava ne vekirî be. Agahdariyên sermaseyê çalak bike\n Tu dikarî agahdariyên sermaseyê bi rê ve bibî ku bi hemû cureyên çalakiyên ên ku agahdariyan rû didin ku bi riya tikandînê li ser bişkoka {icon} çalak dibe.",
-  "notifications_permission_banner.title": "Tu tiştî bîr neke",
-  "picture_in_picture.restore": "Vegerîne paş",
-  "poll.closed": "Girtî",
-  "poll.refresh": "Nû bike",
-  "poll.total_people": "{count, plural, one {# kes} other {# kes}}",
-  "poll.total_votes": "{count, plural, one {# deng} other {# deng}}",
-  "poll.vote": "Deng bide",
-  "poll.voted": "Te dengê xwe da vê bersivê",
-  "poll.votes": "{votes, plural, one {# deng} other {# deng}}",
-  "poll_button.add_poll": "Rapirsîyek zêde bike",
-  "poll_button.remove_poll": "Rapirsî yê rake",
-  "privacy.change": "Nepênîtiya şandiyan biguherîne",
-  "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin",
-  "privacy.direct.short": "Taybet",
-  "privacy.private.long": "Tenê bo şopîneran xuyabar e",
-  "privacy.private.short": "Tenê şopîneran",
-  "privacy.public.long": "Ji bo herkesî li berçav e, di demnameyên gelemperî de dê xûyakirin",
-  "privacy.public.short": "Gelemperî",
-  "privacy.unlisted.long": "Ji herkesî ra tê xûya, lê demnameyê gelemperî ra nay xûyakirin",
-  "privacy.unlisted.short": "Nerêzok",
-  "refresh": "Nû bike",
-  "regeneration_indicator.label": "Tê barkirin…",
-  "regeneration_indicator.sublabel": "Mala te da tê amedekirin!",
-  "relative_time.days": "{number}r",
-  "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê",
-  "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê",
-  "relative_time.full.just_now": "hema niha",
-  "relative_time.full.minutes": "{number, plural, one {# xulek} other {# xulek}} berê",
-  "relative_time.full.seconds": "{number, plural, one {# çirke} other {# çirke}} xulek",
-  "relative_time.hours": "{number}d",
-  "relative_time.just_now": "niha",
-  "relative_time.minutes": "{number}x",
-  "relative_time.seconds": "{number}ç",
-  "relative_time.today": "îro",
-  "reply_indicator.cancel": "Dev jê berde",
-  "report.block": "Asteng bike",
-  "report.block_explanation": "Tu yê şandiyên wan nebînî. Ew ê nikaribin şandiyên te bibînin an jî te bişopînin. Ew ê bizanibin ku ew hatine astengkirin.",
-  "report.categories.other": "Yên din",
-  "report.categories.spam": "Nexwestî (Spam)",
-  "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike",
-  "report.category.subtitle": "Baştirîn lihevhatin hilbijêre",
-  "report.category.title": "Ji me re bêje ka çi diqewime bi vê {type} re",
-  "report.category.title_account": "profîl",
-  "report.category.title_status": "şandî",
-  "report.close": "Qediya",
-  "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?",
-  "report.forward": "Biçe bo {target}",
-  "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?",
-  "report.mute": "Bêdeng bike",
-  "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.",
-  "report.next": "Pêş",
-  "report.placeholder": "Şiroveyên zêde",
-  "report.reasons.dislike": "Ez jê hez nakim",
-  "report.reasons.dislike_description": "Ew ne tiştek e ku tu dixwazî bibînî",
-  "report.reasons.other": "Tiştekî din e",
-  "report.reasons.other_description": "Pirsgirêk di kategoriyên din de cih nagire",
-  "report.reasons.spam": "Ew spam e",
-  "report.reasons.spam_description": "Girêdanên xerab, tevlêbûna sexte, an jî bersivên dubarekirî",
-  "report.reasons.violation": "Ew rêzikên rajekar binpê dike",
-  "report.reasons.violation_description": "Tu dizanî ku ew rêzikên taybetiyê binpê dike",
-  "report.rules.subtitle": "Hemûyên ku têne sepandin hibijêre",
-  "report.rules.title": "Kîjan rêzik têne binpêkirin?",
-  "report.statuses.subtitle": "Hemûyên ku têne sepandin hibijêre",
-  "report.statuses.title": "Tu şandiyên ku vê ragihandinê piştgirî dikin hene?",
-  "report.submit": "Bişîne",
-  "report.target": "Ragihandin {target}",
-  "report.thanks.take_action": "Li vir vebijêrkên te hene ji bo kontrolkirina tiştê ku tu li se Mastodon dibînî:",
-  "report.thanks.take_action_actionable": "Dema ku em vê yekê dinirxînin, tu dikarî li dijî @{name} tedbîran bigirî:",
-  "report.thanks.title": "Tu naxwazî vê bibînî?",
-  "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.",
-  "report.unfollow": "@{name} neşopîne",
-  "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.",
-  "search.placeholder": "Bigere",
-  "search_popout.search_format": "Dirûva lêgerîna pêşketî",
-  "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.",
-  "search_popout.tips.hashtag": "hashtag",
-  "search_popout.tips.status": "şandî",
-  "search_popout.tips.text": "Nivîsên hêsan, navên xûya ên ku li hev hatî, bikarhêner û hashtagan vedigerîne",
-  "search_popout.tips.user": "bikarhêner",
-  "search_results.accounts": "Mirov",
-  "search_results.all": "Hemû",
-  "search_results.hashtags": "Hashtag",
-  "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin",
-  "search_results.statuses": "Şandî",
-  "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.",
-  "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}",
-  "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke",
-  "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke",
-  "status.block": "@{name} asteng bike",
-  "status.bookmark": "Şûnpel",
-  "status.cancel_reblog_private": "Bilind neke",
-  "status.cannot_reblog": "Ev şandî nayê bilindkirin",
-  "status.copy": "Girêdanê jê bigire bo weşankirinê",
-  "status.delete": "Jê bibe",
-  "status.detailed_status": "Dîtina axaftina berfireh",
-  "status.direct": "Peyama rasterast @{name}",
-  "status.edit": "Serrast bike",
-  "status.edited": "Di {date} de hate serrastkirin",
-  "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin",
-  "status.embed": "Hedimandî",
-  "status.favourite": "Bijarte",
-  "status.filtered": "Parzûnkirî",
-  "status.history.created": "{name} {date} afirand",
-  "status.history.edited": "{name} {date} serrast kir",
-  "status.load_more": "Bêtir bar bike",
-  "status.media_hidden": "Medya veşartî ye",
-  "status.mention": "Qal @{name} bike",
-  "status.more": "Bêtir",
-  "status.mute": "@{name} Bêdeng bike",
-  "status.mute_conversation": "Axaftinê bêdeng bike",
-  "status.open": "Vê şandiyê berferh bike",
-  "status.pin": "Li ser profîlê derzî bike",
-  "status.pinned": "Şandiya derzîkirî",
-  "status.read_more": "Bêtir bixwîne",
-  "status.reblog": "Bilind bike",
-  "status.reblog_private": "Bi dîtina resen bilind bike",
-  "status.reblogged_by": "{name} bilind kir",
-  "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.",
-  "status.redraft": "Jê bibe & ji nû ve reşnivîs bike",
-  "status.remove_bookmark": "Şûnpêlê jê rake",
-  "status.reply": "Bersivê bide",
-  "status.replyAll": "Mijarê bibersivîne",
-  "status.report": "{name} gilî bike",
-  "status.sensitive_warning": "Naveroka hestiyarî",
-  "status.share": "Parve bike",
-  "status.show_less": "Kêmtir nîşan bide",
-  "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide",
-  "status.show_more": "Hêj zehftir nîşan bide",
-  "status.show_more_all": "Bêtir nîşan bide bo hemûyan",
-  "status.show_thread": "Mijarê nîşan bide",
-  "status.uncached_media_warning": "Tune ye",
-  "status.unmute_conversation": "Axaftinê bêdeng neke",
-  "status.unpin": "Şandiya derzîkirî ji profîlê rake",
-  "suggestions.dismiss": "Pêşniyarê paşguh bike",
-  "suggestions.header": "Dibe ku bala te bikşîne…",
-  "tabs_bar.federated_timeline": "Giştî",
-  "tabs_bar.home": "Serrûpel",
-  "tabs_bar.local_timeline": "Herêmî",
-  "tabs_bar.notifications": "Agahdarî",
-  "tabs_bar.search": "Bigere",
-  "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye",
-  "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye",
-  "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye",
-  "time_remaining.moments": "Demên mayî",
-  "time_remaining.seconds": "{number, plural, one {# çirke} other {# çirke}} maye",
-  "timeline_hint.remote_resource_not_displayed": "{resource} Ji rajekerên din nayê dîtin.",
-  "timeline_hint.resources.followers": "Şopîner",
-  "timeline_hint.resources.follows": "Şopîner",
-  "timeline_hint.resources.statuses": "Şandiyên kevn",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin",
-  "trends.trending_now": "Rojev",
-  "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.",
-  "units.short.billion": "{count}B",
-  "units.short.million": "{count}M",
-  "units.short.thousand": "{count}H",
-  "upload_area.title": "Ji bo barkirinê kaş bike û deyne",
-  "upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike",
-  "upload_error.limit": "Sînora barkirina pelan derbas bû.",
-  "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.",
-  "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike",
-  "upload_form.description": "Ji bona astengdarên dîtinê re vebêje",
-  "upload_form.edit": "Serrast bike",
-  "upload_form.thumbnail": "Wêneyê biçûk biguherîne",
-  "upload_form.undo": "Jê bibe",
-  "upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike",
-  "upload_modal.analyzing_picture": "Wêne tê analîzkirin…",
-  "upload_modal.apply": "Bisepîne",
-  "upload_modal.applying": "Tê sepandin…",
-  "upload_modal.choose_image": "Wêneyê hilbijêre",
-  "upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide",
-  "upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be",
-  "upload_modal.edit_media": "Medyayê sererast bike",
-  "upload_modal.hint": "Ji bo hilbijartina xala navendê her tim dîmenê piçûk de pêşdîtina çerxê bitikîne an jî kaş bike.",
-  "upload_modal.preparing_ocr": "OCR dihê amadekirin…",
-  "upload_modal.preview_label": "Pêşdîtin ({ratio})",
-  "upload_progress.label": "Tê barkirin...",
-  "video.close": "Vîdyoyê bigire",
-  "video.download": "Pelê daxe",
-  "video.exit_fullscreen": "Ji dîmendera tijî derkeve",
-  "video.expand": "Vîdyoyê berferh bike",
-  "video.fullscreen": "Dimendera tijî",
-  "video.hide": "Vîdyo veşêre",
-  "video.mute": "Dengê qut bike",
-  "video.pause": "Rawestîne",
-  "video.play": "Vêxe",
-  "video.unmute": "Dengê qut neke"
-}
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 9da0f8c57..450944dca 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -18,12 +18,12 @@
   "account.followers": "ಹಿಂಬಾಲಕರು",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "ಟೂಟ್‌ಗಳು",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 767fd8d46..454b3977a 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -18,12 +18,12 @@
   "account.followers": "팔로워",
   "account.followers.empty": "아직 아무도 이 유저를 팔로우하고 있지 않습니다.",
   "account.followers_counter": "{counter} 팔로워",
+  "account.following": "팔로잉",
   "account.following_counter": "{counter} 팔로잉",
   "account.follows.empty": "이 유저는 아직 아무도 팔로우하고 있지 않습니다.",
   "account.follows_you": "날 팔로우합니다",
   "account.hide_reblogs": "@{name}의 부스트를 숨기기",
   "account.joined": "{date}에 가입함",
-  "account.last_status": "마지막 활동",
   "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨",
   "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.",
   "account.media": "미디어",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} 뮤트",
   "account.mute_notifications": "@{name}의 알림을 뮤트",
   "account.muted": "뮤트 됨",
-  "account.never_active": "없음",
   "account.posts": "게시물",
   "account.posts_with_replies": "게시물과 답장",
   "account.report": "@{name} 신고",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{counter} 게시물",
   "account.unblock": "차단 해제",
   "account.unblock_domain": "도메인 {domain} 차단 해제",
+  "account.unblock_short": "차단 해제",
   "account.unendorse": "프로필에 추천하지 않기",
   "account.unfollow": "팔로우 해제",
   "account.unmute": "@{name} 뮤트 해제",
   "account.unmute_notifications": "@{name}의 알림 뮤트 해제",
+  "account.unmute_short": "뮤트 해제",
   "account_note.placeholder": "클릭해서 노트 추가",
   "admin.dashboard.daily_retention": "가입 후 일별 사용자 유지율",
   "admin.dashboard.monthly_retention": "가입 후 월별 사용자 유지율",
@@ -120,7 +121,7 @@
   "confirmations.delete.message": "정말로 이 게시물을 삭제하시겠습니까?",
   "confirmations.delete_list.confirm": "삭제",
   "confirmations.delete_list.message": "정말로 이 리스트를 영구적으로 삭제하시겠습니까?",
-  "confirmations.discard_edit_media.confirm": "취소",
+  "confirmations.discard_edit_media.confirm": "저장 안함",
   "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?",
   "confirmations.domain_block.confirm": "도메인 전체를 차단",
   "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 컨텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.",
@@ -133,8 +134,8 @@
   "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 포스트에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.",
   "confirmations.reply.confirm": "답글",
   "confirmations.reply.message": "답글을 달기 위해 현재 작성 중인 메시지가 덮어 씌워집니다. 진행하시겠습니까?",
-  "confirmations.unfollow.confirm": "언팔로우",
-  "confirmations.unfollow.message": "정말로 {name}를 언팔로우하시겠습니까?",
+  "confirmations.unfollow.confirm": "팔로우 해제",
+  "confirmations.unfollow.message": "정말로 {name} 님을 팔로우 해제하시겠습니까?",
   "conversation.delete": "대화 삭제",
   "conversation.mark_as_read": "읽은 상태로 표시",
   "conversation.open": "대화 보기",
@@ -167,7 +168,7 @@
   "empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",
   "empty_column.direct": "아직 다이렉트 메시지가 없습니다. 다이렉트 메시지를 보내거나 받은 경우, 여기에 표시 됩니다.",
   "empty_column.domain_blocks": "아직 차단한 도메인이 없습니다.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "아직 유행하는 것이 없습니다. 나중에 다시 확인하세요!",
   "empty_column.favourited_statuses": "아직 즐겨찾기 한 게시물이 없습니다. 게시물을 즐겨찾기 하면 여기에 나타납니다.",
   "empty_column.favourites": "아직 아무도 이 게시물을 즐겨찾기 하지 않았습니다. 누군가 즐겨찾기를 하면 여기에 나타납니다.",
   "empty_column.follow_recommendations": "당신을 위한 제안이 생성될 수 없는 것 같습니다. 알 수도 있는 사람을 검색하거나 유행하는 해시태그를 둘러볼 수 있습니다.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "그것들을 끄고 페이지를 새로고침 해보세요. 그래도 해결되지 않는 경우, 다른 브라우저나 네이티브 앱으로도 마스토돈을 이용하실 수 있습니다.",
   "errors.unexpected_crash.copy_stacktrace": "에러 내용을 클립보드에 복사",
   "errors.unexpected_crash.report_issue": "문제 신고",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "검색 결과",
+  "explore.suggested_follows": "당신을 위한 추천",
+  "explore.title": "둘러보기",
+  "explore.trending_links": "소식",
+  "explore.trending_statuses": "게시물",
+  "explore.trending_tags": "해시태그",
   "follow_recommendations.done": "완료",
   "follow_recommendations.heading": "게시물을 받아 볼 사람들을 팔로우 하세요! 여기 몇몇의 추천이 있습니다.",
   "follow_recommendations.lead": "당신이 팔로우 하는 사람들의 게시물이 시간순으로 정렬되어 당신의 홈 피드에 표시될 것입니다. 실수를 두려워 하지 마세요, 언제든지 쉽게 팔로우 취소를 할 수 있습니다!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "발견하기",
   "navigation_bar.domain_blocks": "차단한 도메인",
   "navigation_bar.edit_profile": "프로필 편집",
+  "navigation_bar.explore": "탐색하기",
   "navigation_bar.favourites": "즐겨찾기",
   "navigation_bar.filters": "뮤트한 단어",
   "navigation_bar.follow_requests": "팔로우 요청",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "사용자 설정",
   "navigation_bar.public_timeline": "연합 타임라인",
   "navigation_bar.security": "보안",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} 님이 가입했습니다",
   "notification.favourite": "{name} 님이 즐겨찾기 했습니다",
   "notification.follow": "{name} 님이 나를 팔로우 했습니다",
   "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다",
@@ -319,7 +321,7 @@
   "notification.update": "{name} 님이 게시물을 수정했습니다",
   "notifications.clear": "알림 지우기",
   "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "새로운 가입:",
   "notifications.column_settings.alert": "데스크탑 알림",
   "notifications.column_settings.favourite": "즐겨찾기:",
   "notifications.column_settings.filter_bar.advanced": "카테고리의 모든 종류를 표시",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}초 전",
   "relative_time.today": "오늘",
   "reply_indicator.cancel": "취소",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "차단",
+  "report.block_explanation": "당신은 그의 게시물을 보지 않게 됩니다. 그는 당신의 게시물을 보거나 팔로우 할 수 없습니다. 그가 차단되었다는 사실을 알 수 있습니다.",
   "report.categories.other": "기타",
   "report.categories.spam": "스팸",
   "report.categories.violation": "컨텐츠가 한 개 이상의 서버 규칙을 위반합니다",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "가장 알맞은 것을 선택하세요",
+  "report.category.title": "이 {type}에 무슨 문제가 있는지 알려주세요",
+  "report.category.title_account": "프로필",
+  "report.category.title_status": "게시물",
+  "report.close": "완료",
+  "report.comment.title": "우리가 더 알아야 할 내용이 있나요?",
   "report.forward": "{target}에 포워드 됨",
   "report.forward_hint": "이 계정은 다른 서버에 있습니다. 익명화 된 사본을 해당 서버에도 전송할까요?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "침묵",
+  "report.mute_explanation": "당신은 그의 게시물을 보지 않게 됩니다. 그는 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 뮤트 되었는지 알지 못합니다.",
+  "report.next": "다음",
   "report.placeholder": "코멘트",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "마음에 안듭니다",
+  "report.reasons.dislike_description": "내가 보기 싫은 종류에 속합니다",
+  "report.reasons.other": "기타",
+  "report.reasons.other_description": "이슈가 다른 분류에 속하지 않습니다",
+  "report.reasons.spam": "스팸입니다",
+  "report.reasons.spam_description": "악성 링크, 반응 스팸, 또는 반복적인 답글",
+  "report.reasons.violation": "서버 규칙을 위반합니다",
+  "report.reasons.violation_description": "특정 규칙을 위반합니다",
+  "report.rules.subtitle": "해당하는 사항을 모두 선택하세요",
+  "report.rules.title": "어떤 규칙을 위반했나요?",
+  "report.statuses.subtitle": "해당하는 사항을 모두 선택하세요",
+  "report.statuses.title": "이 신고에 대해서 더 참고해야 할 게시물이 있나요?",
   "report.submit": "신고하기",
   "report.target": "{target} 신고하기",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "마스토돈에서 나에게 보이는 것을 조절하기 위한 몇 가지 선택사항들이 존재합니다:",
+  "report.thanks.take_action_actionable": "서버의 중재자들이 이것을 심사하는 동안, 당신은 @{name}에 대한 행동을 취할 수 있습니다:",
+  "report.thanks.title": "이런 것을 보지 않길 원하나요?",
+  "report.thanks.title_actionable": "신고해주셔서 감사합니다, 중재자분들이 확인할 예정입니다.",
+  "report.unfollow": "@{name}을 팔로우 해제",
+  "report.unfollow_explanation": "당신을 이 계정을 팔로우 하고 있습니다. 홈 피드에서 게시물을 보지 않으려면, 팔로우를 해제하세요.",
   "search.placeholder": "검색",
   "search_popout.search_format": "고급 검색 방법",
   "search_popout.tips.full_text": "단순한 텍스트 검색은 당신이 작성했거나, 관심글로 지정했거나, 부스트했거나, 멘션을 받은 게시글, 그리고 유저네임, 디스플레이네임, 해시태그를 반환합니다.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "단순한 텍스트 검색은 관계된 프로필 이름, 유저 이름 그리고 해시태그를 표시합니다",
   "search_popout.tips.user": "유저",
   "search_results.accounts": "사람",
-  "search_results.all": "All",
+  "search_results.all": "전부",
   "search_results.hashtags": "해시태그",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "검색어에 대한 결과를 찾을 수 없습니다",
   "search_results.statuses": "게시물",
   "search_results.statuses_fts_disabled": "이 마스토돈 서버에선 게시물의 내용을 통한 검색이 활성화 되어 있지 않습니다.",
   "search_results.total": "{count, number}건의 결과",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index a71702171..0298c51ec 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -1,541 +1,543 @@
 {
-  "account.account_note_header": "تێبینی    ",
-  "account.add_or_remove_from_list": "زیادکردن یان سڕینەوە لە پێرستەکان",
-  "account.badges.bot": "بوت",
-  "account.badges.group": "گرووپ",
-  "account.block": "بلۆکی @{name}",
-  "account.block_domain": "بلۆکی هەموو شتێک لە {domain}",
-  "account.blocked": "بلۆککرا",
-  "account.browse_more_on_origin_server": "گەڕانی فرەتر لە سەر پرۆفایلی سەرەکی",
-  "account.cancel_follow_request": "بەتاڵکردنی داوای شوێنکەوتن",
-  "account.direct": "پەیامی تایبەت بە @{name}",
-  "account.disable_notifications": "ئاگانامە مەنێرە بۆم کاتێک @{name} پۆست دەکرێت",
-  "account.domain_blocked": "دۆمەین قەپاتکرا",
-  "account.edit_profile": "دەستکاری پرۆفایل",
-  "account.enable_notifications": "ئاگادارم بکەوە کاتێک @{name} بابەتەکان",
-  "account.endorse": "ناساندن لە پرۆفایل",
-  "account.follow": "شوێنکەوتن",
-  "account.followers": "شوێنکەوتووان",
-  "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە",
-  "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}",
-  "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
-  "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.",
-  "account.follows_you": "شوێنکەوتووەکانت",
-  "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}",
-  "account.joined": "Joined {date}",
-  "account.last_status": "دوایین چالاکی",
-  "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە",
-  "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.",
-  "account.media": "میدیا",
-  "account.mention": "ئاماژە @{name}",
-  "account.moved_to": "{name} گواسترایەوە بۆ:",
-  "account.mute": "بێدەنگکردن @{name}",
-  "account.mute_notifications": "هۆشیارکەرەوەکان لاببە لە @{name}",
-  "account.muted": "بێ دەنگ",
-  "account.never_active": "هەرگیز",
-  "account.posts": "توتس",
-  "account.posts_with_replies": "توتس و وەڵامەکان",
-  "account.report": "گوزارشت @{name}",
-  "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن",
-  "account.share": "پرۆفایلی @{name} هاوبەش بکە",
-  "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
-  "account.unblock": "@{name} لاببە",
-  "account.unblock_domain": "کردنەوەی دۆمەینی {domain}",
-  "account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە",
-  "account.unfollow": "بەدوادانەچو",
-  "account.unmute": "بێدەنگکردنی @{name}",
-  "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}",
-  "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
-  "admin.dashboard.retention.average": "Average",
-  "admin.dashboard.retention.cohort": "Sign-up month",
-  "admin.dashboard.retention.cohort_size": "New users",
-  "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.",
-  "alert.rate_limited.title": "ڕێژەی سنووردار",
-  "alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.",
-  "alert.unexpected.title": "تەححح!",
-  "announcement.announcement": "بانگەواز",
-  "attachments_list.unprocessed": "(unprocessed)",
-  "autosuggest_hashtag.per_week": "{count} هەرهەفتە",
-  "boost_modal.combo": "دەتوانیت دەست بنێی بە سەر {combo} بۆ بازدان لە جاری داهاتوو",
-  "bundle_column_error.body": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.",
-  "bundle_column_error.retry": "دووبارە هەوڵبدە",
-  "bundle_column_error.title": "هەڵيی تۆڕ",
-  "bundle_modal_error.close": "داخستن",
-  "bundle_modal_error.message": "هەڵەیەک ڕوویدا لەکاتی بارکردنی ئەم پێکهاتەیە.",
-  "bundle_modal_error.retry": "دووبارە تاقی بکەوە",
-  "column.blocks": "بەکارهێنەرە بلۆککراوەکان",
-  "column.bookmarks": "نیشانەکان",
-  "column.community": "هێڵی کاتی ناوخۆیی",
-  "column.direct": "نامە ڕاستەوخۆکان",
-  "column.directory": "گەڕان لە پرۆفایلەکان",
-  "column.domain_blocks": "دۆمەینە داخراوەکان",
-  "column.favourites": "دڵخوازترینەکان",
-  "column.follow_requests": "بەدواداچوی داواکاریەکان بکە",
-  "column.home": "سەرەتا",
-  "column.lists": "پێرست",
-  "column.mutes": "بێدەنگکردنی بەکارهێنەران",
-  "column.notifications": "ئاگادارییەکان",
-  "column.pins": "تووتسی چەسپاو",
-  "column.public": "نووسراوەکانی هەمووشوێنێک",
-  "column_back_button.label": "دواوە",
-  "column_header.hide_settings": "شاردنەوەی ڕێکخستنەکان",
-  "column_header.moveLeft_settings": "ستوون بگوێزەرەوە بۆ لای چەپ",
-  "column_header.moveRight_settings": "جوولاندنی ئەستوون بۆ لای ڕاست",
-  "column_header.pin": "سنجاق",
-  "column_header.show_settings": "نیشاندانی رێکخستنەکان",
-  "column_header.unpin": "سنجاق نەکردن",
-  "column_subheading.settings": "رێکخستنەکان",
-  "community.column_settings.local_only": "تەنها خۆماڵی",
-  "community.column_settings.media_only": "تەنها میدیا",
-  "community.column_settings.remote_only": "تەنها بۆ دوور",
-  "compose_form.direct_message_warning": "ئەم توتە تەنیا بۆ بەکارهێنەرانی ناوبراو دەنێردرێت.",
-  "compose_form.direct_message_warning_learn_more": "زیاتر فێربه",
-  "compose_form.hashtag_warning": "ئەم توتە لە ژێر هیچ هاشتاگییەک دا ناکرێت وەک ئەوەی لە لیستەکەدا نەریزراوە. تەنها توتی گشتی دەتوانرێت بە هاشتاگی بگەڕێت.",
-  "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.",
-  "compose_form.lock_disclaimer.lock": "قفڵ دراوە",
-  "compose_form.placeholder": "چی لە مێشکتدایە?",
-  "compose_form.poll.add_option": "زیادکردنی هەڵبژاردەیەک",
-  "compose_form.poll.duration": "ماوەی ڕاپرسی",
-  "compose_form.poll.option_placeholder": "هەڵبژاردن {number}",
-  "compose_form.poll.remove_option": "لابردنی ئەم هەڵبژاردەیە",
-  "compose_form.poll.switch_to_multiple": "ڕاپرسی بگۆڕە بۆ ڕێگەدان بە چەند هەڵبژاردنێک",
-  "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک",
-  "compose_form.publish": "توت",
+  "account.account_note_header": "Nîşe",
+  "account.add_or_remove_from_list": "Tevlî bike an rake ji rêzokê",
+  "account.badges.bot": "Bot",
+  "account.badges.group": "Kom",
+  "account.block": "@{name} asteng bike",
+  "account.block_domain": "{domain} navpar asteng bike",
+  "account.blocked": "Astengkirî",
+  "account.browse_more_on_origin_server": "Li pelên resen bêhtir bigere",
+  "account.cancel_follow_request": "Daxwaza şopandinê rake",
+  "account.direct": "Peyamekê bişîne @{name}",
+  "account.disable_notifications": "Êdî min agahdar neke gava @{name} diweşîne",
+  "account.domain_blocked": "Navper hate astengkirin",
+  "account.edit_profile": "Profîl serrast bike",
+  "account.enable_notifications": "Min agahdar bike gava @{name} diweşîne",
+  "account.endorse": "Taybetiyên li ser profîl",
+  "account.follow": "Bişopîne",
+  "account.followers": "Şopîner",
+  "account.followers.empty": "Kesekî hin ev bikarhêner neşopandiye.",
+  "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Dişopîne",
+  "account.following_counter": "{count, plural, one {{counter} Dişopîne} other {{counter} Dişopîne}}",
+  "account.follows.empty": "Ev bikarhêner hin kesekî heya niha neşopandiye.",
+  "account.follows_you": "Te dişopîne",
+  "account.hide_reblogs": "Bilindkirinên ji @{name} veşêre",
+  "account.joined": "Tevlîbû di {date} de",
+  "account.link_verified_on": "Xwedaniya li vê girêdanê di {date} de hatiye kontrolkirin",
+  "account.locked_info": "Rewşa vê ajimêrê wek kilît kirî hatiye saz kirin. Xwedî yê ajimêrê, kesên vê bişopîne bi dest vekolin dike.",
+  "account.media": "Medya",
+  "account.mention": "Qal @{name} bike",
+  "account.moved_to": "{name} hate livandin bo:",
+  "account.mute": "@{name} Bêdeng bike",
+  "account.mute_notifications": "Agahdariyan ji @{name} bêdeng bike",
+  "account.muted": "Bêdengkirî",
+  "account.posts": "Şandî",
+  "account.posts_with_replies": "Şandî û bersiv",
+  "account.report": "@{name} Ragihîne",
+  "account.requested": "Li benda erêkirinê ye. Ji bo betal kirina daxwazê pêl bikin",
+  "account.share": "Profîla @{name} parve bike",
+  "account.show_reblogs": "Bilindkirinên ji @{name} nîşan bike",
+  "account.statuses_counter": "{count, plural,one {{counter} şandî}other {{counter} şandî}}",
+  "account.unblock": "Astengê li ser @{name} rake",
+  "account.unblock_domain": "Astengê li ser navperê {domain} rake",
+  "account.unblock_short": "Astengiyê rake",
+  "account.unendorse": "Li ser profîl nîşan neke",
+  "account.unfollow": "Neşopîne",
+  "account.unmute": "@{name} Bêdeng bike",
+  "account.unmute_notifications": "Agahdariyan ji @{name} bêdeng bike",
+  "account.unmute_short": "Bêdeng neke",
+  "account_note.placeholder": "Bitikîne bo nîşeyekê tevlî bikî",
+  "admin.dashboard.daily_retention": "Rêjeya ragirtina bikarhêner bi roj piştî tomarkirinê",
+  "admin.dashboard.monthly_retention": "Rêjeya ragirtina bikarhêner bi meh piştî tomarkirinê",
+  "admin.dashboard.retention.average": "Navîn",
+  "admin.dashboard.retention.cohort": "Meha tomarkirinê",
+  "admin.dashboard.retention.cohort_size": "Bikarhênerên nû",
+  "alert.rate_limited.message": "Jkx dîsa biceribîne piştî {retry_time, time, medium}.\n \n",
+  "alert.rate_limited.title": "Rêje sînorkirî ye",
+  "alert.unexpected.message": "Çewtiyeke bêhêvî çê bû.",
+  "alert.unexpected.title": "Wey li min!",
+  "announcement.announcement": "Daxuyanî",
+  "attachments_list.unprocessed": "(bêpêvajo)",
+  "autosuggest_hashtag.per_week": "Her hefte {count}",
+  "boost_modal.combo": "Ji bo derbas bî carekî din de pêlê {combo} bike",
+  "bundle_column_error.body": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.",
+  "bundle_column_error.retry": "Dîsa biceribîne",
+  "bundle_column_error.title": "Çewtiya torê",
+  "bundle_modal_error.close": "Bigire",
+  "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.",
+  "bundle_modal_error.retry": "Dîsa bicerbîne",
+  "column.blocks": "Bikarhênerên astengkirî",
+  "column.bookmarks": "Şûnpel",
+  "column.community": "Demnameya herêmî",
+  "column.direct": "Peyamên taybet",
+  "column.directory": "Li profîlan bigere",
+  "column.domain_blocks": "Navperên astengkirî",
+  "column.favourites": "Bijarte",
+  "column.follow_requests": "Daxwazên şopandinê",
+  "column.home": "Serrûpel",
+  "column.lists": "Rêzok",
+  "column.mutes": "Bikarhênerên bêdengkirî",
+  "column.notifications": "Agahdarî",
+  "column.pins": "Şandiya derzîkirî",
+  "column.public": "Demnameyê federalîkirî",
+  "column_back_button.label": "Veger",
+  "column_header.hide_settings": "Sazkariyan veşêre",
+  "column_header.moveLeft_settings": "Stûnê bilivîne bo çepê",
+  "column_header.moveRight_settings": "Stûnê bilivîne bo rastê",
+  "column_header.pin": "Bi derzî bike",
+  "column_header.show_settings": "Sazkariyan nîşan bide",
+  "column_header.unpin": "Bi derzî neke",
+  "column_subheading.settings": "Sazkarî",
+  "community.column_settings.local_only": "Tenê herêmî",
+  "community.column_settings.media_only": "Tenê media",
+  "community.column_settings.remote_only": "Tenê ji dûr ve",
+  "compose_form.direct_message_warning": "Ev şandî tenê ji bikarhênerên qalkirî re wê were şandin.",
+  "compose_form.direct_message_warning_learn_more": "Bêtir fêr bibe",
+  "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.",
+  "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.",
+  "compose_form.lock_disclaimer.lock": "girtî ye",
+  "compose_form.placeholder": "Çi di hişê te derbas dibe?",
+  "compose_form.poll.add_option": "Hilbijarekî tevlî bike",
+  "compose_form.poll.duration": "Dema rapirsî yê",
+  "compose_form.poll.option_placeholder": "{number} Hilbijêre",
+  "compose_form.poll.remove_option": "Vê hilbijarê rake",
+  "compose_form.poll.switch_to_multiple": "Rapirsî yê biguherînin da ku destûr bidin vebijarkên pirjimar",
+  "compose_form.poll.switch_to_single": "Rapirsîyê biguherîne da ku mafê bidî tenê vebijêrkek",
+  "compose_form.publish": "Toot",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
-  "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار",
-  "compose_form.sensitive.marked": "وادەی کۆتایی",
-  "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە",
-  "compose_form.spoiler.marked": "دەق لە پشت ئاگاداریدا شاراوەتەوە",
-  "compose_form.spoiler.unmarked": "دەق شاراوە نییە",
-  "compose_form.spoiler_placeholder": "ئاگاداریەکەت لێرە بنووسە",
-  "confirmation_modal.cancel": "هەڵوەشاندنەوه",
-  "confirmations.block.block_and_report": "بلۆک & گوزارشت",
-  "confirmations.block.confirm": "بلۆک",
-  "confirmations.block.message": "ئایا دڵنیایت لەوەی دەتەوێت {name} بلۆک بکەیت?",
-  "confirmations.delete.confirm": "سڕینەوە",
-  "confirmations.delete.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە?",
-  "confirmations.delete_list.confirm": "سڕینەوە",
-  "confirmations.delete_list.message": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی ئەم لیستە بسڕیتەوە?",
-  "confirmations.discard_edit_media.confirm": "Discard",
-  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
-  "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە",
-  "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.",
-  "confirmations.logout.confirm": "چوونە دەرەوە",
-  "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?",
-  "confirmations.mute.confirm": "بێدەنگ",
-  "confirmations.mute.explanation": "ئەمەش دەبێتە هۆی شاردنەوەی پۆستەکان یان ئەو بابەتانەی کە ئاماژەیان پێ دەکات ، بەڵام هێشتا ڕێگەیان پێ دەدات کە پۆستەکانتان ببینن و شوێنتان بکەون.",
-  "confirmations.mute.message": "ئایا دڵنیایت لەوەی دەتەوێت بیلێیت {name}?",
-  "confirmations.redraft.confirm": "سڕینەوە & دووبارە ڕەشکردنەوە",
-  "confirmations.redraft.message": "ئایا دڵنیایت لەوەی دەتەوێت ئەم توتە بسڕیتەوە و دووبارە دایبنووسیتەوە؟ دڵخوازەکان و بەرزکردنەوەکان وون دەبن، و وەڵامەکان بۆ پۆستە ڕەسەنەکە هەتیو دەبن.",
-  "confirmations.reply.confirm": "وەڵام",
-  "confirmations.reply.message": "وەڵامدانەوە ئێستا ئەو نامەیە ی کە تۆ ئێستا دایڕشتووە، دەنووسێتەوە. ئایا دڵنیایت کە دەتەوێت بەردەوام بیت?",
-  "confirmations.unfollow.confirm": "بەدوادانەچو",
-  "confirmations.unfollow.message": "ئایا دڵنیایت لەوەی دەتەوێت پەیڕەوی {name}?",
-  "conversation.delete": "سڕینەوەی گفتوگۆ",
-  "conversation.mark_as_read": "نیشانەکردن وەک خوێندراوە",
-  "conversation.open": "نیشاندان گفتوگۆ",
-  "conversation.with": "لەگەڵ{names}",
-  "directory.federated": "لە ڕاژەکانی ناسراو",
-  "directory.local": "تەنها لە {domain}",
-  "directory.new_arrivals": "تازە گەیشتنەکان",
-  "directory.recently_active": "بەم دواییانە چالاکە",
-  "embed.instructions": "ئەم توتە بنچین بکە لەسەر وێب سایتەکەت بە کۆپیکردنی کۆدەکەی خوارەوە.",
-  "embed.preview": "ئەمە ئەو شتەیە کە لە شێوەی خۆی دەچێت:",
-  "emoji_button.activity": "چالاکی",
-  "emoji_button.custom": "ئاسایی",
-  "emoji_button.flags": "ئاڵاکان",
-  "emoji_button.food": "خواردن& خواردنەوە",
-  "emoji_button.label": "ئیمۆجی بکەنێو",
-  "emoji_button.nature": "سروشت",
-  "emoji_button.not_found": "بێ ئیمۆجی! (╯°□°)╯( ┻━┻",
-  "emoji_button.objects": "ئامانجەکان",
-  "emoji_button.people": "خەڵک",
-  "emoji_button.recent": "زۆرجار بەکارهێنراوە",
-  "emoji_button.search": "گەڕان...",
-  "emoji_button.search_results": "ئەنجامەکانی گەڕان",
-  "emoji_button.symbols": "هێماکان",
-  "emoji_button.travel": "گەشت & شوێنەکان",
-  "empty_column.account_suspended": "Account suspended",
-  "empty_column.account_timeline": "لێرە هیچ توتەک نییە!",
-  "empty_column.account_unavailable": "پرۆفایل بەردەست نیە",
-  "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.",
-  "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.",
-  "empty_column.community": "هێڵی کاتی ناوخۆیی بەتاڵە. شتێک بە ئاشکرا بنووسە بۆ ئەوەی تۆپەکە بسووڕێت!",
-  "empty_column.direct": "تۆ هیچ نامەی ڕاستەوخۆت نیە تا ئێستا. کاتێک دانەیەک دەنێریت یان وەرت دەگرێت، لێرە پیشان دەدات.",
-  "empty_column.domain_blocks": "هێشتا هیچ دۆمەینێکی بلۆک کراو نییە.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
-  "empty_column.favourited_statuses": "تۆ هێشتا هیچ توتێکی دڵخوازت نییە، کاتێک حەزت لە دانەیەکی باشە، لێرە دەرئەکەویت.",
-  "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.",
-  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
-  "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.",
-  "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.",
-  "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.",
-  "empty_column.home.suggestions": "See some suggestions",
-  "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.",
-  "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.",
-  "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.",
-  "empty_column.notifications": "تۆ هێشتا هیچ ئاگانامێکت نیە. چالاکی لەگەڵ کەسانی دیکە بکە بۆ دەستپێکردنی گفتوگۆکە.",
-  "empty_column.public": "لێرە هیچ نییە! شتێک بە ئاشکرا بنووسە(بەگشتی)، یان بە دەستی شوێن بەکارهێنەران بکەوە لە ڕاژەکانی ترەوە بۆ پڕکردنەوەی",
-  "error.unexpected_crash.explanation": "بەهۆی بوونی کێشە لە کۆدەکەمان یان کێشەی گونجانی وێبگەڕەکە، ئەم لاپەڕەیە بە دروستی پیشان نادرێت.",
-  "error.unexpected_crash.explanation_addons": "ئەم لاپەڕەیە ناتوانرێت بە دروستی پیشان بدرێت. ئەم هەڵەیە لەوانەیە بەهۆی ئامێری وەرگێڕانی خۆکار یان زیادکراوی وێبگەڕەوە بێت.",
-  "error.unexpected_crash.next_steps": "هەوڵدە لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکەیان کاربەرنامەی ڕەسەن.",
-  "error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.",
-  "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
-  "errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
-  "follow_recommendations.done": "Done",
-  "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
-  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
-  "follow_request.authorize": "ده‌سه‌ڵاتپێدراو",
-  "follow_request.reject": "ڕەتکردنەوە",
-  "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.",
-  "generic.saved": "پاشکەوتکرا",
-  "getting_started.developers": "پەرەپێدەران",
-  "getting_started.directory": "پەڕەی پرۆفایل",
-  "getting_started.documentation": "بەڵگەنامە",
-  "getting_started.heading": "دەست پێکردن",
-  "getting_started.invite": "بانگهێشتکردنی خەڵک",
-  "getting_started.open_source_notice": "ماستۆدۆن نەرمەکالایەکی سەرچاوەی کراوەیە. دەتوانیت بەشداری بکەیت یان گوزارشت بکەیت لەسەر کێشەکانی لە پەڕەی گیتهاب {github}.",
-  "getting_started.security": "ڕێکخستنەکانی هەژمارە",
-  "getting_started.terms": "مەرجەکانی خزمەتگوزاری",
-  "hashtag.column_header.tag_mode.all": "و {additional}",
-  "hashtag.column_header.tag_mode.any": "یا {additional}",
-  "hashtag.column_header.tag_mode.none": "بەبێ {additional}",
-  "hashtag.column_settings.select.no_options_message": "هیچ پێشنیارێک نەدۆزرایەوە",
-  "hashtag.column_settings.select.placeholder": "هاشتاگی تێبنووسە…",
-  "hashtag.column_settings.tag_mode.all": "هەموو ئەمانە",
-  "hashtag.column_settings.tag_mode.any": "هەر کام لەمانە",
-  "hashtag.column_settings.tag_mode.none": "هیچ کام لەمانە",
-  "hashtag.column_settings.tag_toggle": "تاگی زیادە ی ئەم ستوونە لەخۆ بنووسە",
-  "home.column_settings.basic": "بنەڕەتی",
-  "home.column_settings.show_reblogs": "پیشاندانی بەهێزکردن",
-  "home.column_settings.show_replies": "وەڵامدانەوەکان پیشان بدە",
-  "home.hide_announcements": "شاردنەوەی راگەیەنراوەکان",
-  "home.show_announcements": "پیشاندانی راگەیەنراوەکان",
-  "intervals.full.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژەک}}",
-  "intervals.full.hours": "{number, plural, one {# کات} other {# کات}}",
-  "intervals.full.minutes": "{number, plural, one {# خولەک} other {# خولەک}}",
-  "keyboard_shortcuts.back": "بۆ گەڕانەوە",
-  "keyboard_shortcuts.blocked": "بۆ کردنەوەی لیستی بەکارهێنەرە بلۆککراوەکان",
-  "keyboard_shortcuts.boost": "بۆ بەهێزکردن",
-  "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان",
-  "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق",
-  "keyboard_shortcuts.description": "وه‌سف",
-  "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان",
-  "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا",
-  "keyboard_shortcuts.enter": "بۆ کردنەوەی توت",
-  "keyboard_shortcuts.favourite": "بۆ دڵخواز",
-  "keyboard_shortcuts.favourites": "بۆ کردنەوەی لیستی دڵخوازەکان",
-  "keyboard_shortcuts.federated": "بۆ کردنەوەی نووسراوەکانی هەمووشوێن",
-  "keyboard_shortcuts.heading": "قه‌دبڕەکانی تەختەکلیل",
-  "keyboard_shortcuts.home": "بۆ کردنەوەی هێڵی کاتی ماڵەوە",
-  "keyboard_shortcuts.hotkey": "هۆتکەی",
-  "keyboard_shortcuts.legend": "بۆ نیشاندانی ئەم نیشانە",
-  "keyboard_shortcuts.local": "بۆ کردنەوەی نووسراوەکانی خۆماڵی",
-  "keyboard_shortcuts.mention": "نۆ ناوبردن لە نووسەر",
-  "keyboard_shortcuts.muted": "بۆ کردنەوەی پێرستی بەکارهێنەرانی بێدەنگ",
-  "keyboard_shortcuts.my_profile": "بۆ کردنەوەی پرۆفایڵ",
-  "keyboard_shortcuts.notifications": "بۆ کردنەوەی ستوونی ئاگانامەکان",
-  "keyboard_shortcuts.open_media": "بۆ کردنەوەی میدیا",
-  "keyboard_shortcuts.pinned": "بۆ کردنەوەی لیستی توتەکانی چەسپێنراو",
-  "keyboard_shortcuts.profile": "بۆ کردنەوەی پرۆفایڵی نووسەر",
-  "keyboard_shortcuts.reply": "بۆ وەڵامدانەوە",
-  "keyboard_shortcuts.requests": "بۆ کردنەوەی لیستی داواکاریەکانی بەدوادا",
-  "keyboard_shortcuts.search": "بۆ جەختکردن لەسەر گەڕان",
-  "keyboard_shortcuts.spoilers": "بۆ پیشاندان/شاردنەوەی خانەی CW",
-  "keyboard_shortcuts.start": "بۆ کردنەوەی ستوونی \"دەست پێبکە\"",
-  "keyboard_shortcuts.toggle_hidden": "بۆ پیشاندان/شاردنەوەی دەق لە پشت CW",
-  "keyboard_shortcuts.toggle_sensitivity": "بۆ پیشاندان/شاردنەوەی میدیا",
-  "keyboard_shortcuts.toot": "بۆ دەست کردن بە براندێکی تازە",
-  "keyboard_shortcuts.unfocus": "بۆ دروستکردنی ناوچەی دەق/گەڕان",
-  "keyboard_shortcuts.up": "بۆ ئەوەی لە لیستەکەدا بڕۆیت",
-  "lightbox.close": "دابخە",
-  "lightbox.compress": "سندوقی نیشاندانی وێنە بپەستێنە",
-  "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە",
-  "lightbox.next": "داهاتوو",
-  "lightbox.previous": "پێشوو",
-  "lists.account.add": "زیادکردن بۆ لیست",
-  "lists.account.remove": "لابردن لە لیست",
-  "lists.delete": "سڕینەوەی لیست",
-  "lists.edit": "دەستکاری لیست",
-  "lists.edit.submit": "گۆڕینی ناونیشان",
-  "lists.new.create": "زیادکردنی لیست",
-  "lists.new.title_placeholder": "ناونیشانی لیستی نوێ",
-  "lists.replies_policy.followed": "Any followed user",
-  "lists.replies_policy.list": "Members of the list",
-  "lists.replies_policy.none": "No one",
-  "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:",
-  "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
-  "lists.subheading": "لیستەکانت",
-  "load_pending": "{count, plural, one {# new item} other {# new items}}",
-  "loading_indicator.label": "بارکردن...",
-  "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}",
-  "missing_indicator.label": "نەدۆزرایەوە",
-  "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە",
-  "mute_modal.duration": "ماوە",
-  "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ",
-  "mute_modal.indefinite": "نادیار",
-  "navigation_bar.apps": "بەرنامەی مۆبایل",
-  "navigation_bar.blocks": "بەکارهێنەرە بلۆککراوەکان",
-  "navigation_bar.bookmarks": "نیشانکراوەکان",
-  "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی",
-  "navigation_bar.compose": "نووسینی توتی نوێ",
-  "navigation_bar.direct": "نامە ڕاستەوخۆکان",
-  "navigation_bar.discover": "دۆزینەوە",
-  "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان",
-  "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە",
-  "navigation_bar.favourites": "دڵخوازەکان",
-  "navigation_bar.filters": "وشە کپەکان",
-  "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە",
-  "navigation_bar.follows_and_followers": "شوێنکەوتوو و شوێنکەوتوان",
-  "navigation_bar.info": "دەربارەی ئەم ڕاژە",
-  "navigation_bar.keyboard_shortcuts": "هۆتکەی",
-  "navigation_bar.lists": "لیستەکان",
-  "navigation_bar.logout": "دەرچوون",
-  "navigation_bar.mutes": "کپکردنی بەکارهێنەران",
-  "navigation_bar.personal": "کەسی",
-  "navigation_bar.pins": "توتی چەسپاو",
-  "navigation_bar.preferences": "پەسەندەکان",
-  "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک",
-  "navigation_bar.security": "ئاسایش",
-  "notification.admin.sign_up": "{name} signed up",
-  "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد",
-  "notification.follow": "{name} دوای تۆ کەوت",
-  "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت",
-  "notification.mention": "{name} باسی ئێوەی کرد",
-  "notification.own_poll": "ڕاپرسیەکەت کۆتایی هات",
-  "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات",
-  "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند",
-  "notification.status": "{name} تازە بڵاوکرایەوە",
-  "notification.update": "{name} edited a post",
-  "notifications.clear": "ئاگانامەکان بسڕیەوە",
-  "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
-  "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی",
-  "notifications.column_settings.favourite": "دڵخوازترین:",
-  "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە",
-  "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا",
-  "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
-  "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:",
-  "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:",
-  "notifications.column_settings.mention": "ئاماژەکان:",
-  "notifications.column_settings.poll": "ئەنجامەکانی ڕاپرسی:",
-  "notifications.column_settings.push": "ئاگانامەکان پاڵ بنێ",
-  "notifications.column_settings.reblog": "دووبارەتوتەکان:",
-  "notifications.column_settings.show": "لە ستووندا پیشان بدە",
-  "notifications.column_settings.sound": "لێدانی دەنگ",
-  "notifications.column_settings.status": "توتەکانی نوێ:",
-  "notifications.column_settings.unread_notifications.category": "Unread notifications",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
-  "notifications.column_settings.update": "Edits:",
-  "notifications.filter.all": "هەموو",
-  "notifications.filter.boosts": "دووبارەتوتەکان",
-  "notifications.filter.favourites": "دڵخوازەکان",
-  "notifications.filter.follows": "شوێنکەوتن",
-  "notifications.filter.mentions": "ئاماژەکان",
-  "notifications.filter.polls": "ئەنجامەکانی ڕاپرسی",
-  "notifications.filter.statuses": "نوێکردنەوەکان ئەو کەسانەی کە پەیڕەوی دەکەیت",
-  "notifications.grant_permission": "Grant permission.",
-  "notifications.group": "{count} ئاگانامە",
-  "notifications.mark_as_read": "هەموو ئاگانامەکان وەک خوێندراوەتەوە نیشان بکە",
-  "notifications.permission_denied": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت وەک ڕێپێدان ڕەتکرایەوە.",
-  "notifications.permission_denied_alert": "ناتوانرێت ئاگانامەکانی دێسکتۆپ چالاک بکرێت، چونکە پێشتر مۆڵەتی وێبگەڕ ڕەتکرایەوە",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
-  "notifications_permission_banner.enable": "چالاککردنی ئاگانامەکانی دێسکتۆپ",
-  "notifications_permission_banner.how_to_control": "بۆ وەرگرتنی ئاگانامەکان کاتێک ماستۆدۆن نەکراوەیە، ئاگانامەکانی دێسکتۆپ چالاک بکە. دەتوانیت بە وردی کۆنترۆڵی جۆری کارلێکەکان بکەیت کە ئاگانامەکانی دێسکتۆپ دروست دەکەن لە ڕێگەی دوگمەی {icon} لەسەرەوە کاتێک چالاک دەکرێن.",
-  "notifications_permission_banner.title": "هەرگیز شتێک لە دەست مەدە",
-  "picture_in_picture.restore": "بیگەڕێنەوە",
-  "poll.closed": "دابخە",
-  "poll.refresh": "نوێکردنەوە",
-  "poll.total_people": "{count, plural, one {# خەڵک} other {# خەڵک}}",
-  "poll.total_votes": "{count, plural, one {# دەنگ} other {# دەنگ}}\n",
-  "poll.vote": "دەنگ",
-  "poll.voted": "تۆ دەنگت بەو وەڵامە دا",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
-  "poll_button.add_poll": "ڕاپرسییەک زیاد بکە",
-  "poll_button.remove_poll": "ده‌نگدان بسڕه‌وه‌‌",
-  "privacy.change": "ڕێکخستنی تایبەتمەندی توت",
-  "privacy.direct.long": "تەنیا بۆ بەکارهێنەرانی ناوبراو",
-  "privacy.direct.short": "ڕاستەوخۆ",
-  "privacy.private.long": "بینراو تەنها بۆ شوێنکەوتوان",
-  "privacy.private.short": "تەنها بۆ شوێنکەوتوان",
-  "privacy.public.long": "بۆ هەمووان دیاربێت، لە هێڵی کاتی گشتی دا نیشان دەدرێت",
-  "privacy.public.short": "گشتی",
-  "privacy.unlisted.long": "بۆ هەمووان دیارە، بەڵام لە هێڵی کاتی گشتیدا نا",
-  "privacy.unlisted.short": "لە لیست نەکراو",
-  "refresh": "نوێکردنەوە",
-  "regeneration_indicator.label": "بارکردن…",
-  "regeneration_indicator.sublabel": "ڕاگەیەنەری ماڵەوەت ئامادە دەکرێت!",
-  "relative_time.days": "{number}ڕۆژ",
-  "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
-  "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
-  "relative_time.full.just_now": "just now",
-  "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
-  "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
-  "relative_time.hours": "{number}کات",
-  "relative_time.just_now": "ئێستا",
-  "relative_time.minutes": "{number}کات",
-  "relative_time.seconds": "{number}کات",
-  "relative_time.today": "ئیمڕۆ",
-  "reply_indicator.cancel": "هەڵوەشاندنەوه",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
-  "report.categories.spam": "Spam",
-  "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
-  "report.forward": "ناردن بۆ {target}",
-  "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
-  "report.placeholder": "سەرنجەکانی زیاتر",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
-  "report.submit": "ناردن",
-  "report.target": "گوزارشتکردنی{target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
-  "search.placeholder": "گەڕان",
-  "search_popout.search_format": "شێوەی گەڕانی پێشکەوتوو",
-  "search_popout.tips.full_text": "گەڕانێکی دەقی سادە دەتوانێت توتەکانی ئێوە کە، نووسیوتانە،پەسەنتان کردووە، دووبارەتانکردووە، یان ئەو توتانە کە باسی ئێوەی تێدا کراوە پەیدا دەکا. هەروەها ناوی بەکارهێنەران، ناوی پیشاندراو و هەشتەگەکانیش لە خۆ دەگرێت.",
-  "search_popout.tips.hashtag": "هەشتاگ",
-  "search_popout.tips.status": "توت",
-  "search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان",
-  "search_popout.tips.user": "بەکارهێنەر",
-  "search_results.accounts": "خەڵک",
-  "search_results.all": "All",
-  "search_results.hashtags": "هەشتاگ",
-  "search_results.nothing_found": "Could not find anything for these search terms",
-  "search_results.statuses": "توتەکان",
-  "search_results.statuses_fts_disabled": "گەڕانی توتەکان بە ناوەڕۆکیان لەسەر ئەم ڕاژەی ماستۆدۆن چالاک نەکراوە.",
-  "search_results.total": "{count, number} {count, plural, one {دەرئەنجام} other {دەرئەنجام}}",
-  "status.admin_account": "کردنەوەی میانڕەوی بەڕێوەبەر بۆ @{name}",
-  "status.admin_status": "ئەم توتە بکەوە لە ناو ڕووکاری بەڕیوەبەر",
-  "status.block": "بلۆکی @{name}",
-  "status.bookmark": "نیشانه",
-  "status.cancel_reblog_private": "بێبەهێزکردن",
-  "status.cannot_reblog": "ئەم بابەتە ناتوانرێت بەرزبکرێتەوە",
-  "status.copy": "ڕوونووسی بەستەر بۆ توت",
-  "status.delete": "سڕینەوە",
-  "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری",
-  "status.direct": "پەیامی ڕاستەوخۆ @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
-  "status.embed": "نیشتەجێ بکە",
-  "status.favourite": "دڵخواز",
-  "status.filtered": "پاڵاوتن",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
-  "status.load_more": "بارکردنی زیاتر",
-  "status.media_hidden": "میدیای شاراوە",
-  "status.mention": "ناوبنێ @{name}",
-  "status.more": "زیاتر",
-  "status.mute": "بێدەنگکردن @{name}",
-  "status.mute_conversation": "گفتوگۆی بێدەنگ",
-  "status.open": "ئەم توتە فراوان بکە",
-  "status.pin": "لکاندن لەسەر پرۆفایل",
-  "status.pinned": "توتی چەسپکراو",
-  "status.read_more": "زیاتر بخوێنەوە",
-  "status.reblog": "بەهێزکردن",
-  "status.reblog_private": "بەهێزکردن بۆ بینەرانی سەرەتایی",
-  "status.reblogged_by": "{name} توتی کردەوە",
-  "status.reblogs.empty": "کەس ئەم توتەی دووبارە نەتوتاندوە ،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.",
-  "status.redraft": "سڕینەوەی و دووبارە ڕەشنووس",
-  "status.remove_bookmark": "لابردنی نیشانه",
-  "status.reply": "وەڵام",
-  "status.replyAll": "بە نووسراوە وەڵام بدەوە",
-  "status.report": "گوزارشت @{name}",
-  "status.sensitive_warning": "ناوەڕۆکی هەستیار",
-  "status.share": "هاوبەش کردن",
-  "status.show_less": "کەمتر نیشان بدە",
-  "status.show_less_all": "کەمتر نیشان بدە بۆ هەمووی",
-  "status.show_more": "زیاتر پیشان بدە",
-  "status.show_more_all": "زیاتر نیشان بدە بۆ هەمووی",
-  "status.show_thread": "نیشاندانی گفتوگۆ",
-  "status.uncached_media_warning": "بەردەست نیە",
-  "status.unmute_conversation": "گفتوگۆی بێدەنگ",
-  "status.unpin": "لابردن لە پرۆفایل",
-  "suggestions.dismiss": "ڕەتکردنەوەی پێشنیار",
-  "suggestions.header": "لەوانەیە حەزت لەمەش بێت…",
-  "tabs_bar.federated_timeline": "گشتی",
-  "tabs_bar.home": "سەرەتا",
-  "tabs_bar.local_timeline": "ناوخۆیی",
-  "tabs_bar.notifications": "ئاگادارییەکان",
-  "tabs_bar.search": "گەڕان",
-  "time_remaining.days": "{number, plural, one {# ڕۆژ} other {# ڕۆژ}} ماوە",
-  "time_remaining.hours": "{number, plural, one {# کات} other {# کات}} ماوە",
-  "time_remaining.minutes": "{number, plural, one {# خۆلەک} other {# خولەک}} ماوە",
-  "time_remaining.moments": "ئەو ساتانەی ماونەتەوە",
-  "time_remaining.seconds": "{number, plural, one {# چرکە} other {# چرکە}} ماوە",
-  "timeline_hint.remote_resource_not_displayed": "{resource} لە ڕاژەکانی ترەوە پیشان نادرێت.",
-  "timeline_hint.resources.followers": "شوێنکەوتووان",
-  "timeline_hint.resources.follows": "شوێنکەوتن",
-  "timeline_hint.resources.statuses": "توتی کۆن",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} کەس} other {{counter} کەس}} گفتوگۆ دەکا",
-  "trends.trending_now": "گۆگران",
-  "ui.beforeunload": "ڕەشنووسەکەت لە دەست دەچێت ئەگەر لە ماستۆدۆن بڕۆیت.",
-  "units.short.billion": "{count}ملیار",
-  "units.short.million": "{count}ملیۆن",
-  "units.short.thousand": "{count}هەزار",
-  "upload_area.title": "ڕاکێشان & دانان بۆ بارکردن",
-  "upload_button.label": "زیادکردنی وێنەکان، ڤیدیۆیەک یان فایلێکی دەنگی",
-  "upload_error.limit": "سنووری بارکردنی فایل تێپەڕیوە.",
-  "upload_error.poll": "پەڕگەکە ڕێی پێنەدراوە بە ڕاپرسی باربکرێت.",
-  "upload_form.audio_description": "بۆ ئەو کەسانەی کە گوێ بیستیان هەیە وەسف دەکات",
-  "upload_form.description": "وەسف بکە بۆ کەمبینایان",
-  "upload_form.edit": "دەستکاری",
-  "upload_form.thumbnail": "گۆڕانی وینۆچکە",
-  "upload_form.undo": "سڕینەوە",
-  "upload_form.video_description": "بۆ کەم بینایان و کەم بیستان وەسفی بکە",
-  "upload_modal.analyzing_picture": "شیکردنەوەی وێنە…",
-  "upload_modal.apply": "جێبەجێ کردن",
-  "upload_modal.applying": "Applying…",
-  "upload_modal.choose_image": "وێنە هەڵبژێرە",
-  "upload_modal.description_placeholder": "بە دڵ کەین با بە نەشئەی مەی غوباری میحنەتی دونیا",
-  "upload_modal.detect_text": "دەقی وێنەکە بدۆزیەوە",
-  "upload_modal.edit_media": "دەستکاریکردنی میدیا",
-  "upload_modal.hint": "گەر وێنە چکۆلە یان بڕاوەبێت، خاڵی ناوەندی دیار دەکەوێت. خاڵی ناوەندی وێنە بە کرتە یان جێبەجیکردنی رێکبخەن.",
-  "upload_modal.preparing_ocr": "ئامادەکردنی OCR…",
-  "upload_modal.preview_label": "پێشبینی ({ratio})",
-  "upload_progress.label": "بارکردن...",
-  "video.close": "داخستنی ڤیدیۆ",
-  "video.download": "داگرتنی فایل",
-  "video.exit_fullscreen": "دەرچوون لە پڕ شاشە",
-  "video.expand": "ڤیدیۆفراوان بکە",
-  "video.fullscreen": "پڕپیشانگەر",
-  "video.hide": "شاردنەوەی ڤیدیۆ",
-  "video.mute": "دەنگی کپ",
-  "video.pause": "وەستان",
-  "video.play": "پەخشکردن",
-  "video.unmute": "دەنگ لابدە"
+  "compose_form.save_changes": "Guhertinan tomar bike",
+  "compose_form.sensitive.hide": "{count, plural, one {Medya wekî hestiyar nîşan bide} other {Medya wekî hestiyar nîşan bide}}",
+  "compose_form.sensitive.marked": "{count, plural, one {Medya wekî hestiyar hate nîşan} other {Medya wekî hestiyar nîşan}}",
+  "compose_form.sensitive.unmarked": "{count, plural, one {Medya wekî hestiyar nehatiye nîşan} other {Medya wekî hestiyar nehatiye nîşan}}",
+  "compose_form.spoiler.marked": "Hişyariya naverokê rake",
+  "compose_form.spoiler.unmarked": "Hişyariya naverokê tevlî bike",
+  "compose_form.spoiler_placeholder": "Li vir hişyariya xwe binivîse",
+  "confirmation_modal.cancel": "Dev jê berde",
+  "confirmations.block.block_and_report": "Asteng bike & ragihîne",
+  "confirmations.block.confirm": "Asteng bike",
+  "confirmations.block.message": "Ma tu dixwazî ku {name} asteng bikî?",
+  "confirmations.delete.confirm": "Jê bibe",
+  "confirmations.delete.message": "Ma tu dixwazî vê şandiyê jê bibî?",
+  "confirmations.delete_list.confirm": "Jê bibe",
+  "confirmations.delete_list.message": "Ma tu dixwazî bi awayekî herdemî vê rêzokê jê bibî?",
+  "confirmations.discard_edit_media.confirm": "Biavêje",
+  "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?",
+  "confirmations.domain_block.confirm": "Hemî navperê asteng bike",
+  "confirmations.domain_block.message": "Tu ji xwe bawerî, bi rastî tu dixwazî hemû {domain} asteng bikî? Di gelek rewşan de asteng kirin an jî bêdeng kirin têrê dike û tê tercîh kirin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê were jêbirin.",
+  "confirmations.logout.confirm": "Derkeve",
+  "confirmations.logout.message": "Ma tu dixwazî ku derkevî?",
+  "confirmations.mute.confirm": "Bêdeng bike",
+  "confirmations.mute.explanation": "Ev ê şandinên ji wan tê û şandinên ku behsa wan dike veşêre, lê hê jî maf dide ku ew şandinên te bibînin û te bişopînin.",
+  "confirmations.mute.message": "Bi rastî tu dixwazî {name} bêdeng bikî?",
+  "confirmations.redraft.confirm": "Jê bibe & ji nû ve serrast bike",
+  "confirmations.redraft.message": "Bi rastî tu dixwazî şandî ye jê bibî û nûve reşnivîsek çê bikî? Bijarte û şandî wê wenda bibin û bersivên ji bo şandiyê resen wê sêwî bimînin.",
+  "confirmations.reply.confirm": "Bersivê bide",
+  "confirmations.reply.message": "Bersiva niha li ser peyama ku tu niha berhev dikî dê binivsîne. Ma pê bawer î ku tu dixwazî bidomînî?",
+  "confirmations.unfollow.confirm": "Neşopîne",
+  "confirmations.unfollow.message": "Ma tu dixwazî ku dev ji şopa {name} berdî?",
+  "conversation.delete": "Axaftinê jê bibe",
+  "conversation.mark_as_read": "Wekî xwendî nîşan bide",
+  "conversation.open": "Axaftinê nîşan bide",
+  "conversation.with": "Bi {names} re",
+  "directory.federated": "Ji fediversên naskirî",
+  "directory.local": "Tenê ji {domain}",
+  "directory.new_arrivals": "Kesên ku nû hatine",
+  "directory.recently_active": "Di demên dawî de çalak",
+  "embed.instructions": "Bi jêgirtina koda jêrîn vê şandiyê li ser malpera xwe bicîh bikin.",
+  "embed.preview": "Wa ye wê wusa xuya bike:",
+  "emoji_button.activity": "Çalakî",
+  "emoji_button.custom": "Kesanekirî",
+  "emoji_button.flags": "Nîşankirî",
+  "emoji_button.food": "Xwarin û vexwarin",
+  "emoji_button.label": "Emoji têxe",
+  "emoji_button.nature": "Sirûştî",
+  "emoji_button.not_found": "Hestokên lihevhatî nehate dîtin",
+  "emoji_button.objects": "Tişt",
+  "emoji_button.people": "Mirov",
+  "emoji_button.recent": "Pir caran tê bikaranîn",
+  "emoji_button.search": "Bigere...",
+  "emoji_button.search_results": "Encamên lêgerînê",
+  "emoji_button.symbols": "Sembol",
+  "emoji_button.travel": "Geşt û şûn",
+  "empty_column.account_suspended": "Ajimêr hatiye rawestandin",
+  "empty_column.account_timeline": "Li vir şandî tune!",
+  "empty_column.account_unavailable": "Profîl nayê peydakirin",
+  "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.",
+  "empty_column.bookmarked_statuses": "Hîn tu peyamên şûnpelkirî tuneye. Gava ku hûn yek şûnpel bikin, ew ê li vir xûya bike.",
+  "empty_column.community": "Demnameya herêmî vala ye. Tiştek ji raya giştî re binivsînin da ku rûpel biherike!",
+  "empty_column.direct": "Hêj peyameke te yê rasterast tuneye. Gava ku tu yekî bişeynî an jî bigirî, ew ê li vir xûya bike.",
+  "empty_column.domain_blocks": "Hê jî navperên hatine asteng kirin tune ne.",
+  "empty_column.explore_statuses": "Tiştek niha di rojevê de tune. Paşê vegere!",
+  "empty_column.favourited_statuses": "Hîn tu peyamên te yên bijare tunene. Gava ku te yekî bijart, ew ê li vir xûya bike.",
+  "empty_column.favourites": "Hîn tu kes vê peyamê nebijartiye. Gava ku hin kes bijartin, ew ê li vir xûya bikin.",
+  "empty_column.follow_recommendations": "Wusa dixuye ku ji bo we tu pêşniyar nehatine çêkirin. Hûn dikarin lêgerînê bikarbînin da ku li kesên ku hûn nas dikin bigerin an hashtagên trendî bigerin.",
+  "empty_column.follow_requests": "Hê jî daxwaza şopandinê tunne ye. Dema daxwazek hat, yê li vir were nîşan kirin.",
+  "empty_column.hashtag": "Di vê hashtagê de hêj tiştekî tune.",
+  "empty_column.home": "Demnameya mala we vala ye! Ji bona tijîkirinê bêtir mirovan bişopînin. {suggestions}",
+  "empty_column.home.suggestions": "Hinek pêşniyaran bibîne",
+  "empty_column.list": "Di vê rêzokê de hîn tiştek tune ye. Gava ku endamên vê rêzokê peyamên nû biweşînin, ew ê li vir xuya bibin.",
+  "empty_column.lists": "Hêj qet rêzokê te tunne ye. Dema yek peyda bû, yê li vir were nîşan kirin.",
+  "empty_column.mutes": "Te tu bikarhêner bêdeng nekiriye.",
+  "empty_column.notifications": "Hêj hişyariyên te tunene. Dema ku mirovên din bi we re têkilî danîn, hûn ê wê li vir bibînin.",
+  "empty_column.public": "Li vir tiştekî tuneye! Ji raya giştî re tiştekî binivîsîne, an ji bo tijîkirinê ji rajekerên din bikarhêneran bi destan bişopînin",
+  "error.unexpected_crash.explanation": "Ji ber xeletîyeke di koda me da an jî ji ber mijara lihevhatina gerokan, ev rûpel rast nehat nîşandan.",
+  "error.unexpected_crash.explanation_addons": "Ev rûpel bi awayekî rast nehat nîşandan. Ev çewtî mimkûn e ji ber lêzêdekirina gerokan an jî amûrên wergera xweberî pêk tê.",
+  "error.unexpected_crash.next_steps": "Nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.",
+  "error.unexpected_crash.next_steps_addons": "Ne çalak kirin û nûkirina rûpelê biceribîne. Heke ev bi kêr neyê, dibe ku te hîn jî bi rêya gerokeke cuda an jî sepana xwecîhê Mastodonê bi kar bîne.",
+  "errors.unexpected_crash.copy_stacktrace": "Şopa gemara (stacktrace) tûrikê ra jê bigire",
+  "errors.unexpected_crash.report_issue": "Pirsgirêkekê ragihîne",
+  "explore.search_results": "Encamên lêgerînê",
+  "explore.suggested_follows": "Ji bo te",
+  "explore.title": "Vekole",
+  "explore.trending_links": "Nûçe",
+  "explore.trending_statuses": "Şandî",
+  "explore.trending_tags": "Hashtag",
+  "follow_recommendations.done": "Qediya",
+  "follow_recommendations.heading": "Mirovên ku tu dixwazî ji wan peyaman bibînî bişopîne! Hin pêşnîyar li vir in.",
+  "follow_recommendations.lead": "Li gorî rêza kronolojîkî peyamên mirovên ku tu dişopînî dê demnameya te de xûya bike. Ji xeletiyan netirse, bi awayekî hêsan her wextî tu dikarî dev ji şopandinê berdî!",
+  "follow_request.authorize": "Mafê bide",
+  "follow_request.reject": "Nepejirîne",
+  "follow_requests.unlocked_explanation": "Tevlî ku ajimêra te ne kilît kiriye, karmendên {domain} digotin qey tu dixwazî ku pêşdîtina daxwazên şopandinê bi destan bike.",
+  "generic.saved": "Tomarkirî",
+  "getting_started.developers": "Pêşdebir",
+  "getting_started.directory": "Rêgeha profîlê",
+  "getting_started.documentation": "Pelbend",
+  "getting_started.heading": "Destpêkirin",
+  "getting_started.invite": "Mirovan Vexwîne",
+  "getting_started.open_source_notice": "Mastodon nermalava çavkaniya vekirî ye. Tu dikarî pirsgirêkan li ser GitHub-ê ragihînî di {github} de an jî dikarî tevkariyê bikî.",
+  "getting_started.security": "Sazkariyên ajimêr",
+  "getting_started.terms": "Mercên karûberan",
+  "hashtag.column_header.tag_mode.all": "û {additional}",
+  "hashtag.column_header.tag_mode.any": "an {additional}",
+  "hashtag.column_header.tag_mode.none": "bêyî {additional}",
+  "hashtag.column_settings.select.no_options_message": "Ti pêşniyar nehatin dîtin",
+  "hashtag.column_settings.select.placeholder": "Têkeve hashtagê…",
+  "hashtag.column_settings.tag_mode.all": "Van hemûyan",
+  "hashtag.column_settings.tag_mode.any": "Yek ji van",
+  "hashtag.column_settings.tag_mode.none": "Ne yek ji van",
+  "hashtag.column_settings.tag_toggle": "Ji bo vê stûnê hin pêvekan tevlî bike",
+  "home.column_settings.basic": "Bingehîn",
+  "home.column_settings.show_reblogs": "Bilindkirinan nîşan bike",
+  "home.column_settings.show_replies": "Bersivan nîşan bide",
+  "home.hide_announcements": "Reklaman veşêre",
+  "home.show_announcements": "Reklaman nîşan bide",
+  "intervals.full.days": "{number, plural, one {# roj} other {# roj}}",
+  "intervals.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}}\n \n",
+  "intervals.full.minutes": "{number, plural, one {# xulek} other {# xulek}}",
+  "keyboard_shortcuts.back": "Vegere paşê",
+  "keyboard_shortcuts.blocked": "Rêzoka bikarhênerên astengkirî veke",
+  "keyboard_shortcuts.boost": "Şandiyê bilind bike",
+  "keyboard_shortcuts.column": "Stûna balkişandinê",
+  "keyboard_shortcuts.compose": "Bal bikşîne cîhê nivîsê/textarea",
+  "keyboard_shortcuts.description": "Danasîn",
+  "keyboard_shortcuts.direct": "Ji stûnê peyamên rasterast veke",
+  "keyboard_shortcuts.down": "Di rêzokê de dakêşe jêr",
+  "keyboard_shortcuts.enter": "Şandiyê veke",
+  "keyboard_shortcuts.favourite": "Şandiya bijarte",
+  "keyboard_shortcuts.favourites": "Rêzokên bijarte veke",
+  "keyboard_shortcuts.federated": "Demnameyê federalîkirî veke",
+  "keyboard_shortcuts.heading": "Kurterêyên klavyeyê",
+  "keyboard_shortcuts.home": "Demnameyê veke",
+  "keyboard_shortcuts.hotkey": "Bişkoka kurterê",
+  "keyboard_shortcuts.legend": "Vê çîrokê nîşan bike",
+  "keyboard_shortcuts.local": "Demnameya herêmî veke",
+  "keyboard_shortcuts.mention": "Qala nivîskarî/ê bike",
+  "keyboard_shortcuts.muted": "Rêzoka bikarhênerên bêdeng kirî veke",
+  "keyboard_shortcuts.my_profile": "Profîla xwe veke",
+  "keyboard_shortcuts.notifications": "Stûnê agahdariyan veke",
+  "keyboard_shortcuts.open_media": "Medya veke",
+  "keyboard_shortcuts.pinned": "Şandiyên derzîkirî veke",
+  "keyboard_shortcuts.profile": "Profîla nivîskaran veke",
+  "keyboard_shortcuts.reply": "Bersivê bide şandiyê",
+  "keyboard_shortcuts.requests": "Rêzoka daxwazên şopandinê veke",
+  "keyboard_shortcuts.search": "Bal bide şivika lêgerînê",
+  "keyboard_shortcuts.spoilers": "Zeviya hişyariya naverokê nîşan bide/veşêre",
+  "keyboard_shortcuts.start": "Stûna \"destpêkê\" veke",
+  "keyboard_shortcuts.toggle_hidden": "Nivîsa paş hişyariya naverokê nîşan bide/veşêre",
+  "keyboard_shortcuts.toggle_sensitivity": "Medyayê nîşan bide/veşêre",
+  "keyboard_shortcuts.toot": "Dest bi şandiyeke nû bike",
+  "keyboard_shortcuts.unfocus": "Bal nede cîhê nivîsê /lêgerînê",
+  "keyboard_shortcuts.up": "Di rêzokê de rake jor",
+  "lightbox.close": "Bigire",
+  "lightbox.compress": "Qutîya wêneya nîşan dike bitepisîne",
+  "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike",
+  "lightbox.next": "Pêş",
+  "lightbox.previous": "Paş",
+  "lists.account.add": "Tevlî rêzokê bike",
+  "lists.account.remove": "Ji rêzokê rake",
+  "lists.delete": "Rêzokê jê bibe",
+  "lists.edit": "Rêzokê serrast bike",
+  "lists.edit.submit": "Sernavê biguherîne",
+  "lists.new.create": "Rêzokê tevlî bike",
+  "lists.new.title_placeholder": "Sernavê rêzoka nû",
+  "lists.replies_policy.followed": "Bikarhênereke şopandî",
+  "lists.replies_policy.list": "Endamên rêzokê",
+  "lists.replies_policy.none": "Ne yek",
+  "lists.replies_policy.title": "Bersivan nîşan bide:",
+  "lists.search": "Di navbera kesên ku te dişopînin bigere",
+  "lists.subheading": "Rêzokên te",
+  "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}",
+  "loading_indicator.label": "Tê barkirin...",
+  "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}",
+  "missing_indicator.label": "Nehate dîtin",
+  "missing_indicator.sublabel": "Ev çavkanî nehat dîtin",
+  "mute_modal.duration": "Dem",
+  "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?",
+  "mute_modal.indefinite": "Nediyar",
+  "navigation_bar.apps": "Sepana mobîl",
+  "navigation_bar.blocks": "Bikarhênerên astengkirî",
+  "navigation_bar.bookmarks": "Şûnpel",
+  "navigation_bar.community_timeline": "Demnameya herêmî",
+  "navigation_bar.compose": "Şandiyeke nû binivsîne",
+  "navigation_bar.direct": "Peyamên rasterast",
+  "navigation_bar.discover": "Vekolê",
+  "navigation_bar.domain_blocks": "Navparên astengkirî",
+  "navigation_bar.edit_profile": "Profîl serrast bike",
+  "navigation_bar.explore": "Vekole",
+  "navigation_bar.favourites": "Bijarte",
+  "navigation_bar.filters": "Peyvên bêdengkirî",
+  "navigation_bar.follow_requests": "Daxwazên şopandinê",
+  "navigation_bar.follows_and_followers": "Şopandin û şopîner",
+  "navigation_bar.info": "Derbarê vî rajekarî",
+  "navigation_bar.keyboard_shortcuts": "Bişkoka kurterê",
+  "navigation_bar.lists": "Rêzok",
+  "navigation_bar.logout": "Derkeve",
+  "navigation_bar.mutes": "Bikarhênerên bêdengkirî",
+  "navigation_bar.personal": "Kesanî",
+  "navigation_bar.pins": "Şandiya derzîkirî",
+  "navigation_bar.preferences": "Sazkarî",
+  "navigation_bar.public_timeline": "Demnameyê federalîkirî",
+  "navigation_bar.security": "Ewlehî",
+  "notification.admin.sign_up": "{name} tomar bû",
+  "notification.favourite": "{name} şandiya te hez kir",
+  "notification.follow": "{name} te şopand",
+  "notification.follow_request": "{name} dixwazê te bişopîne",
+  "notification.mention": "{name} qale te kir",
+  "notification.own_poll": "Rapirsîya te qediya",
+  "notification.poll": "Rapirsiyeke ku te deng daye qediya",
+  "notification.reblog": "{name} şandiya te bilind kir",
+  "notification.status": "{name} niha şand",
+  "notification.update": "{name} şandiyek serrast kir",
+  "notifications.clear": "Agahdariyan pak bike",
+  "notifications.clear_confirmation": "Bi rastî tu dixwazî bi awayekî dawî hemû agahdariyên xwe pak bikî?",
+  "notifications.column_settings.admin.sign_up": "Tomarkirinên nû:",
+  "notifications.column_settings.alert": "Agahdariyên sermaseyê",
+  "notifications.column_settings.favourite": "Bijarte:",
+  "notifications.column_settings.filter_bar.advanced": "Hemû beşan nîşan bide",
+  "notifications.column_settings.filter_bar.category": "Şivika parzûna bilêz",
+  "notifications.column_settings.filter_bar.show_bar": "Darika parzûnê nîşan bide",
+  "notifications.column_settings.follow": "Şopînerên nû:",
+  "notifications.column_settings.follow_request": "Daxwazên şopandinê nû:",
+  "notifications.column_settings.mention": "Qalkirin:",
+  "notifications.column_settings.poll": "Encamên rapirsiyê:",
+  "notifications.column_settings.push": "Agahdarîyên yekser",
+  "notifications.column_settings.reblog": "Bilindkirî:",
+  "notifications.column_settings.show": "Di nav stûnê de nîşan bike",
+  "notifications.column_settings.sound": "Deng lêxe",
+  "notifications.column_settings.status": "Şandiyên nû:",
+  "notifications.column_settings.unread_notifications.category": "Agahdariyên nexwendî",
+  "notifications.column_settings.unread_notifications.highlight": "Agahiyên nexwendî nîşan bike",
+  "notifications.column_settings.update": "Serrastkirin:",
+  "notifications.filter.all": "Hemû",
+  "notifications.filter.boosts": "Bilindkirî",
+  "notifications.filter.favourites": "Bijarte",
+  "notifications.filter.follows": "Şopîner",
+  "notifications.filter.mentions": "Qalkirin",
+  "notifications.filter.polls": "Encamên rapirsiyê",
+  "notifications.filter.statuses": "Ji kesên tu dişopînî re rojanekirin",
+  "notifications.grant_permission": "Destûrê bide.",
+  "notifications.group": "{count} agahdarî",
+  "notifications.mark_as_read": "Hemî agahdarîya wek xwendî nîşan bike",
+  "notifications.permission_denied": "Agahdarîyên sermaseyê naxebite ji ber ku berê de daxwazî ya destûr dayîna gerokê hati bû red kirin",
+  "notifications.permission_denied_alert": "Agahdarîyên sermaseyê nay çalak kirin, ji ber ku destûr kirina gerokê pêşî de hati bû red kirin",
+  "notifications.permission_required": "Agahdarîyên sermaseyê naxebite çunkî mafê pêwîst dike nehatiye dayîn.",
+  "notifications_permission_banner.enable": "Agahdarîyên sermaseyê çalak bike",
+  "notifications_permission_banner.how_to_control": "Da ku agahdariyên mastodon bistînî gava ne vekirî be. Agahdariyên sermaseyê çalak bike\n Tu dikarî agahdariyên sermaseyê bi rê ve bibî ku bi hemû cureyên çalakiyên ên ku agahdariyan rû didin ku bi riya tikandînê li ser bişkoka {icon} çalak dibe.",
+  "notifications_permission_banner.title": "Tu tiştî bîr neke",
+  "picture_in_picture.restore": "Vegerîne paş",
+  "poll.closed": "Girtî",
+  "poll.refresh": "Nû bike",
+  "poll.total_people": "{count, plural, one {# kes} other {# kes}}",
+  "poll.total_votes": "{count, plural, one {# deng} other {# deng}}",
+  "poll.vote": "Deng bide",
+  "poll.voted": "Te dengê xwe da vê bersivê",
+  "poll.votes": "{votes, plural, one {# deng} other {# deng}}",
+  "poll_button.add_poll": "Rapirsîyek zêde bike",
+  "poll_button.remove_poll": "Rapirsî yê rake",
+  "privacy.change": "Nepênîtiya şandiyan biguherîne",
+  "privacy.direct.long": "Tenê ji bo bikarhênerên qalkirî tê dîtin",
+  "privacy.direct.short": "Taybet",
+  "privacy.private.long": "Tenê bo şopîneran xuyabar e",
+  "privacy.private.short": "Tenê şopîneran",
+  "privacy.public.long": "Ji bo herkesî li berçav e, di demnameyên gelemperî de dê xûyakirin",
+  "privacy.public.short": "Gelemperî",
+  "privacy.unlisted.long": "Ji herkesî ra tê xûya, lê demnameyê gelemperî ra nay xûyakirin",
+  "privacy.unlisted.short": "Nerêzok",
+  "refresh": "Nû bike",
+  "regeneration_indicator.label": "Tê barkirin…",
+  "regeneration_indicator.sublabel": "Mala te da tê amedekirin!",
+  "relative_time.days": "{number}r",
+  "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê",
+  "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê",
+  "relative_time.full.just_now": "hema niha",
+  "relative_time.full.minutes": "{number, plural, one {# xulek} other {# xulek}} berê",
+  "relative_time.full.seconds": "{number, plural, one {# çirke} other {# çirke}} berê",
+  "relative_time.hours": "{number}d",
+  "relative_time.just_now": "niha",
+  "relative_time.minutes": "{number}x",
+  "relative_time.seconds": "{number}ç",
+  "relative_time.today": "îro",
+  "reply_indicator.cancel": "Dev jê berde",
+  "report.block": "Asteng bike",
+  "report.block_explanation": "Tu yê şandiyên wan nebînî. Ew ê nikaribin şandiyên te bibînin an jî te bişopînin. Ew ê bizanibin ku ew hatine astengkirin.",
+  "report.categories.other": "Yên din",
+  "report.categories.spam": "Nexwestî (Spam)",
+  "report.categories.violation": "Naverok yek an çend rêbazên rajekar binpê dike",
+  "report.category.subtitle": "Baştirîn lihevhatin hilbijêre",
+  "report.category.title": "Ji me re bêje ka çi diqewime bi vê {type} re",
+  "report.category.title_account": "profîl",
+  "report.category.title_status": "şandî",
+  "report.close": "Qediya",
+  "report.comment.title": "Tiştek din heye ku tu difikirî ku divê em zanibin?",
+  "report.forward": "Biçe bo {target}",
+  "report.forward_hint": "Ajimêr ji rajekarek din da ne. Tu kopîyeka anonîm ya raporê bişînî li wur?",
+  "report.mute": "Bêdeng bike",
+  "report.mute_explanation": "Tê yê şandiyên wan nebînî. Ew hin jî dikarin te bişopînin û şandiyên te bibînin û wê nizanibin ku ew hatine bêdengkirin.",
+  "report.next": "Pêş",
+  "report.placeholder": "Şiroveyên zêde",
+  "report.reasons.dislike": "Ez jê hez nakim",
+  "report.reasons.dislike_description": "Ew ne tiştek e ku tu dixwazî bibînî",
+  "report.reasons.other": "Tiştekî din e",
+  "report.reasons.other_description": "Pirsgirêk di kategoriyên din de cih nagire",
+  "report.reasons.spam": "Ew spam e",
+  "report.reasons.spam_description": "Girêdanên xerab, tevlêbûna sexte, an jî bersivên dubarekirî",
+  "report.reasons.violation": "Ew rêzikên rajekar binpê dike",
+  "report.reasons.violation_description": "Tu dizanî ku ew rêzikên taybetiyê binpê dike",
+  "report.rules.subtitle": "Hemûyên ku têne sepandin hibijêre",
+  "report.rules.title": "Kîjan rêzik têne binpêkirin?",
+  "report.statuses.subtitle": "Hemûyên ku têne sepandin hibijêre",
+  "report.statuses.title": "Tu şandiyên ku vê ragihandinê piştgirî dikin hene?",
+  "report.submit": "Bişîne",
+  "report.target": "Ragihandin {target}",
+  "report.thanks.take_action": "Li vir vebijêrkên te hene ji bo kontrolkirina tiştê ku tu li se Mastodon dibînî:",
+  "report.thanks.take_action_actionable": "Dema ku em vê yekê dinirxînin, tu dikarî li dijî @{name} tedbîran bigirî:",
+  "report.thanks.title": "Tu naxwazî vê bibînî?",
+  "report.thanks.title_actionable": "Spas ji bo ragihandina te, em ê binirxînin.",
+  "report.unfollow": "@{name} neşopîne",
+  "report.unfollow_explanation": "Tê vê ajimêrê dişopînî. Ji bo ku êdî şandiyên wan di rojeva xwe de nebînî, wan neşopîne.",
+  "search.placeholder": "Bigere",
+  "search_popout.search_format": "Dirûva lêgerîna pêşketî",
+  "search_popout.tips.full_text": "Nivîsên hêsan, şandiyên ku te nivîsandiye, bijare kiriye, bilind kiriye an jî yên behsa te kirine û her wiha navê bikarhêneran, navên xûya dike û hashtagan vedigerîne.",
+  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.status": "şandî",
+  "search_popout.tips.text": "Nivîsên hêsan, navên xûya ên ku li hev hatî, bikarhêner û hashtagan vedigerîne",
+  "search_popout.tips.user": "bikarhêner",
+  "search_results.accounts": "Mirov",
+  "search_results.all": "Hemû",
+  "search_results.hashtags": "Hashtag",
+  "search_results.nothing_found": "Ji bo van peyvên lêgerînê tiştek nehate dîtin",
+  "search_results.statuses": "Şandî",
+  "search_results.statuses_fts_disabled": "Di vê rajekara Mastodonê da lêgerîna şandîyên li gorî naveroka wan ne çalak e.",
+  "search_results.total": "{count, number} {count, plural, one {encam} other {encam}}",
+  "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke",
+  "status.admin_status": "Vê şandîyê di navrûya venihêrtinê de veke",
+  "status.block": "@{name} asteng bike",
+  "status.bookmark": "Şûnpel",
+  "status.cancel_reblog_private": "Bilind neke",
+  "status.cannot_reblog": "Ev şandî nayê bilindkirin",
+  "status.copy": "Girêdanê jê bigire bo weşankirinê",
+  "status.delete": "Jê bibe",
+  "status.detailed_status": "Dîtina axaftina berfireh",
+  "status.direct": "Peyama rasterast @{name}",
+  "status.edit": "Serrast bike",
+  "status.edited": "Di {date} de hate serrastkirin",
+  "status.edited_x_times": "{count, plural, one {{count} car} other {{count} car}} hate serrastkirin",
+  "status.embed": "Hedimandî",
+  "status.favourite": "Bijarte",
+  "status.filtered": "Parzûnkirî",
+  "status.history.created": "{name} {date} afirand",
+  "status.history.edited": "{name} {date} serrast kir",
+  "status.load_more": "Bêtir bar bike",
+  "status.media_hidden": "Medya veşartî ye",
+  "status.mention": "Qal @{name} bike",
+  "status.more": "Bêtir",
+  "status.mute": "@{name} Bêdeng bike",
+  "status.mute_conversation": "Axaftinê bêdeng bike",
+  "status.open": "Vê şandiyê berferh bike",
+  "status.pin": "Li ser profîlê derzî bike",
+  "status.pinned": "Şandiya derzîkirî",
+  "status.read_more": "Bêtir bixwîne",
+  "status.reblog": "Bilind bike",
+  "status.reblog_private": "Bi dîtina resen bilind bike",
+  "status.reblogged_by": "{name} bilind kir",
+  "status.reblogs.empty": "Kesekî hin ev şandî bilind nekiriye. Gava kesek bilind bike, ew ên li vir werin xuyakirin.",
+  "status.redraft": "Jê bibe & ji nû ve reşnivîs bike",
+  "status.remove_bookmark": "Şûnpêlê jê rake",
+  "status.reply": "Bersivê bide",
+  "status.replyAll": "Mijarê bibersivîne",
+  "status.report": "{name} gilî bike",
+  "status.sensitive_warning": "Naveroka hestiyarî",
+  "status.share": "Parve bike",
+  "status.show_less": "Kêmtir nîşan bide",
+  "status.show_less_all": "Ji bo hemîyan kêmtir nîşan bide",
+  "status.show_more": "Hêj zehftir nîşan bide",
+  "status.show_more_all": "Bêtir nîşan bide bo hemûyan",
+  "status.show_thread": "Mijarê nîşan bide",
+  "status.uncached_media_warning": "Tune ye",
+  "status.unmute_conversation": "Axaftinê bêdeng neke",
+  "status.unpin": "Şandiya derzîkirî ji profîlê rake",
+  "suggestions.dismiss": "Pêşniyarê paşguh bike",
+  "suggestions.header": "Dibe ku bala te bikşîne…",
+  "tabs_bar.federated_timeline": "Giştî",
+  "tabs_bar.home": "Serrûpel",
+  "tabs_bar.local_timeline": "Herêmî",
+  "tabs_bar.notifications": "Agahdarî",
+  "tabs_bar.search": "Bigere",
+  "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye",
+  "time_remaining.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} maye",
+  "time_remaining.minutes": "{number, plural, one {# xulek} other {# xulek}} maye",
+  "time_remaining.moments": "Demên mayî",
+  "time_remaining.seconds": "{number, plural, one {# çirke} other {# çirke}} maye",
+  "timeline_hint.remote_resource_not_displayed": "{resource} Ji rajekerên din nayê dîtin.",
+  "timeline_hint.resources.followers": "Şopîner",
+  "timeline_hint.resources.follows": "Şopîner",
+  "timeline_hint.resources.statuses": "Şandiyên kevn",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} kes} other {{counter} kes}} diaxivin",
+  "trends.trending_now": "Rojev",
+  "ui.beforeunload": "Ger ji Mastodonê veketi wê reşnivîsa te jî winda bibe.",
+  "units.short.billion": "{count}B",
+  "units.short.million": "{count}M",
+  "units.short.thousand": "{count}H",
+  "upload_area.title": "Ji bo barkirinê kaş bike û deyne",
+  "upload_button.label": "Wêne, vîdeoyek an jî pelê dengî tevlî bike",
+  "upload_error.limit": "Sînora barkirina pelan derbas bû.",
+  "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.",
+  "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike",
+  "upload_form.description": "Ji bona astengdarên dîtinê re vebêje",
+  "upload_form.edit": "Serrast bike",
+  "upload_form.thumbnail": "Wêneyê biçûk biguherîne",
+  "upload_form.undo": "Jê bibe",
+  "upload_form.video_description": "Ji bo kesên kerr û lalan pênase bike",
+  "upload_modal.analyzing_picture": "Wêne tê analîzkirin…",
+  "upload_modal.apply": "Bisepîne",
+  "upload_modal.applying": "Tê sepandin…",
+  "upload_modal.choose_image": "Wêneyê hilbijêre",
+  "upload_modal.description_placeholder": "Rovîyek qehweyî û bilez li ser kûçikê tîral banz dide",
+  "upload_modal.detect_text": "Ji nivîsa wêneyê re serwext be",
+  "upload_modal.edit_media": "Medyayê sererast bike",
+  "upload_modal.hint": "Ji bo hilbijartina xala navendê her tim dîmenê piçûk de pêşdîtina çerxê bitikîne an jî kaş bike.",
+  "upload_modal.preparing_ocr": "OCR dihê amadekirin…",
+  "upload_modal.preview_label": "Pêşdîtin ({ratio})",
+  "upload_progress.label": "Tê barkirin...",
+  "video.close": "Vîdyoyê bigire",
+  "video.download": "Pelê daxe",
+  "video.exit_fullscreen": "Ji dîmendera tijî derkeve",
+  "video.expand": "Vîdyoyê berferh bike",
+  "video.fullscreen": "Dimendera tijî",
+  "video.hide": "Vîdyo veşêre",
+  "video.mute": "Dengê qut bike",
+  "video.pause": "Rawestîne",
+  "video.play": "Vêxe",
+  "video.unmute": "Dengê qut neke"
 }
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 0e8aa9cf8..ca6eed5c1 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -18,12 +18,12 @@
   "account.followers": "Holyoryon",
   "account.followers.empty": "Ny wra nagonan holya'n devnydhyer ma hwath.",
   "account.followers_counter": "{count, plural, one {{counter} Holyer} other {{counter} Holyer}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {Ow holya {counter}} other {Ow holya {counter}}}",
   "account.follows.empty": "Ny wra'n devnydhyer ma holya nagonan hwath.",
   "account.follows_you": "Y'th hol",
   "account.hide_reblogs": "Kudha kenerthow a @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Bew diwettha",
   "account.link_verified_on": "Perghenogeth an kolm ma a veu checkys dhe {date}",
   "account.locked_info": "Studh privetter an akont ma yw alhwedhys. An perghen a wra dasweles dre leuv piw a yll aga holya.",
   "account.media": "Myski",
@@ -32,7 +32,6 @@
   "account.mute": "Tawhe @{name}",
   "account.mute_notifications": "Tawhe gwarnyansow a @{name}",
   "account.muted": "Tawhes",
-  "account.never_active": "Nevra",
   "account.posts": "Postow",
   "account.posts_with_replies": "Postow ha gorthebow",
   "account.report": "Reportya @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Tout} other {{counter} Tout}}",
   "account.unblock": "Anlettya @{name}",
   "account.unblock_domain": "Anlettya gorfarth {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Na wra diskwedhes yn profil",
   "account.unfollow": "Anholya",
   "account.unmute": "Antawhe @{name}",
   "account.unmute_notifications": "Antawhe gwarnyansow a @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klyckya dhe geworra noten",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Diskudha",
   "navigation_bar.domain_blocks": "Gorfarthow lettys",
   "navigation_bar.edit_profile": "Golegi profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Re drudh",
   "navigation_bar.filters": "Geryow tawhes",
   "navigation_bar.follow_requests": "Govynnow holya",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/locale-data/sa.js b/app/javascript/mastodon/locales/locale-data/sa.js
new file mode 100644
index 000000000..946dfde0f
--- /dev/null
+++ b/app/javascript/mastodon/locales/locale-data/sa.js
@@ -0,0 +1,97 @@
+/*eslint eqeqeq: "off"*/
+/*eslint no-nested-ternary: "off"*/
+/*eslint quotes: "off"*/
+/*eslint comma-dangle: "off"*/
+/*eslint semi: "off"*/
+
+export default [
+  {
+    locale: "sa",
+    fields: {
+      year: {
+        displayName: "year",
+        relative: {
+          0: "this year",
+          1: "next year",
+          "-1": "last year"
+        },
+        relativeTime: {
+          future: {
+            other: "+{0} y"
+          },
+          past: {
+            other: "-{0} y"
+          }
+        }
+      },
+      month: {
+        displayName: "month",
+        relative: {
+          0: "this month",
+          1: "next month",
+          "-1": "last month"
+        },
+        relativeTime: {
+          future: {
+            other: "+{0} m"
+          },
+          past: {
+            other: "-{0} m"
+          }
+        }
+      },
+      day: {
+        displayName: "day",
+        relative: {
+          0: "अद्य",
+          1: "श्वः",
+          "-1": "गतदिनम्"
+        },
+        relativeTime: {
+          future: {
+            other: "+{0} d"
+          },
+          past: {
+            other: "-{0} d"
+          }
+        }
+      },
+      hour: {
+        displayName: "hour",
+        relativeTime: {
+          future: {
+            other: "+{0} h"
+          },
+          past: {
+            other: "-{0} h"
+          }
+        }
+      },
+      minute: {
+        displayName: "minute",
+        relativeTime: {
+          future: {
+            other: "+{0} min"
+          },
+          past: {
+            other: "-{0} min"
+          }
+        }
+      },
+      second: {
+        displayName: "second",
+        relative: {
+          0: "now"
+        },
+        relativeTime: {
+          future: {
+            other: "+{0} s"
+          },
+          past: {
+            other: "-{0} s"
+          }
+        }
+      }
+    }
+  }
+]
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 600f4249e..bb432a8af 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Užtildytas",
-  "account.never_active": "Niekada",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unhide {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Nebesekti",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 07d93f563..f16df5423 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -18,12 +18,12 @@
   "account.followers": "Sekotāji",
   "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.",
   "account.followers_counter": "{count, plural, one {{counter} Sekotājs} other {{counter} Sekotāji}}",
+  "account.following": "Seko",
   "account.following_counter": "{count, plural, one {{counter} Sekojošs} other {{counter} Sekojoši}}",
   "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
   "account.follows_you": "Seko tev",
   "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}",
   "account.joined": "Pievienojās {date}",
-  "account.last_status": "Pēdējā aktivitāte",
   "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}",
   "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.",
   "account.media": "Mediji",
@@ -32,7 +32,6 @@
   "account.mute": "Apklusināt @{name}",
   "account.mute_notifications": "Nerādīt paziņojumus no @{name}",
   "account.muted": "Apklusināts",
-  "account.never_active": "Nekad",
   "account.posts": "Ziņas",
   "account.posts_with_replies": "Ziņas un atbildes",
   "account.report": "Ziņot par lietotāju @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} ziņa} other {{counter} ziņas}}",
   "account.unblock": "Atbloķēt lietotāju @{name}",
   "account.unblock_domain": "Atbloķēt domēnu {domain}",
+  "account.unblock_short": "Atbloķēt",
   "account.unendorse": "Neattēlot profilā",
   "account.unfollow": "Pārstāt sekot",
   "account.unmute": "Noņemt apklusinājumu @{name}",
   "account.unmute_notifications": "Rādīt paziņojumus no lietotāja @{name}",
+  "account.unmute_short": "Ieslēgt skaņu",
   "account_note.placeholder": "Noklikšķiniet, lai pievienotu piezīmi",
   "admin.dashboard.daily_retention": "Lietotāju saglabāšanas rādītājs dienā pēc reģistrēšanās",
   "admin.dashboard.monthly_retention": "Lietotāju saglabāšanas rādītājs mēnesī pēc reģistrēšanās",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Atklāt",
   "navigation_bar.domain_blocks": "Bloķētie domēni",
   "navigation_bar.edit_profile": "Rediģēt profilu",
+  "navigation_bar.explore": "Pārlūkot",
   "navigation_bar.favourites": "Izlases",
   "navigation_bar.filters": "Klusināti vārdi",
   "navigation_bar.follow_requests": "Sekošanas pieprasījumi",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 54eae6e6d..c6f097134 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -18,12 +18,12 @@
   "account.followers": "Следбеници",
   "account.followers.empty": "Никој не го следи овој корисник сеуште.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "Корисникот не следи никој сеуште.",
   "account.follows_you": "Те следи тебе",
   "account.hide_reblogs": "Сокриј буст од @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Последно активен",
   "account.link_verified_on": "Сопстевноста на овај линк беше проверен на {date}",
   "account.locked_info": "Статусот на приватност на овај корисник е сетиран како заклучен. Корисникот одлучува кој можи да го следи него.",
   "account.media": "Медија",
@@ -32,7 +32,6 @@
   "account.mute": "Зачути го @{name}",
   "account.mute_notifications": "Исклучи известувања од @{name}",
   "account.muted": "Зачутено",
-  "account.never_active": "Никогаш",
   "account.posts": "Тутови",
   "account.posts_with_replies": "Тутови и реплики",
   "account.report": "Пријави @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Одблокирај @{name}",
   "account.unblock_domain": "Прикажи {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Не прикажувај на профил",
   "account.unfollow": "Одследи",
   "account.unmute": "Зачути го @{name}",
   "account.unmute_notifications": "Исклучи известувања од @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Уреди профил",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Омилени",
   "navigation_bar.filters": "Замолќени зборови",
   "navigation_bar.follow_requests": "Следи покани",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 766bdfafd..1a0f4ac38 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -18,12 +18,12 @@
   "account.followers": "പിന്തുടരുന്നവർ",
   "account.followers.empty": "ഈ ഉപയോക്താവിനെ ആരും ഇതുവരെ പിന്തുടരുന്നില്ല.",
   "account.followers_counter": "{count, plural, one {{counter} പിന്തുടരുന്നവർ} other {{counter} പിന്തുടരുന്നവർ}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} പിന്തുടരുന്നു} other {{counter} പിന്തുടരുന്നു}}",
   "account.follows.empty": "ഈ ഉപയോക്താവ് ആരേയും ഇതുവരെ പിന്തുടരുന്നില്ല.",
   "account.follows_you": "നിങ്ങളെ പിന്തുടരുന്നു",
   "account.hide_reblogs": "@{name} ബൂസ്റ്റ് ചെയ്തവ മറയ്കുക",
   "account.joined": "{date} ൽ ചേർന്നു",
-  "account.last_status": "അവസാനം കണ്ടത്",
   "account.link_verified_on": "ഈ ലിങ്കിന്റെ ഉടമസ്തത {date} ഇൽ ഉറപ്പാക്കിയതാണ്",
   "account.locked_info": "ഈ അംഗത്വത്തിന്റെ സ്വകാര്യതാ നിലപാട് അനുസരിച്ച് പിന്തുടരുന്നവരെ തിരഞ്ഞെടുക്കാനുള്ള വിവേചനാധികാരം ഉടമസ്ഥനിൽ നിഷിപ്തമായിരിക്കുന്നു.",
   "account.media": "മീഡിയ",
@@ -32,7 +32,6 @@
   "account.mute": "@{name}-നെ(യെ) നിശ്ശബ്ദമാക്കൂ",
   "account.mute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ നിശബ്ദമാക്കുക",
   "account.muted": "നിശ്ശബ്ദമാക്കിയിരിക്കുന്നു",
-  "account.never_active": "ഒരിക്കലും ഇല്ല",
   "account.posts": "പോസ്റ്റുകൾ",
   "account.posts_with_replies": "പോസ്റ്റുകളും മറുപടികളും",
   "account.report": "റിപ്പോർട്ട് ചെയ്യുക @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} ടൂട്ട്} other {{counter} ടൂട്ടുകൾ}}",
   "account.unblock": "@{name} തടഞ്ഞത് മാറ്റുക",
   "account.unblock_domain": "{domain} എന്ന മേഖല വെളിപ്പെടുത്തുക",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "പ്രൊഫൈലിൽ പ്രകടമാക്കരുത്",
   "account.unfollow": "പിന്തുടരുന്നത് നിര്‍ത്തുക",
   "account.unmute": "നിശ്ശബ്ദമാക്കുന്നത് നിർത്തുക @{name}",
   "account.unmute_notifications": "@{name} യിൽ നിന്നുള്ള അറിയിപ്പുകൾ പ്രസിദ്ധപ്പെടുത്തുക",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "കുറിപ്പ് ചേർക്കാൻ ക്ലിക്കുചെയ്യുക",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "കണ്ടെത്തുക",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "പ്രൊഫൈൽ തിരുത്തുക",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "പ്രിയപ്പെട്ടവ",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "പിന്തുടരാനുള്ള അഭ്യർത്ഥനകൾ",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index 9bbd24777..a731ff87b 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -18,12 +18,12 @@
   "account.followers": "अनुयायी",
   "account.followers.empty": "ह्या वापरकर्त्याचा आतापर्यंत कोणी अनुयायी नाही.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "हा वापरकर्ता अजूनपर्यंत कोणाचा अनुयायी नाही.",
   "account.follows_you": "तुमचा अनुयायी आहे",
   "account.hide_reblogs": "@{name} पासून सर्व बूस्ट लपवा",
   "account.joined": "Joined {date}",
-  "account.last_status": "शेवटचे सक्रिय",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "दृक्‌‌श्राव्य मजकूर",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} ला मूक कारा",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} ला ब्लॉक करा",
   "account.unblock_domain": "उघड करा {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "अनुयायी असणे थांबवा",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 42dd34131..96d300492 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -18,12 +18,12 @@
   "account.followers": "Pengikut",
   "account.followers.empty": "Belum ada yang mengikuti pengguna ini.",
   "account.followers_counter": "{count, plural, one {{counter} Pengikut} other {{counter} Pengikut}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Diikuti} other {{counter} Diikuti}}",
   "account.follows.empty": "Pengguna ini belum mengikuti sesiapa.",
   "account.follows_you": "Mengikuti anda",
   "account.hide_reblogs": "Sembunyikan galakan daripada @{name}",
   "account.joined": "Sertai pada {date}",
-  "account.last_status": "Terakhir aktif",
   "account.link_verified_on": "Pemilikan pautan ini telah disemak pada {date}",
   "account.locked_info": "Status privasi akaun ini dikunci. Pemiliknya menyaring sendiri siapa yang boleh mengikutinya.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Bisukan @{name}",
   "account.mute_notifications": "Bisukan pemberitahuan daripada @{name}",
   "account.muted": "Dibisukan",
-  "account.never_active": "Jangan sesekali",
   "account.posts": "Hantaran",
   "account.posts_with_replies": "Hantaran dan balasan",
   "account.report": "Laporkan @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Hantaran} other {{counter} Hantaran}}",
   "account.unblock": "Nyahsekat @{name}",
   "account.unblock_domain": "Nyahsekat domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Jangan tampilkan di profil",
   "account.unfollow": "Nyahikut",
   "account.unmute": "Nyahbisukan @{name}",
   "account.unmute_notifications": "Nyahbisukan pemberitahuan daripada @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klik untuk tambah catatan",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Teroka",
   "navigation_bar.domain_blocks": "Domain disekat",
   "navigation_bar.edit_profile": "Sunting profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Kegemaran",
   "navigation_bar.filters": "Perkataan yang dibisukan",
   "navigation_bar.follow_requests": "Permintaan ikutan",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 6c01fcb5e..c77970f69 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -18,12 +18,12 @@
   "account.followers": "Volgers",
   "account.followers.empty": "Niemand volgt nog deze gebruiker.",
   "account.followers_counter": "{count, plural, one {{counter} volger} other {{counter} volgers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}",
   "account.follows.empty": "Deze gebruiker volgt nog niemand.",
   "account.follows_you": "Volgt jou",
   "account.hide_reblogs": "Boosts van @{name} verbergen",
   "account.joined": "Geregistreerd in {date}",
-  "account.last_status": "Laatst actief",
   "account.link_verified_on": "Eigendom van deze link is gecontroleerd op {date}",
   "account.locked_info": "De privacystatus van dit account is op besloten gezet. De eigenaar bepaalt handmatig wie hen kan volgen.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} negeren",
   "account.mute_notifications": "Meldingen van @{name} negeren",
   "account.muted": "Genegeerd",
-  "account.never_active": "Nooit",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots en reacties",
   "account.report": "@{name} rapporteren",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} toot} other {{counter} toots}}",
   "account.unblock": "@{name} deblokkeren",
   "account.unblock_domain": "{domain} niet langer verbergen",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Niet op profiel weergeven",
   "account.unfollow": "Ontvolgen",
   "account.unmute": "@{name} niet langer negeren",
   "account.unmute_notifications": "Meldingen van @{name} niet langer negeren",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klik om een opmerking toe te voegen",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Ontdekken",
   "navigation_bar.domain_blocks": "Geblokkeerde domeinen",
   "navigation_bar.edit_profile": "Profiel bewerken",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favorieten",
   "navigation_bar.filters": "Filters",
   "navigation_bar.follow_requests": "Volgverzoeken",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 5fdbfd25d..40a961c5e 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -18,12 +18,12 @@
   "account.followers": "Fylgjarar",
   "account.followers.empty": "Ingen fylgjer denne brukaren enno.",
   "account.followers_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjarar}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}",
   "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
   "account.follows_you": "Fylgjer deg",
   "account.hide_reblogs": "Gøym fremhevingar frå @{name}",
   "account.joined": "Vart med {date}",
-  "account.last_status": "Sist aktiv",
   "account.link_verified_on": "Eigarskap for denne lenkja vart sist sjekka {date}",
   "account.locked_info": "Denne kontoen er privat. Eigaren kan sjølv velja kven som kan fylgja han.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Målbind @{name}",
   "account.mute_notifications": "Målbind varsel frå @{name}",
   "account.muted": "Målbunden",
-  "account.never_active": "Aldri",
   "account.posts": "Tut",
   "account.posts_with_replies": "Tut og svar",
   "account.report": "Rapporter @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tut}}",
   "account.unblock": "Slutt å blokera @{name}",
   "account.unblock_domain": "Vis {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ikkje framhev på profil",
   "account.unfollow": "Slutt å fylgja",
   "account.unmute": "Av-demp @{name}",
   "account.unmute_notifications": "Vis varsel frå @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klikk for å leggja til merknad",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Oppdag",
   "navigation_bar.domain_blocks": "Skjulte domene",
   "navigation_bar.edit_profile": "Rediger profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favorittar",
   "navigation_bar.filters": "Målbundne ord",
   "navigation_bar.follow_requests": "Fylgjeførespurnader",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 2b90414f0..e4474f6d9 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -18,12 +18,12 @@
   "account.followers": "Følgere",
   "account.followers.empty": "Ingen følger denne brukeren ennå.",
   "account.followers_counter": "{count, plural, one {{counter} følger} other {{counter} følgere}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}",
   "account.follows.empty": "Denne brukeren følger ikke noen enda.",
   "account.follows_you": "Følger deg",
   "account.hide_reblogs": "Skjul fremhevinger fra @{name}",
   "account.joined": "Ble med den {date}",
-  "account.last_status": "Sist aktiv",
   "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}",
   "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Demp @{name}",
   "account.mute_notifications": "Ignorer varsler fra @{name}",
   "account.muted": "Dempet",
-  "account.never_active": "Aldri",
   "account.posts": "Innlegg",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "Rapportér @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tuter}}",
   "account.unblock": "Avblokker @{name}",
   "account.unblock_domain": "Vis {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Ikke vis frem på profilen",
   "account.unfollow": "Avfølg",
   "account.unmute": "Avdemp @{name}",
   "account.unmute_notifications": "Vis varsler fra @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klikk for å legge til et notat",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Oppdag",
   "navigation_bar.domain_blocks": "Skjulte domener",
   "navigation_bar.edit_profile": "Rediger profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favoritter",
   "navigation_bar.filters": "Stilnede ord",
   "navigation_bar.follow_requests": "Følgeforespørsler",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 282a0aa59..ff819e0fd 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidors",
   "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidors}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}",
   "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
   "account.follows_you": "Vos sèc",
   "account.hide_reblogs": "Rescondre los partatges de @{name}",
   "account.joined": "Arribèt en {date}",
-  "account.last_status": "Darrièra activitat",
   "account.link_verified_on": "La proprietat d’aqueste ligam foguèt verificada lo {date}",
   "account.locked_info": "L’estatut de privacitat del compte es configurat sus clavat. Lo proprietari causís qual pòt sègre son compte.",
   "account.media": "Mèdias",
@@ -32,7 +32,6 @@
   "account.mute": "Rescondre @{name}",
   "account.mute_notifications": "Rescondre las notificacions de @{name}",
   "account.muted": "Mes en silenci",
-  "account.never_active": "Jamai",
   "account.posts": "Tuts",
   "account.posts_with_replies": "Tuts e responsas",
   "account.report": "Senhalar @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Tut} other {{counter} Tuts}}",
   "account.unblock": "Desblocar @{name}",
   "account.unblock_domain": "Desblocar {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Mostrar pas pel perfil",
   "account.unfollow": "Quitar de sègre",
   "account.unmute": "Quitar de rescondre @{name}",
   "account.unmute_notifications": "Mostrar las notificacions de @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Clicar per ajustar una nòta",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Trobar",
   "navigation_bar.domain_blocks": "Domenis resconduts",
   "navigation_bar.edit_profile": "Modificar lo perfil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favorits",
   "navigation_bar.filters": "Mots ignorats",
   "navigation_bar.follow_requests": "Demandas d’abonament",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index a7e5313a3..088b5ff36 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 8cdaa7695..7ae2c8e53 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -18,12 +18,12 @@
   "account.followers": "Śledzący",
   "account.followers.empty": "Nikt jeszcze nie śledzi tego użytkownika.",
   "account.followers_counter": "{count, plural, one {{counter} śledzący} few {{counter} śledzących} many {{counter} śledzących} other {{counter} śledzących}}",
+  "account.following": "Śledzenie",
   "account.following_counter": "{count, plural, one {{counter} śledzony} few {{counter} śledzonych} many {{counter} śledzonych} other {{counter} śledzonych}}",
   "account.follows.empty": "Ten użytkownik nie śledzi jeszcze nikogo.",
   "account.follows_you": "Śledzi Cię",
   "account.hide_reblogs": "Ukryj podbicia od @{name}",
   "account.joined": "Dołączył(a) {date}",
-  "account.last_status": "Ostatnia aktywność",
   "account.link_verified_on": "Własność tego odnośnika została potwierdzona {date}",
   "account.locked_info": "To konto jest prywatne. Właściciel ręcznie wybiera kto może go śledzić.",
   "account.media": "Zawartość multimedialna",
@@ -32,7 +32,6 @@
   "account.mute": "Wycisz @{name}",
   "account.mute_notifications": "Wycisz powiadomienia o @{name}",
   "account.muted": "Wyciszony",
-  "account.never_active": "Nigdy",
   "account.posts": "Wpisy",
   "account.posts_with_replies": "Wpisy i odpowiedzi",
   "account.report": "Zgłoś @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} wpis} few {{counter} wpisy} many {{counter} wpisów} other {{counter} wpisów}}",
   "account.unblock": "Odblokuj @{name}",
   "account.unblock_domain": "Odblokuj domenę {domain}",
+  "account.unblock_short": "Odblokuj",
   "account.unendorse": "Przestań polecać",
   "account.unfollow": "Przestań śledzić",
   "account.unmute": "Cofnij wyciszenie @{name}",
   "account.unmute_notifications": "Cofnij wyciszenie powiadomień od @{name}",
+  "account.unmute_short": "Włącz dźwięki",
   "account_note.placeholder": "Naciśnij aby dodać notatkę",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -297,6 +298,7 @@
   "navigation_bar.discover": "Odkrywaj",
   "navigation_bar.domain_blocks": "Ukryte domeny",
   "navigation_bar.edit_profile": "Edytuj profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Ulubione",
   "navigation_bar.filters": "Wyciszone słowa",
   "navigation_bar.follow_requests": "Prośby o śledzenie",
@@ -414,7 +416,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Niebezpieczne linki, fałszywe zaangażowanie lub powtarzające się odpowiedzi",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index b9629ba70..18e429641 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidores",
   "account.followers.empty": "Nada aqui.",
   "account.followers_counter": "{count, plural, one {{counter} seguidor} other {{counter} seguidores}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}",
   "account.follows.empty": "Nada aqui.",
   "account.follows_you": "te segue",
   "account.hide_reblogs": "Ocultar boosts de @{name}",
   "account.joined": "Entrou em {date}",
-  "account.last_status": "Ativo pela última vez",
   "account.link_verified_on": "link verificado em {date}",
   "account.locked_info": "Trancado. Seguir requer aprovação manual do perfil.",
   "account.media": "Mídia",
@@ -32,7 +32,6 @@
   "account.mute": "Silenciar @{name}",
   "account.mute_notifications": "Ocultar notificações de @{name}",
   "account.muted": "Silenciado",
-  "account.never_active": "Nunca",
   "account.posts": "Toots",
   "account.posts_with_replies": "Com respostas",
   "account.report": "Denunciar @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Desbloquear domínio {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Remover",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Dessilenciar @{name}",
   "account.unmute_notifications": "Mostrar notificações de @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Nota pessoal sobre este perfil aqui",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição",
@@ -186,10 +187,10 @@
   "error.unexpected_crash.next_steps_addons": "Tente desativá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar dados do erro para área de transferência",
   "errors.unexpected_crash.report_issue": "Reportar problema",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
+  "explore.search_results": "Resultado da pesquisa",
+  "explore.suggested_follows": "Para você",
+  "explore.title": "Explorar",
+  "explore.trending_links": "Novidades",
   "explore.trending_statuses": "Posts",
   "explore.trending_tags": "Hashtags",
   "follow_recommendations.done": "Salvar",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descobrir",
   "navigation_bar.domain_blocks": "Domínios bloqueados",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palavras filtradas",
   "navigation_bar.follow_requests": "Seguidores pendentes",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Preferências",
   "navigation_bar.public_timeline": "Linha global",
   "navigation_bar.security": "Segurança",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} se inscreveu",
   "notification.favourite": "{name} favoritou teu toot",
   "notification.follow": "{name} te seguiu",
   "notification.follow_request": "{name} quer te seguir",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editou uma publicação",
   "notifications.clear": "Limpar notificações",
   "notifications.clear_confirmation": "Você tem certeza de que deseja limpar todas as suas notificações?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Novas inscrições:",
   "notifications.column_settings.alert": "Notificações no computador",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias",
@@ -387,41 +389,41 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hoje",
   "reply_indicator.cancel": "Cancelar",
-  "report.block": "Block",
+  "report.block": "Bloquear",
   "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
   "report.categories.other": "Outro",
   "report.categories.spam": "Spam",
   "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.category.title_account": "perfil",
+  "report.category.title_status": "publicação",
+  "report.close": "Concluído",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Encaminhar para {target}",
   "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?",
-  "report.mute": "Mute",
+  "report.mute": "Silenciar",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.next": "Próximo",
   "report.placeholder": "Comentários adicionais aqui",
-  "report.reasons.dislike": "I don't like it",
+  "report.reasons.dislike": "Eu não gosto disso",
   "report.reasons.dislike_description": "It is not something you want to see",
   "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.other_description": "O problema não se encaixa em outras categorias",
+  "report.reasons.spam": "É spam",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
+  "report.reasons.violation_description": "Você está ciente de que isso quebra regras específicas",
+  "report.rules.subtitle": "Selecione tudo que se aplica",
   "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
+  "report.statuses.subtitle": "Selecione tudo que se aplica",
   "report.statuses.title": "Are there any posts that back up this report?",
   "report.submit": "Enviar",
   "report.target": "Denunciando {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
+  "report.thanks.take_action_actionable": "Enquanto revisamos isso, você pode tomar medidas contra @{name}:",
+  "report.thanks.title": "Não quer ver isto?",
+  "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.",
   "report.unfollow": "Unfollow @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
   "search.placeholder": "Pesquisar",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Texto simples retorna nomes de exibição e de usuário, e hashtags correspondentes",
   "search_popout.tips.user": "usuário",
   "search_results.accounts": "Pessoas",
-  "search_results.all": "All",
+  "search_results.all": "Tudo",
   "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Não foi possível encontrar nada para estes termos de busca",
   "search_results.statuses": "Toots",
   "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 48e1fb044..4e06401ec 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -18,12 +18,12 @@
   "account.followers": "Seguidores",
   "account.followers.empty": "Ainda ninguém segue este utilizador.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
+  "account.following": "A seguir",
   "account.following_counter": "{count, plural, other {A seguir {counter}}}",
   "account.follows.empty": "Este utilizador ainda não segue ninguém.",
   "account.follows_you": "Segue-te",
   "account.hide_reblogs": "Esconder partilhas de @{name}",
   "account.joined": "Ingressou em {date}",
-  "account.last_status": "Última atividade",
   "account.link_verified_on": "A posse deste link foi verificada em {date}",
   "account.locked_info": "Esta conta é privada. O proprietário revê manualmente quem a pode seguir.",
   "account.media": "Média",
@@ -32,7 +32,6 @@
   "account.mute": "Silenciar @{name}",
   "account.mute_notifications": "Silenciar notificações de @{name}",
   "account.muted": "Silenciada",
-  "account.never_active": "Nunca",
   "account.posts": "Toots",
   "account.posts_with_replies": "Publicações e respostas",
   "account.report": "Denunciar @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Desbloquear @{name}",
   "account.unblock_domain": "Mostrar {domain}",
+  "account.unblock_short": "Desbloquear",
   "account.unendorse": "Não mostrar no perfil",
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Não silenciar @{name}",
   "account.unmute_notifications": "Deixar de silenciar @{name}",
+  "account.unmute_short": "Deixar de silenciar",
   "account_note.placeholder": "Clique para adicionar nota",
   "admin.dashboard.daily_retention": "Taxa de retenção de utilizadores por dia após a inscrição",
   "admin.dashboard.monthly_retention": "Taxa de retenção de utilizadores por mês após a inscrição",
@@ -167,7 +168,7 @@
   "empty_column.community": "A timeline local está vazia. Escreve algo publicamente para começar!",
   "empty_column.direct": "Ainda não tem qualquer mensagem direta. Quando enviar ou receber alguma, ela irá aparecer aqui.",
   "empty_column.domain_blocks": "Ainda não há qualquer domínio escondido.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Nada em destaque por agora. Volte mais tarde!",
   "empty_column.favourited_statuses": "Ainda não tens quaisquer toots favoritos. Quando tiveres algum, ele irá aparecer aqui.",
   "empty_column.favourites": "Ainda ninguém marcou este toot como favorito. Quando alguém o fizer, ele irá aparecer aqui.",
   "empty_column.follow_recommendations": "Parece que não foi possível gerar nenhuma sugestão para si. Pode tentar utilizar a pesquisa para procurar pessoas que conheça ou explorar as hashtags em destaque.",
@@ -186,11 +187,11 @@
   "error.unexpected_crash.next_steps_addons": "Tente desabilitá-los e atualizar a página. Se isso não ajudar, você ainda poderá usar o Mastodon por meio de um navegador diferente ou de um aplicativo nativo.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar a stacktrace para o clipboard",
   "errors.unexpected_crash.report_issue": "Reportar problema",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
+  "explore.search_results": "Resultados da pesquisa",
+  "explore.suggested_follows": "Para si",
+  "explore.title": "Explorar",
+  "explore.trending_links": "Notícias",
+  "explore.trending_statuses": "Publicações",
   "explore.trending_tags": "Hashtags",
   "follow_recommendations.done": "Concluído",
   "follow_recommendations.heading": "Siga pessoas das quais gostaria de ver publicações! Aqui estão algumas sugestões.",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descobrir",
   "navigation_bar.domain_blocks": "Domínios escondidos",
   "navigation_bar.edit_profile": "Editar perfil",
+  "navigation_bar.explore": "Explorar",
   "navigation_bar.favourites": "Favoritos",
   "navigation_bar.filters": "Palavras silenciadas",
   "navigation_bar.follow_requests": "Seguidores pendentes",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Preferências",
   "navigation_bar.public_timeline": "Cronologia federada",
   "navigation_bar.security": "Segurança",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} inscreveu-se",
   "notification.favourite": "{name} adicionou a tua publicação aos favoritos",
   "notification.follow": "{name} começou a seguir-te",
   "notification.follow_request": "{name} pediu para segui-lo",
@@ -319,7 +321,7 @@
   "notification.update": "{name} editou uma publicação",
   "notifications.clear": "Limpar notificações",
   "notifications.clear_confirmation": "Queres mesmo limpar todas as notificações?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Novas inscrições:",
   "notifications.column_settings.alert": "Notificações no ambiente de trabalho",
   "notifications.column_settings.favourite": "Favoritos:",
   "notifications.column_settings.filter_bar.advanced": "Mostrar todas as categorias",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hoje",
   "reply_indicator.cancel": "Cancelar",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Bloquear",
+  "report.block_explanation": "Não verá as publicações deles. Eles não serão capazes de ver suas publicações ou de o seguir. Eles vão conseguir saber que estão bloqueados.",
   "report.categories.other": "Outro",
   "report.categories.spam": "Spam",
   "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Escolha a melhor correspondência",
+  "report.category.title": "Diga-nos o que se passa com esse {type}",
+  "report.category.title_account": "perfil",
+  "report.category.title_status": "publicação",
+  "report.close": "Concluído",
+  "report.comment.title": "Há algo mais que pensa que devemos saber?",
   "report.forward": "Reenviar para {target}",
   "report.forward_hint": "A conta é de outro servidor. Enviar uma cópia anónima da denúncia para lá também?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Silenciar",
+  "report.mute_explanation": "Não verá as publicações deles. Eles ainda poderão segui-lo e ver as suas publicações e não saberão que estão silenciados.",
+  "report.next": "Seguinte",
   "report.placeholder": "Comentários adicionais",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Não gosto disso",
+  "report.reasons.dislike_description": "Não é algo que deseje ver",
+  "report.reasons.other": "É outra coisa",
+  "report.reasons.other_description": "O problema não se encaixa nas outras categorias",
+  "report.reasons.spam": "É spam",
+  "report.reasons.spam_description": "Links maliciosos, contactos falsos, ou respostas repetitivas",
+  "report.reasons.violation": "Viola as regras do servidor",
+  "report.reasons.violation_description": "Está ciente de que infringe regras específicas",
+  "report.rules.subtitle": "Selecione tudo o que se aplicar",
+  "report.rules.title": "Que regras estão a ser violadas?",
+  "report.statuses.subtitle": "Selecione tudo o que se aplicar",
+  "report.statuses.title": "Existe alguma publicação que suporte esta denúncia?",
   "report.submit": "Enviar",
   "report.target": "A denunciar {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Aqui estão as suas opções para controlar o que vê no Mastodon:",
+  "report.thanks.take_action_actionable": "Enquanto revemos a sua denúncia, pode tomar medidas contra @{name}:",
+  "report.thanks.title": "Não quer ver isto?",
+  "report.thanks.title_actionable": "Obrigado por reportar, vamos analisar.",
+  "report.unfollow": "Deixar de seguir @{name}",
+  "report.unfollow_explanation": "Está a seguir esta conta. Para não ver mais as publicações desta conta na sua página inicial, deixe de segui-la.",
   "search.placeholder": "Pesquisar",
   "search_popout.search_format": "Formato avançado de pesquisa",
   "search_popout.tips.full_text": "Texto simples devolve publicações que escreveu, marcou como favorita, partilhou ou em que foi mencionado, tal como nomes de utilizador, alcunhas e hashtags.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "O texto simples retorna a correspondência de nomes, utilizadores e hashtags",
   "search_popout.tips.user": "utilizador",
   "search_results.accounts": "Pessoas",
-  "search_results.all": "All",
+  "search_results.all": "Tudo",
   "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Não foi possível encontrar resultados para as expressões pesquisadas",
   "search_results.statuses": "Toots",
   "search_results.statuses_fts_disabled": "A pesquisa de toots pelo seu conteúdo não está disponível nesta instância Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 6e3ee6c2f..bd91f19b9 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -18,12 +18,12 @@
   "account.followers": "Abonați",
   "account.followers.empty": "Acest utilizator încă nu are abonați.",
   "account.followers_counter": "{count, plural, one {{counter} Abonat} few {{counter} Abonați} other {{counter} Abonați}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Abonament} few {{counter} Abonamente} other {{counter} Abonamente}}",
   "account.follows.empty": "Momentan acest utilizator nu are niciun abonament.",
   "account.follows_you": "Este abonat la tine",
   "account.hide_reblogs": "Ascunde distribuirile de la @{name}",
   "account.joined": "S-a înscris în {date}",
-  "account.last_status": "Ultima activitate",
   "account.link_verified_on": "Proprietatea acestui link a fost verificată pe {date}",
   "account.locked_info": "Acest profil este privat. Această persoană aprobă manual conturile care se abonează la ea.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Ignoră pe @{name}",
   "account.mute_notifications": "Ignoră notificările de la @{name}",
   "account.muted": "Ignorat",
-  "account.never_active": "Niciodată",
   "account.posts": "Postări",
   "account.posts_with_replies": "Postări și răspunsuri",
   "account.report": "Raportează pe @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Deblochează pe @{name}",
   "account.unblock_domain": "Deblochează domeniul {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Nu promova pe profil",
   "account.unfollow": "Nu mai urmări",
   "account.unmute": "Nu mai ignora pe @{name}",
   "account.unmute_notifications": "Activează notificările de la @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Descoperă",
   "navigation_bar.domain_blocks": "Domenii blocate",
   "navigation_bar.edit_profile": "Modifică profilul",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favorite",
   "navigation_bar.filters": "Cuvinte ignorate",
   "navigation_bar.follow_requests": "Cereri de abonare",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 9d21c9d5d..bf3097dc0 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -18,12 +18,12 @@
   "account.followers": "Подписчики",
   "account.followers.empty": "На этого пользователя пока никто не подписан.",
   "account.followers_counter": "{count, plural, one {{counter} подписчик} many {{counter} подписчиков} other {{counter} подписчика}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}",
   "account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
   "account.follows_you": "Подписан(а) на вас",
   "account.hide_reblogs": "Скрыть продвижения от @{name}",
   "account.joined": "Зарегистрирован(а) с {date}",
-  "account.last_status": "Последняя активность",
   "account.link_verified_on": "Владение этой ссылкой было проверено {date}",
   "account.locked_info": "Это закрытый аккаунт. Его владелец вручную одобряет подписчиков.",
   "account.media": "Медиа",
@@ -32,7 +32,6 @@
   "account.mute": "Игнорировать @{name}",
   "account.mute_notifications": "Скрыть уведомления от @{name}",
   "account.muted": "Игнорируется",
-  "account.never_active": "Никогда",
   "account.posts": "Посты",
   "account.posts_with_replies": "Посты и ответы",
   "account.report": "Пожаловаться на @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} пост} many {{counter} постов} other {{counter} поста}}",
   "account.unblock": "Разблокировать @{name}",
   "account.unblock_domain": "Разблокировать {domain}",
+  "account.unblock_short": "Разблокировать",
   "account.unendorse": "Не рекомендовать в профиле",
   "account.unfollow": "Отписаться",
-  "account.unmute": "Убрать {name} из игнорируемых",
+  "account.unmute": "Не игнорировать @{name}",
   "account.unmute_notifications": "Показывать уведомления от @{name}",
+  "account.unmute_short": "Не игнорировать",
   "account_note.placeholder": "Текст заметки",
   "admin.dashboard.daily_retention": "Уровень удержания пользователей после регистрации, в днях",
   "admin.dashboard.monthly_retention": "Уровень удержания пользователей после регистрации, в месяцах",
@@ -53,7 +54,7 @@
   "admin.dashboard.retention.cohort": "Месяц регистрации",
   "admin.dashboard.retention.cohort_size": "Новые пользователи",
   "alert.rate_limited.message": "Пожалуйста, повторите после {retry_time, time, medium}.",
-  "alert.rate_limited.title": "Вы выполняете действие слишком часто",
+  "alert.rate_limited.title": "Ограничение количества запросов",
   "alert.unexpected.message": "Произошла непредвиденная ошибка.",
   "alert.unexpected.title": "Упс!",
   "announcement.announcement": "Объявление",
@@ -167,7 +168,7 @@
   "empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
   "empty_column.direct": "У вас пока нет личных сообщений. Как только вы отправите или получите одно, оно появится здесь.",
   "empty_column.domain_blocks": "Скрытых доменов пока нет.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Нет актуального. Проверьте позже!",
   "empty_column.favourited_statuses": "Вы не добавили ни один пост в «Избранное». Как только вы это сделаете, он появится здесь.",
   "empty_column.favourites": "Никто ещё не добавил этот пост в «Избранное». Как только кто-то это сделает, это отобразится здесь.",
   "empty_column.follow_recommendations": "Похоже, у нас нет предложений для вас. Вы можете попробовать поискать людей, которых уже знаете, или изучить актуальные хэштеги.",
@@ -186,7 +187,7 @@
   "error.unexpected_crash.next_steps_addons": "Попробуйте их отключить и перезагрузить страницу. Если это не поможет, вы по-прежнему сможете войти в Mastodon через другой браузер или приложение.",
   "errors.unexpected_crash.copy_stacktrace": "Скопировать диагностическую информацию",
   "errors.unexpected_crash.report_issue": "Сообщить о проблеме",
-  "explore.search_results": "Search results",
+  "explore.search_results": "Результаты поиска",
   "explore.suggested_follows": "Для вас",
   "explore.title": "Обзор",
   "explore.trending_links": "Новости",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Изучайте",
   "navigation_bar.domain_blocks": "Скрытые домены",
   "navigation_bar.edit_profile": "Изменить профиль",
+  "navigation_bar.explore": "Обзор",
   "navigation_bar.favourites": "Избранное",
   "navigation_bar.filters": "Игнорируемые слова",
   "navigation_bar.follow_requests": "Запросы на подписку",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Настройки",
   "navigation_bar.public_timeline": "Глобальная лента",
   "navigation_bar.security": "Безопасность",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} зарегистрирован",
   "notification.favourite": "{name} добавил(а) ваш пост в избранное",
   "notification.follow": "{name} подписался (-лась) на вас",
   "notification.follow_request": "{name} отправил запрос на подписку",
@@ -319,7 +321,7 @@
   "notification.update": "{name} изменил(а) пост",
   "notifications.clear": "Очистить уведомления",
   "notifications.clear_confirmation": "Вы уверены, что хотите очистить все уведомления?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Новые регистрации:",
   "notifications.column_settings.alert": "Уведомления на рабочем столе",
   "notifications.column_settings.favourite": "Ваш пост добавили в «избранное»:",
   "notifications.column_settings.filter_bar.advanced": "Отображать все категории",
@@ -336,7 +338,7 @@
   "notifications.column_settings.status": "Новые посты:",
   "notifications.column_settings.unread_notifications.category": "Непрочитанные уведомления",
   "notifications.column_settings.unread_notifications.highlight": "Выделять непрочитанные уведомления",
-  "notifications.column_settings.update": "Изменения:",
+  "notifications.column_settings.update": "Правки:",
   "notifications.filter.all": "Все",
   "notifications.filter.boosts": "Продвижения",
   "notifications.filter.favourites": "Отметки «избранного»",
@@ -392,37 +394,37 @@
   "report.categories.other": "Другое",
   "report.categories.spam": "Спам",
   "report.categories.violation": "Содержимое нарушает одно или несколько правил узла",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Выберите наиболее подходящее",
+  "report.category.title": "Расскажите нам, что происходит с {type}",
+  "report.category.title_account": "профиль",
+  "report.category.title_status": "пост",
+  "report.close": "Готово",
+  "report.comment.title": "Есть что-нибудь еще, что мы должны знать?",
   "report.forward": "Переслать в {target}",
   "report.forward_hint": "Эта учётная запись расположена на другом узле. Отправить туда анонимную копию вашей жалобы?",
   "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute_explanation": "Вы не будете видеть их посты. Они по-прежнему могут подписываться на вас и видеть ваши посты, но не будут знать, что они в списке игнорируемых.",
+  "report.next": "Далее",
   "report.placeholder": "Комментарий",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Мне не нравится",
+  "report.reasons.dislike_description": "Не хотел(а) бы видеть такой контент",
+  "report.reasons.other": "Другое",
+  "report.reasons.other_description": "Проблема не подпадает под другие категории",
+  "report.reasons.spam": "Это спам",
+  "report.reasons.spam_description": "Вредоносные ссылки, поддельные действия или повторяющиеся ответы",
+  "report.reasons.violation": "Нарушаются правила сервера",
+  "report.reasons.violation_description": "Вы знаете, что подобное нарушает определенные правила",
+  "report.rules.subtitle": "Выберите все подходящие варианты",
+  "report.rules.title": "Какие правила нарушены?",
+  "report.statuses.subtitle": "Выберите все подходящие варианты",
+  "report.statuses.title": "Есть ли сообщения, подтверждающие основания этой жалобы?",
   "report.submit": "Отправить",
   "report.target": "Жалоба на {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
+  "report.thanks.title": "Не хотите видеть это?",
+  "report.thanks.title_actionable": "Спасибо за обращение, мы его рассмотрим.",
+  "report.unfollow": "Отписаться от @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
   "search.placeholder": "Поиск",
   "search_popout.search_format": "Продвинутый формат поиска",
@@ -432,11 +434,11 @@
   "search_popout.tips.text": "Простой ввод текста покажет совпадающие имена пользователей, отображаемые имена и хэштеги",
   "search_popout.tips.user": "пользователь",
   "search_results.accounts": "Люди",
-  "search_results.all": "All",
+  "search_results.all": "Все",
   "search_results.hashtags": "Хэштеги",
   "search_results.nothing_found": "Could not find anything for these search terms",
   "search_results.statuses": "Посты",
-  "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным узлом Mastodon.",
+  "search_results.statuses_fts_disabled": "Поиск постов по их содержанию не поддерживается данным сервером Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {результат} few {результата} many {результатов} other {результатов}}",
   "status.admin_account": "Открыть интерфейс модератора для @{name}",
   "status.admin_status": "Открыть этот пост в интерфейсе модератора",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 3be5b5012..e1910d283 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -18,12 +18,12 @@
   "account.followers": "अनुसर्तारः",
   "account.followers.empty": "नाऽनुसर्तारो वर्तन्ते",
   "account.followers_counter": "{count, plural, one {{counter} अनुसर्ता} two {{counter} अनुसर्तारौ} other {{counter} अनुसर्तारः}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} अनुसृतः} two {{counter} अनुसृतौ} other {{counter} अनुसृताः}}",
   "account.follows.empty": "न कोऽप्यनुसृतो वर्तते",
   "account.follows_you": "त्वामनुसरति",
   "account.hide_reblogs": "@{name} मित्रस्य प्रकाशनानि छिद्यन्ताम्",
   "account.joined": "Joined {date}",
-  "account.last_status": "गतसक्रियता",
   "account.link_verified_on": "अन्तर्जालस्थानस्यास्य स्वामित्वं परीक्षितमासीत् {date} दिने",
   "account.locked_info": "एतस्या लेखायाः गुह्यता \"निषिद्ध\"इति वर्तते । स्वामी स्वयञ्चिनोति कोऽनुसर्ता भवितुमर्हतीति ।",
   "account.media": "सामग्री",
@@ -32,7 +32,6 @@
   "account.mute": "निःशब्दम् @{name}",
   "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्",
   "account.muted": "निःशब्दम्",
-  "account.never_active": "नैव कदापि",
   "account.posts": "दौत्यानि",
   "account.posts_with_replies": "दौत्यानि प्रत्युत्तराणि च",
   "account.report": "आविद्यताम् @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} दौत्यम्} two {{counter} दौत्ये} other {{counter} दौत्यानि}}",
   "account.unblock": "निषेधता नश्यताम् @{name}",
   "account.unblock_domain": "प्रदेशनिषेधता नश्यताम् {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "व्यक्तिगतविवरणे मा प्रकाश्यताम्",
   "account.unfollow": "नश्यतामनुसरणम्",
   "account.unmute": "सशब्दम् @{name}",
   "account.unmute_notifications": "@{name} सूचनाः सक्रियन्ताम्",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "टीकायोजनार्थं नुद्यताम्",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index cdc001ba8..1c29dfb79 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -18,12 +18,12 @@
   "account.followers": "Sighiduras",
   "account.followers.empty": "Nemos sighit ancora custa persone.",
   "account.followers_counter": "{count, plural, one {{counter} sighidura} other {{counter} sighiduras}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {Sighende a {counter}} other {Sighende a {counter}}}",
   "account.follows.empty": "Custa persone non sighit ancora a nemos.",
   "account.follows_you": "Ti sighit",
   "account.hide_reblogs": "Cua is cumpartziduras de @{name}",
   "account.joined": "At aderidu su {date}",
-  "account.last_status": "Ùrtima atividade",
   "account.link_verified_on": "Sa propiedade de custu ligòngiu est istada controllada su {date}",
   "account.locked_info": "S'istadu de riservadesa de custu contu est istadu cunfiguradu comente blocadu. Sa persone chi tenet sa propiedade revisionat a manu chie dda podet sighire.",
   "account.media": "Cuntenutu multimediale",
@@ -32,7 +32,6 @@
   "account.mute": "Pone a @{name} a sa muda",
   "account.mute_notifications": "Disativa is notìficas de @{name}",
   "account.muted": "A sa muda",
-  "account.never_active": "Mai",
   "account.posts": "Publicatziones",
   "account.posts_with_replies": "Publicatziones e rispostas",
   "account.report": "Signala @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} publicatzione} other {{counter} publicatziones}}",
   "account.unblock": "Isbloca a @{name}",
   "account.unblock_domain": "Isbloca su domìniu {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Non cussiges in su profilu",
   "account.unfollow": "Non sigas prus",
   "account.unmute": "Torra a ativare a @{name}",
   "account.unmute_notifications": "Ativa notìficas pro @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Incarca pro agiùnghere una nota",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Iscoberi",
   "navigation_bar.domain_blocks": "Domìnios blocados",
   "navigation_bar.edit_profile": "Modìfica profilu",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Preferidos",
   "navigation_bar.filters": "Faeddos a sa muda",
   "navigation_bar.follow_requests": "Rechestas de sighidura",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index dc513c8a1..a74105406 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "{date} එක් වී ඇත",
-  "account.last_status": "අවසන් වරට සක්‍රීය",
   "account.link_verified_on": "මෙම සබැඳියේ හිමිකාරිත්වය {date} දින පරීක්ෂා කරන ලදි",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "මාධ්‍යය",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} නිහඬ කරන්න",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "@{name} වාර්තා කරන්න",
@@ -42,16 +41,18 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} අනවහිර කරන්න",
   "account.unblock_domain": "{domain} වසම අනවහිර කරන්න",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "සටහන එකතු කිරීමට ක්ලික් කරන්න",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
   "admin.dashboard.retention.average": "Average",
   "admin.dashboard.retention.cohort": "Sign-up month",
-  "admin.dashboard.retention.cohort_size": "New users",
+  "admin.dashboard.retention.cohort_size": "නව පරිශීලකයින්",
   "alert.rate_limited.message": "කරුණාකර {retry_time, time, medium} ට පසු නැවත උත්සාහ කරන්න.",
   "alert.rate_limited.title": "Rate limited",
   "alert.unexpected.message": "An unexpected error occurred.",
@@ -120,7 +121,7 @@
   "confirmations.delete.message": "Are you sure you want to delete this status?",
   "confirmations.delete_list.confirm": "Delete",
   "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
-  "confirmations.discard_edit_media.confirm": "Discard",
+  "confirmations.discard_edit_media.confirm": "ඉවත ලන්න",
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න",
   "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "ප්‍රියතමයන්",
   "navigation_bar.filters": "නිහඬ කළ වචන",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 3c3ca14b4..60b513aa1 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -18,12 +18,12 @@
   "account.followers": "Sledujúci",
   "account.followers.empty": "Tohto používateľa ešte nikto nenásleduje.",
   "account.followers_counter": "{count, plural, one {{counter} Sledujúci} few {{counter} Sledujúci} many {{counter} Sledujúci} other {{counter} Sledujúci}}",
+  "account.following": "Nasledujem",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
   "account.follows_you": "Nasleduje ťa",
   "account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
   "account.joined": "Pridal/a sa v {date}",
-  "account.last_status": "Naposledy aktívny",
   "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
   "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.",
   "account.media": "Médiá",
@@ -31,8 +31,7 @@
   "account.moved_to": "{name} sa presunul/a na:",
   "account.mute": "Nevšímaj si @{name}",
   "account.mute_notifications": "Stĺm oboznámenia od @{name}",
-  "account.muted": "Utíšený/á",
-  "account.never_active": "Nikdy",
+  "account.muted": "Nevšímaný/á",
   "account.posts": "Príspevky",
   "account.posts_with_replies": "Príspevky, aj s odpoveďami",
   "account.report": "Nahlás @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokuj @{name}",
   "account.unblock_domain": "Prestaň skrývať {domain}",
+  "account.unblock_short": "Odblokuj",
   "account.unendorse": "Nezobrazuj na profile",
   "account.unfollow": "Prestaň následovať",
   "account.unmute": "Prestaň ignorovať @{name}",
-  "account.unmute_notifications": "Zruš stĺmenie oboznámení od @{name}",
+  "account.unmute_notifications": "Zruš nevšímanie si oznámení od @{name}",
+  "account.unmute_short": "Zruš nevšímanie",
   "account_note.placeholder": "Klikni pre vloženie poznámky",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -76,7 +77,7 @@
   "column.follow_requests": "Žiadosti o sledovanie",
   "column.home": "Domov",
   "column.lists": "Zoznamy",
-  "column.mutes": "Ignorovaní užívatelia",
+  "column.mutes": "Nevšímaní užívatelia",
   "column.notifications": "Oboznámenia",
   "column.pins": "Pripnuté príspevky",
   "column.public": "Federovaná časová os",
@@ -105,7 +106,7 @@
   "compose_form.poll.switch_to_single": "Zmeň anketu na takú s jedinou voľbou",
   "compose_form.publish": "Pošli",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "Ulož zmeny",
   "compose_form.sensitive.hide": "Označ médiá ako chúlostivé",
   "compose_form.sensitive.marked": "Médiálny obsah je označený ako chúlostivý",
   "compose_form.sensitive.unmarked": "Médiálny obsah nieje označený ako chúlostivý",
@@ -126,9 +127,9 @@
   "confirmations.domain_block.message": "Si si naozaj istý/á, že chceš blokovať celú doménu {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.",
   "confirmations.logout.confirm": "Odhlás sa",
   "confirmations.logout.message": "Si si istý/á, že sa chceš odhlásiť?",
-  "confirmations.mute.confirm": "Ignoruj",
+  "confirmations.mute.confirm": "Nevšímaj si",
   "confirmations.mute.explanation": "Toto nastavenie pred tebou skryje ich príspevky, alebo príspevky od iných v ktorých sú spomenutí, ale umožní im vidieť tvoje príspevky, aj ťa následovať.",
-  "confirmations.mute.message": "Naozaj chceš ignorovať {name}?",
+  "confirmations.mute.message": "Naozaj si chceš nevšímať {name}?",
   "confirmations.redraft.confirm": "Vyčisti a prepíš",
   "confirmations.redraft.message": "Si si istý/á, že chceš premazať a prepísať tento príspevok? Jeho nadobudnuté vyzdvihnutia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
   "confirmations.reply.confirm": "Odpovedz",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Skús ich vypnúť, a obnoviť túto stránku. Ak to nepomôže, pravdepodobne budeš stále môcť Mastodon používať cez iný prehliadač, alebo natívnu aplikáciu.",
   "errors.unexpected_crash.copy_stacktrace": "Skopíruj stacktrace do schránky",
   "errors.unexpected_crash.report_issue": "Nahlás problém",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
+  "explore.search_results": "Výsledky hľadania",
+  "explore.suggested_follows": "Pre teba",
   "explore.title": "Explore",
   "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_statuses": "Príspevky",
+  "explore.trending_tags": "Haštagy",
   "follow_recommendations.done": "Hotovo",
   "follow_recommendations.heading": "Následuj ľudí od ktorých by si chcel/a vidieť príspevky! Tu sú nejaké návrhy.",
   "follow_recommendations.lead": "Príspevky od ľudi ktorých sledujete sa zobrazia v chronologickom poradí na Vašej nástenke. Nebojte sa spraviť chyby, vždy môžete zrušiť sledovanie konkrétnych ľudí!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Objavuj",
   "navigation_bar.domain_blocks": "Skryté domény",
   "navigation_bar.edit_profile": "Uprav profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Obľúbené",
   "navigation_bar.filters": "Filtrované slová",
   "navigation_bar.follow_requests": "Žiadosti o sledovanie",
@@ -301,7 +303,7 @@
   "navigation_bar.keyboard_shortcuts": "Klávesové skratky",
   "navigation_bar.lists": "Zoznamy",
   "navigation_bar.logout": "Odhlás sa",
-  "navigation_bar.mutes": "Ignorovaní užívatelia",
+  "navigation_bar.mutes": "Stíšení užívatelia",
   "navigation_bar.personal": "Osobné",
   "navigation_bar.pins": "Pripnuté príspevky",
   "navigation_bar.preferences": "Nastavenia",
@@ -336,7 +338,7 @@
   "notifications.column_settings.status": "Nové príspevky:",
   "notifications.column_settings.unread_notifications.category": "Neprečítané oboznámenia",
   "notifications.column_settings.unread_notifications.highlight": "Zdôrazni neprečítané oboznámenia",
-  "notifications.column_settings.update": "Edits:",
+  "notifications.column_settings.update": "Úpravy:",
   "notifications.filter.all": "Všetky",
   "notifications.filter.boosts": "Vyzdvihnutia",
   "notifications.filter.favourites": "Obľúbené",
@@ -378,7 +380,7 @@
   "relative_time.days": "{number}dní",
   "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
   "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
-  "relative_time.full.just_now": "just now",
+  "relative_time.full.just_now": "práve teraz",
   "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
   "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
   "relative_time.hours": "{number}hod",
@@ -394,23 +396,23 @@
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.category.title_account": "profilom",
+  "report.category.title_status": "príspevkom",
+  "report.close": "Hotovo",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Posuň ku {target}",
   "report.forward_hint": "Tento účet je z iného serveru. Chceš poslať anonymnú kópiu hlásenia aj tam?",
-  "report.mute": "Mute",
+  "report.mute": "Nevšímaj si",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.next": "Ďalej",
   "report.placeholder": "Ďalšie komentáre",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
+  "report.reasons.dislike": "Nepáči sa mi",
+  "report.reasons.dislike_description": "Nieje to niečo, čo chceš vidieť",
+  "report.reasons.other": "Je to niečo iné",
   "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
+  "report.reasons.spam": "Je to spam",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.violation": "Porušuje pravidlá servera",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
   "report.rules.title": "Which rules are being violated?",
@@ -420,7 +422,7 @@
   "report.target": "Nahlás {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.title": "Nechceš to vidieť?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
   "report.unfollow": "Unfollow @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
@@ -448,7 +450,7 @@
   "status.delete": "Zmazať",
   "status.detailed_status": "Podrobný náhľad celej konverzácie",
   "status.direct": "Priama správa pre @{name}",
-  "status.edit": "Edit",
+  "status.edit": "Uprav",
   "status.edited": "Edited {date}",
   "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
   "status.embed": "Vložiť",
@@ -460,8 +462,8 @@
   "status.media_hidden": "Skryté médiá",
   "status.mention": "Spomeň @{name}",
   "status.more": "Viac",
-  "status.mute": "Utíš @{name}",
-  "status.mute_conversation": "Ignoruj konverzáciu",
+  "status.mute": "Nevšímaj si @{name}",
+  "status.mute_conversation": "Nevšímaj si konverzáciu",
   "status.open": "Otvor tento príspevok",
   "status.pin": "Pripni na profil",
   "status.pinned": "Pripnutý príspevok",
@@ -483,7 +485,7 @@
   "status.show_more_all": "Všetkým ukáž viac",
   "status.show_thread": "Ukáž diskusné vlákno",
   "status.uncached_media_warning": "Nedostupný/é",
-  "status.unmute_conversation": "Prestaň ignorovať konverzáciu",
+  "status.unmute_conversation": "Prestaň si nevšímať konverzáciu",
   "status.unpin": "Odopni z profilu",
   "suggestions.dismiss": "Zavrhni návrh",
   "suggestions.header": "Mohlo by ťa zaujímať…",
@@ -534,7 +536,7 @@
   "video.expand": "Zväčši video",
   "video.fullscreen": "Zobraz na celú obrazovku",
   "video.hide": "Skry video",
-  "video.mute": "Vypni zvuk",
+  "video.mute": "Stlm zvuk",
   "video.pause": "Pauza",
   "video.play": "Prehraj",
   "video.unmute": "Zapni zvuk"
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index d4475760b..92a3ffcc9 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -18,12 +18,12 @@
   "account.followers": "Sledilci",
   "account.followers.empty": "Nihče ne sledi temu uporabniku.",
   "account.followers_counter": "{count, plural, one {ima {count} sledilca} two {ima {count} sledilca} few {ima {count} sledilcev} other {ima {count} sledilce}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}",
   "account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
   "account.follows_you": "Vam sledi",
   "account.hide_reblogs": "Skrij spodbude od @{name}",
   "account.joined": "Pridružen/a {date}",
-  "account.last_status": "Zadnja dejavnost",
   "account.link_verified_on": "Lastništvo te povezave je bilo preverjeno {date}",
   "account.locked_info": "Stanje zasebnosti računa je nastavljeno na zaklenjeno. Lastnik ročno pregleda, kdo ga lahko spremlja.",
   "account.media": "Mediji",
@@ -32,7 +32,6 @@
   "account.mute": "Utišaj @{name}",
   "account.mute_notifications": "Utišaj obvestila od @{name}",
   "account.muted": "Utišan",
-  "account.never_active": "Nikoli",
   "account.posts": "Tuti",
   "account.posts_with_replies": "Tuti in odgovori",
   "account.report": "Prijavi @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokiraj @{name}",
   "account.unblock_domain": "Razkrij {domain}",
+  "account.unblock_short": "Odblokiraj",
   "account.unendorse": "Ne vključi v profil",
   "account.unfollow": "Prenehaj slediti",
   "account.unmute": "Odtišaj @{name}",
   "account.unmute_notifications": "Vklopi obvestila od @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -167,7 +168,7 @@
   "empty_column.community": "Lokalna časovnica je prazna. Napišite nekaj javnega, da se bo žoga zakotalila!",
   "empty_column.direct": "Nimate še nobenih neposrednih sporočil. Ko ga boste poslali ali prejeli, se bo prikazal tukaj.",
   "empty_column.domain_blocks": "Še vedno ni skritih domen.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Trenutno ni nič v trendu. Preverite znova kasneje!",
   "empty_column.favourited_statuses": "Nimate priljubljenih tutov. Ko boste vzljubili kakšnega, se bo prikazal tukaj.",
   "empty_column.favourites": "Nihče še ni vzljubil tega tuta. Ko ga bo nekdo, se bo pojavil tukaj.",
   "empty_column.follow_recommendations": "Kaže, da za vas ni mogoče pripraviti nobenih predlogov. Poskusite uporabiti iskanje, da poiščete osebe, ki jih poznate, ali raziščete ključnike, ki so v trendu.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Poskusite jih onemogočiti in osvežiti stran. Če to ne pomaga, boste morda še vedno lahko uporabljali Mastodon prek drugega brskalnika ali z domorodno aplikacijo.",
   "errors.unexpected_crash.copy_stacktrace": "Kopiraj sledenje sklada na odložišče",
   "errors.unexpected_crash.report_issue": "Prijavi težavo",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Rezultati iskanja",
+  "explore.suggested_follows": "Za vas",
+  "explore.title": "Razišči",
+  "explore.trending_links": "Novice",
+  "explore.trending_statuses": "Objave",
+  "explore.trending_tags": "Ključniki",
   "follow_recommendations.done": "Opravljeno",
   "follow_recommendations.heading": "Sledite osebam, katerih objave želite videti! Tukaj je nekaj predlogov.",
   "follow_recommendations.lead": "Objave oseb, ki jim sledite, se bodo prikazale v kronološkem zaporedju v vašem domačem viru. Ne bojte se storiti napake, osebam enako enostavno nehate slediti kadar koli!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Odkrijte",
   "navigation_bar.domain_blocks": "Skrite domene",
   "navigation_bar.edit_profile": "Uredi profil",
+  "navigation_bar.explore": "Razišči",
   "navigation_bar.favourites": "Priljubljeni",
   "navigation_bar.filters": "Utišane besede",
   "navigation_bar.follow_requests": "Prošnje za sledenje",
@@ -307,7 +309,7 @@
   "navigation_bar.preferences": "Nastavitve",
   "navigation_bar.public_timeline": "Združena časovnica",
   "navigation_bar.security": "Varnost",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} se je vpisal/a",
   "notification.favourite": "{name} je vzljubil/a vaš status",
   "notification.follow": "{name} vam sledi",
   "notification.follow_request": "{name} vam želi slediti",
@@ -319,7 +321,7 @@
   "notification.update": "{name} je uredil(a) objavo",
   "notifications.clear": "Počisti obvestila",
   "notifications.clear_confirmation": "Ali ste prepričani, da želite trajno izbrisati vsa vaša obvestila?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Novi vpisi:",
   "notifications.column_settings.alert": "Namizna obvestila",
   "notifications.column_settings.favourite": "Priljubljeni:",
   "notifications.column_settings.filter_bar.advanced": "Prikaži vse kategorije",
@@ -387,43 +389,43 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "danes",
   "reply_indicator.cancel": "Prekliči",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Blokiraj",
+  "report.block_explanation": "Njihovih objav ne boste videli. Oni ne bodo videli vaših objav, niti vam ne morejo slediti. Lahko bodo ugotovili, da so blokirani.",
   "report.categories.other": "Drugo",
   "report.categories.spam": "Neželeno",
   "report.categories.violation": "Vsebina krši eno ali več pravil strežnika",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Izberite najboljši zadetek",
+  "report.category.title": "Povejte nam, kaj se dogaja s to/tem {type}",
+  "report.category.title_account": "profil",
+  "report.category.title_status": "objava",
+  "report.close": "Opravljeno",
+  "report.comment.title": "Je še kaj, za kar menite, da bi morali vedeti?",
   "report.forward": "Posreduj do {target}",
   "report.forward_hint": "Račun je iz drugega strežnika. Pošljem anonimno kopijo poročila tudi na drugi strežnik?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Utišaj",
+  "report.mute_explanation": "Njihovih objav ne boste videli. Še vedno vam lahko sledijo in vidijo vaše objave, ne bodo vedeli, da so utišani.",
+  "report.next": "Naprej",
   "report.placeholder": "Dodatni komentarji",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Ni mi všeč",
+  "report.reasons.dislike_description": "To ni tisto, kar želim videti",
+  "report.reasons.other": "Gre za nekaj drugega",
+  "report.reasons.other_description": "Težava ne sodi v druge kategorije",
+  "report.reasons.spam": "To je neželena vsebina",
+  "report.reasons.spam_description": "Škodljive povezave, lažno prizadevanje ali ponavljajoči se odgovori",
+  "report.reasons.violation": "Krši strežniška pravila",
+  "report.reasons.violation_description": "Zavedate se, da krši določena pravila",
+  "report.rules.subtitle": "Izberite vse, kar ustreza",
+  "report.rules.title": "Katera pravila so kršena?",
+  "report.statuses.subtitle": "Izberite vse, kar ustreza",
+  "report.statuses.title": "Ali so kakšne objave, ki dokazujejo trditve iz tega poročila?",
   "report.submit": "Pošlji",
   "report.target": "Prijavi {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Tukaj so vaše možnosti za nadzor tistega, kar vidite na Mastodonu:",
+  "report.thanks.take_action_actionable": "Medtem, ko to pregledujemo, lahko proti @{name} ukrepate:",
+  "report.thanks.title": "Ali si želite to pogledati?",
+  "report.thanks.title_actionable": "Hvala za poročilo, bomo preverili.",
+  "report.unfollow": "Ne sledi več @{name}",
+  "report.unfollow_explanation": "Temu računu sledite. Da ne boste več videli njegovih objav v svojem domačem viru, mu prenehajte slediti.",
   "search.placeholder": "Iskanje",
   "search_popout.search_format": "Napredna oblika iskanja",
   "search_popout.tips.full_text": "Enostavno besedilo vrne statuse, ki ste jih napisali, vzljubili, spodbudili ali ste bili v njih omenjeni, kot tudi ujemajoča se uporabniška imena, prikazna imena in ključnike.",
@@ -432,9 +434,9 @@
   "search_popout.tips.text": "Enostavno besedilo vrne ujemajoča se prikazna imena, uporabniška imena in ključnike",
   "search_popout.tips.user": "uporabnik",
   "search_results.accounts": "Ljudje",
-  "search_results.all": "All",
+  "search_results.all": "Vse",
   "search_results.hashtags": "Ključniki",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Za ta iskalni niz ni zadetkov",
   "search_results.statuses": "Tuti",
   "search_results.statuses_fts_disabled": "Iskanje tutov po njihovi vsebini ni omogočeno na tem strežniku Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {rezultat} other {rezultatov}}",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index b3a70dd27..d1047f5da 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -18,12 +18,12 @@
   "account.followers": "Ndjekës",
   "account.followers.empty": "Këtë përdorues ende s’e ndjek kush.",
   "account.followers_counter": "{count, plural, one {{counter} Ndjekës} other {{counter} Ndjekës}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} të Ndjekur}}",
   "account.follows.empty": "Ky përdorues ende s’ndjek kënd.",
   "account.follows_you": "Ju ndjek",
   "account.hide_reblogs": "Fshih përforcime nga @{name}",
   "account.joined": "U bë pjesë më {date}",
-  "account.last_status": "Aktiv së fundi më",
   "account.link_verified_on": "Pronësia e kësaj lidhjeje qe kontrolluar më {date}",
   "account.locked_info": "Gjendja e privatësisë së kësaj llogarie është caktuar si e kyçur. I zoti merr dorazi në shqyrtim cilët mund ta ndjekin.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Heshtoni @{name}",
   "account.mute_notifications": "Heshtoji njoftimet prej @{name}",
   "account.muted": "Heshtuar",
-  "account.never_active": "Kurrë",
   "account.posts": "Mesazhe",
   "account.posts_with_replies": "Mesazhe dhe përgjigje",
   "account.report": "Raportojeni @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Mesazh} other {{counter} Mesazhe}}",
   "account.unblock": "Zhbllokoje @{name}",
   "account.unblock_domain": "Zhblloko përkatësinë {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Mos e përfshi në profil",
   "account.unfollow": "Resht së ndjekuri",
   "account.unmute": "Ktheji zërin @{name}",
   "account.unmute_notifications": "Hiqua ndalimin e shfaqjes njoftimeve nga @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klikoni për të shtuar shënim",
   "admin.dashboard.daily_retention": "Shkallë mbajtjeje përdoruesi, në ditë, pas regjistrimit",
   "admin.dashboard.monthly_retention": "Shkallë mbajtjeje përdoruesi, në muaj, pas regjistrimit",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Zbuloni",
   "navigation_bar.domain_blocks": "Përkatësi të bllokuara",
   "navigation_bar.edit_profile": "Përpunoni profilin",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Të parapëlqyer",
   "navigation_bar.filters": "Fjalë të heshtuara",
   "navigation_bar.follow_requests": "Kërkesa për ndjekje",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 67a21e94d..332352cc1 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -18,12 +18,12 @@
   "account.followers": "Pratioca",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Prati Vas",
   "account.hide_reblogs": "Sakrij podrške koje daje korisnika @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Mediji",
@@ -32,7 +32,6 @@
   "account.mute": "Ućutkaj korisnika @{name}",
   "account.mute_notifications": "Isključi obaveštenja od korisnika @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Statusa",
   "account.posts_with_replies": "Toots with replies",
   "account.report": "Prijavi @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Odblokiraj korisnika @{name}",
   "account.unblock_domain": "Odblokiraj domen {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Otprati",
   "account.unmute": "Ukloni ućutkavanje korisniku @{name}",
   "account.unmute_notifications": "Uključi nazad obaveštenja od korisnika @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Izmeni profil",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Omiljeni",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Zahtevi za praćenje",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index 8eae28d93..e7f1e54cc 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -18,12 +18,12 @@
   "account.followers": "Пратиоци",
   "account.followers.empty": "Тренутно нико не прати овог корисника.",
   "account.followers_counter": "{count, plural, one {{counter} пратилац} few {{counter} пратиоца} other {{counter} пратилаца}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} прати} few {{counter} прати} other {{counter} прати}}",
   "account.follows.empty": "Корисник тренутно не прати никога.",
   "account.follows_you": "Прати Вас",
   "account.hide_reblogs": "Сакриј подршке које даје корисника @{name}",
   "account.joined": "Придружио/ла се {date}",
-  "account.last_status": "Последњи пут активан/на",
   "account.link_verified_on": "Власништво над овом везом је проверено {date}",
   "account.locked_info": "Статус приватности овог налога је подешен на закључано. Власник ручно прегледа ко га може пратити.",
   "account.media": "Медији",
@@ -32,7 +32,6 @@
   "account.mute": "Ућуткај корисника @{name}",
   "account.mute_notifications": "Искључи обавештења од корисника @{name}",
   "account.muted": "Ућуткан",
-  "account.never_active": "Никада",
   "account.posts": "Трубе",
   "account.posts_with_replies": "Трубе и одговори",
   "account.report": "Пријави @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} објава} few {{counter} објаве} other {{counter} објава}}",
   "account.unblock": "Одблокирај корисника @{name}",
   "account.unblock_domain": "Одблокирај домен {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Не истичи на налогу",
   "account.unfollow": "Отпрати",
   "account.unmute": "Уклони ућуткавање кориснику @{name}",
   "account.unmute_notifications": "Укључи назад обавештења од корисника @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Откриј",
   "navigation_bar.domain_blocks": "Сакривени домени",
   "navigation_bar.edit_profile": "Измени налог",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Омиљене",
   "navigation_bar.filters": "Пригушене речи",
   "navigation_bar.follow_requests": "Захтеви за праћење",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 63c111da9..43c6decf8 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -18,12 +18,12 @@
   "account.followers": "Följare",
   "account.followers.empty": "Ingen följer denna användare än.",
   "account.followers_counter": "{count, plural, one {{counter} Följare} other {{counter} Följare}}",
+  "account.following": "Följer",
   "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}",
   "account.follows.empty": "Denna användare följer inte någon än.",
   "account.follows_you": "Följer dig",
   "account.hide_reblogs": "Dölj knuffar från @{name}",
   "account.joined": "Gick med {date}",
-  "account.last_status": "Senast aktiv",
   "account.link_verified_on": "Ägarskap för detta konto kontrollerades den {date}",
   "account.locked_info": "Detta konto har låst integritetsstatus. Ägaren väljer manuellt vem som kan följa.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Tysta @{name}",
   "account.mute_notifications": "Stäng av notifieringar från @{name}",
   "account.muted": "Tystad",
-  "account.never_active": "Aldrig",
   "account.posts": "Tutningar",
   "account.posts_with_replies": "Tutningar och svar",
   "account.report": "Rapportera @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural,one {{counter} Tuta} other {{counter} Tutor}}",
   "account.unblock": "Avblockera @{name}",
   "account.unblock_domain": "Sluta dölja {domain}",
+  "account.unblock_short": "Avblockera",
   "account.unendorse": "Visa inte på profil",
   "account.unfollow": "Sluta följ",
   "account.unmute": "Sluta tysta @{name}",
   "account.unmute_notifications": "Återaktivera aviseringar från @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Klicka för att lägga till anteckning",
   "admin.dashboard.daily_retention": "Användarlojalitet per dag efter registrering",
   "admin.dashboard.monthly_retention": "Användarlojalitet per månad efter registrering",
@@ -191,7 +192,7 @@
   "explore.title": "Utforska",
   "explore.trending_links": "Nyheter",
   "explore.trending_statuses": "Inlägg",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_tags": "Hashtaggar",
   "follow_recommendations.done": "Klar",
   "follow_recommendations.heading": "Följ personer som du skulle vilja se inlägg från! Här finns det några förslag.",
   "follow_recommendations.lead": "Inlägg från personer du följer kommer att dyka upp i kronologisk ordning i ditt hem-flöde. Var inte rädd för att göra misstag, du kan sluta följa människor lika enkelt när som helst!",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Upptäck",
   "navigation_bar.domain_blocks": "Dolda domäner",
   "navigation_bar.edit_profile": "Redigera profil",
+  "navigation_bar.explore": "Utforska",
   "navigation_bar.favourites": "Favoriter",
   "navigation_bar.filters": "Tystade ord",
   "navigation_bar.follow_requests": "Följförfrågningar",
@@ -336,7 +338,7 @@
   "notifications.column_settings.status": "Nya tutor:",
   "notifications.column_settings.unread_notifications.category": "O-lästa aviseringar",
   "notifications.column_settings.unread_notifications.highlight": "Markera o-lästa aviseringar",
-  "notifications.column_settings.update": "Edits:",
+  "notifications.column_settings.update": "Redigeringar:",
   "notifications.filter.all": "Alla",
   "notifications.filter.boosts": "Knuffar",
   "notifications.filter.favourites": "Favoriter",
@@ -392,11 +394,11 @@
   "report.categories.other": "Övrigt",
   "report.categories.spam": "Skräppost",
   "report.categories.violation": "Innehåll bryter mot en eller flera serverregler",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.subtitle": "Välj den bästa träffen",
+  "report.category.title": "Berätta för oss vad som händer med den här {type}",
   "report.category.title_account": "profil",
   "report.category.title_status": "inlägg",
-  "report.close": "Done",
+  "report.close": "Färdig",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Vidarebefordra till {target}",
   "report.forward_hint": "Kontot är från en annan server. Skicka även en anonymiserad kopia av anmälan dit?",
@@ -404,14 +406,14 @@
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
   "report.next": "Nästa",
   "report.placeholder": "Ytterligare kommentarer",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
+  "report.reasons.dislike": "Jag tycker inte om det",
+  "report.reasons.dislike_description": "Det är inget som du vill se",
+  "report.reasons.other": "Det är något annat",
   "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
+  "report.reasons.spam": "Det är skräppost",
+  "report.reasons.spam_description": "Skadliga länkar, bedrägligt beteende eller repetitiva svar",
+  "report.reasons.violation": "Det bryter mot serverns regler",
+  "report.reasons.violation_description": "Du är medveten om att det bryter mot specifika regler",
   "report.rules.subtitle": "Select all that apply",
   "report.rules.title": "Which rules are being violated?",
   "report.statuses.subtitle": "Select all that apply",
@@ -420,7 +422,7 @@
   "report.target": "Rapporterar {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.title": "Vill du inte se det här?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
   "report.unfollow": "Sluta följ @{username}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index a7e5313a3..088b5ff36 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 8ea28b965..3c4bcb234 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -18,12 +18,12 @@
   "account.followers": "பின்தொடர்பவர்கள்",
   "account.followers.empty": "இதுவரை யாரும் இந்த பயனரைப் பின்தொடரவில்லை.",
   "account.followers_counter": "{count, plural, one {{counter} வாசகர்} other {{counter} வாசகர்கள்}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural,one {{counter} சந்தா} other {{counter} சந்தாக்கள்}}",
   "account.follows.empty": "இந்த பயனர் இதுவரை யாரையும் பின்தொடரவில்லை.",
   "account.follows_you": "உங்களைப் பின்தொடர்கிறார்",
   "account.hide_reblogs": "இருந்து ஊக்கியாக மறை @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "கடைசி செயல்பாடு",
   "account.link_verified_on": "இந்த இணைப்பை உரிமையாளர் சரிபார்க்கப்பட்டது {date}",
   "account.locked_info": "இந்தக் கணக்கு தனியுரிமை நிலை பூட்டப்பட்டுள்ளது. அவர்களைப் பின்தொடர்பவர் யார் என்பதை உரிமையாளர் கைமுறையாக மதிப்பாய்வு செய்கிறார்.",
   "account.media": "ஊடகங்கள்",
@@ -32,7 +32,6 @@
   "account.mute": "ஊமையான @{name}",
   "account.mute_notifications": "அறிவிப்புகளை முடக்கு @{name}",
   "account.muted": "முடக்கியது",
-  "account.never_active": "எப்போதுமில்லை",
   "account.posts": "டூட்டுகள்",
   "account.posts_with_replies": "Toots மற்றும் பதில்கள்",
   "account.report": "@{name} -ஐப் புகாரளி",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} டூட்} other {{counter} டூட்டுகள்}}",
   "account.unblock": "@{name} மீது தடை நீக்குக",
   "account.unblock_domain": "{domain} ஐ காண்பி",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "சுயவிவரத்தில் இடம்பெற வேண்டாம்",
   "account.unfollow": "பின்தொடர்வதை நிறுத்துக",
   "account.unmute": "@{name} இன் மீது மௌனத் தடையை நீக்குக",
   "account.unmute_notifications": "@{name} இலிருந்து அறிவிப்புகளின் மீது மௌனத் தடையை நீக்குக",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "குறிப்பு ஒன்றை சேர்க்க சொடுக்கவும்",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "கண்டு பிடி",
   "navigation_bar.domain_blocks": "மறைந்த களங்கள்",
   "navigation_bar.edit_profile": "சுயவிவரத்தைத் திருத்தவும்",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "விருப்பத்துக்குகந்த",
   "navigation_bar.filters": "முடக்கப்பட்ட வார்த்தைகள்",
   "navigation_bar.follow_requests": "கோரிக்கைகளை பின்பற்றவும்",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 55a62bb55..2f8936a9c 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Mûi-thé",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 40e37d497..05af59c6a 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -18,12 +18,12 @@
   "account.followers": "అనుచరులు",
   "account.followers.empty": "ఈ వినియోగదారుడిని ఇంకా ఎవరూ అనుసరించడంలేదు.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "ఈ వినియోగదారి ఇంకా ఎవరినీ అనుసరించడంలేదు.",
   "account.follows_you": "మిమ్మల్ని అనుసరిస్తున్నారు",
   "account.hide_reblogs": "@{name} నుంచి బూస్ట్ లను దాచిపెట్టు",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "ఈ లంకె యొక్క యాజమాన్యం {date}న పరీక్షించబడింది",
   "account.locked_info": "ఈ ఖాతా యొక్క గోప్యత స్థితి లాక్ చేయబడి వుంది. ఈ ఖాతాను ఎవరు అనుసరించవచ్చో యజమానే నిర్ణయం తీసుకుంటారు.",
   "account.media": "మీడియా",
@@ -32,7 +32,6 @@
   "account.mute": "@{name}ను మ్యూట్ చెయ్యి",
   "account.mute_notifications": "@{name}నుంచి ప్రకటనలను మ్యూట్ చెయ్యి",
   "account.muted": "మ్యూట్ అయినవి",
-  "account.never_active": "Never",
   "account.posts": "టూట్లు",
   "account.posts_with_replies": "టూట్లు మరియు ప్రత్యుత్తరములు",
   "account.report": "@{name}పై ఫిర్యాదుచేయు",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name}పై బ్లాక్ ను తొలగించు",
   "account.unblock_domain": "{domain}ను దాచవద్దు",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "ప్రొఫైల్లో చూపించవద్దు",
   "account.unfollow": "అనుసరించవద్దు",
   "account.unmute": "@{name}పై మ్యూట్ ని తొలగించు",
   "account.unmute_notifications": "@{name} నుంచి ప్రకటనలపై మ్యూట్ ని తొలగించు",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "కనుగొను",
   "navigation_bar.domain_blocks": "దాచిన డొమైన్లు",
   "navigation_bar.edit_profile": "ప్రొఫైల్ని సవరించండి",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "ఇష్టపడినవి",
   "navigation_bar.filters": "మ్యూట్ చేయబడిన పదాలు",
   "navigation_bar.follow_requests": "అనుసరించడానికి అభ్యర్ధనలు",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 1b276c467..f7eddd11b 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -18,12 +18,12 @@
   "account.followers": "ผู้ติดตาม",
   "account.followers.empty": "ยังไม่มีใครติดตามผู้ใช้นี้",
   "account.followers_counter": "{count, plural, other {{counter} ผู้ติดตาม}}",
+  "account.following": "กำลังติดตาม",
   "account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}",
   "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร",
   "account.follows_you": "ติดตามคุณ",
   "account.hide_reblogs": "ซ่อนการดันจาก @{name}",
   "account.joined": "เข้าร่วมเมื่อ {date}",
-  "account.last_status": "ใช้งานล่าสุด",
   "account.link_verified_on": "ตรวจสอบความเป็นเจ้าของของลิงก์นี้เมื่อ {date}",
   "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง",
   "account.media": "สื่อ",
@@ -32,7 +32,6 @@
   "account.mute": "ซ่อน @{name}",
   "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}",
   "account.muted": "ซ่อนอยู่",
-  "account.never_active": "ไม่เลย",
   "account.posts": "โพสต์",
   "account.posts_with_replies": "โพสต์และการตอบกลับ",
   "account.report": "รายงาน @{name}",
@@ -42,13 +41,15 @@
   "account.statuses_counter": "{count, plural, other {{counter} โพสต์}}",
   "account.unblock": "เลิกปิดกั้น @{name}",
   "account.unblock_domain": "เลิกปิดกั้นโดเมน {domain}",
+  "account.unblock_short": "เลิกปิดกั้น",
   "account.unendorse": "ไม่แนะนำในโปรไฟล์",
   "account.unfollow": "เลิกติดตาม",
   "account.unmute": "เลิกซ่อน @{name}",
   "account.unmute_notifications": "เลิกซ่อนการแจ้งเตือนจาก @{name}",
+  "account.unmute_short": "เลิกซ่อน",
   "account_note.placeholder": "คลิกเพื่อเพิ่มหมายเหตุ",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
+  "admin.dashboard.daily_retention": "อัตราการรักษาผู้ใช้ตามวันหลังจากลงทะเบียน",
+  "admin.dashboard.monthly_retention": "อัตราการรักษาผู้ใช้ตามเดือนหลังจากลงทะเบียน",
   "admin.dashboard.retention.average": "ค่าเฉลี่ย",
   "admin.dashboard.retention.cohort": "เดือนที่ลงทะเบียน",
   "admin.dashboard.retention.cohort_size": "ผู้ใช้ใหม่",
@@ -132,7 +133,7 @@
   "confirmations.redraft.confirm": "ลบแล้วร่างใหม่",
   "confirmations.redraft.message": "คุณแน่ใจหรือไม่ว่าต้องการลบโพสต์นี้แล้วร่างโพสต์ใหม่? รายการโปรดและการดันจะหายไป และการตอบกลับโพสต์ดั้งเดิมจะไม่มีความเกี่ยวพัน",
   "confirmations.reply.confirm": "ตอบกลับ",
-  "confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
+  "confirmations.reply.message": "การตอบกลับในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
   "confirmations.unfollow.confirm": "เลิกติดตาม",
   "confirmations.unfollow.message": "คุณแน่ใจหรือไม่ว่าต้องการเลิกติดตาม {name}?",
   "conversation.delete": "ลบการสนทนา",
@@ -167,10 +168,10 @@
   "empty_column.community": "เส้นเวลาในเซิร์ฟเวอร์ว่างเปล่า เขียนบางอย่างเป็นสาธารณะเพื่อเริ่มต้น!",
   "empty_column.direct": "คุณยังไม่มีข้อความโดยตรงใด ๆ เมื่อคุณส่งหรือรับข้อความ ข้อความจะปรากฏที่นี่",
   "empty_column.domain_blocks": "ยังไม่มีโดเมนที่ปิดกั้นอยู่",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "ไม่มีสิ่งใดที่กำลังนิยมในตอนนี้ กลับมาตรวจสอบในภายหลัง!",
   "empty_column.favourited_statuses": "คุณยังไม่มีโพสต์ที่ชื่นชอบใด ๆ เมื่อคุณชื่นชอบโพสต์ โพสต์จะปรากฏที่นี่",
   "empty_column.favourites": "ยังไม่มีใครชื่นชอบโพสต์นี้ เมื่อใครสักคนชื่นชอบ เขาจะปรากฏที่นี่",
-  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
+  "empty_column.follow_recommendations": "ดูเหมือนว่าจะไม่สามารถสร้างข้อเสนอแนะสำหรับคุณ คุณสามารถลองใช้การค้นหาเพื่อมองหาผู้คนที่คุณอาจรู้จักหรือสำรวจแฮชแท็กที่กำลังนิยม",
   "empty_column.follow_requests": "คุณยังไม่มีคำขอติดตามใด ๆ เมื่อคุณได้รับคำขอ คำขอจะปรากฏที่นี่",
   "empty_column.hashtag": "ยังไม่มีสิ่งใดในแฮชแท็กนี้",
   "empty_column.home": "เส้นเวลาหน้าแรกของคุณว่างเปล่า! ติดตามผู้คนเพิ่มเติมเพื่อเติมเส้นเวลาให้เต็ม {suggestions}",
@@ -179,7 +180,7 @@
   "empty_column.lists": "คุณยังไม่มีรายการใด ๆ เมื่อคุณสร้างรายการ รายการจะปรากฏที่นี่",
   "empty_column.mutes": "คุณยังไม่ได้ซ่อนผู้ใช้ใด ๆ",
   "empty_column.notifications": "คุณยังไม่มีการแจ้งเตือนใด ๆ เมื่อผู้คนอื่น ๆ โต้ตอบกับคุณ คุณจะเห็นการแจ้งเตือนที่นี่",
-  "empty_column.public": "ไม่มีสิ่งใดที่นี่! เขียนบางอย่างเป็นสาธารณะ หรือติดตามผู้ใช้จากเซิร์ฟเวอร์อื่น ๆ ด้วยตนเองเพื่อเติมให้เต็ม",
+  "empty_column.public": "ไม่มีสิ่งใดที่นี่! เขียนบางอย่างเป็นสาธารณะ หรือติดตามผู้ใช้จากเซิร์ฟเวอร์อื่น ๆ ด้วยตนเองเพื่อเติมเส้นเวลาให้เต็ม",
   "error.unexpected_crash.explanation": "เนื่องจากข้อบกพร่องในโค้ดของเราหรือปัญหาความเข้ากันได้ของเบราว์เซอร์ จึงไม่สามารถแสดงหน้านี้ได้อย่างถูกต้อง",
   "error.unexpected_crash.explanation_addons": "ไม่สามารถแสดงหน้านี้ได้อย่างถูกต้อง ข้อผิดพลาดนี้เป็นไปได้ว่าเกิดจากส่วนเสริมของเบราว์เซอร์หรือเครื่องมือการแปลอัตโนมัติ",
   "error.unexpected_crash.next_steps": "ลองรีเฟรชหน้า หากนั่นไม่ช่วย คุณอาจยังสามารถใช้ Mastodon ได้ผ่านเบราว์เซอร์อื่นหรือแอป",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "ค้นพบ",
   "navigation_bar.domain_blocks": "โดเมนที่ปิดกั้นอยู่",
   "navigation_bar.edit_profile": "แก้ไขโปรไฟล์",
+  "navigation_bar.explore": "สำรวจ",
   "navigation_bar.favourites": "รายการโปรด",
   "navigation_bar.filters": "คำที่ซ่อนอยู่",
   "navigation_bar.follow_requests": "คำขอติดตาม",
@@ -352,7 +354,7 @@
   "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
   "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป",
   "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
-  "notifications_permission_banner.title": "ไม่พลาดสิ่งต่าง ๆ",
+  "notifications_permission_banner.title": "ไม่พลาดสิ่งใด",
   "picture_in_picture.restore": "นำกลับมา",
   "poll.closed": "ปิดแล้ว",
   "poll.refresh": "รีเฟรช",
@@ -388,42 +390,42 @@
   "relative_time.today": "วันนี้",
   "reply_indicator.cancel": "ยกเลิก",
   "report.block": "ปิดกั้น",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block_explanation": "คุณจะไม่เห็นโพสต์ของเขา เขาจะไม่สามารถเห็นโพสต์ของคุณหรือติดตามคุณ เขาจะสามารถบอกได้ว่ามีการปิดกั้นเขา",
   "report.categories.other": "อื่น ๆ",
   "report.categories.spam": "สแปม",
   "report.categories.violation": "เนื้อหาละเมิดหนึ่งกฎของเซิร์ฟเวอร์หรือมากกว่า",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.subtitle": "เลือกที่ตรงกันที่สุด",
+  "report.category.title": "บอกเราว่าเกิดอะไรขึ้นกับ {type} นี้",
   "report.category.title_account": "โปรไฟล์",
   "report.category.title_status": "โพสต์",
   "report.close": "เสร็จสิ้น",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.comment.title": "มีสิ่งอื่นใดที่คุณคิดว่าเราควรทราบหรือไม่?",
   "report.forward": "ส่งต่อไปยัง {target}",
   "report.forward_hint": "บัญชีมาจากเซิร์ฟเวอร์อื่น ส่งสำเนาของรายงานที่ไม่ระบุตัวตนไปที่นั่นด้วย?",
   "report.mute": "ซ่อน",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
+  "report.mute_explanation": "คุณจะไม่เห็นโพสต์ของเขา เขายังสามารถติดตามคุณและเห็นโพสต์ของคุณและจะไม่ทราบว่ามีการซ่อนเขา",
   "report.next": "ถัดไป",
   "report.placeholder": "ความคิดเห็นเพิ่มเติม",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "ฉันไม่ชอบโพสต์",
+  "report.reasons.dislike_description": "โพสต์ไม่ใช่บางอย่างที่คุณต้องการเห็น",
+  "report.reasons.other": "โพสต์เป็นอย่างอื่น",
+  "report.reasons.other_description": "ปัญหาไม่เข้าหมวดหมู่อื่น ๆ",
+  "report.reasons.spam": "โพสต์เป็นสแปม",
+  "report.reasons.spam_description": "ลิงก์ที่เป็นอันตราย, การมีส่วนร่วมปลอม หรือการตอบกลับซ้ำ ๆ",
+  "report.reasons.violation": "โพสต์ละเมิดกฎของเซิร์ฟเวอร์",
+  "report.reasons.violation_description": "คุณทราบว่าโพสต์แหกกฎเฉพาะ",
+  "report.rules.subtitle": "เลือกทั้งหมดที่นำไปใช้",
+  "report.rules.title": "กำลังละเมิดกฎใด?",
+  "report.statuses.subtitle": "เลือกทั้งหมดที่นำไปใช้",
+  "report.statuses.title": "มีโพสต์ใด ๆ ที่สนับสนุนรายงานนี้หรือไม่?",
   "report.submit": "ส่ง",
   "report.target": "กำลังรายงาน {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
+  "report.thanks.take_action": "นี่คือตัวเลือกของคุณสำหรับการควบคุมสิ่งที่คุณเห็นใน Mastodon:",
+  "report.thanks.take_action_actionable": "ขณะที่เราตรวจทานสิ่งนี้ คุณสามารถดำเนินการกับ @{name}:",
+  "report.thanks.title": "ไม่ต้องการเห็นสิ่งนี้?",
   "report.thanks.title_actionable": "ขอบคุณสำหรับการรายงาน เราจะตรวจสอบสิ่งนี้",
   "report.unfollow": "เลิกติดตาม @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.unfollow_explanation": "คุณกำลังติดตามบัญชีนี้ เพื่อไม่ให้เห็นโพสต์ของเขาในฟีดหน้าแรกของคุณอีกต่อไป เลิกติดตามเขา",
   "search.placeholder": "ค้นหา",
   "search_popout.search_format": "รูปแบบการค้นหาขั้นสูง",
   "search_popout.tips.full_text": "ข้อความแบบง่ายส่งคืนโพสต์ที่คุณได้เขียน ชื่นชอบ ดัน หรือได้รับการกล่าวถึง ตลอดจนชื่อผู้ใช้, ชื่อที่แสดง และแฮชแท็กที่ตรงกัน",
@@ -434,7 +436,7 @@
   "search_results.accounts": "ผู้คน",
   "search_results.all": "ทั้งหมด",
   "search_results.hashtags": "แฮชแท็ก",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "ไม่พบสิ่งใดสำหรับคำค้นหาเหล่านี้",
   "search_results.statuses": "โพสต์",
   "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้",
   "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 0d7c92f05..96d6f83c3 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -18,12 +18,12 @@
   "account.followers": "Takipçi",
   "account.followers.empty": "Henüz kimse bu kullanıcıyı takip etmiyor.",
   "account.followers_counter": "{count, plural, one {{counter} Takipçi} other {{counter} Takipçi}}",
+  "account.following": "Takip Ediliyor",
   "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}",
   "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.",
   "account.follows_you": "Seni takip ediyor",
   "account.hide_reblogs": "@{name} kişisinin boostlarını gizle",
   "account.joined": "{date} tarihinde katıldı",
-  "account.last_status": "Son etkinlik",
   "account.link_verified_on": "Bu bağlantının sahipliği {date} tarihinde kontrol edildi",
   "account.locked_info": "Bu hesabın gizlilik durumu kilitli olarak ayarlanmış. Sahibi, onu kimin takip edebileceğini elle inceliyor.",
   "account.media": "Medya",
@@ -32,7 +32,6 @@
   "account.mute": "@{name} adlı kişiyi sessize al",
   "account.mute_notifications": "@{name} adlı kişinin bildirimlerini kapat",
   "account.muted": "Susturuldu",
-  "account.never_active": "Asla",
   "account.posts": "Gönderiler",
   "account.posts_with_replies": "Gönderiler ve yanıtlar",
   "account.report": "@{name} adlı kişiyi bildir",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}",
   "account.unblock": "@{name} adlı kişinin engelini kaldır",
   "account.unblock_domain": "{domain} alan adının engelini kaldır",
+  "account.unblock_short": "Engeli kaldır",
   "account.unendorse": "Profilde gösterme",
   "account.unfollow": "Takibi bırak",
   "account.unmute": "@{name} adlı kişinin sesini aç",
   "account.unmute_notifications": "@{name} adlı kişinin bildirimlerini aç",
+  "account.unmute_short": "Susturmayı kaldır",
   "account_note.placeholder": "Not eklemek için tıklayın",
   "admin.dashboard.daily_retention": "Kayıttan sonra günlük kullanıcı saklama oranı",
   "admin.dashboard.monthly_retention": "Kayıttan sonra aylık kullanıcı saklama oranı",
@@ -121,7 +122,7 @@
   "confirmations.delete_list.confirm": "Sil",
   "confirmations.delete_list.message": "Bu listeyi kalıcı olarak silmek istediğinden emin misin?",
   "confirmations.discard_edit_media.confirm": "Vazgeç",
-  "confirmations.discard_edit_media.message": "Ortam açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?",
+  "confirmations.discard_edit_media.message": "Medya açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?",
   "confirmations.domain_block.confirm": "Alanın tamamını engelle",
   "confirmations.domain_block.message": "{domain} alanının tamamını engellemek istediğinden gerçekten emin misin? Genellikle hedeflenen birkaç engelleme veya sessize alma yeterlidir ve tercih edilir. Bu alan adından gelen içeriği herhangi bir genel zaman çizelgesinde veya bildirimlerinde görmezsin. Bu alan adındaki takipçilerin kaldırılır.",
   "confirmations.logout.confirm": "Oturumu kapat",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Keşfet",
   "navigation_bar.domain_blocks": "Engellenen alan adları",
   "navigation_bar.edit_profile": "Profili düzenle",
+  "navigation_bar.explore": "Keşfet",
   "navigation_bar.favourites": "Favoriler",
   "navigation_bar.filters": "Sessize alınmış kelimeler",
   "navigation_bar.follow_requests": "Takip istekleri",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index ebdbdbd6e..06936f110 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Сезгә язылган",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Медиа",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Беркайчан да",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Язылынмау",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Профильны үзгәртү",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -394,7 +396,7 @@
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choose the best match",
   "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
+  "report.category.title_account": "профиль",
   "report.category.title_status": "post",
   "report.close": "Done",
   "report.comment.title": "Is there anything else you think we should know?",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
@@ -477,9 +479,9 @@
   "status.report": "Report @{name}",
   "status.sensitive_warning": "Sensitive content",
   "status.share": "Уртаклашу",
-  "status.show_less": "Show less",
+  "status.show_less": "Әзрәк күрсәтү",
   "status.show_less_all": "Show less for all",
-  "status.show_more": "Show more",
+  "status.show_more": "Күбрәк күрсәтү",
   "status.show_more_all": "Show more for all",
   "status.show_thread": "Show thread",
   "status.uncached_media_warning": "Not available",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index a7e5313a3..088b5ff36 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -18,12 +18,12 @@
   "account.followers": "Followers",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "Follows you",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "Media",
@@ -32,7 +32,6 @@
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
-  "account.never_active": "Never",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "Unfollow",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Edit profile",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "Follow requests",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index e27eb5c21..06bb94307 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -18,12 +18,12 @@
   "account.followers": "Підписники",
   "account.followers.empty": "Ніхто ще не підписався на цього користувача.",
   "account.followers_counter": "{count, plural, one {{counter} Підписник} few {{counter} Підписники} many {{counter} Підписників} other {{counter} Підписники}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Підписка} few {{counter} Підписки} many {{counter} Підписок} other {{counter} Підписки}}",
   "account.follows.empty": "Цей користувач ще ні на кого не підписався.",
   "account.follows_you": "Підписаний(-а) на вас",
   "account.hide_reblogs": "Сховати передмухи від @{name}",
   "account.joined": "Долучення {date}",
-  "account.last_status": "Крайня активність",
   "account.link_verified_on": "Права власності на це посилання були перевірені {date}",
   "account.locked_info": "Статус конфіденційності цього облікового запису встановлено у заблокований. Власник вручну переглядає, хто може за ним стежити.",
   "account.media": "Медіа",
@@ -32,7 +32,6 @@
   "account.mute": "Заглушити @{name}",
   "account.mute_notifications": "Не показувати сповіщення від @{name}",
   "account.muted": "Заглушений",
-  "account.never_active": "Ніколи",
   "account.posts": "Дмухи",
   "account.posts_with_replies": "Дмухи й відповіді",
   "account.report": "Поскаржитися на @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Пост} few {{counter} Пости} many {{counter} Постів} other {{counter} Пости}}",
   "account.unblock": "Розблокувати @{name}",
   "account.unblock_domain": "Розблокувати {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Не публікувати у профілі",
   "account.unfollow": "Відписатися",
   "account.unmute": "Зняти глушення з @{name}",
   "account.unmute_notifications": "Показувати сповіщення від @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Коментарі відсутні",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Знайти",
   "navigation_bar.domain_blocks": "Приховані домени",
   "navigation_bar.edit_profile": "Редагувати профіль",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Вподобане",
   "navigation_bar.filters": "Приховані слова",
   "navigation_bar.follow_requests": "Запити на підписку",
@@ -406,10 +408,10 @@
   "report.placeholder": "Додаткові коментарі",
   "report.reasons.dislike": "Мені це не подобається",
   "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
+  "report.reasons.other": "Це щось інше",
   "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam": "Це спам",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index 3e71bcc06..e5aad2355 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -18,12 +18,12 @@
   "account.followers": "پیروکار",
   "account.followers.empty": "\"ہنوز اس صارف کی کوئی پیروی نہیں کرتا\".",
   "account.followers_counter": "{count, plural,one {{counter} پیروکار} other {{counter} پیروکار}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} پیروی کر رہے ہیں} other {{counter} پیروی کر رہے ہیں}}",
   "account.follows.empty": "\"یہ صارف ہنوز کسی کی پیروی نہیں کرتا ہے\".",
   "account.follows_you": "آپ کا پیروکار ہے",
   "account.hide_reblogs": "@{name} سے فروغ چھپائیں",
   "account.joined": "{date} شامل ہوئے",
-  "account.last_status": "آخری فعال",
   "account.link_verified_on": "اس لنک کی ملکیت کی توثیق {date} پر کی گئی تھی",
   "account.locked_info": "اس اکاونٹ کا اخفائی ضابطہ مقفل ہے۔ صارف کی پیروی کون کر سکتا ہے اس کا جائزہ وہ خود لیتا ہے.",
   "account.media": "وسائل",
@@ -32,7 +32,6 @@
   "account.mute": "خاموش @{name}",
   "account.mute_notifications": "@{name} سے اطلاعات خاموش کریں",
   "account.muted": "خاموش کردہ",
-  "account.never_active": "کبھی نہیں",
   "account.posts": "ٹوٹ",
   "account.posts_with_replies": "ٹوٹ اور جوابات",
   "account.report": "@{name} اطلاع کریں",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "@{name} کو بحال کریں",
   "account.unblock_domain": "{domain} کو نہ چھپائیں",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "مشخص پر نمایاں نہ کریں",
   "account.unfollow": "پیروی ترک کریں",
   "account.unmute": "@{name} کو با آواز کریں",
   "account.unmute_notifications": "@{name} سے اطلاعات کو با آواز کریں",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "دریافت کریں",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "پروفائل میں ترمیم کریں",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "پسندیدہ",
   "navigation_bar.filters": "خاموش کردہ الفاظ",
   "navigation_bar.follow_requests": "پیروی کی درخواستیں",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index ab777e31e..b6db3c14b 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -18,12 +18,12 @@
   "account.followers": "Người theo dõi",
   "account.followers.empty": "Chưa có người theo dõi nào.",
   "account.followers_counter": "{count, plural, one {{counter} Người theo dõi} other {{counter} Người theo dõi}}",
+  "account.following": "Đang theo dõi",
   "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}",
   "account.follows.empty": "Người này chưa theo dõi ai.",
   "account.follows_you": "Đang theo dõi bạn",
-  "account.hide_reblogs": "Ẩn chia sẻ từ @{name}",
+  "account.hide_reblogs": "Ẩn tút do @{name} đăng lại",
   "account.joined": "Đã tham gia {date}",
-  "account.last_status": "Online",
   "account.link_verified_on": "Liên kết này đã được xác thực vào {date}",
   "account.locked_info": "Đây là tài khoản riêng tư. Họ sẽ tự mình xét duyệt các yêu cầu theo dõi.",
   "account.media": "Media",
@@ -32,20 +32,21 @@
   "account.mute": "Ẩn @{name}",
   "account.mute_notifications": "Tắt thông báo từ @{name}",
   "account.muted": "Đã ẩn",
-  "account.never_active": "Chưa có bất cứ hoạt động nào",
   "account.posts": "Tút",
   "account.posts_with_replies": "Trả lời",
   "account.report": "Báo cáo @{name}",
   "account.requested": "Đang chờ chấp thuận. Nhấp vào đây để hủy yêu cầu theo dõi",
   "account.share": "Chia sẻ trang @{name}",
-  "account.show_reblogs": "Hiện chia sẻ từ @{name}",
+  "account.show_reblogs": "Hiện tút do @{name} đăng lại",
   "account.statuses_counter": "{count, plural, one {{counter} Tút} other {{counter} Tút}}",
   "account.unblock": "Bỏ chặn @{name}",
   "account.unblock_domain": "Bỏ ẩn {domain}",
+  "account.unblock_short": "Bỏ chặn",
   "account.unendorse": "Ngưng tôn vinh người này",
   "account.unfollow": "Ngưng theo dõi",
   "account.unmute": "Bỏ ẩn @{name}",
   "account.unmute_notifications": "Mở lại thông báo từ @{name}",
+  "account.unmute_short": "Bỏ ẩn",
   "account_note.placeholder": "Nhấn để thêm",
   "admin.dashboard.daily_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo ngày",
   "admin.dashboard.monthly_retention": "Tỉ lệ người dùng sau đăng ký ở lại theo tháng",
@@ -59,7 +60,7 @@
   "announcement.announcement": "Thông báo chung",
   "attachments_list.unprocessed": "(chưa xử lí)",
   "autosuggest_hashtag.per_week": "{count} mỗi tuần",
-  "boost_modal.combo": "Nhấn {combo} để chia sẻ nhanh hơn",
+  "boost_modal.combo": "Nhấn {combo} để bỏ qua bước này",
   "bundle_column_error.body": "Đã có lỗi xảy ra trong khi tải nội dung này.",
   "bundle_column_error.retry": "Thử lại",
   "bundle_column_error.title": "Không có kết nối internet",
@@ -130,7 +131,7 @@
   "confirmations.mute.explanation": "Điều này sẽ khiến tút của họ và những tút có nhắc đến họ bị ẩn, tuy nhiên họ vẫn có thể xem tút của bạn và theo dõi bạn.",
   "confirmations.mute.message": "Bạn thật sự muốn ẩn {name}?",
   "confirmations.redraft.confirm": "Xóa & viết lại",
-  "confirmations.redraft.message": "Bạn thật sự muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và chia sẻ của tút, cũng như những trả lời sẽ không còn nội dung gốc.",
+  "confirmations.redraft.message": "Bạn thật sự muốn xóa tút và viết lại? Điều này sẽ xóa mất những lượt thích và đăng lại của tút, cũng như những trả lời sẽ không còn nội dung gốc.",
   "confirmations.reply.confirm": "Trả lời",
   "confirmations.reply.message": "Nội dung bạn đang soạn thảo sẽ bị ghi đè, bạn có tiếp tục?",
   "confirmations.unfollow.confirm": "Ngưng theo dõi",
@@ -167,7 +168,7 @@
   "empty_column.community": "Máy chủ của bạn chưa có tút nào công khai. Bạn hãy thử viết gì đó đi!",
   "empty_column.direct": "Bạn chưa có tin nhắn nào. Khi bạn gửi hoặc nhận tin nhắn, nó sẽ hiển thị ở đây.",
   "empty_column.domain_blocks": "Chưa ẩn bất kỳ máy chủ nào.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Chưa có xu hướng nào. Kiểm tra lại sau!",
   "empty_column.favourited_statuses": "Bạn chưa thích tút nào. Hãy thử đi, nó sẽ xuất hiện ở đây.",
   "empty_column.favourites": "Chưa có ai thích tút này.",
   "empty_column.follow_recommendations": "Bạn chưa có gợi ý theo dõi nào. Hãy thử tìm kiếm những người thú vị hoặc khám phá những hashtag xu hướng.",
@@ -186,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Hãy tắt add-on và làm tươi trang. Nếu vẫn không được, bạn nên thử đăng nhập Mastodon trên trình duyệt khác hoặc app khác.",
   "errors.unexpected_crash.copy_stacktrace": "Sao chép stacktrace vào clipboard",
   "errors.unexpected_crash.report_issue": "Báo cáo lỗi",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Kết quả tìm kiếm",
+  "explore.suggested_follows": "Đề xuất cho bạn",
+  "explore.title": "Khám phá",
+  "explore.trending_links": "Tin tức",
+  "explore.trending_statuses": "Tút",
+  "explore.trending_tags": "Hashtag",
   "follow_recommendations.done": "Xong",
   "follow_recommendations.heading": "Theo dõi những người bạn muốn đọc tút của họ! Dưới đây là vài gợi ý.",
   "follow_recommendations.lead": "Tút từ những người bạn theo dõi sẽ hiện theo thứ tự thời gian trên bảng tin. Đừng ngại, bạn có thể dễ dàng ngưng theo dõi họ bất cứ lúc nào!",
@@ -217,7 +218,7 @@
   "hashtag.column_settings.tag_mode.none": "Không chọn",
   "hashtag.column_settings.tag_toggle": "Bao gồm thêm hashtag cho cột này",
   "home.column_settings.basic": "Tùy chỉnh",
-  "home.column_settings.show_reblogs": "Hiện những lượt chia sẻ",
+  "home.column_settings.show_reblogs": "Hiện những lượt đăng lại",
   "home.column_settings.show_replies": "Hiện những tút dạng trả lời",
   "home.hide_announcements": "Ẩn thông báo",
   "home.show_announcements": "Hiện thông báo",
@@ -226,7 +227,7 @@
   "intervals.full.minutes": "{number, plural, other {# phút}}",
   "keyboard_shortcuts.back": "trở lại",
   "keyboard_shortcuts.blocked": "mở danh sách người đã chặn",
-  "keyboard_shortcuts.boost": "chia sẻ",
+  "keyboard_shortcuts.boost": "Đăng lại",
   "keyboard_shortcuts.column": "mở các mục",
   "keyboard_shortcuts.compose": "mở khung soạn tút",
   "keyboard_shortcuts.description": "Mô tả",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Khám phá",
   "navigation_bar.domain_blocks": "Máy chủ đã ẩn",
   "navigation_bar.edit_profile": "Trang cá nhân",
+  "navigation_bar.explore": "Khám phá",
   "navigation_bar.favourites": "Thích",
   "navigation_bar.filters": "Bộ lọc từ ngữ",
   "navigation_bar.follow_requests": "Yêu cầu theo dõi",
@@ -307,19 +309,19 @@
   "navigation_bar.preferences": "Cài đặt",
   "navigation_bar.public_timeline": "Thế giới",
   "navigation_bar.security": "Bảo mật",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} vừa đăng ký",
   "notification.favourite": "{name} thích tút của bạn",
   "notification.follow": "{name} theo dõi bạn",
   "notification.follow_request": "{name} yêu cầu theo dõi bạn",
   "notification.mention": "{name} nhắc đến bạn",
   "notification.own_poll": "Cuộc bình chọn của bạn đã kết thúc",
   "notification.poll": "Cuộc bình chọn đã kết thúc",
-  "notification.reblog": "{name} chia sẻ tút của bạn",
+  "notification.reblog": "{name} đăng lại tút của bạn",
   "notification.status": "{name} vừa đăng",
   "notification.update": "{name} đã viết lại một tút",
   "notifications.clear": "Xóa hết thông báo",
   "notifications.clear_confirmation": "Bạn thật sự muốn xóa vĩnh viễn tất cả thông báo của mình?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Lượt đăng ký mới:",
   "notifications.column_settings.alert": "Thông báo trên máy tính",
   "notifications.column_settings.favourite": "Lượt thích:",
   "notifications.column_settings.filter_bar.advanced": "Toàn bộ",
@@ -330,7 +332,7 @@
   "notifications.column_settings.mention": "Lượt nhắc đến:",
   "notifications.column_settings.poll": "Kết quả bình chọn:",
   "notifications.column_settings.push": "Thông báo đẩy",
-  "notifications.column_settings.reblog": "Lượt chia sẻ mới:",
+  "notifications.column_settings.reblog": "Lượt đăng lại mới:",
   "notifications.column_settings.show": "Thông báo trên thanh menu",
   "notifications.column_settings.sound": "Kèm theo tiếng \"bíp\"",
   "notifications.column_settings.status": "Tút mới:",
@@ -338,7 +340,7 @@
   "notifications.column_settings.unread_notifications.highlight": "Nổi bật thông báo chưa đọc",
   "notifications.column_settings.update": "Lượt sửa:",
   "notifications.filter.all": "Toàn bộ",
-  "notifications.filter.boosts": "Chia sẻ",
+  "notifications.filter.boosts": "Đăng lại",
   "notifications.filter.favourites": "Thích",
   "notifications.filter.follows": "Đang theo dõi",
   "notifications.filter.mentions": "Lượt nhắc đến",
@@ -387,54 +389,54 @@
   "relative_time.seconds": "{number}s",
   "relative_time.today": "hôm nay",
   "reply_indicator.cancel": "Hủy bỏ",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Chặn",
+  "report.block_explanation": "Bạn sẽ không thấy tút của họ nữa. Họ cũng không thể theo dõi hoặc thấy tút của bạn. Họ sẽ biết là họ đã bị chặn.",
   "report.categories.other": "Khác",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Vi phạm quy tắc máy chủ",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.subtitle": "Chọn mục gần khớp nhất",
+  "report.category.title": "Nói với họ chuyện gì xảy ra với {type}",
+  "report.category.title_account": "người dùng",
+  "report.category.title_status": "tút",
+  "report.close": "Xong",
+  "report.comment.title": "Bạn nghĩ chúng tôi nên biết thêm điều gì?",
   "report.forward": "Chuyển đến {target}",
   "report.forward_hint": "Người này thuộc máy chủ khác. Gửi một báo cáo ẩn danh tới máy chủ đó?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Ẩn",
+  "report.mute_explanation": "Bạn sẽ không thấy tút của họ nữa. Họ cũng không thể theo dõi hoặc thấy tút của bạn. Họ sẽ không biết là họ đã bị bạn ẩn.",
+  "report.next": "Tiếp theo",
   "report.placeholder": "Bổ sung thêm",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Tôi không thích nó",
+  "report.reasons.dislike_description": "Đó không phải là thứ gì mà bạn muốn thấy",
+  "report.reasons.other": "Một lý do khác",
+  "report.reasons.other_description": "Vấn đề không nằm trong những mục trên",
+  "report.reasons.spam": "Đây là spam",
+  "report.reasons.spam_description": "Liên kết độc hại, tạo tương tác giả hoặc trả lời lặp đi lặp lại",
+  "report.reasons.violation": "Vi phạm quy tắc máy chủ",
+  "report.reasons.violation_description": "Bạn nhận thấy nó vi phạm quy tắc máy chủ",
+  "report.rules.subtitle": "Chọn tất cả những áp dụng",
+  "report.rules.title": "Vi phạm quy tắc nào?",
+  "report.statuses.subtitle": "Chọn tất cả những áp dụng",
+  "report.statuses.title": "Bạn muốn gửi tút nào kèm báo cáo này?",
   "report.submit": "Gửi đi",
   "report.target": "Báo cáo {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Đây là một số cách để kiểm soát thứ bạn nhìn thấy trên Mastodon:",
+  "report.thanks.take_action_actionable": "Trong lúc chờ chúng tôi xem xét, bạn có thể áp dụng hành động với @{name}:",
+  "report.thanks.title": "Không muốn xem thứ này?",
+  "report.thanks.title_actionable": "Cảm ơn đã báo cáo, chúng tôi sẽ xem xét kỹ.",
+  "report.unfollow": "Ngưng theo dõi @{name}",
+  "report.unfollow_explanation": "Bạn đang theo dõi người này. Để không thấy tút của họ trong bảng tin nữa, hãy ngưng theo dõi.",
   "search.placeholder": "Tìm kiếm",
   "search_popout.search_format": "Gợi ý",
-  "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, chia sẻ hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.",
+  "search_popout.tips.full_text": "Nội dung trả về bao gồm những tút mà bạn đã viết, thích, đăng lại hoặc những tút có nhắc đến bạn. Bạn cũng có thể tìm địa chỉ người dùng, tên hiển thị và hashtag.",
   "search_popout.tips.hashtag": "hashtag",
   "search_popout.tips.status": "tút",
   "search_popout.tips.text": "Nội dung trả về là tên người dùng, tên hiển thị và hashtag",
   "search_popout.tips.user": "người dùng",
   "search_results.accounts": "Người dùng",
-  "search_results.all": "All",
+  "search_results.all": "Toàn bộ",
   "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Không tìm thấy kết quả trùng khớp",
   "search_results.statuses": "Tút",
   "search_results.statuses_fts_disabled": "Máy chủ của bạn không bật tính năng tìm kiếm tút.",
   "search_results.total": "{count, number} {count, plural, one {kết quả} other {kết quả}}",
@@ -442,8 +444,8 @@
   "status.admin_status": "Mở tút này trong giao diện quản trị",
   "status.block": "Chặn @{name}",
   "status.bookmark": "Lưu",
-  "status.cancel_reblog_private": "Hủy chia sẻ",
-  "status.cannot_reblog": "Không thể chia sẻ tút này",
+  "status.cancel_reblog_private": "Hủy đăng lại",
+  "status.cannot_reblog": "Không thể đăng lại tút này",
   "status.copy": "Sao chép URL",
   "status.delete": "Xóa",
   "status.detailed_status": "Xem chi tiết thêm",
@@ -466,10 +468,10 @@
   "status.pin": "Ghim lên trang cá nhân",
   "status.pinned": "Tút đã ghim",
   "status.read_more": "Đọc tiếp",
-  "status.reblog": "Chia sẻ",
-  "status.reblog_private": "Chia sẻ (Riêng tư)",
-  "status.reblogged_by": "{name} chia sẻ",
-  "status.reblogs.empty": "Tút này chưa có ai chia sẻ. Nếu có, nó sẽ hiển thị ở đây.",
+  "status.reblog": "Đăng lại",
+  "status.reblog_private": "Đăng lại (Riêng tư)",
+  "status.reblogged_by": "{name} đăng lại",
+  "status.reblogs.empty": "Tút này chưa có ai đăng lại. Nếu có, nó sẽ hiển thị ở đây.",
   "status.redraft": "Xóa và viết lại",
   "status.remove_bookmark": "Bỏ lưu",
   "status.reply": "Trả lời",
diff --git a/app/javascript/mastodon/locales/whitelist_kmr.json b/app/javascript/mastodon/locales/whitelist_ckb.json
index 0d4f101c7..0d4f101c7 100644
--- a/app/javascript/mastodon/locales/whitelist_kmr.json
+++ b/app/javascript/mastodon/locales/whitelist_ckb.json
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index df307d439..b321d1525 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -18,12 +18,12 @@
   "account.followers": "ⵉⵎⴹⴼⴰⵕⵏ",
   "account.followers.empty": "No one follows this user yet.",
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
+  "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "This user doesn't follow anyone yet.",
   "account.follows_you": "ⴹⴼⵕⵏ ⴽⵯⵏ",
   "account.hide_reblogs": "Hide boosts from @{name}",
   "account.joined": "Joined {date}",
-  "account.last_status": "Last active",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
   "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
   "account.media": "ⴰⵙⵏⵖⵎⵉⵙ",
@@ -32,7 +32,6 @@
   "account.mute": "ⵥⵥⵉⵥⵏ @{name}",
   "account.mute_notifications": "ⵥⵥⵉⵥⵏ ⵜⵉⵏⵖⵎⵉⵙⵉⵏ ⵙⴳ @{name}",
   "account.muted": "ⵉⵜⵜⵓⵥⵉⵥⵏ",
-  "account.never_active": "ⵓⵙⴰⵔ",
   "account.posts": "Toots",
   "account.posts_with_replies": "Toots and replies",
   "account.report": "Report @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
   "account.unblock": "Unblock @{name}",
   "account.unblock_domain": "Unblock domain {domain}",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "Don't feature on profile",
   "account.unfollow": "ⴽⴽⵙ ⴰⴹⴼⴼⵓⵕ",
   "account.unmute": "Unmute @{name}",
   "account.unmute_notifications": "Unmute notifications from @{name}",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "Click to add a note",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "Discover",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "ⵙⵏⴼⵍ ⵉⴼⵔⵙ",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "Favourites",
   "navigation_bar.filters": "Muted words",
   "navigation_bar.follow_requests": "ⵜⵓⵜⵔⴰⵡⵉⵏ ⵏ ⵓⴹⴼⴰⵕ",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 7f6743e62..9e306688e 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -18,12 +18,12 @@
   "account.followers": "关注者",
   "account.followers.empty": "目前无人关注此用户。",
   "account.followers_counter": "被 {counter} 人关注",
+  "account.following": "正在关注",
   "account.following_counter": "正在关注 {counter} 人",
   "account.follows.empty": "此用户目前尚未关注任何人。",
   "account.follows_you": "关注了你",
   "account.hide_reblogs": "隐藏来自 @{name} 的转嘟",
   "account.joined": "加入于 {date}",
-  "account.last_status": "最近活动",
   "account.link_verified_on": "此链接的所有权已在 {date} 检查",
   "account.locked_info": "此账户已锁嘟。账户的主人会手动审核关注者。",
   "account.media": "媒体",
@@ -32,7 +32,6 @@
   "account.mute": "隐藏 @{name}",
   "account.mute_notifications": "隐藏来自 @{name} 的通知",
   "account.muted": "已隐藏",
-  "account.never_active": "从未活跃",
   "account.posts": "嘟文",
   "account.posts_with_replies": "嘟文和回复",
   "account.report": "举报 @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{counter} 条嘟文",
   "account.unblock": "解除屏蔽 @{name}",
   "account.unblock_domain": "不再屏蔽 {domain} 实例",
+  "account.unblock_short": "移出黑名单",
   "account.unendorse": "不在个人资料中推荐此用户",
   "account.unfollow": "取消关注",
   "account.unmute": "不再隐藏 @{name}",
   "account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
+  "account.unmute_short": "恢复消息提醒",
   "account_note.placeholder": "点击添加备注",
   "admin.dashboard.daily_retention": "注册后用户留存率(按日计算)",
   "admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "发现",
   "navigation_bar.domain_blocks": "已屏蔽的网站",
   "navigation_bar.edit_profile": "修改个人资料",
+  "navigation_bar.explore": "探索",
   "navigation_bar.favourites": "喜欢",
   "navigation_bar.filters": "隐藏关键词",
   "navigation_bar.follow_requests": "关注请求",
@@ -402,14 +404,14 @@
   "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
   "report.mute": "静音",
   "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的嘟文,但他们不会知道他们被静音了。",
-  "report.next": "Next",
+  "report.next": "下一步",
   "report.placeholder": "备注",
   "report.reasons.dislike": "我不喜欢它",
   "report.reasons.dislike_description": "这不是你想看到的东西",
   "report.reasons.other": "其他原因",
   "report.reasons.other_description": "该问题不符合其他类别",
   "report.reasons.spam": "它是垃圾信息",
-  "report.reasons.spam_description": "恶意链接、虚假参与或重复性回复",
+  "report.reasons.spam_description": "恶意链接,虚假互动和重复回复",
   "report.reasons.violation": "它违反了服务器规则",
   "report.reasons.violation_description": "你清楚它违反了特定的规则",
   "report.rules.subtitle": "选择所有适用选项",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 292b64042..b60560cd1 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -18,12 +18,12 @@
   "account.followers": "關注者",
   "account.followers.empty": "尚未有人關注這位使用者。",
   "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}}關注者",
+  "account.following": "Following",
   "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}",
   "account.follows.empty": "這位使用者尚未關注任何人。",
   "account.follows_you": "關注你",
   "account.hide_reblogs": "隱藏 @{name} 的轉推",
   "account.joined": "於 {date} 加入",
-  "account.last_status": "上次活躍時間",
   "account.link_verified_on": "此連結的所有權已在 {date} 檢查過",
   "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。",
   "account.media": "媒體",
@@ -32,7 +32,6 @@
   "account.mute": "將 @{name} 靜音",
   "account.mute_notifications": "將來自 @{name} 的通知靜音",
   "account.muted": "靜音",
-  "account.never_active": "永不",
   "account.posts": "文章",
   "account.posts_with_replies": "包含回覆的文章",
   "account.report": "舉報 @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural,one {{counter} 篇}other {{counter} 篇}}文章",
   "account.unblock": "解除對 @{name} 的封鎖",
   "account.unblock_domain": "解除對域名 {domain} 的封鎖",
+  "account.unblock_short": "Unblock",
   "account.unendorse": "不再於個人資料頁面推薦對方",
   "account.unfollow": "取消關注",
   "account.unmute": "取消 @{name} 的靜音",
   "account.unmute_notifications": "取消來自 @{name} 通知的靜音",
+  "account.unmute_short": "Unmute",
   "account_note.placeholder": "按此添加備注",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -293,6 +294,7 @@
   "navigation_bar.discover": "探索",
   "navigation_bar.domain_blocks": "封鎖的服務站",
   "navigation_bar.edit_profile": "修改個人資料",
+  "navigation_bar.explore": "Explore",
   "navigation_bar.favourites": "最愛的內容",
   "navigation_bar.filters": "靜音詞彙",
   "navigation_bar.follow_requests": "關注請求",
@@ -409,7 +411,7 @@
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetetive replies",
+  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "It violates server rules",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 4da14a475..f9366fe17 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -18,12 +18,12 @@
   "account.followers": "跟隨者",
   "account.followers.empty": "尚未有人跟隨這位使用者。",
   "account.followers_counter": "被 {count, plural,one {{counter} 人}other {{counter} 人}} 跟隨",
+  "account.following": "跟隨中",
   "account.following_counter": "正在跟隨 {count, plural,one {{counter}}other {{counter} 人}}",
   "account.follows.empty": "這位使用者尚未跟隨任何人。",
   "account.follows_you": "跟隨了您",
   "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟",
   "account.joined": "加入於 {date}",
-  "account.last_status": "上次活躍時間",
   "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限",
   "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳戶的人。",
   "account.media": "媒體",
@@ -32,7 +32,6 @@
   "account.mute": "靜音 @{name}",
   "account.mute_notifications": "靜音來自 @{name} 的通知",
   "account.muted": "已靜音",
-  "account.never_active": "永不",
   "account.posts": "嘟文",
   "account.posts_with_replies": "嘟文與回覆",
   "account.report": "檢舉 @{name}",
@@ -42,10 +41,12 @@
   "account.statuses_counter": "{count, plural,one {{counter} 則}other {{counter} 則}}嘟文",
   "account.unblock": "取消封鎖 @{name}",
   "account.unblock_domain": "取消封鎖域名 {domain}",
+  "account.unblock_short": "解除封鎖",
   "account.unendorse": "不再於個人資料頁面推薦對方",
   "account.unfollow": "取消跟隨",
   "account.unmute": "取消靜音 @{name}",
   "account.unmute_notifications": "重新接收來自 @{name} 的通知",
+  "account.unmute_short": "解除靜音",
   "account_note.placeholder": "按此添加備注",
   "admin.dashboard.daily_retention": "註冊後使用者存留率(日)",
   "admin.dashboard.monthly_retention": "註冊後使用者存留率(月)",
@@ -271,7 +272,7 @@
   "lists.new.create": "新增名單",
   "lists.new.title_placeholder": "新名單標題",
   "lists.replies_policy.followed": "任何跟隨的使用者",
-  "lists.replies_policy.list": "列表成員",
+  "lists.replies_policy.list": "名單成員",
   "lists.replies_policy.none": "沒有人",
   "lists.replies_policy.title": "顯示回覆:",
   "lists.search": "搜尋您跟隨的使用者",
@@ -293,7 +294,8 @@
   "navigation_bar.discover": "探索",
   "navigation_bar.domain_blocks": "隱藏的網域",
   "navigation_bar.edit_profile": "編輯個人資料",
-  "navigation_bar.favourites": "收藏",
+  "navigation_bar.explore": "探索",
+  "navigation_bar.favourites": "最愛",
   "navigation_bar.filters": "靜音詞彙",
   "navigation_bar.follow_requests": "跟隨請求",
   "navigation_bar.follows_and_followers": "跟隨中與跟隨者",
@@ -409,7 +411,7 @@
   "report.reasons.other": "其他原因",
   "report.reasons.other_description": "這個問題不屬於其他分類",
   "report.reasons.spam": "垃圾訊息",
-  "report.reasons.spam_description": "有害連結,假造的互動,或是重複性回覆",
+  "report.reasons.spam_description": "有害連結、假造的互動,或是重複性回覆",
   "report.reasons.violation": "違反伺服器規則",
   "report.reasons.violation_description": "您知道它違反特定規則",
   "report.rules.subtitle": "請選擇所有適用的選項",
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index 0603703c3..ed49333b9 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -143,10 +143,15 @@ html {
 .box-widget input[type="password"],
 .box-widget textarea,
 .statuses-grid .detailed-status,
+.report-dialog-modal__textarea,
 .audio-player {
   border: 1px solid lighten($ui-base-color, 8%);
 }
 
+.report-dialog-modal .dialog-option .poll__input {
+  color: $white;
+}
+
 .search__input {
   @media screen and (max-width: $no-gap-breakpoint) {
     border-top: 0;
@@ -299,7 +304,8 @@ html {
   }
 
   &__item {
-    a {
+    a,
+    button {
       background: $white;
       color: $darker-text-color;
     }
@@ -331,10 +337,18 @@ html {
   color: $white;
 }
 
-.dropdown-menu__separator {
+.dropdown-menu__separator,
+.dropdown-menu__item.edited-timestamp__history__item,
+.dropdown-menu__container__header,
+.compare-history-modal .report-modal__target,
+.report-dialog-modal .poll__option.dialog-option {
   border-bottom-color: lighten($ui-base-color, 4%);
 }
 
+.report-dialog-modal__container {
+  border-top-color: lighten($ui-base-color, 4%);
+}
+
 // Change the background colors of modals
 .actions-modal,
 .boost-modal,
@@ -342,9 +356,11 @@ html {
 .mute-modal,
 .block-modal,
 .report-modal,
+.report-dialog-modal,
 .embed-modal,
 .error-modal,
 .onboarding-modal,
+.compare-history-modal,
 .report-modal__comment .setting-text__wrapper,
 .report-modal__comment .setting-text,
 .announcements,
diff --git a/app/javascript/styles/mastodon/admin.scss b/app/javascript/styles/mastodon/admin.scss
index 0873ac300..40cd899b3 100644
--- a/app/javascript/styles/mastodon/admin.scss
+++ b/app/javascript/styles/mastodon/admin.scss
@@ -367,6 +367,21 @@ body,
     }
   }
 
+  .positive-hint,
+  .negative-hint,
+  .neutral-hint {
+    a {
+      color: inherit;
+      text-decoration: underline;
+
+      &:focus,
+      &:hover,
+      &:active {
+        text-decoration: none;
+      }
+    }
+  }
+
   .positive-hint {
     color: $valid-value-color;
     font-weight: 500;
@@ -1612,3 +1627,38 @@ a.sparkline {
     }
   }
 }
+
+.availability-indicator {
+  display: flex;
+  align-items: center;
+  margin-bottom: 30px;
+  font-size: 14px;
+  line-height: 21px;
+
+  &__hint {
+    padding: 0 15px;
+  }
+
+  &__graphic {
+    display: flex;
+    margin: 0 -2px;
+
+    &__item {
+      display: block;
+      flex: 0 0 auto;
+      width: 4px;
+      height: 21px;
+      background: lighten($ui-base-color, 8%);
+      margin: 0 2px;
+      border-radius: 2px;
+
+      &.positive {
+        background: $valid-value-color;
+      }
+
+      &.negative {
+        background: $error-value-color;
+      }
+    }
+  }
+}
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index d1d679ac2..295b0ddfb 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1127,7 +1127,7 @@
   .media-gallery,
   .audio-player,
   .video-player {
-    margin-top: 8px;
+    margin-top: 15px;
     max-width: 250px;
   }
 
@@ -5609,6 +5609,12 @@ a.status-card.compact:hover {
       margin: 20px 0;
     }
   }
+
+  .media-gallery,
+  .audio-player,
+  .video-player {
+    margin-top: 15px;
+  }
 }
 
 .loading-bar {
diff --git a/app/javascript/styles/mastodon/tables.scss b/app/javascript/styles/mastodon/tables.scss
index 1f7e71776..431b8a73a 100644
--- a/app/javascript/styles/mastodon/tables.scss
+++ b/app/javascript/styles/mastodon/tables.scss
@@ -65,6 +65,24 @@
     }
   }
 
+  &.horizontal-table {
+    border-collapse: collapse;
+    border-style: hidden;
+
+    & > tbody > tr > th,
+    & > tbody > tr > td {
+      padding: 11px 10px;
+      background: transparent;
+      border: 1px solid lighten($ui-base-color, 8%);
+      color: $secondary-text-color;
+    }
+
+    & > tbody > tr > th {
+      color: $darker-text-color;
+      font-weight: 600;
+    }
+  }
+
   &.batch-table {
     & > thead > tr > th {
       background: $ui-base-color;
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 706960f92..f599e1b58 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -71,15 +71,7 @@ class ActivityPub::Activity
   end
 
   def object_uri
-    @object_uri ||= begin
-      str = value_or_id(@object)
-
-      if str&.start_with?('bear:')
-        Addressable::URI.parse(str).query_values['u']
-      else
-        str
-      end
-    end
+    @object_uri ||= uri_from_bearcap(value_or_id(@object))
   end
 
   def unsupported_object_type?
diff --git a/app/lib/activitypub/activity/update.rb b/app/lib/activitypub/activity/update.rb
index 36ad5f446..5b3238ece 100644
--- a/app/lib/activitypub/activity/update.rb
+++ b/app/lib/activitypub/activity/update.rb
@@ -8,6 +8,8 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
       update_account
     elsif equals_or_includes_any?(@object['type'], %w(Note Question))
       update_status
+    elsif converted_object_type?
+      Status.find_by(uri: object_uri, account_id: @account.id)
     end
   end
 
@@ -20,7 +22,7 @@ class ActivityPub::Activity::Update < ActivityPub::Activity
   end
 
   def update_status
-    return reject_payload! if invalid_origin?(@object['id'])
+    return reject_payload! if invalid_origin?(object_uri)
 
     @status = Status.find_by(uri: object_uri, account_id: @account.id)
 
diff --git a/app/lib/admin/metrics/dimension.rb b/app/lib/admin/metrics/dimension.rb
index d8392ddfc..81b89d9b3 100644
--- a/app/lib/admin/metrics/dimension.rb
+++ b/app/lib/admin/metrics/dimension.rb
@@ -9,6 +9,8 @@ class Admin::Metrics::Dimension
     software_versions: Admin::Metrics::Dimension::SoftwareVersionsDimension,
     tag_servers: Admin::Metrics::Dimension::TagServersDimension,
     tag_languages: Admin::Metrics::Dimension::TagLanguagesDimension,
+    instance_accounts: Admin::Metrics::Dimension::InstanceAccountsDimension,
+    instance_languages: Admin::Metrics::Dimension::InstanceLanguagesDimension,
   }.freeze
 
   def self.retrieve(dimension_keys, start_at, end_at, limit, params)
diff --git a/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb b/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb
new file mode 100644
index 000000000..4eac8e611
--- /dev/null
+++ b/app/lib/admin/metrics/dimension/instance_accounts_dimension.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Dimension::InstanceAccountsDimension < Admin::Metrics::Dimension::BaseDimension
+  include LanguagesHelper
+
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_accounts'
+  end
+
+  protected
+
+  def perform_query
+    sql = <<-SQL.squish
+      SELECT accounts.username, count(follows.*) AS value
+      FROM accounts
+      LEFT JOIN follows ON follows.target_account_id = accounts.id
+      WHERE accounts.domain = $1
+      GROUP BY accounts.id, follows.target_account_id
+      ORDER BY value DESC
+      LIMIT $2
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:domain]], [nil, @limit]])
+
+    rows.map { |row| { key: row['username'], human_key: row['username'], value: row['value'].to_s } }
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/dimension/instance_languages_dimension.rb b/app/lib/admin/metrics/dimension/instance_languages_dimension.rb
new file mode 100644
index 000000000..1ede1a56e
--- /dev/null
+++ b/app/lib/admin/metrics/dimension/instance_languages_dimension.rb
@@ -0,0 +1,37 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Dimension::InstanceLanguagesDimension < Admin::Metrics::Dimension::BaseDimension
+  include LanguagesHelper
+
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_languages'
+  end
+
+  protected
+
+  def perform_query
+    sql = <<-SQL.squish
+      SELECT COALESCE(statuses.language, 'und') AS language, count(*) AS value
+      FROM statuses
+      INNER JOIN accounts ON accounts.id = statuses.account_id
+      WHERE accounts.domain = $1
+        AND statuses.id BETWEEN $2 AND $3
+        AND statuses.reblog_of_id IS NULL
+      GROUP BY COALESCE(statuses.language, 'und')
+      ORDER BY count(*) DESC
+      LIMIT $4
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, params[:domain]], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, @limit]])
+
+    rows.map { |row| { key: row['language'], human_key: standard_locale_name(row['language']), value: row['value'].to_s } }
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure.rb b/app/lib/admin/metrics/measure.rb
index a839498a1..0b510eb25 100644
--- a/app/lib/admin/metrics/measure.rb
+++ b/app/lib/admin/metrics/measure.rb
@@ -10,6 +10,12 @@ class Admin::Metrics::Measure
     tag_accounts: Admin::Metrics::Measure::TagAccountsMeasure,
     tag_uses: Admin::Metrics::Measure::TagUsesMeasure,
     tag_servers: Admin::Metrics::Measure::TagServersMeasure,
+    instance_accounts: Admin::Metrics::Measure::InstanceAccountsMeasure,
+    instance_media_attachments: Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure,
+    instance_reports: Admin::Metrics::Measure::InstanceReportsMeasure,
+    instance_statuses: Admin::Metrics::Measure::InstanceStatusesMeasure,
+    instance_follows: Admin::Metrics::Measure::InstanceFollowsMeasure,
+    instance_followers: Admin::Metrics::Measure::InstanceFollowersMeasure,
   }.freeze
 
   def self.retrieve(measure_keys, start_at, end_at, params)
diff --git a/app/lib/admin/metrics/measure/base_measure.rb b/app/lib/admin/metrics/measure/base_measure.rb
index ed1df9c7d..e33a6c494 100644
--- a/app/lib/admin/metrics/measure/base_measure.rb
+++ b/app/lib/admin/metrics/measure/base_measure.rb
@@ -26,6 +26,14 @@ class Admin::Metrics::Measure::BaseMeasure
     raise NotImplementedError
   end
 
+  def unit
+    nil
+  end
+
+  def total_in_time_range?
+    true
+  end
+
   def total
     load[:total]
   end
diff --git a/app/lib/admin/metrics/measure/instance_accounts_measure.rb b/app/lib/admin/metrics/measure/instance_accounts_measure.rb
new file mode 100644
index 000000000..4c61a064a
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_accounts_measure.rb
@@ -0,0 +1,58 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceAccountsMeasure < Admin::Metrics::Measure::BaseMeasure
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_accounts'
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    Account.where(domain: params[:domain]).count
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_accounts AS (
+          SELECT accounts.id
+          FROM accounts
+          WHERE date_trunc('day', accounts.created_at)::date = axis.period
+            AND accounts.domain = $3::text
+        )
+        SELECT count(*) FROM new_accounts
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure/instance_followers_measure.rb b/app/lib/admin/metrics/measure/instance_followers_measure.rb
new file mode 100644
index 000000000..caa60013b
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_followers_measure.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceFollowersMeasure < Admin::Metrics::Measure::BaseMeasure
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_followers'
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    Follow.joins(:account).merge(Account.where(domain: params[:domain])).count
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_followers AS (
+          SELECT follows.id
+          FROM follows
+          INNER JOIN accounts ON follows.account_id = accounts.id
+          WHERE date_trunc('day', follows.created_at)::date = axis.period
+            AND accounts.domain = $3::text
+        )
+        SELECT count(*) FROM new_followers
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure/instance_follows_measure.rb b/app/lib/admin/metrics/measure/instance_follows_measure.rb
new file mode 100644
index 000000000..b026c7e6d
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_follows_measure.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceFollowsMeasure < Admin::Metrics::Measure::BaseMeasure
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_follows'
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    Follow.joins(:target_account).merge(Account.where(domain: params[:domain])).count
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_follows AS (
+          SELECT follows.id
+          FROM follows
+          INNER JOIN accounts ON follows.target_account_id = accounts.id
+          WHERE date_trunc('day', follows.created_at)::date = axis.period
+            AND accounts.domain = $3::text
+        )
+        SELECT count(*) FROM new_follows
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb b/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb
new file mode 100644
index 000000000..2e2154c92
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_media_attachments_measure.rb
@@ -0,0 +1,69 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceMediaAttachmentsMeasure < Admin::Metrics::Measure::BaseMeasure
+  include ActionView::Helpers::NumberHelper
+
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_media_attachments'
+  end
+
+  def unit
+    'bytes'
+  end
+
+  def value_to_human_value(value)
+    number_to_human_size(value)
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    MediaAttachment.joins(:account).merge(Account.where(domain: params[:domain])).sum('COALESCE(file_file_size, 0) + COALESCE(thumbnail_file_size, 0)')
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_media_attachments AS (
+          SELECT COALESCE(media_attachments.file_file_size, 0) + COALESCE(media_attachments.thumbnail_file_size, 0) AS size
+          FROM media_attachments
+          INNER JOIN accounts ON accounts.id = media_attachments.account_id
+          WHERE date_trunc('day', media_attachments.created_at)::date = axis.period
+            AND accounts.domain = $3::text
+        )
+        SELECT SUM(size) FROM new_media_attachments
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure/instance_reports_measure.rb b/app/lib/admin/metrics/measure/instance_reports_measure.rb
new file mode 100644
index 000000000..6b3f35067
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_reports_measure.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceReportsMeasure < Admin::Metrics::Measure::BaseMeasure
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_reports'
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    Report.where(target_account: Account.where(domain: params[:domain])).count
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_reports AS (
+          SELECT reports.id
+          FROM reports
+          INNER JOIN accounts ON accounts.id = reports.target_account_id
+          WHERE date_trunc('day', reports.created_at)::date = axis.period
+            AND accounts.domain = $3::text
+        )
+        SELECT count(*) FROM new_reports
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/admin/metrics/measure/instance_statuses_measure.rb b/app/lib/admin/metrics/measure/instance_statuses_measure.rb
new file mode 100644
index 000000000..86b10da6c
--- /dev/null
+++ b/app/lib/admin/metrics/measure/instance_statuses_measure.rb
@@ -0,0 +1,60 @@
+# frozen_string_literal: true
+
+class Admin::Metrics::Measure::InstanceStatusesMeasure < Admin::Metrics::Measure::BaseMeasure
+  def self.with_params?
+    true
+  end
+
+  def key
+    'instance_statuses'
+  end
+
+  def total_in_time_range?
+    false
+  end
+
+  protected
+
+  def perform_total_query
+    Status.joins(:account).merge(Account.where(domain: params[:domain])).count
+  end
+
+  def perform_previous_total_query
+    nil
+  end
+
+  def perform_data_query
+    sql = <<-SQL.squish
+      SELECT axis.*, (
+        WITH new_statuses AS (
+          SELECT statuses.id
+          FROM statuses
+          INNER JOIN accounts ON accounts.id = statuses.account_id
+          WHERE statuses.id BETWEEN $3 AND $4
+            AND accounts.domain = $5::text
+            AND date_trunc('day', statuses.created_at)::date = axis.period
+        )
+        SELECT count(*) FROM new_statuses
+      ) AS value
+      FROM (
+        SELECT generate_series(date_trunc('day', $1::timestamp)::date, date_trunc('day', $2::timestamp)::date, interval '1 day') AS period
+      ) AS axis
+    SQL
+
+    rows = ActiveRecord::Base.connection.select_all(sql, nil, [[nil, @start_at], [nil, @end_at], [nil, Mastodon::Snowflake.id_at(@start_at, with_random: false)], [nil, Mastodon::Snowflake.id_at(@end_at, with_random: false)], [nil, params[:domain]]])
+
+    rows.map { |row| { date: row['period'], value: row['value'].to_s } }
+  end
+
+  def time_period
+    (@start_at.to_date..@end_at.to_date)
+  end
+
+  def previous_time_period
+    ((@start_at.to_date - length_of_period)..(@end_at.to_date - length_of_period))
+  end
+
+  def params
+    @params.permit(:domain)
+  end
+end
diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb
index 8907ade4c..7b800fc0b 100644
--- a/app/lib/delivery_failure_tracker.rb
+++ b/app/lib/delivery_failure_tracker.rb
@@ -30,7 +30,7 @@ class DeliveryFailureTracker
   end
 
   def exhausted_deliveries_days
-    Redis.current.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) }
+    @exhausted_deliveries_days ||= Redis.current.smembers(exhausted_deliveries_key).sort.map { |date| Date.new(date.slice(0, 4).to_i, date.slice(4, 2).to_i, date.slice(6, 2).to_i) }
   end
 
   alias reset! track_success!
diff --git a/app/lib/feed_manager.rb b/app/lib/feed_manager.rb
index 2c16689bd..efc9da34b 100644
--- a/app/lib/feed_manager.rb
+++ b/app/lib/feed_manager.rb
@@ -506,7 +506,7 @@ class FeedManager
       Formatter.instance.plaintext(status),
       status.spoiler_text,
       status.preloadable_poll ? status.preloadable_poll.options.join("\n\n") : nil,
-      status.media_attachments.map(&:description).join("\n\n"),
+      status.ordered_media_attachments.map(&:description).join("\n\n"),
     ].compact.join("\n\n")
 
     combined_regex.match?(combined_text)
diff --git a/app/lib/rss/serializer.rb b/app/lib/rss/serializer.rb
index fd56c568c..7e3ed1f17 100644
--- a/app/lib/rss/serializer.rb
+++ b/app/lib/rss/serializer.rb
@@ -11,7 +11,7 @@ class RSS::Serializer
             .pub_date(status.created_at)
             .description(status.spoiler_text.presence || Formatter.instance.format(status, inline_poll_options: true).to_str)
 
-        status.media_attachments.each do |media|
+        status.ordered_media_attachments.each do |media|
           item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size)
         end
       end
diff --git a/app/models/admin/account_action.rb b/app/models/admin/account_action.rb
index d3be4be3f..850ea6d82 100644
--- a/app/models/admin/account_action.rb
+++ b/app/models/admin/account_action.rb
@@ -22,6 +22,16 @@ class Admin::AccountAction
 
   attr_reader :warning, :send_email_notification, :include_statuses
 
+  alias send_email_notification? send_email_notification
+  alias include_statuses? include_statuses
+
+  def initialize(attributes = {})
+    @send_email_notification = true
+    @include_statuses        = true
+
+    super
+  end
+
   def send_email_notification=(value)
     @send_email_notification = ActiveModel::Type::Boolean.new.cast(value)
   end
@@ -141,11 +151,11 @@ class Admin::AccountAction
   end
 
   def warnable?
-    send_email_notification && target_account.local?
+    send_email_notification? && target_account.local?
   end
 
   def status_ids
-    report.status_ids if with_report? && include_statuses
+    report.status_ids if with_report? && include_statuses?
   end
 
   def reports
diff --git a/app/models/admin/status_batch_action.rb b/app/models/admin/status_batch_action.rb
index 4d91b9805..631af183c 100644
--- a/app/models/admin/status_batch_action.rb
+++ b/app/models/admin/status_batch_action.rb
@@ -68,6 +68,8 @@ class Admin::StatusBatchAction
   end
 
   def handle_mark_as_sensitive!
+    representative_account = Account.representative
+
     # Can't use a transaction here because UpdateStatusService queues
     # Sidekiq jobs
     statuses.includes(:media_attachments, :preview_cards).find_each do |status|
@@ -76,7 +78,7 @@ class Admin::StatusBatchAction
       authorize(status, :update?)
 
       if target_account.local?
-        UpdateStatusService.new.call(status, current_account.id, sensitive: true)
+        UpdateStatusService.new.call(status, representative_account.id, sensitive: true)
       else
         status.update(sensitive: true)
       end
diff --git a/app/models/concerns/account_merging.rb b/app/models/concerns/account_merging.rb
index 119773e6b..8161761fb 100644
--- a/app/models/concerns/account_merging.rb
+++ b/app/models/concerns/account_merging.rb
@@ -15,7 +15,8 @@ module AccountMerging
       Status, StatusPin, MediaAttachment, Poll, Report, Tombstone, Favourite,
       Follow, FollowRequest, Block, Mute,
       AccountModerationNote, AccountPin, AccountStat, ListAccount,
-      PollVote, Mention, AccountDeletionRequest, AccountNote, FollowRecommendationSuppression
+      PollVote, Mention, AccountDeletionRequest, AccountNote, FollowRecommendationSuppression,
+      Appeal
     ]
 
     owned_classes.each do |klass|
@@ -47,6 +48,10 @@ module AccountMerging
       record.update_attribute(:reference_account_id, id)
     end
 
+    Appeal.where(account_warning_id: other_account.id).find_each do |record|
+      record.update_attribute(:account_warning_id, id)
+    end
+
     # Some follow relationships have moved, so the cache is stale
     Rails.cache.delete_matched("followers_hash:#{id}:*")
     Rails.cache.delete_matched("relationships:#{id}:*")
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index 791a94911..a90d5d888 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -13,7 +13,7 @@ module Omniauthable
       Devise.omniauth_configs.keys
     end
 
-    def email_verified?
+    def email_present?
       email && email !~ TEMP_EMAIL_REGEX
     end
   end
@@ -40,16 +40,14 @@ module Omniauthable
     end
 
     def create_for_oauth(auth)
-      # Check if the user exists with provided email if the provider gives us a
-      # verified email.  If no verified email was provided or the user already
-      # exists, we assign a temporary email and ask the user to verify it on
+      # Check if the user exists with provided email. If no email was provided,
+      # we assign a temporary email and ask the user to verify it on
       # the next step via Auth::SetupController.show
 
       strategy          = Devise.omniauth_configs[auth.provider.to_sym].strategy
       assume_verified   = strategy&.security&.assume_email_is_verified
-      email_is_verified = auth.info.verified || auth.info.verified_email || assume_verified
+      email_is_verified = auth.info.verified || auth.info.verified_email || auth.info.email_verified || assume_verified
       email             = auth.info.verified_email || auth.info.email
-      email             = nil unless email_is_verified
 
       user = User.find_by(email: email) if email_is_verified
 
@@ -58,7 +56,7 @@ module Omniauthable
       user = User.new(user_params_from_auth(email, auth))
 
       user.account.avatar_remote_url = auth.info.image if /\A#{URI::DEFAULT_PARSER.make_regexp(%w(http https))}\z/.match?(auth.info.image)
-      user.skip_confirmation!
+      user.skip_confirmation! if email_is_verified
       user.save!
       user
     end
@@ -71,8 +69,8 @@ module Omniauthable
         agreement: true,
         external: true,
         account_attributes: {
-          username: ensure_unique_username(auth.uid),
-          display_name: auth.info.full_name || [auth.info.first_name, auth.info.last_name].join(' '),
+          username: ensure_unique_username(ensure_valid_username(auth.uid)),
+          display_name: auth.info.full_name || auth.info.name || [auth.info.first_name, auth.info.last_name].join(' '),
         },
       }
     end
@@ -88,5 +86,12 @@ module Omniauthable
 
       username
     end
+
+    def ensure_valid_username(starting_username)
+      starting_username = starting_username.split('@')[0]
+      temp_username = starting_username.gsub(/[^a-z0-9_]+/i, '')
+      validated_username = temp_username.truncate(30, omission: '')
+      validated_username
+    end
   end
 end
diff --git a/app/models/domain_block.rb b/app/models/domain_block.rb
index bba04c603..2b797ef91 100644
--- a/app/models/domain_block.rb
+++ b/app/models/domain_block.rb
@@ -30,6 +30,14 @@ class DomainBlock < ApplicationRecord
   scope :with_user_facing_limitations, -> { where(severity: [:silence, :suspend]).or(where(reject_media: true)) }
   scope :by_severity, -> { order(Arel.sql('(CASE severity WHEN 0 THEN 1 WHEN 1 THEN 2 WHEN 2 THEN 0 END), reject_media, domain')) }
 
+  def policies
+    if suspend?
+      [:suspend]
+    else
+      [severity.to_sym, reject_media? ? :reject_media : nil, reject_reports? ? :reject_reports : nil].reject { |policy| policy == :noop || policy.nil? }
+    end
+  end
+
   class << self
     def suspend?(domain)
       !!rule_for(domain)&.suspend?
diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb
index e02ae0705..74d62e777 100644
--- a/app/models/featured_tag.rb
+++ b/app/models/featured_tag.rb
@@ -4,8 +4,8 @@
 # Table name: featured_tags
 #
 #  id             :bigint(8)        not null, primary key
-#  account_id     :bigint(8)
-#  tag_id         :bigint(8)
+#  account_id     :bigint(8)        not null
+#  tag_id         :bigint(8)        not null
 #  statuses_count :bigint(8)        default(0), not null
 #  last_status_at :datetime
 #  created_at     :datetime         not null
diff --git a/app/models/instance.rb b/app/models/instance.rb
index 8949be054..36110ee40 100644
--- a/app/models/instance.rb
+++ b/app/models/instance.rb
@@ -32,35 +32,31 @@ class Instance < ApplicationRecord
     @delivery_failure_tracker ||= DeliveryFailureTracker.new(domain)
   end
 
-  def following_count
-    @following_count ||= Follow.where(account: accounts).count
+  def purgeable?
+    unavailable? || domain_block&.suspend?
   end
 
-  def followers_count
-    @followers_count ||= Follow.where(target_account: accounts).count
+  def unavailable?
+    unavailable_domain.present?
   end
 
-  def reports_count
-    @reports_count ||= Report.where(target_account: accounts).count
+  def failing?
+    failure_days.present? || unavailable?
   end
 
-  def blocks_count
-    @blocks_count ||= Block.where(target_account: accounts).count
-  end
-
-  def public_comment
-    domain_block&.public_comment
+  def to_param
+    domain
   end
 
-  def private_comment
-    domain_block&.private_comment
-  end
+  delegate :exhausted_deliveries_days, to: :delivery_failure_tracker
 
-  def media_storage
-    @media_storage ||= MediaAttachment.where(account: accounts).sum(:file_file_size)
-  end
+  def availability_over_days(num_days, end_date = Time.now.utc.to_date)
+    failures_map    = exhausted_deliveries_days.index_with { true }
+    period_end_at   = exhausted_deliveries_days.last || end_date
+    period_start_at = period_end_at - num_days.days
 
-  def to_param
-    domain
+    (period_start_at..period_end_at).map do |date|
+      [date, failures_map[date]]
+    end
   end
 end
diff --git a/app/models/instance_filter.rb b/app/models/instance_filter.rb
index 9e533c4aa..e7e5166a1 100644
--- a/app/models/instance_filter.rb
+++ b/app/models/instance_filter.rb
@@ -4,8 +4,7 @@ class InstanceFilter
   KEYS = %i(
     limited
     by_domain
-    warning
-    unavailable
+    availability
   ).freeze
 
   attr_reader :params
@@ -34,12 +33,21 @@ class InstanceFilter
       Instance.joins(:domain_allow).reorder(Arel.sql('domain_allows.id desc'))
     when 'by_domain'
       Instance.matches_domain(value)
-    when 'warning'
+    when 'availability'
+      availability_scope(value)
+    else
+      raise "Unknown filter: #{key}"
+    end
+  end
+
+  def availability_scope(value)
+    case value
+    when 'failing'
       Instance.where(domain: DeliveryFailureTracker.warning_domains)
     when 'unavailable'
       Instance.joins(:unavailable_domain)
     else
-      raise "Unknown filter: #{key}"
+      raise "Unknown availability: #{value}"
     end
   end
 end
diff --git a/app/models/notification.rb b/app/models/notification.rb
index 9bf296386..ba94b54d1 100644
--- a/app/models/notification.rb
+++ b/app/models/notification.rb
@@ -63,13 +63,6 @@ class Notification < ApplicationRecord
 
   scope :without_suspended, -> { joins(:from_account).merge(Account.without_suspended) }
 
-  scope :browserable, ->(exclude_types = [], account_id = nil) {
-    scope = all
-    scope = where(from_account_id: account_id) if account_id.present?
-    scope = scope.where(type: TYPES - exclude_types.map(&:to_sym)) unless exclude_types.empty?
-    scope
-  }
-
   def type
     @type ||= (super || LEGACY_TYPE_CLASS_MAP[activity_type]).to_sym
   end
@@ -90,6 +83,23 @@ class Notification < ApplicationRecord
   end
 
   class << self
+    def browserable(types: [], exclude_types: [], from_account_id: nil)
+      requested_types = begin
+        if types.empty?
+          TYPES
+        else
+          types.map(&:to_sym) & TYPES
+        end
+      end
+
+      requested_types -= exclude_types.map(&:to_sym)
+
+      all.tap do |scope|
+        scope.merge!(where(from_account_id: from_account_id)) if from_account_id.present?
+        scope.merge!(where(type: requested_types)) unless requested_types.size == TYPES.size
+      end
+    end
+
     def preload_cache_collection_target_statuses(notifications, &_block)
       notifications.group_by(&:type).each do |type, grouped_notifications|
         associations = TARGET_STATUS_INCLUDES_BY_TYPE[type]
diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb
index 0f9e23fa1..0d2c32c35 100644
--- a/app/models/preview_card.rb
+++ b/app/models/preview_card.rb
@@ -80,6 +80,10 @@ class PreviewCard < ApplicationRecord
     end
   end
 
+  def requires_review?
+    attributes['trendable'].nil? && (provider.nil? || provider.requires_review?)
+  end
+
   def requires_review_notification?
     attributes['trendable'].nil? && (provider.nil? || provider.requires_review_notification?)
   end
diff --git a/app/models/report.rb b/app/models/report.rb
index 8ba2dd8fd..6d4166540 100644
--- a/app/models/report.rb
+++ b/app/models/report.rb
@@ -63,8 +63,20 @@ class Report < ApplicationRecord
     Status.with_discarded.where(id: status_ids)
   end
 
-  def media_attachments
-    MediaAttachment.where(status_id: status_ids)
+  def media_attachments_count
+    statuses_to_query = []
+    count = 0
+
+    statuses.pluck(:id, :ordered_media_attachment_ids).each do |id, ordered_ids|
+      if ordered_ids.nil?
+        statuses_to_query << id
+      else
+        count += ordered_ids.size
+      end
+    end
+
+    count += MediaAttachment.where(status_id: statuses_to_query).count unless statuses_to_query.empty?
+    count
   end
 
   def rules
diff --git a/app/models/status.rb b/app/models/status.rb
index 6a848baee..b979252b3 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -3,31 +3,31 @@
 #
 # Table name: statuses
 #
-#  id                     :bigint(8)        not null, primary key
-#  uri                    :string
-#  text                   :text             default(""), not null
-#  created_at             :datetime         not null
-#  updated_at             :datetime         not null
-#  in_reply_to_id         :bigint(8)
-#  reblog_of_id           :bigint(8)
-#  url                    :string
-#  sensitive              :boolean          default(FALSE), not null
-#  visibility             :integer          default("public"), not null
-#  spoiler_text           :text             default(""), not null
-#  reply                  :boolean          default(FALSE), not null
-#  language               :string
-#  conversation_id        :bigint(8)
-#  local                  :boolean
-#  account_id             :bigint(8)        not null
-#  application_id         :bigint(8)
-#  in_reply_to_account_id :bigint(8)
-#  local_only             :boolean
-#  full_status_text       :text             default(""), not null
-#  poll_id                :bigint(8)
-#  content_type           :string
-#  deleted_at             :datetime
-#  edited_at              :datetime
-#  trendable              :boolean
+#  id                           :bigint(8)        not null, primary key
+#  uri                          :string
+#  text                         :text             default(""), not null
+#  created_at                   :datetime         not null
+#  updated_at                   :datetime         not null
+#  in_reply_to_id               :bigint(8)
+#  reblog_of_id                 :bigint(8)
+#  url                          :string
+#  sensitive                    :boolean          default(FALSE), not null
+#  visibility                   :integer          default("public"), not null
+#  spoiler_text                 :text             default(""), not null
+#  reply                        :boolean          default(FALSE), not null
+#  language                     :string
+#  conversation_id              :bigint(8)
+#  local                        :boolean
+#  account_id                   :bigint(8)        not null
+#  application_id               :bigint(8)
+#  in_reply_to_account_id       :bigint(8)
+#  local_only                   :boolean
+#  poll_id                      :bigint(8)
+#  content_type                 :string
+#  deleted_at                   :datetime
+#  edited_at                    :datetime
+#  trendable                    :boolean
+#  ordered_media_attachment_ids :bigint(8)        is an Array
 #
 
 class Status < ApplicationRecord
@@ -217,14 +217,18 @@ class Status < ApplicationRecord
     public_visibility? || unlisted_visibility?
   end
 
-  def snapshot!(media_attachments_changed: false, account_id: nil, at_time: nil)
+  def snapshot!(account_id: nil, at_time: nil, rate_limit: true)
     edits.create!(
       text: text,
       spoiler_text: spoiler_text,
-      media_attachments_changed: media_attachments_changed,
+      sensitive: sensitive,
+      ordered_media_attachment_ids: ordered_media_attachment_ids || media_attachments.pluck(:id),
+      media_descriptions: ordered_media_attachments.map(&:description),
+      poll_options: preloadable_poll&.options,
       account_id: account_id || self.account_id,
       content_type: content_type,
-      created_at: at_time || edited_at
+      created_at: at_time || edited_at,
+      rate_limit: rate_limit
     )
   end
 
@@ -235,7 +239,7 @@ class Status < ApplicationRecord
   alias sign? distributable?
 
   def with_media?
-    media_attachments.any?
+    ordered_media_attachments.any?
   end
 
   def with_preview_card?
@@ -259,6 +263,15 @@ class Status < ApplicationRecord
     @emojis = CustomEmoji.from_text(fields.join(' '), account.domain)
   end
 
+  def ordered_media_attachments
+    if ordered_media_attachment_ids.nil?
+      media_attachments
+    else
+      map = media_attachments.index_by(&:id)
+      ordered_media_attachment_ids.map { |media_attachment_id| map[media_attachment_id] }
+    end
+  end
+
   def replies_count
     status_stat&.replies_count || 0
   end
@@ -287,6 +300,10 @@ class Status < ApplicationRecord
     end
   end
 
+  def requires_review?
+    attributes['trendable'].nil? && account.requires_review?
+  end
+
   def requires_review_notification?
     attributes['trendable'].nil? && account.requires_review_notification?
   end
@@ -428,6 +445,63 @@ class Status < ApplicationRecord
     super || build_status_stat
   end
 
+  # Hack to use a "INSERT INTO ... SELECT ..." query instead of "INSERT INTO ... VALUES ..." query
+  def self._insert_record(values)
+    if values.is_a?(Hash) && values['reblog_of_id'].present?
+      primary_key = self.primary_key
+      primary_key_value = nil
+
+      if primary_key
+        primary_key_value = values[primary_key]
+
+        if !primary_key_value && prefetch_primary_key?
+          primary_key_value = next_sequence_value
+          values[primary_key] = primary_key_value
+        end
+      end
+
+      # The following line is where we differ from stock ActiveRecord implementation
+      im = _compile_reblog_insert(values)
+
+      # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
+      # For our purposes, it's equivalent to a foreign key constraint violation
+      result = connection.insert(im, "#{self} Create", primary_key || false, primary_key_value)
+      raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id']}) is not present in table \"statuses\"" if result.nil?
+
+      result
+    else
+      super
+    end
+  end
+
+  def self._compile_reblog_insert(values)
+    # This is somewhat equivalent to the following code of ActiveRecord::Persistence:
+    # `arel_table.compile_insert(_substitute_values(values))`
+    # The main difference is that we use a `SELECT` instead of a `VALUES` clause,
+    # which means we have to build the `SELECT` clause ourselves and do a bit more
+    # manual work.
+
+    # Instead of using Arel::InsertManager#values, we are going to use Arel::InsertManager#select
+    im = Arel::InsertManager.new
+    im.into(arel_table)
+
+    binds = []
+    reblog_bind = nil
+    values.each do |name, value|
+      attr = arel_table[name]
+      bind = predicate_builder.build_bind_attribute(attr.name, value)
+
+      im.columns << attr
+      binds << bind
+
+      reblog_bind = bind if name == 'reblog_of_id'
+    end
+
+    im.select(arel_table.where(arel_table[:id].eq(reblog_bind)).where(arel_table[:deleted_at].eq(nil)).project(*binds))
+
+    im
+  end
+
   private
 
   def update_status_stat!(attrs)
diff --git a/app/models/status_edit.rb b/app/models/status_edit.rb
index 3d8098fe7..33528eb0d 100644
--- a/app/models/status_edit.rb
+++ b/app/models/status_edit.rb
@@ -3,18 +3,39 @@
 #
 # Table name: status_edits
 #
-#  id                        :bigint(8)        not null, primary key
-#  status_id                 :bigint(8)        not null
-#  account_id                :bigint(8)
-#  text                      :text             default(""), not null
-#  spoiler_text              :text             default(""), not null
-#  media_attachments_changed :boolean          default(FALSE), not null
-#  created_at                :datetime         not null
-#  updated_at                :datetime         not null
-#  content_type              :string
+#  id                           :bigint(8)        not null, primary key
+#  status_id                    :bigint(8)        not null
+#  account_id                   :bigint(8)
+#  text                         :text             default(""), not null
+#  spoiler_text                 :text             default(""), not null
+#  created_at                   :datetime         not null
+#  updated_at                   :datetime         not null
+#  content_type                 :string
+#  ordered_media_attachment_ids :bigint(8)        is an Array
+#  media_descriptions           :text             is an Array
+#  poll_options                 :string           is an Array
+#  sensitive                    :boolean
 #
 
 class StatusEdit < ApplicationRecord
+  include RateLimitable
+
+  self.ignored_columns = %w(
+    media_attachments_changed
+  )
+
+  class PreservedMediaAttachment < ActiveModelSerializers::Model
+    attributes :media_attachment, :description
+
+    delegate :id, :type, :url, :preview_url, :remote_url,
+             :preview_remote_url, :text_url, :meta, :blurhash,
+             :not_processed?, :needs_redownload?, :local?,
+             :file, :thumbnail, :thumbnail_remote_url,
+             :shortcode, to: :media_attachment
+  end
+
+  rate_limit by: :account, family: :statuses
+
   belongs_to :status
   belongs_to :account, optional: true
 
@@ -26,4 +47,17 @@ class StatusEdit < ApplicationRecord
     return @emojis if defined?(@emojis)
     @emojis = CustomEmoji.from_text([spoiler_text, text].join(' '), status.account.domain)
   end
+
+  def ordered_media_attachments
+    return @ordered_media_attachments if defined?(@ordered_media_attachments)
+
+    @ordered_media_attachments = begin
+      if ordered_media_attachment_ids.nil?
+        []
+      else
+        map = status.media_attachments.index_by(&:id)
+        ordered_media_attachment_ids.map.with_index { |media_attachment_id, index| PreservedMediaAttachment.new(media_attachment: map[media_attachment_id], description: media_descriptions[index]) }
+      end
+    end
+  end
 end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index aa552a724..05f2ee14f 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -15,7 +15,7 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
 
   attribute :direct_message, if: :non_public?
 
-  has_many :media_attachments, key: :attachment
+  has_many :virtual_attachments, key: :attachment
   has_many :virtual_tags, key: :tag
 
   has_one :replies, serializer: ActivityPub::CollectionSerializer, if: :local?
@@ -117,6 +117,10 @@ class ActivityPub::NoteSerializer < ActivityPub::Serializer
     object.account.sensitized? || object.sensitive || (!instance_options[:allow_local_only] && Setting.outgoing_spoilers.present?)
   end
 
+  def virtual_attachments
+    object.ordered_media_attachments
+  end
+
   def virtual_tags
     object.active_mentions.to_a.sort_by(&:id) + object.tags + object.emojis
   end
diff --git a/app/serializers/rest/admin/measure_serializer.rb b/app/serializers/rest/admin/measure_serializer.rb
index 81d655c1a..fc16b85f2 100644
--- a/app/serializers/rest/admin/measure_serializer.rb
+++ b/app/serializers/rest/admin/measure_serializer.rb
@@ -1,12 +1,20 @@
 # frozen_string_literal: true
 
 class REST::Admin::MeasureSerializer < ActiveModel::Serializer
-  attributes :key, :total, :previous_total, :data
+  attributes :key, :unit, :total
+
+  attribute :human_value, if: -> { object.respond_to?(:value_to_human_value) }
+  attribute :previous_total, if: -> { object.total_in_time_range? }
+  attribute :data
 
   def total
     object.total.to_s
   end
 
+  def human_value
+    object.value_to_human_value(object.total)
+  end
+
   def previous_total
     object.previous_total.to_s
   end
diff --git a/app/serializers/rest/status_edit_serializer.rb b/app/serializers/rest/status_edit_serializer.rb
index a1f9e824e..05ccd5e94 100644
--- a/app/serializers/rest/status_edit_serializer.rb
+++ b/app/serializers/rest/status_edit_serializer.rb
@@ -3,12 +3,18 @@
 class REST::StatusEditSerializer < ActiveModel::Serializer
   has_one :account, serializer: REST::AccountSerializer
 
-  attributes :content, :spoiler_text,
-             :media_attachments_changed, :created_at
+  attributes :content, :spoiler_text, :sensitive, :created_at
 
+  has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer
   has_many :emojis, serializer: REST::CustomEmojiSerializer
 
+  attribute :poll, if: -> { object.poll_options.present? }
+
   def content
     Formatter.instance.format(object)
   end
+
+  def poll
+    { options: object.poll_options.map { |title| { title: title } } }
+  end
 end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index 7b5263eee..0a00ed77e 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -21,7 +21,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
   belongs_to :application, if: :show_application?
   belongs_to :account, serializer: REST::AccountSerializer
 
-  has_many :media_attachments, serializer: REST::MediaAttachmentSerializer
+  has_many :ordered_media_attachments, key: :media_attachments, serializer: REST::MediaAttachmentSerializer
   has_many :ordered_mentions, key: :mentions
   has_many :tags
   has_many :emojis, serializer: REST::CustomEmojiSerializer
diff --git a/app/services/activitypub/fetch_remote_status_service.rb b/app/services/activitypub/fetch_remote_status_service.rb
index 4f789d50b..9672b3d2b 100644
--- a/app/services/activitypub/fetch_remote_status_service.rb
+++ b/app/services/activitypub/fetch_remote_status_service.rb
@@ -15,24 +15,30 @@ class ActivityPub::FetchRemoteStatusService < BaseService
 
     return unless supported_context?
 
-    actor_id = nil
+    actor_uri     = nil
     activity_json = nil
+    object_uri    = nil
 
     if expected_object_type?
-      actor_id = value_or_id(first_of_value(@json['attributedTo']))
-      activity_json = { 'type' => 'Create', 'actor' => actor_id, 'object' => @json }
+      actor_uri     = value_or_id(first_of_value(@json['attributedTo']))
+      activity_json = { 'type' => 'Create', 'actor' => actor_uri, 'object' => @json }
+      object_uri    = uri_from_bearcap(@json['id'])
     elsif expected_activity_type?
-      actor_id = value_or_id(first_of_value(@json['actor']))
+      actor_uri     = value_or_id(first_of_value(@json['actor']))
       activity_json = @json
+      object_uri    = uri_from_bearcap(value_or_id(@json['object']))
     end
 
-    return if activity_json.nil? || !trustworthy_attribution?(@json['id'], actor_id)
+    return if activity_json.nil? || object_uri.nil? || !trustworthy_attribution?(@json['id'], actor_uri)
 
-    actor = ActivityPub::TagManager.instance.uri_to_resource(actor_id, Account)
-    actor = ActivityPub::FetchRemoteAccountService.new.call(actor_id, id: true) if actor.nil? || needs_update?(actor)
+    actor = account_from_uri(actor_uri)
 
     return if actor.nil? || actor.suspended?
 
+    # If we fetched a status that already exists, then we need to treat the
+    # activity as an update rather than create
+    activity_json['type'] = 'Update' if equals_or_includes_any?(activity_json['type'], %w(Create)) && Status.where(uri: object_uri, account_id: actor.id).exists?
+
     ActivityPub::Activity.factory(activity_json, actor).perform
   end
 
@@ -43,6 +49,12 @@ class ActivityPub::FetchRemoteStatusService < BaseService
     Addressable::URI.parse(uri).normalized_host.casecmp(Addressable::URI.parse(attributed_to).normalized_host).zero?
   end
 
+  def account_from_uri(uri)
+    actor = ActivityPub::TagManager.instance.uri_to_resource(uri, Account)
+    actor = ActivityPub::FetchRemoteAccountService.new.call(uri, id: true) if actor.nil? || actor.possibly_stale?
+    actor
+  end
+
   def supported_context?
     super(@json)
   end
@@ -54,8 +66,4 @@ class ActivityPub::FetchRemoteStatusService < BaseService
   def expected_object_type?
     equals_or_includes_any?(@json['type'], ActivityPub::Activity::Create::SUPPORTED_TYPES + ActivityPub::Activity::Create::CONVERTED_TYPES)
   end
-
-  def needs_update?(actor)
-    actor.possibly_stale?
-  end
 end
diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb
index 7438a7c53..47a788c30 100644
--- a/app/services/activitypub/process_status_update_service.rb
+++ b/app/services/activitypub/process_status_update_service.rb
@@ -13,7 +13,9 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
     @poll_changed              = false
 
     # Only native types can be updated at the moment
-    return if !expected_type? || already_updated_more_recently?
+    return @status if !expected_type? || already_updated_more_recently?
+
+    last_edit_date = status.edited_at.presence || status.created_at
 
     # Only allow processing one create/update per status at a time
     RedisLock.acquire(lock_options) do |lock|
@@ -37,13 +39,18 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
         raise Mastodon::RaceConditionError
       end
     end
+
+    forward_activity! if significant_changes? && @status_parser.edited_at.present? && @status_parser.edited_at > last_edit_date
+
+    @status
   end
 
   private
 
   def update_media_attachments!
-    previous_media_attachments = @status.media_attachments.to_a
-    next_media_attachments     = []
+    previous_media_attachments     = @status.media_attachments.to_a
+    previous_media_attachments_ids = @status.ordered_media_attachment_ids || previous_media_attachments.map(&:id)
+    next_media_attachments         = []
 
     as_array(@json['attachment']).each do |attachment|
       media_attachment_parser = ActivityPub::Parser::MediaAttachmentParser.new(attachment)
@@ -76,13 +83,14 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
       end
     end
 
-    removed_media_attachments = previous_media_attachments - next_media_attachments
-    added_media_attachments   = next_media_attachments - previous_media_attachments
+    added_media_attachments = next_media_attachments - previous_media_attachments
 
-    MediaAttachment.where(id: removed_media_attachments.map(&:id)).update_all(status_id: nil)
     MediaAttachment.where(id: added_media_attachments.map(&:id)).update_all(status_id: @status.id)
 
-    @media_attachments_changed = true if removed_media_attachments.any? || added_media_attachments.any?
+    @status.ordered_media_attachment_ids = next_media_attachments.map(&:id)
+    @status.media_attachments.reload
+
+    @media_attachments_changed = true if @status.ordered_media_attachment_ids != previous_media_attachments_ids
   end
 
   def update_poll!
@@ -215,19 +223,13 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
 
     return if @status.edits.any?
 
-    @status.snapshot!(
-      media_attachments_changed: false,
-      at_time: @status.created_at
-    )
+    @status.snapshot!(at_time: @status.created_at, rate_limit: false)
   end
 
   def create_edit!
     return unless significant_changes?
 
-    @status.snapshot!(
-      media_attachments_changed: @media_attachments_changed || @poll_changed,
-      account_id: @account.id
-    )
+    @status.snapshot!(account_id: @account.id, rate_limit: false)
   end
 
   def skip_download?
@@ -268,4 +270,12 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
     PollExpirationNotifyWorker.remove_from_scheduled(poll.id) if @previous_expires_at.present? && @previous_expires_at > poll.expires_at
     PollExpirationNotifyWorker.perform_at(poll.expires_at + 5.minutes, poll.id)
   end
+
+  def forward_activity!
+    forwarder.forward! if forwarder.forwardable?
+  end
+
+  def forwarder
+    @forwarder ||= ActivityPub::Forwarder.new(@account, @json, @status)
+  end
 end
diff --git a/app/services/fan_out_on_write_service.rb b/app/services/fan_out_on_write_service.rb
index 08fae7935..f182cb83e 100644
--- a/app/services/fan_out_on_write_service.rb
+++ b/app/services/fan_out_on_write_service.rb
@@ -118,7 +118,7 @@ class FanOutOnWriteService < BaseService
     Redis.current.publish('timeline:public', anonymous_payload)
     Redis.current.publish(@status.local? ? 'timeline:public:local' : 'timeline:public:remote', anonymous_payload)
 
-    if @status.media_attachments.any?
+    if @status.with_media?
       Redis.current.publish('timeline:public:media', anonymous_payload)
       Redis.current.publish(@status.local? ? 'timeline:public:local:media' : 'timeline:public:remote:media', anonymous_payload)
     end
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index c5061dd63..36592a531 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -109,7 +109,10 @@ class PostStatusService < BaseService
   end
 
   def validate_media!
-    return if @options[:media_ids].blank? || !@options[:media_ids].is_a?(Enumerable)
+    if @options[:media_ids].blank? || !@options[:media_ids].is_a?(Enumerable)
+      @media = []
+      return
+    end
 
     raise Mastodon::ValidationError, I18n.t('media_attachments.validations.too_many') if @options[:media_ids].size > 4 || @options[:poll].present?
 
@@ -166,12 +169,13 @@ class PostStatusService < BaseService
     {
       text: @text,
       media_attachments: @media || [],
+      ordered_media_attachment_ids: (@options[:media_ids] || []).map(&:to_i) & @media.map(&:id),
       thread: @in_reply_to,
       poll_attributes: poll_attributes,
       sensitive: @sensitive,
       spoiler_text: @options[:spoiler_text] || '',
       visibility: @visibility,
-      language: valid_locale_or_nil(@options[:language].presence || @account.user&.preferred_posting_language || I18n.default_locale),
+      language: valid_locale_cascade(@options[:language], @account.user&.preferred_posting_language, I18n.default_locale),
       application: @options[:application],
       content_type: @options[:content_type] || @account.user&.setting_default_content_type,
       rate_limit: @options[:with_rate_limit],
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 361cd4d82..c28e16572 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -40,7 +40,7 @@ class RemoveStatusService < BaseService
           remove_reblogs
           remove_from_hashtags
           remove_from_public
-          remove_from_media if @status.media_attachments.any?
+          remove_from_media if @status.with_media?
           remove_from_direct if status.direct_visibility?
           remove_media
         end
diff --git a/app/services/update_status_service.rb b/app/services/update_status_service.rb
index 6cbbd2876..f5155a2f5 100644
--- a/app/services/update_status_service.rb
+++ b/app/services/update_status_service.rb
@@ -18,8 +18,6 @@ class UpdateStatusService < BaseService
     @status                    = status
     @options                   = options
     @account_id                = account_id
-    @media_attachments_changed = false
-    @poll_changed              = false
 
     Status.transaction do
       create_previous_edit!
@@ -42,14 +40,12 @@ class UpdateStatusService < BaseService
   def update_media_attachments!
     previous_media_attachments = @status.media_attachments.to_a
     next_media_attachments     = validate_media!
-    removed_media_attachments  = previous_media_attachments - next_media_attachments
     added_media_attachments    = next_media_attachments - previous_media_attachments
 
-    MediaAttachment.where(id: removed_media_attachments.map(&:id)).update_all(status_id: nil)
     MediaAttachment.where(id: added_media_attachments.map(&:id)).update_all(status_id: @status.id)
 
+    @status.ordered_media_attachment_ids = (@options[:media_ids] || []).map(&:to_i) & next_media_attachments.map(&:id)
     @status.media_attachments.reload
-    @media_attachments_changed = true if removed_media_attachments.any? || added_media_attachments.any?
   end
 
   def validate_media!
@@ -74,19 +70,18 @@ class UpdateStatusService < BaseService
 
       # If for some reasons the options were changed, it invalidates all previous
       # votes, so we need to remove them
-      @poll_changed = true if @options[:poll][:options] != poll.options || ActiveModel::Type::Boolean.new.cast(@options[:poll][:multiple]) != poll.multiple
+      poll_changed = true if @options[:poll][:options] != poll.options || ActiveModel::Type::Boolean.new.cast(@options[:poll][:multiple]) != poll.multiple
 
       poll.options     = @options[:poll][:options]
       poll.hide_totals = @options[:poll][:hide_totals] || false
       poll.multiple    = @options[:poll][:multiple] || false
       poll.expires_in  = @options[:poll][:expires_in]
-      poll.reset_votes! if @poll_changed
+      poll.reset_votes! if poll_changed
       poll.save!
 
       @status.poll_id = poll.id
     elsif previous_poll.present?
       previous_poll.destroy
-      @poll_changed = true
       @status.poll_id = nil
     end
   end
@@ -95,7 +90,7 @@ class UpdateStatusService < BaseService
     @status.text         = @options[:text].presence || @options.delete(:spoiler_text) || '' if @options.key?(:text)
     @status.spoiler_text = @options[:spoiler_text] || '' if @options.key?(:spoiler_text)
     @status.sensitive    = @options[:sensitive] || @options[:spoiler_text].present? if @options.key?(:sensitive) || @options.key?(:spoiler_text)
-    @status.language     = valid_locale_or_nil(@options[:language] || @status.language || @status.account.user&.preferred_posting_language || I18n.default_locale)
+    @status.language     = valid_locale_cascade(@options[:language], @status.language, @status.account.user&.preferred_posting_language, I18n.default_locale)
     @status.content_type = @options[:content_type] || @status.content_type
     @status.edited_at    = Time.now.utc
 
@@ -138,16 +133,10 @@ class UpdateStatusService < BaseService
 
     return if @status.edits.any?
 
-    @status.snapshot!(
-      media_attachments_changed: false,
-      at_time: @status.created_at
-    )
+    @status.snapshot!(at_time: @status.created_at, rate_limit: false)
   end
 
   def create_edit!
-    @status.snapshot!(
-      media_attachments_changed: @media_attachments_changed || @poll_changed,
-      account_id: @account_id
-    )
+    @status.snapshot!(account_id: @account_id)
   end
 end
diff --git a/app/views/admin/custom_emojis/new.html.haml b/app/views/admin/custom_emojis/new.html.haml
index e15a07cb8..95996dec8 100644
--- a/app/views/admin/custom_emojis/new.html.haml
+++ b/app/views/admin/custom_emojis/new.html.haml
@@ -7,7 +7,7 @@
   .fields-group
     = f.input :shortcode, wrapper: :with_label, label: t('admin.custom_emojis.shortcode'), hint: t('admin.custom_emojis.shortcode_hint')
   .fields-group
-    = f.input :image, wrapper: :with_label, input_html: { accept: 'image/png' }, hint: t('admin.custom_emojis.image_hint')
+    = f.input :image, wrapper: :with_label, input_html: { accept: CustomEmoji::IMAGE_MIME_TYPES.join(' ') }, hint: t('admin.custom_emojis.image_hint', size: number_to_human_size(CustomEmoji::LIMIT))
 
   .actions
     = f.button :button, t('admin.custom_emojis.upload'), type: :submit
diff --git a/app/views/admin/domain_blocks/edit.html.haml b/app/views/admin/domain_blocks/edit.html.haml
index c76a7a7f8..15d70a39e 100644
--- a/app/views/admin/domain_blocks/edit.html.haml
+++ b/app/views/admin/domain_blocks/edit.html.haml
@@ -21,10 +21,10 @@
     = f.input :obfuscate, as: :boolean, wrapper: :with_label, label: I18n.t('admin.domain_blocks.obfuscate'), hint: I18n.t('admin.domain_blocks.obfuscate_hint')
 
   .field-group
-    = f.input :private_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.private_comment'), hint: t('admin.domain_blocks.private_comment_hint'), rows: 6
+    = f.input :private_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.private_comment'), hint: t('admin.domain_blocks.private_comment_hint'), as: :string
 
   .field-group
-    = f.input :public_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.public_comment'), hint: t('admin.domain_blocks.public_comment_hint'), rows: 6
+    = f.input :public_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.public_comment'), hint: t('admin.domain_blocks.public_comment_hint'), as: :string
 
   .actions
     = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/domain_blocks/new.html.haml b/app/views/admin/domain_blocks/new.html.haml
index b04ce7d9c..0944573bf 100644
--- a/app/views/admin/domain_blocks/new.html.haml
+++ b/app/views/admin/domain_blocks/new.html.haml
@@ -21,10 +21,10 @@
     = f.input :obfuscate, as: :boolean, wrapper: :with_label, label: I18n.t('admin.domain_blocks.obfuscate'), hint: I18n.t('admin.domain_blocks.obfuscate_hint')
 
   .field-group
-    = f.input :private_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.private_comment'), hint: t('admin.domain_blocks.private_comment_hint'), rows: 6
+    = f.input :private_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.private_comment'), hint: t('admin.domain_blocks.private_comment_hint'), as: :string
 
   .field-group
-    = f.input :public_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.public_comment'), hint: t('admin.domain_blocks.public_comment_hint'), rows: 6
+    = f.input :public_comment, wrapper: :with_label, label: I18n.t('admin.domain_blocks.public_comment'), hint: t('admin.domain_blocks.public_comment_hint'), as: :string
 
   .actions
     = f.button :button, t('.create'), type: :submit
diff --git a/app/views/admin/domain_blocks/show.html.haml b/app/views/admin/domain_blocks/show.html.haml
deleted file mode 100644
index e64aaa629..000000000
--- a/app/views/admin/domain_blocks/show.html.haml
+++ /dev/null
@@ -1,25 +0,0 @@
-- content_for :page_title do
-  = t('admin.domain_blocks.show.title', domain: @domain_block.domain)
-
-- if @domain_block.private_comment.present?
-  .speech-bubble
-    .speech-bubble__bubble
-      = simple_format(h(@domain_block.private_comment))
-    .speech-bubble__owner= t 'admin.instances.private_comment'
-
-- if @domain_block.public_comment.present?
-  .speech-bubble
-    .speech-bubble__bubble
-      = simple_format(h(@domain_block.public_comment))
-    .speech-bubble__owner= t 'admin.instances.public_comment'
-
-= simple_form_for @domain_block, url: admin_domain_block_path(@domain_block), method: :delete do |f|
-
-  - unless (@domain_block.noop?)
-    %p= t(".retroactive.#{@domain_block.severity}")
-    %p.hint= t(:affected_accounts,
-      scope: [:admin, :domain_blocks, :show],
-      count: @domain_block.affected_accounts_count)
-
-  .actions
-    = f.button :button, t('.undo'), type: :submit
diff --git a/app/views/admin/instances/_exhausted_deliveries_days.haml b/app/views/admin/instances/_exhausted_deliveries_days.haml
deleted file mode 100644
index e581f542d..000000000
--- a/app/views/admin/instances/_exhausted_deliveries_days.haml
+++ /dev/null
@@ -1,2 +0,0 @@
-%li.negative-hint
-  = l(exhausted_deliveries_days)
diff --git a/app/views/admin/instances/_instance.html.haml b/app/views/admin/instances/_instance.html.haml
index dc81007ac..8a4396002 100644
--- a/app/views/admin/instances/_instance.html.haml
+++ b/app/views/admin/instances/_instance.html.haml
@@ -1,33 +1,15 @@
 .directory__tag
   = link_to admin_instance_path(instance) do
     %h4
+      = fa_icon 'warning fw' if instance.failing?
       = instance.domain
+
       %small
         - if instance.domain_block
-          - first_item = true
-          - if !instance.domain_block.noop?
-            = t("admin.domain_blocks.severity.#{instance.domain_block.severity}")
-            - first_item = false
-          - unless instance.domain_block.suspend?
-            - if instance.domain_block.reject_media?
-              - unless first_item
-                &bull;
-              = t('admin.domain_blocks.rejecting_media')
-              - first_item = false
-            - if instance.domain_block.reject_reports?
-              - unless first_item
-                &bull;
-              = t('admin.domain_blocks.rejecting_reports')
-        - elsif whitelist_mode?
+          = instance.domain_block.policies.map { |policy| t(policy, scope: 'admin.instances.content_policies.policies') }.join(' • ')
+        - elsif instance.domain_allow
           = t('admin.accounts.whitelisted')
         - else
           = t('admin.accounts.no_limits_imposed')
-        - if instance.failure_days
-          = ' / '
-          %span.negative-hint
-            = t('admin.instances.delivery.warning_message', count: instance.failure_days)
-        - if instance.unavailable_domain
-          = ' / '
-          %span.negative-hint
-            = t('admin.instances.delivery.unavailable_message')
+
     .trends__item__current{ title: t('admin.instances.known_accounts', count: instance.accounts_count) }= friendly_number_to_human instance.accounts_count
diff --git a/app/views/admin/instances/index.html.haml b/app/views/admin/instances/index.html.haml
index 797948d94..f8273718d 100644
--- a/app/views/admin/instances/index.html.haml
+++ b/app/views/admin/instances/index.html.haml
@@ -17,22 +17,11 @@
         %li= filter_link_to t('admin.instances.moderation.limited'), limited: '1'
 
   .filter-subset
-    %strong= t('admin.instances.delivery.title')
+    %strong= t('admin.instances.availability.title')
     %ul
-      %li= filter_link_to t('admin.instances.delivery.all'), warning: nil, unavailable: nil
-      %li= filter_link_to t('admin.instances.delivery.warning'), warning: '1', unavailable: nil
-      %li= filter_link_to t('admin.instances.delivery.unavailable'), warning: nil, unavailable: '1'
-
-  .back-link
-    = link_to admin_instances_path() do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_all')
-    = link_to admin_instances_path(limited: 1) do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_limited')
-    = link_to admin_instances_path(warning: 1) do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_warning')
+      %li= filter_link_to t('admin.instances.delivery.all'), availability: nil
+      %li= filter_link_to t('admin.instances.delivery.failing'), availability: 'failing'
+      %li= filter_link_to t('admin.instances.delivery.unavailable'), availability: 'unavailable'
 
 - unless whitelist_mode?
   = form_tag admin_instances_url, method: 'GET', class: 'simple_form' do
diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml
index 4db8fd15c..9b2a46e7f 100644
--- a/app/views/admin/instances/show.html.haml
+++ b/app/views/admin/instances/show.html.haml
@@ -1,88 +1,92 @@
 - content_for :page_title do
   = @instance.domain
 
-.filters
-  .back-link
-    = link_to admin_instances_path() do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_all')
-    = link_to admin_instances_path(limited: 1) do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_limited')
-    = link_to admin_instances_path(warning: 1) do
-      %i.fa.fa-chevron-left.fa-fw
-      = t('admin.instances.back_to_warning')
+- content_for :heading_actions do
+  = l(@time_period.first)
+  = ' - '
+  = l(@time_period.last)
 
-.dashboard__counters
-  %div
-    = link_to admin_accounts_path(origin: 'remote', by_domain: @instance.domain) do
-      .dashboard__counters__num= number_with_delimiter @instance.accounts_count
-      .dashboard__counters__label= t 'admin.accounts.title'
-  %div
-    = link_to admin_reports_path(by_target_domain: @instance.domain) do
-      .dashboard__counters__num= number_with_delimiter @instance.reports_count
-      .dashboard__counters__label= t 'admin.instances.total_reported'
-  %div
-    %div
-      .dashboard__counters__num= number_to_human_size @instance.media_storage
-      .dashboard__counters__label= t 'admin.instances.total_storage'
-  %div
-    %div
-      .dashboard__counters__num= number_with_delimiter @instance.following_count
-      .dashboard__counters__label= t 'admin.instances.total_followed_by_them'
-  %div
-    %div
-      .dashboard__counters__num= number_with_delimiter @instance.followers_count
-      .dashboard__counters__label= t 'admin.instances.total_followed_by_us'
-  %div
-    %div
-      .dashboard__counters__num= number_with_delimiter @instance.blocks_count
-      .dashboard__counters__label= t 'admin.instances.total_blocked_by_us'
+%p
+  = fa_icon 'info fw'
+  = t('admin.instances.totals_time_period_hint_html')
 
-  %div
-    %div
-      .dashboard__counters__num
-        - if @instance.delivery_failure_tracker.available?
-          = fa_icon 'check'
-        - else
-          = fa_icon 'times'
-      .dashboard__counters__label= t 'admin.instances.delivery_available'
+.dashboard
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_accounts_measure'), href: admin_accounts_path(origin: 'remote', by_domain: @instance.domain)
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_statuses', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_statuses_measure')
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_media_attachments', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_media_attachments_measure')
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_follows', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_follows_measure')
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_followers', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_followers_measure')
+  .dashboard__item
+    = react_admin_component :counter, measure: 'instance_reports', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, label: t('admin.instances.dashboard.instance_reports_measure'), href: admin_reports_path(by_target_domain: @instance.domain)
+  .dashboard__item
+    = react_admin_component :dimension, dimension: 'instance_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_accounts_dimension')
+  .dashboard__item
+    = react_admin_component :dimension, dimension: 'instance_languages', start_at: @time_period.first, end_at: @time_period.last, params: { domain: @instance.domain }, limit: 8, label: t('admin.instances.dashboard.instance_languages_dimension')
 
-- if @instance.private_comment.present?
-  .speech-bubble
-    .speech-bubble__bubble
-      = simple_format(h(@instance.private_comment))
-    .speech-bubble__owner= t 'admin.instances.private_comment'
+%hr.spacer/
+
+%h3= t('admin.instances.content_policies.title')
+
+- if whitelist_mode?
+  %p= t('admin.instances.content_policies.limited_federation_mode_description_html')
 
-- if @instance.public_comment.present?
-  .speech-bubble
-    .speech-bubble__bubble
-      = simple_format(h(@instance.public_comment))
-    .speech-bubble__owner= t 'admin.instances.public_comment'
+  - if @instance.domain_allow
+    = link_to t('admin.domain_allows.undo'), admin_domain_allow_path(@instance.domain_allow), class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete }
+  - else
+    = link_to t('admin.domain_allows.add_new'), admin_domain_allows_path(domain_allow: { domain: @instance.domain }), class: 'button', method: :post
+- else
+  %p= t('admin.instances.content_policies.description_html')
 
-- unless @exhausted_deliveries_days.empty?
-  %h4= t 'admin.instances.delivery_error_days'
-  %ul
-    = render partial: 'exhausted_deliveries_days', collection: @exhausted_deliveries_days
-  %p.hint
-    = t 'admin.instances.delivery_error_hint', count: DeliveryFailureTracker::FAILURE_DAYS_THRESHOLD
+  - if @instance.domain_block
+    .table-wrapper
+      %table.table.horizontal-table
+        %tbody
+          %tr
+            %th= t('admin.instances.content_policies.comment')
+            %td= @instance.domain_block.private_comment
+          %tr
+            %th= t('admin.instances.content_policies.reason')
+            %td= @instance.domain_block.public_comment
+          %tr
+            %th= t('admin.instances.content_policies.policy')
+            %td= @instance.domain_block.policies.map { |policy| t(policy, scope: 'admin.instances.content_policies.policies') }.join(' • ')
+
+    = link_to t('admin.domain_blocks.edit'), edit_admin_domain_block_path(@instance.domain_block), class: 'button'
+    = link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: 'button', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete }
+  - else
+    = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button'
 
 %hr.spacer/
 
-%div.action-buttons
-  %div
-    - if @instance.domain_allow
-      = link_to t('admin.domain_allows.undo'), admin_domain_allow_path(@instance.domain_allow), class: 'button button--destructive', data: { confirm: t('admin.accounts.are_you_sure'), method: :delete }
-    - elsif @instance.domain_block
-      = link_to t('admin.domain_blocks.edit'), edit_admin_domain_block_path(@instance.domain_block), class: 'button'
-      = link_to t('admin.domain_blocks.undo'), admin_domain_block_path(@instance.domain_block), class: 'button'
-    - else
-      = link_to t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @instance.domain), class: 'button'
-    - if @instance.delivery_failure_tracker.available?
-      - unless @exhausted_deliveries_days.empty?
-        = link_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
-      = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
+%h3= t('admin.instances.availability.title')
+
+%p
+  = t('admin.instances.availability.description_html', count: DeliveryFailureTracker::FAILURE_DAYS_THRESHOLD)
+
+.availability-indicator
+  %ul.availability-indicator__graphic
+    - @instance.availability_over_days(14).each do |(date, failing)|
+      %li.availability-indicator__graphic__item{ class: failing ? 'negative' : 'neutral', title: l(date) }
+  .availability-indicator__hint
+    - if @instance.unavailable?
+      %span.negative-hint
+        = t('admin.instances.availability.failure_threshold_reached', date: l(@instance.unavailable_domain.created_at.to_date))
+        = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }
+    - elsif @instance.exhausted_deliveries_days.empty?
+      %span.positive-hint
+        = t('admin.instances.availability.no_failures_recorded')
+        = link_to t('admin.instances.delivery.stop'), stop_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }
     - else
-      = link_to t('admin.instances.delivery.restart'), restart_delivery_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post }, class: 'button'
-    - if !@instance.delivery_failure_tracker.available? || @instance.accounts_count.zero? || @instance.domain_block&.suspend?
-      = link_to t('admin.instances.purge'), admin_instance_path(@instance), data: { confirm: t('admin.instances.confirm_purge'), method: :delete }, class: 'button'
+      %span.negative-hint
+        = t('admin.instances.availability.failures_recorded', count: @instance.delivery_failure_tracker.days)
+        = link_to t('admin.instances.delivery.clear'), clear_delivery_errors_admin_instance_path(@instance), data: { confirm: t('admin.accounts.are_you_sure'), method: :post } unless @instance.exhausted_deliveries_days.empty?
+
+- if @instance.purgeable?
+  %p= t('admin.instances.purge_description_html')
+
+  = link_to t('admin.instances.purge'), admin_instance_path(@instance), data: { confirm: t('admin.instances.confirm_purge'), method: :delete }, class: 'button button--destructive'
diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml
index 4e06d4bbf..7538cfd54 100644
--- a/app/views/admin/reports/_status.html.haml
+++ b/app/views/admin/reports/_status.html.haml
@@ -11,15 +11,15 @@
             %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
           = Formatter.instance.format(status.proper, custom_emojify: true)
 
-    - unless status.proper.media_attachments.empty?
-      - if status.proper.media_attachments.first.video?
-        - video = status.proper.media_attachments.first
+    - unless status.proper.ordered_media_attachments.empty?
+      - if status.proper.ordered_media_attachments.first.video?
+        - video = status.proper.ordered_media_attachments.first
         = react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json
-      - elsif status.proper.media_attachments.first.audio?
-        - audio = status.proper.media_attachments.first
+      - elsif status.proper.ordered_media_attachments.first.audio?
+        - audio = status.proper.ordered_media_attachments.first
         = react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration)
       - else
-        = react_component :media_gallery, height: 343, sensitive: status.proper.sensitive?, visible: false, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
+        = react_component :media_gallery, height: 343, sensitive: status.proper.sensitive?, visible: false, media: status.proper.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
 
     .detailed-status__meta
       - if status.application
@@ -29,7 +29,7 @@
         %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
       - if status.edited?
         ·
-        = t('statuses.edited_at', date: l(status.edited_at))
+        = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted'))
       - if status.discarded?
         ·
         %span.negative-hint= t('admin.statuses.deleted')
diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml
index 619173373..248718a73 100644
--- a/app/views/admin/reports/index.html.haml
+++ b/app/views/admin/reports/index.html.haml
@@ -59,11 +59,11 @@
 
               %span.report-card__summary__item__content__icon{ title: t('admin.accounts.statuses') }
                 = fa_icon('comment')
-                = report.statuses.count
+                = report.status_ids.size
 
               %span.report-card__summary__item__content__icon{ title: t('admin.accounts.media_attachments') }
                 = fa_icon('camera')
-                = report.media_attachments.count
+                = report.media_attachments_count
 
               - if report.forwarded?
                 ·
diff --git a/app/views/admin/trends/links/_preview_card.html.haml b/app/views/admin/trends/links/_preview_card.html.haml
index d88e06bfd..2e6a0c62f 100644
--- a/app/views/admin/trends/links/_preview_card.html.haml
+++ b/app/views/admin/trends/links/_preview_card.html.haml
@@ -1,4 +1,4 @@
-.batch-table__row{ class: [preview_card.provider&.requires_review? && 'batch-table__row--attention', !preview_card.provider&.requires_review? && !preview_card.trendable? && 'batch-table__row--muted'] }
+.batch-table__row{ class: [preview_card.requires_review? && 'batch-table__row--attention', !preview_card.requires_review? && !preview_card.trendable? && 'batch-table__row--muted'] }
   %label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox
     = f.check_box :preview_card_ids, { multiple: true, include_hidden: false }, preview_card.id
 
@@ -25,6 +25,6 @@
         - if preview_card.decaying?

           = t('admin.trends.tags.peaked_on_and_decaying', date: l(preview_card.max_score_at.to_date, format: :short))
-      - elsif preview_card.provider&.requires_review?
+      - elsif preview_card.requires_review?

         = t('admin.trends.pending_review')
diff --git a/app/views/admin/trends/statuses/_status.html.haml b/app/views/admin/trends/statuses/_status.html.haml
index edb27b9ff..0c463c6b1 100644
--- a/app/views/admin/trends/statuses/_status.html.haml
+++ b/app/views/admin/trends/statuses/_status.html.haml
@@ -1,4 +1,4 @@
-.batch-table__row{ class: [status.account.requires_review? && 'batch-table__row--attention', !status.account.requires_review? && !status.trendable? && 'batch-table__row--muted'] }
+.batch-table__row{ class: [status.requires_review? && 'batch-table__row--attention', !status.requires_review? && !status.trendable? && 'batch-table__row--muted'] }
   %label.batch-table__row__select.batch-table__row__select--aligned.batch-checkbox
     = f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id
 
@@ -9,7 +9,7 @@
       = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank', class: 'emojify', rel: 'noopener noreferrer' do
         = one_line_preview(status)
 
-        - status.media_attachments.each do |media_attachment|
+        - status.ordered_media_attachments.each do |media_attachment|
           %abbr{ title: media_attachment.description }
             = fa_icon 'link'
             = media_attachment.file_file_name
@@ -28,6 +28,6 @@
     - if status.trendable? && (rank = Trends.statuses.rank(status.id))

       %abbr{ title: t('admin.trends.tags.current_score', score: Trends.statuses.score(status.id)) }= t('admin.trends.tags.trending_rank', rank: rank + 1)
-    - elsif status.account.requires_review?
+    - elsif status.requires_review?

       = t('admin.trends.pending_review')
diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml
index 7248b2574..0fc32b918 100644
--- a/app/views/disputes/strikes/show.html.haml
+++ b/app/views/disputes/strikes/show.html.haml
@@ -53,7 +53,7 @@
                   = link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do
                     = one_line_preview(status)
 
-                    - status.media_attachments.each do |media_attachment|
+                    - status.ordered_media_attachments.each do |media_attachment|
                       %abbr{ title: media_attachment.description }
                         = fa_icon 'link'
                         = media_attachment.file_file_name
diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml
index 31460a76e..f520208e1 100644
--- a/app/views/notification_mailer/_status.html.haml
+++ b/app/views/notification_mailer/_status.html.haml
@@ -33,9 +33,9 @@
                               %div.auto-dir
                                 = Formatter.instance.format(status)
 
-                                - if status.media_attachments.size > 0
+                                - if status.ordered_media_attachments.size > 0
                                   %p
-                                    - status.media_attachments.each do |a|
+                                    - status.ordered_media_attachments.each do |a|
                                       - if status.local?
                                         = link_to full_asset_url(a.file.url(:original)), full_asset_url(a.file.url(:original))
                                       - else
diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml
index 1922f53ce..fd7e034b1 100644
--- a/app/views/statuses/_detailed_status.html.haml
+++ b/app/views/statuses/_detailed_status.html.haml
@@ -25,10 +25,10 @@
       - if status.preloadable_poll
         = render_poll_component(status)
 
-  - if !status.media_attachments.empty?
-    - if status.media_attachments.first.video?
+  - if !status.ordered_media_attachments.empty?
+    - if status.ordered_media_attachments.first.video?
       = render_video_component(status, width: 670, height: 380, detailed: true)
-    - elsif status.media_attachments.first.audio?
+    - elsif status.ordered_media_attachments.first.audio?
       = render_audio_component(status, width: 670, height: 380)
     - else
       = render_media_gallery_component(status, height: 380, standalone: true)
@@ -44,7 +44,7 @@
       %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
     ·
     - if status.edited?
-      = t('statuses.edited_at', date: l(status.edited_at))
+      = t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted'))
       ·
     %span.detailed-status__visibility-icon
       = visibility_icon status
diff --git a/app/views/statuses/_og_image.html.haml b/app/views/statuses/_og_image.html.haml
index c8b6147ef..5a647531a 100644
--- a/app/views/statuses/_og_image.html.haml
+++ b/app/views/statuses/_og_image.html.haml
@@ -1,6 +1,6 @@
 - if activity.is_a?(Status) && (activity.non_sensitive_with_media? || (activity.with_media? && Setting.preview_sensitive_media))
   - player_card = false
-  - activity.media_attachments.each do |media|
+  - activity.ordered_media_attachments.each do |media|
     - if media.image?
       = opengraph 'og:image', full_asset_url(media.file.url(:original))
       = opengraph 'og:image:type', media.file_content_type
diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml
index b1e79a1cc..a41656323 100644
--- a/app/views/statuses/_simple_status.html.haml
+++ b/app/views/statuses/_simple_status.html.haml
@@ -8,7 +8,7 @@
         = visibility_icon status
       %time.time-ago{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
       - if status.edited?
-        %abbr{ title: t('statuses.edited_at', date: l(status.edited_at.to_date)) }
+        %abbr{ title: t('statuses.edited_at_html', date: l(status.edited_at.to_date)) }
           *
     %data.dt-published{ value: status.created_at.to_time.iso8601 }
 
@@ -37,10 +37,10 @@
       - if status.preloadable_poll
         = render_poll_component(status)
 
-  - if !status.media_attachments.empty?
-    - if status.media_attachments.first.video?
+  - if !status.ordered_media_attachments.empty?
+    - if status.ordered_media_attachments.first.video?
       = render_video_component(status, width: 610, height: 343)
-    - elsif status.media_attachments.first.audio?
+    - elsif status.ordered_media_attachments.first.audio?
       = render_audio_component(status, width: 610, height: 343)
     - else
       = render_media_gallery_component(status, height: 343)
diff --git a/app/views/user_mailer/warning.text.erb b/app/views/user_mailer/warning.text.erb
index 31d7308ae..1f410f441 100644
--- a/app/views/user_mailer/warning.text.erb
+++ b/app/views/user_mailer/warning.text.erb
@@ -32,4 +32,5 @@
 ---
 <% end %>
 
-<%= t 'user_mailer.warning.get_in_touch', instance: @instance %>
+<%= t 'user_mailer.warning.appeal_description', instance: @instance %>
+<%= disputes_strike_url(@warning) %>
diff --git a/app/workers/admin/domain_purge_worker.rb b/app/workers/admin/domain_purge_worker.rb
index 7cba2c89e..095232a6d 100644
--- a/app/workers/admin/domain_purge_worker.rb
+++ b/app/workers/admin/domain_purge_worker.rb
@@ -3,6 +3,8 @@
 class Admin::DomainPurgeWorker
   include Sidekiq::Worker
 
+  sidekiq_options queue: 'pull', lock: :until_executed
+
   def perform(domain)
     PurgeDomainService.new.call(domain)
   end