about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-02-09 12:46:12 +0100
committerClaire <claire.github-309c@sitedethib.com>2023-02-09 12:46:12 +0100
commit85558a5e18a58247606954050a5866e62c877f91 (patch)
tree982808241c0f64c20f8eec9b1ce5651b3c5195da
parent76b4e7727b7497c1b68e06133831701f8950ae19 (diff)
parentc5a4d8c82ddd5265abc830959a58cdaf1f061a43 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Minor upstream change, our README is completely different.
  Kept ours.
- `lib/tasks/assets.rake`:
  glitch-soc has extra code to deal with its theming system,
  upstream changed a line that exists in glitch-soc.
  Applied upstream changes.
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock14
-rw-r--r--app/controllers/api/v1/streaming_controller.rb6
-rw-r--r--app/controllers/concerns/signature_verification.rb2
-rw-r--r--app/controllers/tags_controller.rb11
-rw-r--r--app/helpers/application_helper.rb4
-rw-r--r--app/helpers/email_helper.rb2
-rw-r--r--app/helpers/jsonld_helper.rb4
-rw-r--r--app/javascript/mastodon/components/autosuggest_input.js4
-rw-r--r--app/javascript/mastodon/features/compose/components/compose_form.js1
-rw-r--r--app/javascript/mastodon/features/compose/components/poll_form.js1
-rw-r--r--app/javascript/mastodon/features/follow_requests/index.js12
-rw-r--r--app/javascript/mastodon/features/ui/components/link_footer.js16
-rw-r--r--app/javascript/mastodon/initial_state.js1
-rw-r--r--app/javascript/mastodon/locales/af.json1
-rw-r--r--app/javascript/mastodon/locales/an.json1
-rw-r--r--app/javascript/mastodon/locales/ar.json1
-rw-r--r--app/javascript/mastodon/locales/ast.json1
-rw-r--r--app/javascript/mastodon/locales/be.json1
-rw-r--r--app/javascript/mastodon/locales/bg.json1
-rw-r--r--app/javascript/mastodon/locales/bn.json1
-rw-r--r--app/javascript/mastodon/locales/br.json1
-rw-r--r--app/javascript/mastodon/locales/bs.json1
-rw-r--r--app/javascript/mastodon/locales/ca.json1
-rw-r--r--app/javascript/mastodon/locales/ckb.json1
-rw-r--r--app/javascript/mastodon/locales/co.json1
-rw-r--r--app/javascript/mastodon/locales/cs.json1
-rw-r--r--app/javascript/mastodon/locales/csb.json1
-rw-r--r--app/javascript/mastodon/locales/cy.json1
-rw-r--r--app/javascript/mastodon/locales/da.json1
-rw-r--r--app/javascript/mastodon/locales/de.json41
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json4
-rw-r--r--app/javascript/mastodon/locales/el.json1
-rw-r--r--app/javascript/mastodon/locales/en-GB.json1
-rw-r--r--app/javascript/mastodon/locales/en.json1
-rw-r--r--app/javascript/mastodon/locales/eo.json5
-rw-r--r--app/javascript/mastodon/locales/es-AR.json1
-rw-r--r--app/javascript/mastodon/locales/es-MX.json1
-rw-r--r--app/javascript/mastodon/locales/es.json1
-rw-r--r--app/javascript/mastodon/locales/et.json1
-rw-r--r--app/javascript/mastodon/locales/eu.json1
-rw-r--r--app/javascript/mastodon/locales/fa.json1
-rw-r--r--app/javascript/mastodon/locales/fi.json1
-rw-r--r--app/javascript/mastodon/locales/fo.json1
-rw-r--r--app/javascript/mastodon/locales/fr-QC.json11
-rw-r--r--app/javascript/mastodon/locales/fr.json43
-rw-r--r--app/javascript/mastodon/locales/fy.json1
-rw-r--r--app/javascript/mastodon/locales/ga.json1
-rw-r--r--app/javascript/mastodon/locales/gd.json1
-rw-r--r--app/javascript/mastodon/locales/gl.json1
-rw-r--r--app/javascript/mastodon/locales/he.json1
-rw-r--r--app/javascript/mastodon/locales/hi.json1
-rw-r--r--app/javascript/mastodon/locales/hr.json1
-rw-r--r--app/javascript/mastodon/locales/hu.json1
-rw-r--r--app/javascript/mastodon/locales/hy.json1
-rw-r--r--app/javascript/mastodon/locales/id.json1
-rw-r--r--app/javascript/mastodon/locales/ig.json1
-rw-r--r--app/javascript/mastodon/locales/io.json1
-rw-r--r--app/javascript/mastodon/locales/is.json1
-rw-r--r--app/javascript/mastodon/locales/it.json1
-rw-r--r--app/javascript/mastodon/locales/ja.json5
-rw-r--r--app/javascript/mastodon/locales/ka.json1
-rw-r--r--app/javascript/mastodon/locales/kab.json1
-rw-r--r--app/javascript/mastodon/locales/kk.json1
-rw-r--r--app/javascript/mastodon/locales/kn.json1
-rw-r--r--app/javascript/mastodon/locales/ko.json33
-rw-r--r--app/javascript/mastodon/locales/ku.json1
-rw-r--r--app/javascript/mastodon/locales/kw.json1
-rw-r--r--app/javascript/mastodon/locales/la.json1
-rw-r--r--app/javascript/mastodon/locales/lt.json1
-rw-r--r--app/javascript/mastodon/locales/lv.json1
-rw-r--r--app/javascript/mastodon/locales/mk.json1
-rw-r--r--app/javascript/mastodon/locales/ml.json1
-rw-r--r--app/javascript/mastodon/locales/mr.json1
-rw-r--r--app/javascript/mastodon/locales/ms.json1
-rw-r--r--app/javascript/mastodon/locales/my.json1
-rw-r--r--app/javascript/mastodon/locales/nl.json1
-rw-r--r--app/javascript/mastodon/locales/nn.json3
-rw-r--r--app/javascript/mastodon/locales/no.json1
-rw-r--r--app/javascript/mastodon/locales/oc.json1
-rw-r--r--app/javascript/mastodon/locales/pa.json1
-rw-r--r--app/javascript/mastodon/locales/pl.json1
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json1
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json1
-rw-r--r--app/javascript/mastodon/locales/ro.json1
-rw-r--r--app/javascript/mastodon/locales/ru.json5
-rw-r--r--app/javascript/mastodon/locales/sa.json1
-rw-r--r--app/javascript/mastodon/locales/sc.json1
-rw-r--r--app/javascript/mastodon/locales/sco.json1
-rw-r--r--app/javascript/mastodon/locales/si.json1
-rw-r--r--app/javascript/mastodon/locales/sk.json1
-rw-r--r--app/javascript/mastodon/locales/sl.json1
-rw-r--r--app/javascript/mastodon/locales/sq.json1
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json1
-rw-r--r--app/javascript/mastodon/locales/sr.json1
-rw-r--r--app/javascript/mastodon/locales/sv.json1
-rw-r--r--app/javascript/mastodon/locales/szl.json1
-rw-r--r--app/javascript/mastodon/locales/ta.json1
-rw-r--r--app/javascript/mastodon/locales/tai.json1
-rw-r--r--app/javascript/mastodon/locales/te.json1
-rw-r--r--app/javascript/mastodon/locales/th.json1
-rw-r--r--app/javascript/mastodon/locales/tr.json3
-rw-r--r--app/javascript/mastodon/locales/tt.json1
-rw-r--r--app/javascript/mastodon/locales/ug.json1
-rw-r--r--app/javascript/mastodon/locales/uk.json1
-rw-r--r--app/javascript/mastodon/locales/ur.json1
-rw-r--r--app/javascript/mastodon/locales/uz.json1
-rw-r--r--app/javascript/mastodon/locales/vi.json1
-rw-r--r--app/javascript/mastodon/locales/zgh.json1
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json1
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json1
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json1
-rw-r--r--app/javascript/styles/mastodon/components.scss1
-rw-r--r--app/lib/activitypub/activity/create.rb2
-rw-r--r--app/lib/delivery_failure_tracker.rb2
-rw-r--r--app/lib/extractor.rb2
-rw-r--r--app/lib/link_details_extractor.rb2
-rw-r--r--app/lib/scope_transformer.rb2
-rw-r--r--app/lib/vacuum/access_tokens_vacuum.rb4
-rw-r--r--app/models/concerns/omniauthable.rb3
-rw-r--r--app/models/concerns/remotable.rb4
-rw-r--r--app/models/form/admin_settings.rb2
-rw-r--r--app/models/session_activation.rb2
-rw-r--r--app/models/setting.rb3
-rw-r--r--app/models/trends/history.rb4
-rw-r--r--app/models/user.rb2
-rw-r--r--app/presenters/instance_presenter.rb4
-rw-r--r--app/serializers/initial_state_serializer.rb1
-rw-r--r--app/serializers/rest/account_serializer.rb4
-rw-r--r--app/serializers/rest/instance_serializer.rb3
-rw-r--r--app/services/activitypub/fetch_featured_collection_service.rb2
-rw-r--r--app/services/activitypub/fetch_remote_account_service.rb2
-rw-r--r--app/services/activitypub/fetch_remote_actor_service.rb2
-rw-r--r--app/services/activitypub/fetch_remote_key_service.rb2
-rw-r--r--app/services/activitypub/process_collection_service.rb6
-rw-r--r--app/services/activitypub/process_status_update_service.rb2
-rw-r--r--app/services/fetch_link_card_service.rb2
-rw-r--r--app/services/fetch_oembed_service.rb2
-rw-r--r--app/services/fetch_resource_service.rb2
-rw-r--r--app/services/keys/claim_service.rb2
-rw-r--r--app/services/keys/query_service.rb2
-rw-r--r--app/services/resolve_account_service.rb2
-rw-r--r--app/services/verify_link_service.rb4
-rw-r--r--app/views/admin/settings/about/show.html.haml3
-rw-r--r--app/workers/activitypub/processing_worker.rb2
-rw-r--r--app/workers/import/relationship_worker.rb2
-rw-r--r--app/workers/scheduler/user_cleanup_scheduler.rb2
-rw-r--r--config.ru2
-rw-r--r--config/locales/activerecord.fr.yml2
-rw-r--r--config/locales/ast.yml5
-rw-r--r--config/locales/da.yml4
-rw-r--r--config/locales/de.yml12
-rw-r--r--config/locales/devise.fr.yml22
-rw-r--r--config/locales/doorkeeper.fr.yml12
-rw-r--r--config/locales/en-GB.yml82
-rw-r--r--config/locales/eo.yml32
-rw-r--r--config/locales/fr-QC.yml32
-rw-r--r--config/locales/fr.yml68
-rw-r--r--config/locales/ja.yml4
-rw-r--r--config/locales/ko.yml14
-rw-r--r--config/locales/ru.yml5
-rw-r--r--config/locales/simple_form.ca.yml4
-rw-r--r--config/locales/simple_form.cs.yml4
-rw-r--r--config/locales/simple_form.da.yml3
-rw-r--r--config/locales/simple_form.de.yml6
-rw-r--r--config/locales/simple_form.el.yml2
-rw-r--r--config/locales/simple_form.en-GB.yml4
-rw-r--r--config/locales/simple_form.en.yml2
-rw-r--r--config/locales/simple_form.eo.yml1
-rw-r--r--config/locales/simple_form.es-AR.yml4
-rw-r--r--config/locales/simple_form.es-MX.yml4
-rw-r--r--config/locales/simple_form.es.yml1
-rw-r--r--config/locales/simple_form.et.yml4
-rw-r--r--config/locales/simple_form.eu.yml4
-rw-r--r--config/locales/simple_form.fi.yml5
-rw-r--r--config/locales/simple_form.fo.yml4
-rw-r--r--config/locales/simple_form.fr-QC.yml6
-rw-r--r--config/locales/simple_form.fr.yml56
-rw-r--r--config/locales/simple_form.fy.yml4
-rw-r--r--config/locales/simple_form.gl.yml4
-rw-r--r--config/locales/simple_form.he.yml6
-rw-r--r--config/locales/simple_form.hu.yml4
-rw-r--r--config/locales/simple_form.is.yml4
-rw-r--r--config/locales/simple_form.it.yml4
-rw-r--r--config/locales/simple_form.ja.yml26
-rw-r--r--config/locales/simple_form.ko.yml4
-rw-r--r--config/locales/simple_form.lv.yml4
-rw-r--r--config/locales/simple_form.nl.yml4
-rw-r--r--config/locales/simple_form.pl.yml4
-rw-r--r--config/locales/simple_form.pt-PT.yml4
-rw-r--r--config/locales/simple_form.sk.yml1
-rw-r--r--config/locales/simple_form.sl.yml4
-rw-r--r--config/locales/simple_form.sq.yml4
-rw-r--r--config/locales/simple_form.th.yml6
-rw-r--r--config/locales/simple_form.tr.yml4
-rw-r--r--config/locales/simple_form.uk.yml4
-rw-r--r--config/locales/simple_form.vi.yml4
-rw-r--r--config/locales/simple_form.zh-CN.yml4
-rw-r--r--config/locales/simple_form.zh-TW.yml4
-rw-r--r--config/locales/sk.yml3
-rw-r--r--config/locales/th.yml10
-rw-r--r--lib/active_record/database_tasks_extensions.rb2
-rw-r--r--lib/mastodon/premailer_webpack_strategy.rb2
-rw-r--r--lib/mastodon/statuses_cli.rb4
-rw-r--r--lib/rails/engine_extensions.rb2
-rw-r--r--lib/tasks/assets.rake2
-rw-r--r--lib/tasks/branding.rake4
-rw-r--r--lib/tasks/emojis.rake6
-rw-r--r--lib/tasks/mastodon.rake12
-rw-r--r--package.json6
-rw-r--r--spec/models/concerns/remotable_spec.rb4
-rw-r--r--spec/models/session_activation_spec.rb4
-rw-r--r--spec/rails_helper.rb2
-rw-r--r--spec/workers/scheduler/user_cleanup_scheduler_spec.rb39
-rw-r--r--streaming/index.js35
-rw-r--r--yarn.lock28
216 files changed, 767 insertions, 324 deletions
diff --git a/Gemfile b/Gemfile
index af2de5e23..1ce7732e3 100644
--- a/Gemfile
+++ b/Gemfile
@@ -26,7 +26,7 @@ gem 'blurhash', '~> 0.1'
 
 gem 'active_model_serializers', '~> 0.10'
 gem 'addressable', '~> 2.8'
-gem 'bootsnap', '~> 1.15.0', require: false
+gem 'bootsnap', '~> 1.16.0', require: false
 gem 'browser'
 gem 'charlock_holmes', '~> 0.7.7'
 gem 'chewy', '~> 7.2'
diff --git a/Gemfile.lock b/Gemfile.lock
index 36659aca3..ab8c48c2f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -122,7 +122,7 @@ GEM
       debug_inspector (>= 0.0.1)
     blurhash (0.1.6)
       ffi (~> 1.14)
-    bootsnap (1.15.0)
+    bootsnap (1.16.0)
       msgpack (~> 1.2)
     brakeman (5.4.0)
     browser (4.2.0)
@@ -207,7 +207,7 @@ GEM
     docile (1.4.0)
     domain_name (0.5.20190701)
       unf (>= 0.0.5, < 1.0.0)
-    doorkeeper (5.6.3)
+    doorkeeper (5.6.4)
       railties (>= 5)
     dotenv (2.8.1)
     dotenv-rails (2.8.1)
@@ -229,7 +229,7 @@ GEM
       tzinfo
     excon (0.95.0)
     fabrication (2.30.0)
-    faker (3.1.0)
+    faker (3.1.1)
       i18n (>= 1.8.11, < 2)
     faraday (1.9.3)
       faraday-em_http (~> 1.0)
@@ -511,7 +511,7 @@ GEM
       httpclient
       json-jwt (>= 1.11.0)
       rack (>= 2.1.0)
-    rack-proxy (0.7.0)
+    rack-proxy (0.7.6)
       rack
     rack-test (2.0.2)
       rack (>= 1.3)
@@ -611,7 +611,7 @@ GEM
       parser (>= 3.1.1.0)
     rubocop-capybara (2.17.0)
       rubocop (~> 1.41)
-    rubocop-performance (1.15.2)
+    rubocop-performance (1.16.0)
       rubocop (>= 1.7.0, < 2.0)
       rubocop-ast (>= 0.4.0)
     rubocop-rails (2.17.4)
@@ -744,7 +744,7 @@ GEM
       addressable (>= 2.8.0)
       crack (>= 0.3.2)
       hashdiff (>= 0.4.0, < 2.0.0)
-    webpacker (5.4.3)
+    webpacker (5.4.4)
       activesupport (>= 5.2)
       rack-proxy (>= 0.6.1)
       railties (>= 5.2)
@@ -770,7 +770,7 @@ DEPENDENCIES
   better_errors (~> 2.9)
   binding_of_caller (~> 1.0)
   blurhash (~> 0.1)
-  bootsnap (~> 1.15.0)
+  bootsnap (~> 1.16.0)
   brakeman (~> 5.4)
   browser
   bullet (~> 7.0)
diff --git a/app/controllers/api/v1/streaming_controller.rb b/app/controllers/api/v1/streaming_controller.rb
index 7cd60615a..b23a60170 100644
--- a/app/controllers/api/v1/streaming_controller.rb
+++ b/app/controllers/api/v1/streaming_controller.rb
@@ -2,10 +2,10 @@
 
 class Api::V1::StreamingController < Api::BaseController
   def index
-    if Rails.configuration.x.streaming_api_base_url != request.host
-      redirect_to streaming_api_url, status: 301
-    else
+    if Rails.configuration.x.streaming_api_base_url == request.host
       not_found
+    else
+      redirect_to streaming_api_url, status: 301
     end
   end
 
diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb
index a9950d21f..9c04ab4ca 100644
--- a/app/controllers/concerns/signature_verification.rb
+++ b/app/controllers/concerns/signature_verification.rb
@@ -227,7 +227,7 @@ module SignatureVerification
   end
 
   def to_header_name(name)
-    name.split(/-/).map(&:capitalize).join('-')
+    name.split('-').map(&:capitalize).join('-')
   end
 
   def missing_required_signature_parameters?
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index 65017acba..750e15fa3 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -11,7 +11,7 @@ class TagsController < ApplicationController
   before_action :authenticate_user!, if: :whitelist_mode?
   before_action :set_local
   before_action :set_tag
-  before_action :set_statuses
+  before_action :set_statuses, if: -> { request.format == :rss }
   before_action :set_instance_presenter
 
   skip_before_action :require_functional!, unless: :whitelist_mode?
@@ -44,12 +44,7 @@ class TagsController < ApplicationController
   end
 
   def set_statuses
-    case request.format&.to_sym
-    when :json
-      @statuses = cache_collection(TagFeed.new(@tag, current_account, local: @local).get(PAGE_SIZE, params[:max_id], params[:since_id], params[:min_id]), Status)
-    when :rss
-      @statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
-    end
+    @statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
   end
 
   def set_instance_presenter
@@ -64,8 +59,6 @@ class TagsController < ApplicationController
     ActivityPub::CollectionPresenter.new(
       id: tag_url(@tag),
       type: :ordered,
-      size: @tag.statuses.count,
-      items: @statuses.map { |status| ActivityPub::TagManager.instance.uri_for(status) }
     )
   end
 end
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index af453825b..774643625 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -67,7 +67,7 @@ module ApplicationHelper
   def link_to_login(name = nil, html_options = nil, &block)
     target = new_user_session_path
 
-    html_options = name if block_given?
+    html_options = name if block
 
     if omniauth_only? && Devise.mappings[:user].omniauthable? && User.omniauth_providers.size == 1
       target = omniauth_authorize_path(:user, User.omniauth_providers[0])
@@ -75,7 +75,7 @@ module ApplicationHelper
       html_options[:method] = :post
     end
 
-    if block_given?
+    if block
       link_to(target, html_options, &block)
     else
       link_to(name, target, html_options)
diff --git a/app/helpers/email_helper.rb b/app/helpers/email_helper.rb
index 360783c62..0800601f9 100644
--- a/app/helpers/email_helper.rb
+++ b/app/helpers/email_helper.rb
@@ -7,7 +7,7 @@ module EmailHelper
 
   def email_to_canonical_email(str)
     username, domain = str.downcase.split('@', 2)
-    username, = username.gsub('.', '').split('+', 2)
+    username, = username.delete('.').split('+', 2)
 
     "#{username}@#{domain}"
   end
diff --git a/app/helpers/jsonld_helper.rb b/app/helpers/jsonld_helper.rb
index 102e4b132..e5787fd47 100644
--- a/app/helpers/jsonld_helper.rb
+++ b/app/helpers/jsonld_helper.rb
@@ -213,7 +213,7 @@ module JsonLdHelper
     end
   end
 
-  def load_jsonld_context(url, _options = {}, &_block)
+  def load_jsonld_context(url, _options = {}, &block)
     json = Rails.cache.fetch("jsonld:context:#{url}", expires_in: 30.days, raw: true) do
       request = Request.new(:get, url)
       request.add_headers('Accept' => 'application/ld+json')
@@ -226,6 +226,6 @@ module JsonLdHelper
 
     doc = JSON::LD::API::RemoteDocument.new(json, documentUrl: url)
 
-    block_given? ? yield(doc) : doc
+    block ? yield(doc) : doc
   end
 end
diff --git a/app/javascript/mastodon/components/autosuggest_input.js b/app/javascript/mastodon/components/autosuggest_input.js
index 817a41b93..8d2ddb411 100644
--- a/app/javascript/mastodon/components/autosuggest_input.js
+++ b/app/javascript/mastodon/components/autosuggest_input.js
@@ -51,6 +51,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
     searchTokens: PropTypes.arrayOf(PropTypes.string),
     maxLength: PropTypes.number,
     lang: PropTypes.string,
+    spellCheck: PropTypes.string,
   };
 
   static defaultProps = {
@@ -186,7 +187,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
   };
 
   render () {
-    const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, lang } = this.props;
+    const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, lang, spellCheck } = this.props;
     const { suggestionsHidden } = this.state;
 
     return (
@@ -212,6 +213,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
             className={className}
             maxLength={maxLength}
             lang={lang}
+            spellCheck={spellCheck}
           />
         </label>
 
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index a8379c59c..8df144dcc 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -243,6 +243,7 @@ class ComposeForm extends ImmutablePureComponent {
             id='cw-spoiler-input'
             className='spoiler-input__input'
             lang={this.props.lang}
+            spellCheck
           />
         </div>
 
diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js
index a8bc7d0ac..379ae6821 100644
--- a/app/javascript/mastodon/features/compose/components/poll_form.js
+++ b/app/javascript/mastodon/features/compose/components/poll_form.js
@@ -93,6 +93,7 @@ class Option extends React.PureComponent {
             maxLength={100}
             value={title}
             lang={lang}
+            spellCheck
             onChange={this.handleOptionTitleChange}
             suggestions={this.props.suggestions}
             onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
diff --git a/app/javascript/mastodon/features/follow_requests/index.js b/app/javascript/mastodon/features/follow_requests/index.js
index d16aa7737..526ae4cde 100644
--- a/app/javascript/mastodon/features/follow_requests/index.js
+++ b/app/javascript/mastodon/features/follow_requests/index.js
@@ -5,7 +5,6 @@ import ImmutablePureComponent from 'react-immutable-pure-component';
 import PropTypes from 'prop-types';
 import ImmutablePropTypes from 'react-immutable-proptypes';
 import { debounce } from 'lodash';
-import LoadingIndicator from '../../components/loading_indicator';
 import Column from '../ui/components/column';
 import ColumnBackButtonSlim from '../../components/column_back_button_slim';
 import AccountAuthorizeContainer from './containers/account_authorize_container';
@@ -53,16 +52,8 @@ class FollowRequests extends ImmutablePureComponent {
   render () {
     const { intl, accountIds, hasMore, multiColumn, locked, domain, isLoading } = this.props;
 
-    if (!accountIds) {
-      return (
-        <Column>
-          <LoadingIndicator />
-        </Column>
-      );
-    }
-
     const emptyMessage = <FormattedMessage id='empty_column.follow_requests' defaultMessage="You don't have any follow requests yet. When you receive one, it will show up here." />;
-    const unlockedPrependMessage = locked ? null : (
+    const unlockedPrependMessage = !locked && accountIds.size > 0 && (
       <div className='follow_requests-unlocked_explanation'>
         <FormattedMessage
           id='follow_requests.unlocked_explanation'
@@ -80,6 +71,7 @@ class FollowRequests extends ImmutablePureComponent {
           onLoadMore={this.handleLoadMore}
           hasMore={hasMore}
           isLoading={isLoading}
+          showLoading={isLoading && accountIds.size === 0}
           emptyMessage={emptyMessage}
           bindToDocument={!multiColumn}
           prepend={unlockedPrependMessage}
diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js
index db5945d6a..be2111207 100644
--- a/app/javascript/mastodon/features/ui/components/link_footer.js
+++ b/app/javascript/mastodon/features/ui/components/link_footer.js
@@ -3,7 +3,7 @@ import React from 'react';
 import PropTypes from 'prop-types';
 import { FormattedMessage, defineMessages, injectIntl } from 'react-intl';
 import { Link } from 'react-router-dom';
-import { domain, version, source_url, profile_directory as profileDirectory } from 'mastodon/initial_state';
+import { domain, version, source_url, statusPageUrl, profile_directory as profileDirectory } from 'mastodon/initial_state';
 import { logOut } from 'mastodon/utils/log_out';
 import { openModal } from 'mastodon/actions/modal';
 import { PERMISSION_INVITE_USERS } from 'mastodon/permissions';
@@ -59,21 +59,27 @@ class LinkFooter extends React.PureComponent {
         <p>
           <strong>{domain}</strong>:
           {' '}
-          <Link key='about' to='/about'><FormattedMessage id='footer.about' defaultMessage='About' /></Link>
+          <Link to='/about'><FormattedMessage id='footer.about' defaultMessage='About' /></Link>
+          {statusPageUrl && (
+            <>
+              {DividingCircle}
+              <a href={statusPageUrl} target='_blank' rel='noopener'><FormattedMessage id='footer.status' defaultMessage='Status' /></a>
+            </>
+          )}
           {canInvite && (
             <>
               {DividingCircle}
-              <a key='invites' href='/invites' target='_blank'><FormattedMessage id='footer.invite' defaultMessage='Invite people' /></a>
+              <a href='/invites' target='_blank'><FormattedMessage id='footer.invite' defaultMessage='Invite people' /></a>
             </>
           )}
           {canProfileDirectory && (
             <>
               {DividingCircle}
-              <Link key='directory' to='/directory'><FormattedMessage id='footer.directory' defaultMessage='Profiles directory' /></Link>
+              <Link to='/directory'><FormattedMessage id='footer.directory' defaultMessage='Profiles directory' /></Link>
             </>
           )}
           {DividingCircle}
-          <Link key='privacy-policy' to='/privacy-policy'><FormattedMessage id='footer.privacy_policy' defaultMessage='Privacy policy' /></Link>
+          <Link to='/privacy-policy'><FormattedMessage id='footer.privacy_policy' defaultMessage='Privacy policy' /></Link>
         </p>
 
         <p>
diff --git a/app/javascript/mastodon/initial_state.js b/app/javascript/mastodon/initial_state.js
index f58b4eb0e..c9c3a7647 100644
--- a/app/javascript/mastodon/initial_state.js
+++ b/app/javascript/mastodon/initial_state.js
@@ -134,6 +134,7 @@ export const usePendingItems = getMeta('use_pending_items');
 export const version = getMeta('version');
 export const translationEnabled = getMeta('translation_enabled');
 export const languages = initialState?.languages;
+export const statusPageUrl = getMeta('status_page_url');
 
 // Glitch-soc-specific settings
 export const maxChars = (initialState && initialState.max_toot_chars) || 500;
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index b5bb1a055..7d7724618 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Kortpadsleutels",
   "footer.privacy_policy": "Privaatheidsbeleid",
   "footer.source_code": "Wys bronkode",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Kom aan die gang",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json
index 9ffaa0c59..389c512fe 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Alcorces de teclau",
   "footer.privacy_policy": "Politica de privacidat",
   "footer.source_code": "Veyer codigo fuent",
+  "footer.status": "Status",
   "generic.saved": "Alzau",
   "getting_started.heading": "Primers pasos",
   "hashtag.column_header.tag_mode.all": "y {additional}",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 746af3f1e..3e6c989ce 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "اختصارات لوحة المفاتيح",
   "footer.privacy_policy": "سياسة الخصوصية",
   "footer.source_code": "الاطلاع على الشفرة المصدرية",
+  "footer.status": "Status",
   "generic.saved": "تم الحفظ",
   "getting_started.heading": "استعدّ للبدء",
   "hashtag.column_header.tag_mode.all": "و {additional}",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 18ef12933..23e9b026b 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atayos del tecláu",
   "footer.privacy_policy": "Política de privacidá",
   "footer.source_code": "Ver el códigu fonte",
+  "footer.status": "Status",
   "generic.saved": "Guardóse",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "y {additional}",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index 7b422dc94..4dd3a06e0 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Спалучэнні клавіш",
   "footer.privacy_policy": "Палітыка прыватнасці",
   "footer.source_code": "Прагледзець зыходны код",
+  "footer.status": "Статус",
   "generic.saved": "Захавана",
   "getting_started.heading": "Пачатак працы",
   "hashtag.column_header.tag_mode.all": "і {additional}",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 5ddeedeba..cf5df140e 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Клавишни комбинации",
   "footer.privacy_policy": "Политика за поверителност",
   "footer.source_code": "Преглед на изходния код",
+  "footer.status": "Status",
   "generic.saved": "Запазено",
   "getting_started.heading": "Първи стъпки",
   "hashtag.column_header.tag_mode.all": "и {additional}",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 985958cf1..07609a478 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "সংরক্ষণ হয়েছে",
   "getting_started.heading": "শুরু করা",
   "hashtag.column_header.tag_mode.all": "এবং {additional}",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 6ded74115..bb19a0452 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Berradennoù klavier",
   "footer.privacy_policy": "Reolennoù prevezded",
   "footer.source_code": "Gwelet kod mammenn",
+  "footer.status": "Status",
   "generic.saved": "Enrollet",
   "getting_started.heading": "Loc'hañ",
   "hashtag.column_header.tag_mode.all": "ha {additional}",
diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json
index 73fb3404c..bd89ec9fd 100644
--- a/app/javascript/mastodon/locales/bs.json
+++ b/app/javascript/mastodon/locales/bs.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 5adec87f7..39e8f12e2 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Dreceres de teclat",
   "footer.privacy_policy": "Política de privadesa",
   "footer.source_code": "Mostra el codi font",
+  "footer.status": "Estat",
   "generic.saved": "Desat",
   "getting_started.heading": "Primeres passes",
   "hashtag.column_header.tag_mode.all": "i {additional}",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index 306764002..8349e34bc 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "پاشکەوتکرا",
   "getting_started.heading": "دەست پێکردن",
   "hashtag.column_header.tag_mode.all": "و {additional}",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 4d94dd2ba..9b75ceeb1 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Salvatu",
   "getting_started.heading": "Per principià",
   "hashtag.column_header.tag_mode.all": "è {additional}",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 7ff5aa221..e07ad6ae1 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Klávesové zkratky",
   "footer.privacy_policy": "Zásady ochrany osobních údajů",
   "footer.source_code": "Zobrazit zdrojový kód",
+  "footer.status": "Stav",
   "generic.saved": "Uloženo",
   "getting_started.heading": "Začínáme",
   "hashtag.column_header.tag_mode.all": "a {additional}",
diff --git a/app/javascript/mastodon/locales/csb.json b/app/javascript/mastodon/locales/csb.json
index fbb103d2c..884020da1 100644
--- a/app/javascript/mastodon/locales/csb.json
+++ b/app/javascript/mastodon/locales/csb.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 407f5dd92..442703ddf 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Bysellau brys",
   "footer.privacy_policy": "Polisi preifatrwydd",
   "footer.source_code": "Gweld y cod ffynhonnell",
+  "footer.status": "Status",
   "generic.saved": "Wedi'i Gadw",
   "getting_started.heading": "Dechrau",
   "hashtag.column_header.tag_mode.all": "a {additional}",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index bec230000..1db8b030d 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tastaturgenveje",
   "footer.privacy_policy": "Fortrolighedspolitik",
   "footer.source_code": "Vis kildekode",
+  "footer.status": "Status",
   "generic.saved": "Gemt",
   "getting_started.heading": "Startmenu",
   "hashtag.column_header.tag_mode.all": "og {additional}",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 2cdaebe2a..418e985e4 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -247,7 +247,7 @@
   "filter_modal.added.expired_explanation": "Diese Filterkategorie ist abgelaufen. Du musst das Ablaufdatum für diese Kategorie ändern.",
   "filter_modal.added.expired_title": "Abgelaufener Filter!",
   "filter_modal.added.review_and_configure": "Um diesen Filter zu überprüfen oder noch weiter zu konfigurieren, rufe die {settings_link} auf.",
-  "filter_modal.added.review_and_configure_title": "Filtereinstellungen",
+  "filter_modal.added.review_and_configure_title": "Filter-Einstellungen",
   "filter_modal.added.settings_link": "Einstellungen",
   "filter_modal.added.short_explanation": "Dieser Post wurde folgender Filterkategorie hinzugefügt: {title}.",
   "filter_modal.added.title": "Filter hinzugefügt!",
@@ -260,7 +260,7 @@
   "filter_modal.title.status": "Beitrag per Filter ausblenden",
   "follow_recommendations.done": "Fertig",
   "follow_recommendations.heading": "Folge Leuten, deren Beiträge du sehen möchtest! Hier sind einige Vorschläge.",
-  "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!",
+  "follow_recommendations.lead": "Beiträge von Profilen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Sei unbesorgt, mal Fehler zu begehen. Du kannst diesen Konten ganz einfach und jederzeit wieder entfolgen.",
   "follow_request.authorize": "Genehmigen",
   "follow_request.reject": "Ablehnen",
   "follow_requests.unlocked_explanation": "Auch wenn dein Konto öffentlich bzw. nicht geschützt ist, haben die Moderator*innen von {domain} gedacht, dass du diesen Follower lieber manuell bestätigen solltest.",
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tastenkombinationen",
   "footer.privacy_policy": "Datenschutzerklärung",
   "footer.source_code": "Quellcode anzeigen",
+  "footer.status": "Status",
   "generic.saved": "Gespeichert",
   "getting_started.heading": "Auf geht's!",
   "hashtag.column_header.tag_mode.all": "und {additional}",
@@ -279,10 +280,10 @@
   "hashtag.column_header.tag_mode.none": "ohne {additional}",
   "hashtag.column_settings.select.no_options_message": "Keine Vorschläge gefunden",
   "hashtag.column_settings.select.placeholder": "Hashtags eingeben …",
-  "hashtag.column_settings.tag_mode.all": "All diese",
+  "hashtag.column_settings.tag_mode.all": "Alle",
   "hashtag.column_settings.tag_mode.any": "Eines von diesen",
   "hashtag.column_settings.tag_mode.none": "Keines von diesen",
-  "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags für diese Spalte einfügen",
+  "hashtag.column_settings.tag_toggle": "Zusätzliche Hashtags dieser Spalte hinzufügen",
   "hashtag.follow": "Hashtag folgen",
   "hashtag.unfollow": "Hashtag entfolgen",
   "home.column_settings.basic": "Einfach",
@@ -308,7 +309,7 @@
   "keyboard_shortcuts.back": "zurücknavigieren",
   "keyboard_shortcuts.blocked": "Liste gesperrter Profile öffnen",
   "keyboard_shortcuts.boost": "Beitrag teilen",
-  "keyboard_shortcuts.column": "Spalte fokussieren",
+  "keyboard_shortcuts.column": "Auf die aktuelle Spalte fokussieren",
   "keyboard_shortcuts.compose": "Eingabefeld fokussieren",
   "keyboard_shortcuts.description": "Beschreibung",
   "keyboard_shortcuts.direct": "Direktnachrichten öffnen",
@@ -340,8 +341,8 @@
   "keyboard_shortcuts.unfocus": "Eingabefeld/Suche nicht mehr fokussieren",
   "keyboard_shortcuts.up": "sich in der Liste hinaufbewegen",
   "lightbox.close": "Schließen",
-  "lightbox.compress": "Bildansicht komprimieren",
-  "lightbox.expand": "Bildansicht erweitern",
+  "lightbox.compress": "Bildansicht verkleinern",
+  "lightbox.expand": "Bildansicht vergrößern",
   "lightbox.next": "Vor",
   "lightbox.previous": "Zurück",
   "limited_account_hint.action": "Profil trotzdem anzeigen",
@@ -377,7 +378,7 @@
   "navigation_bar.discover": "Entdecken",
   "navigation_bar.domain_blocks": "Gesperrte Domains",
   "navigation_bar.edit_profile": "Profil bearbeiten",
-  "navigation_bar.explore": "Entdecken",
+  "navigation_bar.explore": "Erforschen",
   "navigation_bar.favourites": "Favoriten",
   "navigation_bar.filters": "Stummgeschaltete Wörter",
   "navigation_bar.follow_requests": "Follower-Anfragen",
@@ -393,7 +394,7 @@
   "navigation_bar.search": "Suche",
   "navigation_bar.security": "Sicherheit",
   "not_signed_in_indicator.not_signed_in": "Du musst dich anmelden, um auf diesen Inhalt zugreifen zu können.",
-  "notification.admin.report": "{target} wurde von {name} gemeldet",
+  "notification.admin.report": "{name} meldete {target}",
   "notification.admin.sign_up": "{name} registrierte sich",
   "notification.favourite": "{name} hat deinen Beitrag favorisiert",
   "notification.follow": "{name} folgt dir jetzt",
@@ -451,7 +452,7 @@
   "poll.votes": "{votes, plural, one {# Stimme} other {# Stimmen}}",
   "poll_button.add_poll": "Umfrage erstellen",
   "poll_button.remove_poll": "Umfrage entfernen",
-  "privacy.change": "Sichtbarkeit des Beitrags anpassen",
+  "privacy.change": "Sichtbarkeit anpassen",
   "privacy.direct.long": "Nur für die genannten Profile sichtbar",
   "privacy.direct.short": "Nur erwähnte Profile",
   "privacy.private.long": "Nur für deine Follower sichtbar",
@@ -465,16 +466,16 @@
   "refresh": "Aktualisieren",
   "regeneration_indicator.label": "Wird geladen …",
   "regeneration_indicator.sublabel": "Deine Startseite wird gerade vorbereitet!",
-  "relative_time.days": "{number}T",
+  "relative_time.days": "{number} T.",
   "relative_time.full.days": "vor {number, plural, one {# Tag} other {# Tagen}}",
   "relative_time.full.hours": "vor {number, plural, one {# Stunde} other {# Stunden}}",
   "relative_time.full.just_now": "soeben",
   "relative_time.full.minutes": "vor {number, plural, one {# Minute} other {# Minuten}}",
   "relative_time.full.seconds": "vor {number, plural, one {1 Sekunde} other {# Sekunden}}",
-  "relative_time.hours": "{number} Std",
+  "relative_time.hours": "{number} Std.",
   "relative_time.just_now": "jetzt",
-  "relative_time.minutes": "{number} min",
-  "relative_time.seconds": "{number} sek",
+  "relative_time.minutes": "{number} Min.",
+  "relative_time.seconds": "{number} Sek.",
   "relative_time.today": "heute",
   "reply_indicator.cancel": "Abbrechen",
   "report.block": "Sperren",
@@ -530,7 +531,7 @@
   "search_results.accounts": "Profile",
   "search_results.all": "Alles",
   "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Nichts für diese Suchbegriffe gefunden",
+  "search_results.nothing_found": "Nichts zu diesen Suchbegriffen gefunden",
   "search_results.statuses": "Beiträge",
   "search_results.statuses_fts_disabled": "Die Suche nach Beitragsinhalten ist auf diesem Mastodon-Server deaktiviert.",
   "search_results.title": "Suchergebnisse für {q}",
@@ -544,9 +545,9 @@
   "sign_in_banner.create_account": "Konto erstellen",
   "sign_in_banner.sign_in": "Anmelden",
   "sign_in_banner.text": "Melde dich an, um Profilen oder Hashtags zu folgen, Beiträge zu favorisieren, zu teilen und auf sie zu antworten. Du kannst auch von deinem Konto aus auf einem anderen Server interagieren.",
-  "status.admin_account": "Moderationsoberfläche für @{name} öffnen",
-  "status.admin_domain": "Moderationsoberfläche für {domain} öffnen",
-  "status.admin_status": "Diesen Beitrag in der Moderationsoberfläche öffnen",
+  "status.admin_account": "@{name} moderieren",
+  "status.admin_domain": "{domain} moderieren",
+  "status.admin_status": "Beitrag moderieren",
   "status.block": "@{name} blockieren",
   "status.bookmark": "Beitrag als Lesezeichen setzen",
   "status.cancel_reblog_private": "Teilen des Beitrags rückgängig machen",
@@ -595,7 +596,7 @@
   "status.show_original": "Ursprünglichen Beitrag anzeigen",
   "status.translate": "Übersetzen",
   "status.translated_from_with": "Aus {lang} mittels {provider} übersetzt",
-  "status.uncached_media_warning": "Nicht verfügbar",
+  "status.uncached_media_warning": "Medien-Datei auf diesem Server noch nicht verfügbar",
   "status.unmute_conversation": "Stummschaltung der Unterhaltung aufheben",
   "status.unpin": "Vom Profil lösen",
   "subscribed_languages.lead": "Nach der Änderung werden nur noch Beiträge in den ausgewählten Sprachen in den Timelines deiner Startseite und deiner Listen angezeigt. Wähle keine Sprache aus, um alle Beiträge zu sehen.",
@@ -646,7 +647,7 @@
   "upload_progress.label": "Wird hochgeladen …",
   "upload_progress.processing": "Wird verarbeitet…",
   "video.close": "Video schließen",
-  "video.download": "Datei herunterladen",
+  "video.download": "Video-Datei herunterladen",
   "video.exit_fullscreen": "Vollbild verlassen",
   "video.expand": "Video vergrößern",
   "video.fullscreen": "Vollbild",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index f36929df5..c09411f65 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -4076,6 +4076,10 @@
         "id": "footer.about"
       },
       {
+        "defaultMessage": "Status",
+        "id": "footer.status"
+      },
+      {
         "defaultMessage": "Invite people",
         "id": "footer.invite"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 1ea158054..5c41b7547 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Συντομεύσεις πληκτρολογίου",
   "footer.privacy_policy": "Πολιτική απορρήτου",
   "footer.source_code": "Προβολή πηγαίου κώδικα",
+  "footer.status": "Κατάσταση",
   "generic.saved": "Αποθηκεύτηκε",
   "getting_started.heading": "Αφετηρία",
   "hashtag.column_header.tag_mode.all": "και {additional}",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index a787a747b..4ce198b90 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 5707e1035..534428d52 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -276,6 +276,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 99f455e03..fc2e9d5e7 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -3,7 +3,7 @@
   "about.contact": "Kontakto:",
   "about.disclaimer": "Mastodon estas libera, malfermitkoda programo kaj varmarko de la firmao Mastodon gGmbH.",
   "about.domain_blocks.no_reason_available": "Kialo ne disponebla",
-  "about.domain_blocks.preamble": "Mastodono ebligas vidi la enhavojn de uzantoj el aliaj serviloj en la Fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.",
+  "about.domain_blocks.preamble": "Mastodon ĝenerale rajtigas vidi la enhavojn de uzantoj el aliaj serviloj en la fediverso, kaj komuniki kun ili. Jen la limigoj deciditaj de tiu ĉi servilo mem.",
   "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.",
   "about.domain_blocks.silenced.title": "Limigita",
   "about.domain_blocks.suspended.explanation": "Neniuj datumoj el tiu servilo estos prilaboritaj, konservitaj, aŭ interŝanĝitaj, do neeblas interagi aŭ komuniki kun uzantoj de tiu servilo.",
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Fulmoklavoj",
   "footer.privacy_policy": "Politiko de privateco",
   "footer.source_code": "Montri fontkodon",
+  "footer.status": "Stato",
   "generic.saved": "Konservita",
   "getting_started.heading": "Por komenci",
   "hashtag.column_header.tag_mode.all": "kaj {additional}",
@@ -460,7 +461,7 @@
   "privacy.public.short": "Publika",
   "privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive el la funkcio de esploro",
   "privacy.unlisted.short": "Nelistigita",
-  "privacy_policy.last_updated": "Laste ĝisdatigita sur {date}",
+  "privacy_policy.last_updated": "Laste ĝisdatigita en {date}",
   "privacy_policy.title": "Politiko de privateco",
   "refresh": "Refreŝigu",
   "regeneration_indicator.label": "Ŝargado…",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index f490d29cb..c37d8f62d 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atajos de teclado",
   "footer.privacy_policy": "Política de privacidad",
   "footer.source_code": "Ver código fuente",
+  "footer.status": "Estado",
   "generic.saved": "Guardado",
   "getting_started.heading": "Inicio de Mastodon",
   "hashtag.column_header.tag_mode.all": "y {additional}",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index c932c1af2..b371e0e9e 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atajos de teclado",
   "footer.privacy_policy": "Política de privacidad",
   "footer.source_code": "Ver código fuente",
+  "footer.status": "Status",
   "generic.saved": "Guardado",
   "getting_started.heading": "Primeros pasos",
   "hashtag.column_header.tag_mode.all": "y {additional}",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index e9ba8f102..61800fd6b 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atajos de teclado",
   "footer.privacy_policy": "Política de privacidad",
   "footer.source_code": "Ver código fuente",
+  "footer.status": "Estado",
   "generic.saved": "Guardado",
   "getting_started.heading": "Primeros pasos",
   "hashtag.column_header.tag_mode.all": "y {additional}",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index de0f9d971..0f9f33080 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Kiirklahvid",
   "footer.privacy_policy": "Isikuandmete kaitse",
   "footer.source_code": "Lähtekood",
+  "footer.status": "Olek",
   "generic.saved": "Salvestatud",
   "getting_started.heading": "Alustamine",
   "hashtag.column_header.tag_mode.all": "ja {additional}",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 845606972..39eaeda02 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Lasterbideak",
   "footer.privacy_policy": "Pribatutasun politika",
   "footer.source_code": "Ikusi iturburu kodea",
+  "footer.status": "Egoera",
   "generic.saved": "Gordea",
   "getting_started.heading": "Menua",
   "hashtag.column_header.tag_mode.all": "eta {osagarria}",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 6fc890410..10c1b12fb 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "میان‌برهای صفحه‌کلید",
   "footer.privacy_policy": "سیاست محرمانگی",
   "footer.source_code": "نمایش کد مبدأ",
+  "footer.status": "Status",
   "generic.saved": "ذخیره شده",
   "getting_started.heading": "آغاز کنید",
   "hashtag.column_header.tag_mode.all": "و {additional}",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index daaab3857..a1decf1ed 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Pikanäppäimet",
   "footer.privacy_policy": "Tietosuojakäytäntö",
   "footer.source_code": "Näytä lähdekoodi",
+  "footer.status": "Tila",
   "generic.saved": "Tallennettu",
   "getting_started.heading": "Näin pääset alkuun",
   "hashtag.column_header.tag_mode.all": "ja {additional}",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 60d82ccd8..adcb3aae0 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Knappasnarvegir",
   "footer.privacy_policy": "Privatlívspolitikkur",
   "footer.source_code": "Vís keldukotuna",
+  "footer.status": "Støða",
   "generic.saved": "Goymt",
   "getting_started.heading": "At byrja",
   "hashtag.column_header.tag_mode.all": "og {additional}",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index 050fd9002..1ad8e9353 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -128,7 +128,7 @@
   "compose.language.search": "Rechercher des langues…",
   "compose_form.direct_message_warning_learn_more": "En savoir plus",
   "compose_form.encryption_warning": "Les publications sur Mastodon ne sont pas chiffrées de bout en bout. Veuillez ne partager aucune information sensible sur Mastodon.",
-  "compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent appaître dans les recherches par hashtags.",
+  "compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent apparaître dans les recherches par hashtags.",
   "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos publications privés.",
   "compose_form.lock_disclaimer.lock": "verrouillé",
   "compose_form.placeholder": "À quoi pensez-vous?",
@@ -221,7 +221,7 @@
   "empty_column.favourites": "Personne n’a encore ajouté cette publication à ses favoris. Lorsque quelqu’un le fera, elle apparaîtra ici.",
   "empty_column.follow_recommendations": "Il semble qu’aucune suggestion n’ait pu être générée pour vous. Vous pouvez essayer d’utiliser la recherche pour découvrir des personnes que vous pourriez connaître ou explorer les hashtags populaires.",
   "empty_column.follow_requests": "Vous n’avez pas encore de demande d'abonnement. Lorsque vous en recevrez une, elle apparaîtra ici.",
-  "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
+  "empty_column.followed_tags": "Vous n'avez pas encore suivi d'hashtags. Lorsque vous le ferez, ils apparaîtront ici.",
   "empty_column.hashtag": "Il n’y a pas encore de contenu associé à ce hashtag.",
   "empty_column.home": "Votre fil d'accueil est vide! Suivez plus de personnes pour la remplir. {suggestions}",
   "empty_column.home.suggestions": "Voir quelques suggestions",
@@ -264,7 +264,7 @@
   "follow_request.authorize": "Autoriser",
   "follow_request.reject": "Rejeter",
   "follow_requests.unlocked_explanation": "Même si votre compte n’est pas privé, l’équipe de {domain} a pensé que vous pourriez vouloir peut-être consulter manuellement les demandes d'abonnement de ces comptes.",
-  "followed_tags": "Followed hashtags",
+  "followed_tags": "Hashtags suivis",
   "footer.about": "À propos",
   "footer.directory": "Annuaire des profils",
   "footer.get_app": "Télécharger l’application",
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Raccourcis clavier",
   "footer.privacy_policy": "Politique de confidentialité",
   "footer.source_code": "Voir le code source",
+  "footer.status": "Status",
   "generic.saved": "Sauvegardé",
   "getting_started.heading": "Pour commencer",
   "hashtag.column_header.tag_mode.all": "et {additional}",
@@ -381,7 +382,7 @@
   "navigation_bar.favourites": "Favoris",
   "navigation_bar.filters": "Mots masqués",
   "navigation_bar.follow_requests": "Demandes d'abonnements",
-  "navigation_bar.followed_tags": "Followed hashtags",
+  "navigation_bar.followed_tags": "Hashtags suivis",
   "navigation_bar.follows_and_followers": "Abonnements et abonnés",
   "navigation_bar.lists": "Listes",
   "navigation_bar.logout": "Se déconnecter",
@@ -543,7 +544,7 @@
   "server_banner.server_stats": "Statistiques du serveur:",
   "sign_in_banner.create_account": "Créer un compte",
   "sign_in_banner.sign_in": "Se connecter",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
+  "sign_in_banner.text": "Identifiez-vous pour suivre des profils ou des hashtags, ajouter des favoris, partager et répondre à des messages. Vous pouvez également interagir depuis votre compte sur un autre serveur.",
   "status.admin_account": "Ouvrir l’interface de modération pour @{name}",
   "status.admin_domain": "Ouvrir l’interface de modération pour {domain}",
   "status.admin_status": "Ouvrir ce message dans l’interface de modération",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 0dc5dcb1d..1dcf41c85 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -6,7 +6,7 @@
   "about.domain_blocks.preamble": "Mastodon vous permet généralement de visualiser le contenu et d'interagir avec les utilisateur⋅rice⋅s de n'importe quel autre serveur dans le fédiverse. Voici les exceptions qui ont été faites sur ce serveur en particulier.",
   "about.domain_blocks.silenced.explanation": "Vous ne verrez généralement pas les profils et le contenu de ce serveur, à moins que vous ne les recherchiez explicitement ou que vous ne choisissiez de les suivre.",
   "about.domain_blocks.silenced.title": "Limité",
-  "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les utilisateurs de ce serveur.",
+  "about.domain_blocks.suspended.explanation": "Aucune donnée de ce serveur ne sera traitée, enregistrée ou échangée, rendant impossible toute interaction ou communication avec les comptes de ce serveur.",
   "about.domain_blocks.suspended.title": "Suspendu",
   "about.not_available": "Cette information n'a pas été rendue disponible sur ce serveur.",
   "about.powered_by": "Réseau social décentralisé propulsé par {mastodon}",
@@ -45,7 +45,7 @@
   "account.locked_info": "Ce compte est privé. Son ou sa propriétaire approuve manuellement qui peut le suivre.",
   "account.media": "Médias",
   "account.mention": "Mentionner @{name}",
-  "account.moved_to": "{name} a indiqué que son nouveau compte est maintenant  :",
+  "account.moved_to": "{name} a indiqué que son nouveau compte est maintenant :",
   "account.mute": "Masquer @{name}",
   "account.mute_notifications": "Masquer les notifications de @{name}",
   "account.muted": "Masqué·e",
@@ -71,7 +71,7 @@
   "admin.dashboard.monthly_retention": "Taux de rétention des utilisateur·rice·s par mois après inscription",
   "admin.dashboard.retention.average": "Moyenne",
   "admin.dashboard.retention.cohort": "Mois d'inscription",
-  "admin.dashboard.retention.cohort_size": "Nouveaux utilisateurs",
+  "admin.dashboard.retention.cohort_size": "Nouveaux comptes",
   "alert.rate_limited.message": "Veuillez réessayer après {retry_time, time, medium}.",
   "alert.rate_limited.title": "Nombre de requêtes limité",
   "alert.unexpected.message": "Une erreur inattendue s’est produite.",
@@ -96,7 +96,7 @@
   "closed_registrations.other_server_instructions": "Puisque Mastodon est décentralisé, vous pouvez créer un compte sur un autre serveur et interagir quand même avec celui-ci.",
   "closed_registrations_modal.description": "Créer un compte sur {domain} est actuellement impossible, néanmoins souvenez-vous que vous n'avez pas besoin d'un compte spécifiquement sur {domain} pour utiliser Mastodon.",
   "closed_registrations_modal.find_another_server": "Trouver un autre serveur",
-  "closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre votre, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
+  "closed_registrations_modal.preamble": "Mastodon est décentralisé : peu importe où vous créez votre compte, vous serez en mesure de suivre et d'interagir avec quiconque sur ce serveur. Vous pouvez même l'héberger !",
   "closed_registrations_modal.title": "Inscription sur Mastodon",
   "column.about": "À propos",
   "column.blocks": "Comptes bloqués",
@@ -128,8 +128,8 @@
   "compose.language.search": "Rechercher des langues …",
   "compose_form.direct_message_warning_learn_more": "En savoir plus",
   "compose_form.encryption_warning": "Les messages sur Mastodon ne sont pas chiffrés de bout en bout. Ne partagez aucune information sensible sur Mastodon.",
-  "compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent appaître dans les recherches par hashtags.",
-  "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos messages privés.",
+  "compose_form.hashtag_warning": "Ce message n'apparaîtra pas dans les listes de hashtags, car il n'est pas public. Seuls les messages publics peuvent apparaître dans les recherches par hashtags.",
+  "compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre pour voir vos messages réservés à vos abonné⋅e⋅s.",
   "compose_form.lock_disclaimer.lock": "verrouillé",
   "compose_form.placeholder": "Qu’avez-vous en tête ?",
   "compose_form.poll.add_option": "Ajouter un choix",
@@ -185,12 +185,12 @@
   "directory.recently_active": "Actif·ve·s récemment",
   "disabled_account_banner.account_settings": "Paramètres du compte",
   "disabled_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé.",
-  "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.",
+  "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des comptes hébergés par {domain}.",
   "dismissable_banner.dismiss": "Rejeter",
   "dismissable_banner.explore_links": "On parle actuellement de ces nouvelles sur ce serveur, ainsi que sur d'autres serveurs du réseau décentralisé.",
   "dismissable_banner.explore_statuses": "Ces publications depuis les serveurs du réseau décentralisé, dont celui-ci, sont actuellement en train de gagner de l'ampleur sur ce serveur.",
   "dismissable_banner.explore_tags": "Ces hashtags sont actuellement en train de gagner de l'ampleur parmi les personnes sur les serveurs du réseau décentralisé dont celui-ci.",
-  "dismissable_banner.public_timeline": "Voici les publications publiques les plus récentes des personnes de ce serveur et des autres du réseau décentralisé que ce serveur connait.",
+  "dismissable_banner.public_timeline": "Voici les messages publics les plus récents des personnes de cette instance et des autres instances du réseau décentralisé connues par ce serveur.",
   "embed.instructions": "Intégrez ce message à votre site en copiant le code ci-dessous.",
   "embed.preview": "Il apparaîtra comme cela :",
   "emoji_button.activity": "Activités",
@@ -246,7 +246,7 @@
   "filter_modal.added.context_mismatch_title": "Incompatibilité du contexte !",
   "filter_modal.added.expired_explanation": "Cette catégorie de filtre a expiré, vous devrez modifier la date d'expiration pour qu'elle soit appliquée.",
   "filter_modal.added.expired_title": "Filtre expiré !",
-  "filter_modal.added.review_and_configure": "Pour passer en revue et approfondir la configuration de cette catégorie de filtre, aller sur le {settings_link}.",
+  "filter_modal.added.review_and_configure": "Pour examiner et affiner la configuration de cette catégorie de filtre, allez à {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Paramètres du filtre",
   "filter_modal.added.settings_link": "page des paramètres",
   "filter_modal.added.short_explanation": "Ce message a été ajouté à la catégorie de filtre suivante : {title}.",
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Raccourcis clavier",
   "footer.privacy_policy": "Politique de confidentialité",
   "footer.source_code": "Voir le code source",
+  "footer.status": "État",
   "generic.saved": "Sauvegardé",
   "getting_started.heading": "Pour commencer",
   "hashtag.column_header.tag_mode.all": "et {additional}",
@@ -290,17 +291,17 @@
   "home.column_settings.show_replies": "Afficher les réponses",
   "home.hide_announcements": "Masquer les annonces",
   "home.show_announcements": "Afficher les annonces",
-  "interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce post aux favoris pour informer l'auteur que vous l'appréciez et le sauvegarder pour plus tard.",
+  "interaction_modal.description.favourite": "Avec un compte Mastodon, vous pouvez ajouter ce message à vos favoris pour informer l'auteur⋅rice que vous l'appréciez et pour le sauvegarder pour plus tard.",
   "interaction_modal.description.follow": "Avec un compte Mastodon, vous pouvez suivre {name} et recevoir leurs posts dans votre fil d'actualité.",
-  "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez booster ce message pour le partager avec vos propres abonnés.",
+  "interaction_modal.description.reblog": "Avec un compte sur Mastodon, vous pouvez partager ce message pour le faire découvrir à vos propres abonné⋅e⋅s.",
   "interaction_modal.description.reply": "Avec un compte sur Mastodon, vous pouvez répondre à ce message.",
   "interaction_modal.on_another_server": "Sur un autre serveur",
   "interaction_modal.on_this_server": "Sur ce serveur",
-  "interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou l'interface web de votre serveur Mastodon.",
+  "interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou de l'interface web de votre serveur Mastodon.",
   "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.",
-  "interaction_modal.title.favourite": "Ajouter de post de {name} aux favoris",
+  "interaction_modal.title.favourite": "Ajouter le message de {name} aux favoris",
   "interaction_modal.title.follow": "Suivre {name}",
-  "interaction_modal.title.reblog": "Partager la publication de {name}",
+  "interaction_modal.title.reblog": "Partager le message de {name}",
   "interaction_modal.title.reply": "Répondre au message de {name}",
   "intervals.full.days": "{number, plural, one {# jour} other {# jours}}",
   "intervals.full.hours": "{number, plural, one {# heure} other {# heures}}",
@@ -364,7 +365,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
   "missing_indicator.label": "Non trouvé",
   "missing_indicator.sublabel": "Ressource introuvable",
-  "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déplacé vers {movedToAccount}.",
+  "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.",
   "mute_modal.duration": "Durée",
   "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?",
   "mute_modal.indefinite": "Indéfinie",
@@ -395,7 +396,7 @@
   "not_signed_in_indicator.not_signed_in": "Vous devez vous connecter pour accéder à cette ressource.",
   "notification.admin.report": "{name} a signalé {target}",
   "notification.admin.sign_up": "{name} s'est inscrit",
-  "notification.favourite": "{name} a aimé votre publication",
+  "notification.favourite": "{name} a ajouté votre message à ses favoris",
   "notification.follow": "{name} vous suit",
   "notification.follow_request": "{name} a demandé à vous suivre",
   "notification.mention": "{name} vous a mentionné·e :",
@@ -522,10 +523,10 @@
   "search.placeholder": "Rechercher",
   "search.search_or_paste": "Rechercher ou saisir une URL",
   "search_popout.search_format": "Recherche avancée",
-  "search_popout.tips.full_text": "Un texte normal retourne les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.",
+  "search_popout.tips.full_text": "Faire une recherche textuelle retrouve les messages que vous avez écrits, ajoutés à vos favoris, partagés, ou vous mentionnant, ainsi que les identifiants, les noms affichés, et les hashtags des personnes et messages correspondants.",
   "search_popout.tips.hashtag": "hashtag",
   "search_popout.tips.status": "message",
-  "search_popout.tips.text": "Un texte simple renvoie les noms affichés, les identifiants et les hashtags correspondants",
+  "search_popout.tips.text": "Faire une recherche textuelle retrouve les noms affichés, les identifiants et les hashtags correspondants",
   "search_popout.tips.user": "utilisateur",
   "search_results.accounts": "Comptes",
   "search_results.all": "Tous les résultats",
@@ -562,7 +563,7 @@
   "status.favourite": "Ajouter aux favoris",
   "status.filter": "Filtrer ce message",
   "status.filtered": "Filtré",
-  "status.hide": "Masquer la publication",
+  "status.hide": "Masquer le message",
   "status.history.created": "créé par {name} {date}",
   "status.history.edited": "édité par {name} {date}",
   "status.load_more": "Charger plus",
@@ -615,7 +616,7 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} des autres serveurs ne sont pas affichés.",
   "timeline_hint.resources.followers": "Les abonnés",
   "timeline_hint.resources.follows": "Les abonnements",
-  "timeline_hint.resources.statuses": "Les messages plus anciens",
+  "timeline_hint.resources.statuses": "Messages plus anciens",
   "trends.counter_by_accounts": "{count, plural, one {{counter} personne} other {{counter} personnes}} au cours {days, plural, one {des dernières 24h} other {des {days} derniers jours}}",
   "trends.trending_now": "Tendance en ce moment",
   "ui.beforeunload": "Votre brouillon sera perdu si vous quittez Mastodon.",
@@ -627,7 +628,7 @@
   "upload_error.limit": "Taille maximale d'envoi de fichier dépassée.",
   "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.",
   "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition",
-  "upload_form.description": "Décrire pour les malvoyants",
+  "upload_form.description": "Décrire pour les malvoyant·e·s",
   "upload_form.description_missing": "Description manquante",
   "upload_form.edit": "Modifier",
   "upload_form.thumbnail": "Changer la vignette",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index cd7232e27..61273f58f 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Fluchtoetsen",
   "footer.privacy_policy": "Privacybelied",
   "footer.source_code": "Boarnekoade besjen",
+  "footer.status": "Steat",
   "generic.saved": "Bewarre",
   "getting_started.heading": "Uteinsette",
   "hashtag.column_header.tag_mode.all": "en {additional}",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 61759475d..9212d16bd 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Aicearraí méarchláir",
   "footer.privacy_policy": "Polasaí príobháideachais",
   "footer.source_code": "Féach ar an gcód foinseach",
+  "footer.status": "Status",
   "generic.saved": "Sábháilte",
   "getting_started.heading": "Ag tosú amach",
   "hashtag.column_header.tag_mode.all": "agus {additional}",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 40d7e77e5..8355f2019 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Ath-ghoiridean a’ mheur-chlàir",
   "footer.privacy_policy": "Poileasaidh prìobhaideachd",
   "footer.source_code": "Seall am bun-tùs",
+  "footer.status": "Status",
   "generic.saved": "Chaidh a shàbhaladh",
   "getting_started.heading": "Toiseach",
   "hashtag.column_header.tag_mode.all": "agus {additional}",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 25756ea59..1033e6d7d 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atallos do teclado",
   "footer.privacy_policy": "Política de privacidade",
   "footer.source_code": "Ver código fonte",
+  "footer.status": "Estado",
   "generic.saved": "Gardado",
   "getting_started.heading": "Primeiros pasos",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index c1e5eee97..7e3cee334 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "קיצורי מקלדת",
   "footer.privacy_policy": "מדיניות פרטיות",
   "footer.source_code": "צפיה בקוד המקור",
+  "footer.status": "מצב",
   "generic.saved": "נשמר",
   "getting_started.heading": "בואו נתחיל",
   "hashtag.column_header.tag_mode.all": "ו- {additional}",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 9ed822e57..3ac57d50d 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "कीबोर्ड शॉर्टकट",
   "footer.privacy_policy": "प्राइवेसी पालिसी",
   "footer.source_code": "सोर्स कोड देखें",
+  "footer.status": "Status",
   "generic.saved": "सेव्ड",
   "getting_started.heading": "पहले कदम रखें",
   "hashtag.column_header.tag_mode.all": "और {additional}",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 77364d4fa..9be500a7e 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tipkovni prečaci",
   "footer.privacy_policy": "Pravila o zaštiti privatnosti",
   "footer.source_code": "Prikaz izvornog koda",
+  "footer.status": "Status",
   "generic.saved": "Spremljeno",
   "getting_started.heading": "Počnimo",
   "hashtag.column_header.tag_mode.all": "i {additional}",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 2b999fcf5..b5ca1ef3b 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Billentyűparancsok",
   "footer.privacy_policy": "Adatvédelmi szabályzat",
   "footer.source_code": "Forráskód megtekintése",
+  "footer.status": "Állapot",
   "generic.saved": "Elmentve",
   "getting_started.heading": "Első lépések",
   "hashtag.column_header.tag_mode.all": "és {additional}",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 253dea6f4..cb1dd1bd2 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Ստեղնաշարի կարճատներ",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Պահպանուած է",
   "getting_started.heading": "Ինչպէս սկսել",
   "hashtag.column_header.tag_mode.all": "եւ {additional}",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 584ce4c4c..a6db3207d 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Pintasan papan ketik",
   "footer.privacy_policy": "Kebijakan privasi",
   "footer.source_code": "Lihat kode sumber",
+  "footer.status": "Status",
   "generic.saved": "Disimpan",
   "getting_started.heading": "Mulai",
   "hashtag.column_header.tag_mode.all": "dan {additional}",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index e088d08f2..69e4ae08a 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Iwu nzuzu",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Mbido",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 49ae3fc71..fedabed58 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Sparesis",
   "getting_started.heading": "Debuto",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 8e1f3b6bf..56ef257c9 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Flýtileiðir á lyklaborði",
   "footer.privacy_policy": "Persónuverndarstefna",
   "footer.source_code": "Skoða frumkóða",
+  "footer.status": "Staða",
   "generic.saved": "Vistað",
   "getting_started.heading": "Komast í gang",
   "hashtag.column_header.tag_mode.all": "og {additional}",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 41c404c14..e7b480814 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Scorciatoie da tastiera",
   "footer.privacy_policy": "Politica sulla privacy",
   "footer.source_code": "Visualizza il codice sorgente",
+  "footer.status": "Stato",
   "generic.saved": "Salvato",
   "getting_started.heading": "Per iniziare",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index aca58c145..e5c752f32 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -45,7 +45,7 @@
   "account.locked_info": "このアカウントは承認制アカウントです。相手が承認するまでフォローは完了しません。",
   "account.media": "メディア",
   "account.mention": "@{name}さんにメンション",
-  "account.moved_to": "{name} さんがアカウントを引っ越しました:",
+  "account.moved_to": "{name}さんがアカウントを引っ越しました:",
   "account.mute": "@{name}さんをミュート",
   "account.mute_notifications": "@{name}さんからの通知を受け取らない",
   "account.muted": "ミュート済み",
@@ -54,7 +54,7 @@
   "account.posts_with_replies": "投稿と返信",
   "account.report": "@{name}さんを通報",
   "account.requested": "フォロー承認待ちです。クリックしてキャンセル",
-  "account.requested_follow": "{name} さんがあなたにフォローリクエストしました",
+  "account.requested_follow": "{name}さんがあなたにフォローリクエストしました",
   "account.share": "@{name}さんのプロフィールを共有する",
   "account.show_reblogs": "@{name}さんからのブーストを表示",
   "account.statuses_counter": "{counter} 投稿",
@@ -276,6 +276,7 @@
   "footer.keyboard_shortcuts": "キーボードショートカット",
   "footer.privacy_policy": "プライバシーポリシー",
   "footer.source_code": "ソースコードを表示",
+  "footer.status": "ステータス",
   "generic.saved": "保存しました",
   "getting_started.heading": "スタート",
   "hashtag.column_header.tag_mode.all": "と{additional}",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 714de6dad..2158a8e0f 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "დაწყება",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 3db7a397f..fc0efa7ea 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Inegzumen n unasiw",
   "footer.privacy_policy": "Tasertit tabaḍnit",
   "footer.source_code": "Wali tangalt taɣbalut",
+  "footer.status": "Status",
   "generic.saved": "Yettwasekles",
   "getting_started.heading": "Bdu",
   "hashtag.column_header.tag_mode.all": "d {additional}",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 47f4f104d..297885a19 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Сақталды",
   "getting_started.heading": "Желіде",
   "hashtag.column_header.tag_mode.all": "және {additional}",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 7f9574b3f..4c7ed9a84 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 7332dca16..612b00f46 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -1,8 +1,8 @@
 {
   "about.blocks": "제한된 서버들",
   "about.contact": "연락처:",
-  "about.disclaimer": "마스토돈은 자유 오픈소스 소프트웨어이며, Mastodon gGmbH의 상표입니다",
-  "about.domain_blocks.no_reason_available": "이유 비공개",
+  "about.disclaimer": "Mastodon은 자유 오픈소스 소프트웨어이며, Mastodon gGmbH의 상표입니다",
+  "about.domain_blocks.no_reason_available": "사유를 밝히지 않음",
   "about.domain_blocks.preamble": "마스토돈은 일반적으로 연합우주에 있는 어떤 서버의 사용자와도 게시물을 보고 응답을 할 수 있도록 허용합니다. 다음 항목들은 특정한 서버에 대해 만들어 진 예외사항입니다.",
   "about.domain_blocks.silenced.explanation": "명시적으로 찾아보거나 팔로우를 하기 전까지는, 이 서버에 있는 프로필이나 게시물 등을 일반적으로 볼 수 없습니다.",
   "about.domain_blocks.silenced.title": "제한됨",
@@ -138,8 +138,8 @@
   "compose_form.poll.remove_option": "이 항목 삭제",
   "compose_form.poll.switch_to_multiple": "다중 선택이 가능한 투표로 변경",
   "compose_form.poll.switch_to_single": "단일 선택 투표로 변경",
-  "compose_form.publish": "뿌우",
-  "compose_form.publish_form": "뿌우",
+  "compose_form.publish": "게시",
+  "compose_form.publish_form": "게시",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "변경사항 저장",
   "compose_form.sensitive.hide": "미디어를 민감함으로 설정하기",
@@ -209,7 +209,7 @@
   "emoji_button.symbols": "기호",
   "emoji_button.travel": "여행과 장소",
   "empty_column.account_suspended": "계정 정지됨",
-  "empty_column.account_timeline": "여긴 게시물이 없어요!",
+  "empty_column.account_timeline": "이곳에는 게시물이 없습니다!",
   "empty_column.account_unavailable": "프로필 사용 불가",
   "empty_column.blocks": "아직 아무도 차단하지 않았습니다.",
   "empty_column.bookmarked_statuses": "아직 북마크에 저장한 게시물이 없습니다. 게시물을 북마크 지정하면 여기에 나타납니다.",
@@ -232,7 +232,7 @@
   "empty_column.public": "여기엔 아직 아무 것도 없습니다! 공개적으로 무언가 포스팅하거나, 다른 서버의 사용자를 팔로우 해서 채워보세요",
   "error.unexpected_crash.explanation": "버그 혹은 브라우저 호환성 문제로 이 페이지를 올바르게 표시할 수 없습니다.",
   "error.unexpected_crash.explanation_addons": "이 페이지는 올바르게 보여질 수 없습니다. 브라우저 애드온이나 자동 번역 도구 등으로 인해 발생된 에러일 수 있습니다.",
-  "error.unexpected_crash.next_steps": "페이지를 새로고침 해보세요. 그래도 해결되지 않는 경우, 다른 브라우저나 네이티브 앱으로도 마스토돈을 이용하실 수 있습니다.",
+  "error.unexpected_crash.next_steps": "페이지를 새로고침 해보세요. 도움이 되지 않는다면, 다른 브라우저나 네이티브 앱을 통해서도 Mastodon을 이용할 수 있습니다.",
   "error.unexpected_crash.next_steps_addons": "그걸 끄고 페이지를 새로고침 해보세요. 그래도 해결되지 않으면, 다른 브라우저나 네이티브 앱으로 마스토돈을 이용해 보실 수 있습니다.",
   "errors.unexpected_crash.copy_stacktrace": "에러 내용을 클립보드에 복사",
   "errors.unexpected_crash.report_issue": "문제 신고",
@@ -272,15 +272,16 @@
   "footer.keyboard_shortcuts": "키보드 단축키",
   "footer.privacy_policy": "개인정보 정책",
   "footer.source_code": "소스코드 보기",
+  "footer.status": "상태",
   "generic.saved": "저장됨",
   "getting_started.heading": "시작하기",
   "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.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.any": "어느것이든",
   "hashtag.column_settings.tag_mode.none": "이것들을 제외하고",
   "hashtag.column_settings.tag_toggle": "추가 해시태그를 이 컬럼에 추가합니다",
   "hashtag.follow": "해시태그 팔로우",
@@ -400,11 +401,11 @@
   "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다",
   "notification.mention": "{name} 님이 언급하였습니다",
   "notification.own_poll": "내 투표가 끝났습니다",
-  "notification.poll": "당신이 참여 한 투표가 종료되었습니다",
+  "notification.poll": "참여했던 투표가 끝났습니다.",
   "notification.reblog": "{name} 님이 부스트했습니다",
   "notification.status": "{name} 님이 방금 게시물을 올렸습니다",
   "notification.update": "{name} 님이 게시물을 수정했습니다",
-  "notifications.clear": "알림 지우기",
+  "notifications.clear": "알림 비우기",
   "notifications.clear_confirmation": "정말로 알림을 삭제하시겠습니까?",
   "notifications.column_settings.admin.report": "새 신고:",
   "notifications.column_settings.admin.sign_up": "새로운 가입:",
@@ -494,13 +495,13 @@
   "report.mute_explanation": "당신은 해당 계정의 게시물을 보지 않게 됩니다. 해당 계정은 여전히 당신을 팔로우 하거나 당신의 게시물을 볼 수 있으며 해당 계정은 자신이 뮤트 되었는지 알지 못합니다.",
   "report.next": "다음",
   "report.placeholder": "코멘트",
-  "report.reasons.dislike": "마음에 안듭니다",
+  "report.reasons.dislike": "마음에 안 들어요",
   "report.reasons.dislike_description": "내가 보기 싫은 종류에 속합니다",
-  "report.reasons.other": "기타",
+  "report.reasons.other": "그 밖의 것들",
   "report.reasons.other_description": "이슈가 다른 분류에 속하지 않습니다",
-  "report.reasons.spam": "스팸입니다",
+  "report.reasons.spam": "스팸이에요",
   "report.reasons.spam_description": "악성 링크, 반응 스팸, 또는 반복적인 답글",
-  "report.reasons.violation": "서버 규칙을 위반합니다",
+  "report.reasons.violation": "서버 규칙을 위반해요",
   "report.reasons.violation_description": "특정 규칙을 위반합니다",
   "report.rules.subtitle": "해당하는 사항을 모두 선택하세요",
   "report.rules.title": "어떤 규칙을 위반했나요?",
@@ -617,7 +618,7 @@
   "timeline_hint.resources.follows": "팔로우",
   "timeline_hint.resources.statuses": "이전 게시물",
   "trends.counter_by_accounts": "이전 {days}일 동안 {counter} 명의 사용자",
-  "trends.trending_now": "지금 유행중",
+  "trends.trending_now": "지금 유행 중",
   "ui.beforeunload": "지금 나가면 저장되지 않은 항목을 잃게 됩니다.",
   "units.short.billion": "{count}B",
   "units.short.million": "{count}B",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 4b12ab6be..ad53c3577 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Kurteriyên klavyeyê",
   "footer.privacy_policy": "Peymana nepeniyê",
   "footer.source_code": "Koda çavkanî nîşan bide",
+  "footer.status": "Status",
   "generic.saved": "Tomarkirî",
   "getting_started.heading": "Destpêkirin",
   "hashtag.column_header.tag_mode.all": "û {additional}",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 1a8e20035..db4f0022e 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Gwithys",
   "getting_started.heading": "Dhe dhalleth",
   "hashtag.column_header.tag_mode.all": "ha(g) {additional}",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index 2cbafae22..2634a6f06 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "servavit",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index ea53932f3..c7a27873d 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index bb6bfbc82..f54a92378 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Īsinājumtaustiņi",
   "footer.privacy_policy": "Privātuma politika",
   "footer.source_code": "Skatīt pirmkodu",
+  "footer.status": "Statuss",
   "generic.saved": "Saglabāts",
   "getting_started.heading": "Darba sākšana",
   "hashtag.column_header.tag_mode.all": "un {additional}",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index c2d2bbfbe..b9e5cda1e 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Започни",
   "hashtag.column_header.tag_mode.all": "и {additional}",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index f3a13938b..3574ede02 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "സംരക്ഷിച്ചു",
   "getting_started.heading": "തുടക്കം കുറിക്കുക",
   "hashtag.column_header.tag_mode.all": "{additional} ഉം കൂടെ",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index 5004f5209..1ba6aa957 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 593690408..3f971026e 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Pintasan papan kekunci",
   "footer.privacy_policy": "Dasar privasi",
   "footer.source_code": "Lihat kod sumber",
+  "footer.status": "Status",
   "generic.saved": "Disimpan",
   "getting_started.heading": "Mari bermula",
   "hashtag.column_header.tag_mode.all": "dan {additional}",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index c0fa7822e..76d864fee 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 5b753cf2a..91ca4ebf2 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Sneltoetsen",
   "footer.privacy_policy": "Privacybeleid",
   "footer.source_code": "Broncode bekijken",
+  "footer.status": "Status",
   "generic.saved": "Opgeslagen",
   "getting_started.heading": "Aan de slag",
   "hashtag.column_header.tag_mode.all": "en {additional}",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index b645ce087..9ed91cc34 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Snøggtastar",
   "footer.privacy_policy": "Personvernsreglar",
   "footer.source_code": "Vis kjeldekode",
+  "footer.status": "Status",
   "generic.saved": "Gøymt",
   "getting_started.heading": "Kom i gang",
   "hashtag.column_header.tag_mode.all": "og {additional}",
@@ -381,7 +382,7 @@
   "navigation_bar.favourites": "Favorittar",
   "navigation_bar.filters": "Målbundne ord",
   "navigation_bar.follow_requests": "Fylgjeførespurnader",
-  "navigation_bar.followed_tags": "Followed hashtags",
+  "navigation_bar.followed_tags": "Fulgte emneknagger",
   "navigation_bar.follows_and_followers": "Fylgje og fylgjarar",
   "navigation_bar.lists": "Lister",
   "navigation_bar.logout": "Logg ut",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index e67cd61ea..0cc3f121b 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Hurtigtaster",
   "footer.privacy_policy": "Personvernregler",
   "footer.source_code": "Vis kildekode",
+  "footer.status": "Status",
   "generic.saved": "Lagret",
   "getting_started.heading": "Kom i gang",
   "hashtag.column_header.tag_mode.all": "og {additional}",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 65a3e8852..1367cc893 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Acorchis clavièr",
   "footer.privacy_policy": "Politica de confidencialitat",
   "footer.source_code": "Veire lo còdi font",
+  "footer.status": "Status",
   "generic.saved": "Enregistrat",
   "getting_started.heading": "Per començar",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index 08145fe8c..e22ab1f22 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 359328865..50966c266 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -276,6 +276,7 @@
   "footer.keyboard_shortcuts": "Skróty klawiszowe",
   "footer.privacy_policy": "Polityka prywatności",
   "footer.source_code": "Zobacz kod źródłowy",
+  "footer.status": "Status",
   "generic.saved": "Zapisano",
   "getting_started.heading": "Rozpocznij",
   "hashtag.column_header.tag_mode.all": "i {additional}",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 34098d5a0..02804f0f6 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atalhos de teclado",
   "footer.privacy_policy": "Política de privacidade",
   "footer.source_code": "Exibir código-fonte",
+  "footer.status": "Status",
   "generic.saved": "Salvo",
   "getting_started.heading": "Primeiros passos",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index f544e1eb7..ae0a2df31 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Atalhos do teclado",
   "footer.privacy_policy": "Política de privacidade",
   "footer.source_code": "Ver código-fonte",
+  "footer.status": "Estado",
   "generic.saved": "Guardado",
   "getting_started.heading": "Primeiros passos",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index f6348e2f3..683924c70 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Comenzi rapide de la tastatură",
   "footer.privacy_policy": "Politica de confidenţialitate",
   "footer.source_code": "Vizualizează codul sursă",
+  "footer.status": "Status",
   "generic.saved": "Salvat",
   "getting_started.heading": "Primii pași",
   "hashtag.column_header.tag_mode.all": "și {additional}",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index d4bfe11e7..f8275452c 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Сочетания клавиш",
   "footer.privacy_policy": "Политика конфиденциальности",
   "footer.source_code": "Исходный код",
+  "footer.status": "Статус",
   "generic.saved": "Сохранено",
   "getting_started.heading": "Начать",
   "hashtag.column_header.tag_mode.all": "и {additional}",
@@ -381,7 +382,7 @@
   "navigation_bar.favourites": "Избранное",
   "navigation_bar.filters": "Игнорируемые слова",
   "navigation_bar.follow_requests": "Запросы на подписку",
-  "navigation_bar.followed_tags": "Followed hashtags",
+  "navigation_bar.followed_tags": "Отслеживаемые хэштеги",
   "navigation_bar.follows_and_followers": "Подписки и подписчики",
   "navigation_bar.lists": "Списки",
   "navigation_bar.logout": "Выйти",
@@ -543,7 +544,7 @@
   "server_banner.server_stats": "Статистика сервера:",
   "sign_in_banner.create_account": "Создать учётную запись",
   "sign_in_banner.sign_in": "Войти",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
+  "sign_in_banner.text": "Войдите, чтобы отслеживать профили, хэштеги или избранное, делиться сообщениями и отвечать на них. Вы также можете взаимодействовать с вашей учётной записью на другом сервере.",
   "status.admin_account": "Открыть интерфейс модератора для @{name}",
   "status.admin_domain": "Открыть интерфейс модерации {domain}",
   "status.admin_status": "Открыть этот пост в интерфейсе модератора",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index ba8340300..e9deab43d 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index f06e02c17..100f8ecbd 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Polìtica de riservadesa",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Sarvadu",
   "getting_started.heading": "Comente cumintzare",
   "hashtag.column_header.tag_mode.all": "e {additional}",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index bb3389f90..c428d6683 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboord shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View the soorce code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Gettin stertit",
   "hashtag.column_header.tag_mode.all": "an {additional}",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index e6c9fccab..a5ffbc615 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "සුරැකිණි",
   "getting_started.heading": "පටන් ගන්න",
   "hashtag.column_header.tag_mode.all": "සහ {additional}",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index a341c4291..ba50e846a 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Klávesové skratky",
   "footer.privacy_policy": "Zásady súkromia",
   "footer.source_code": "Zobraziť zdrojový kód",
+  "footer.status": "Stav",
   "generic.saved": "Uložené",
   "getting_started.heading": "Začni tu",
   "hashtag.column_header.tag_mode.all": "a {additional}",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 26c7376b3..d706eac77 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tipkovne bližnjice",
   "footer.privacy_policy": "Pravilnik o zasebnosti",
   "footer.source_code": "Pokaži izvorno kodo",
+  "footer.status": "Stanje",
   "generic.saved": "Shranjeno",
   "getting_started.heading": "Kako začeti",
   "hashtag.column_header.tag_mode.all": "in {additional}",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index f1ac38fdf..927cf7659 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Shkurtore tastiere",
   "footer.privacy_policy": "Rregulla privatësie",
   "footer.source_code": "Shihni kodin burim",
+  "footer.status": "Gjendje",
   "generic.saved": "U ruajt",
   "getting_started.heading": "Si t’ia fillohet",
   "hashtag.column_header.tag_mode.all": "dhe {additional}",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 34e7b20de..a3ffb413c 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tasterske prečice",
   "footer.privacy_policy": "Politika privatnosti",
   "footer.source_code": "Prikaži izvorni kod",
+  "footer.status": "Status",
   "generic.saved": "Sačuvano",
   "getting_started.heading": "Prvi koraci",
   "hashtag.column_header.tag_mode.all": "i {additional}",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index be36045c2..ea39d230a 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Тастерске пречице",
   "footer.privacy_policy": "Политика приватности",
   "footer.source_code": "Прикажи изворни код",
+  "footer.status": "Статус",
   "generic.saved": "Сачувано",
   "getting_started.heading": "Први кораци",
   "hashtag.column_header.tag_mode.all": "и {additional}",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 2d6cd4ab1..75a9467be 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Tangentbordsgenvägar",
   "footer.privacy_policy": "Integritetspolicy",
   "footer.source_code": "Visa källkod",
+  "footer.status": "Status",
   "generic.saved": "Sparad",
   "getting_started.heading": "Kom igång",
   "hashtag.column_header.tag_mode.all": "och {additional}",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index 08145fe8c..e22ab1f22 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 06e169da5..0cd309ed8 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "சேமிக்கப்பட்டது",
   "getting_started.heading": "முதன்மைப் பக்கம்",
   "hashtag.column_header.tag_mode.all": "மற்றும் {additional}",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 43b30eb9a..875a8c944 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 3fdd55233..f4e3b7ff2 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "మొదలుపెడదాం",
   "hashtag.column_header.tag_mode.all": "మరియు {additional}",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 9598c6a19..aaac5b784 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "แป้นพิมพ์ลัด",
   "footer.privacy_policy": "นโยบายความเป็นส่วนตัว",
   "footer.source_code": "ดูโค้ดต้นฉบับ",
+  "footer.status": "สถานะ",
   "generic.saved": "บันทึกแล้ว",
   "getting_started.heading": "เริ่มต้นใช้งาน",
   "hashtag.column_header.tag_mode.all": "และ {additional}",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 60cb03a84..5d085495b 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -58,7 +58,7 @@
   "account.share": "@{name} adlı kişinin profilini paylaş",
   "account.show_reblogs": "@{name} kişisinin boostlarını göster",
   "account.statuses_counter": "{count, plural, one {{counter} Gönderi} other {{counter} Gönderi}}",
-  "account.unblock": "@{name}'in engelini kaldır",
+  "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": "Profilimde öne çıkarma",
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Klavye kısayolları",
   "footer.privacy_policy": "Gizlilik politikası",
   "footer.source_code": "Kaynak kodu görüntüle",
+  "footer.status": "Durum",
   "generic.saved": "Kaydedildi",
   "getting_started.heading": "Başlarken",
   "hashtag.column_header.tag_mode.all": "ve {additional}",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 1922e5890..76009ba1e 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Клавиатура кыска юллары",
   "footer.privacy_policy": "Хосусыйлык сәясәте",
   "footer.source_code": "Чыганак кодын карау",
+  "footer.status": "Status",
   "generic.saved": "Сакланды",
   "getting_started.heading": "Эшкә урнашу",
   "hashtag.column_header.tag_mode.all": "һәм {additional}",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index 08145fe8c..e22ab1f22 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "and {additional}",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 0528c3c2a..7f509d039 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Комбінації клавіш",
   "footer.privacy_policy": "Політика приватності",
   "footer.source_code": "Перегляд програмного коду",
+  "footer.status": "Статус",
   "generic.saved": "Збережено",
   "getting_started.heading": "Розпочати",
   "hashtag.column_header.tag_mode.all": "та {additional}",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index cd94b3275..8980ca531 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "آغاز کریں",
   "hashtag.column_header.tag_mode.all": "اور {additional}",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index 118d8be0c..0f450b32a 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Klaviatura yorliqlari",
   "footer.privacy_policy": "Maxfiylik siyosati",
   "footer.source_code": "Kodini ko'rish",
+  "footer.status": "Status",
   "generic.saved": "Saqlandi",
   "getting_started.heading": "Ishni boshlash",
   "hashtag.column_header.tag_mode.all": "va {additional}",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 0798d7b26..4ee65e72a 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Phím tắt",
   "footer.privacy_policy": "Chính sách bảo mật",
   "footer.source_code": "Mã nguồn",
+  "footer.status": "Trạng thái",
   "generic.saved": "Đã lưu",
   "getting_started.heading": "Quản lý",
   "hashtag.column_header.tag_mode.all": "và {additional}",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index 35b6b7200..4f190a4bc 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
   "footer.source_code": "View source code",
+  "footer.status": "Status",
   "generic.saved": "Saved",
   "getting_started.heading": "Getting started",
   "hashtag.column_header.tag_mode.all": "ⴷ {additional}",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index ea1ae3179..2cfed5224 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "快捷键列表",
   "footer.privacy_policy": "隐私政策",
   "footer.source_code": "查看源代码",
+  "footer.status": "状态",
   "generic.saved": "已保存",
   "getting_started.heading": "开始使用",
   "hashtag.column_header.tag_mode.all": "以及 {additional}",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 931221484..f99a1c00c 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "鍵盤快速鍵",
   "footer.privacy_policy": "私隱政策",
   "footer.source_code": "查看原始碼",
+  "footer.status": "Status",
   "generic.saved": "已儲存",
   "getting_started.heading": "開始使用",
   "hashtag.column_header.tag_mode.all": "以及{additional}",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 63ee6ec6b..1e8dd8051 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -272,6 +272,7 @@
   "footer.keyboard_shortcuts": "鍵盤快速鍵",
   "footer.privacy_policy": "隱私權政策",
   "footer.source_code": "檢視原始碼",
+  "footer.status": "狀態",
   "generic.saved": "已儲存",
   "getting_started.heading": "開始使用",
   "hashtag.column_header.tag_mode.all": "以及 {additional}",
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 32a387a4e..25cbbf000 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -5798,6 +5798,7 @@ a.status-card.compact:hover {
   &__container {
     padding: 30px;
     pointer-events: all;
+    overflow-y: auto;
   }
 
   .status__content {
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 4dfbfc665..a4b1af9d8 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -285,7 +285,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
 
     media_attachments
   rescue Addressable::URI::InvalidURIError => e
-    Rails.logger.debug "Invalid URL in attachment: #{e}"
+    Rails.logger.debug { "Invalid URL in attachment: #{e}" }
     media_attachments
   end
 
diff --git a/app/lib/delivery_failure_tracker.rb b/app/lib/delivery_failure_tracker.rb
index 66c1fd8c0..c90716632 100644
--- a/app/lib/delivery_failure_tracker.rb
+++ b/app/lib/delivery_failure_tracker.rb
@@ -6,7 +6,7 @@ class DeliveryFailureTracker
   FAILURE_DAYS_THRESHOLD = 7
 
   def initialize(url_or_host)
-    @host = url_or_host.start_with?('https://') || url_or_host.start_with?('http://') ? Addressable::URI.parse(url_or_host).normalized_host : url_or_host
+    @host = url_or_host.start_with?('https://', 'http://') ? Addressable::URI.parse(url_or_host).normalized_host : url_or_host
   end
 
   def track_failure!
diff --git a/app/lib/extractor.rb b/app/lib/extractor.rb
index aea60dae5..ead4cdddd 100644
--- a/app/lib/extractor.rb
+++ b/app/lib/extractor.rb
@@ -18,7 +18,7 @@ module Extractor
     return [] if entities.empty?
 
     entities = remove_overlapping_entities(entities)
-    entities.each(&block) if block_given?
+    entities.each(&block) if block
     entities
   end
 
diff --git a/app/lib/link_details_extractor.rb b/app/lib/link_details_extractor.rb
index b0c4e4f42..2e0672abe 100644
--- a/app/lib/link_details_extractor.rb
+++ b/app/lib/link_details_extractor.rb
@@ -248,7 +248,7 @@ class LinkDetailsExtractor
 
         structured_data
       rescue Oj::ParseError, EncodingError
-        Rails.logger.debug("Invalid JSON-LD in #{@original_url}")
+        Rails.logger.debug { "Invalid JSON-LD in #{@original_url}" }
         next
       end.first
     end
diff --git a/app/lib/scope_transformer.rb b/app/lib/scope_transformer.rb
index fdfc6cf13..adcb711f8 100644
--- a/app/lib/scope_transformer.rb
+++ b/app/lib/scope_transformer.rb
@@ -28,7 +28,7 @@ class ScopeTransformer < Parslet::Transform
     def merge!(other_scope)
       raise ArgumentError unless other_scope.namespace == namespace && other_scope.term == term
 
-      @access.concat(other_scope.instance_variable_get('@access'))
+      @access.concat(other_scope.instance_variable_get(:@access))
       @access.uniq!
       @access.sort!
 
diff --git a/app/lib/vacuum/access_tokens_vacuum.rb b/app/lib/vacuum/access_tokens_vacuum.rb
index 4f3878027..7b91f74a5 100644
--- a/app/lib/vacuum/access_tokens_vacuum.rb
+++ b/app/lib/vacuum/access_tokens_vacuum.rb
@@ -9,10 +9,10 @@ class Vacuum::AccessTokensVacuum
   private
 
   def vacuum_revoked_access_tokens!
-    Doorkeeper::AccessToken.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
+    Doorkeeper::AccessToken.where.not(revoked_at: nil).where('revoked_at < NOW()').delete_all
   end
 
   def vacuum_revoked_access_grants!
-    Doorkeeper::AccessGrant.where('revoked_at IS NOT NULL').where('revoked_at < NOW()').delete_all
+    Doorkeeper::AccessGrant.where.not(revoked_at: nil).where('revoked_at < NOW()').delete_all
   end
 end
diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb
index feac0a1f5..7d54e9d6d 100644
--- a/app/models/concerns/omniauthable.rb
+++ b/app/models/concerns/omniauthable.rb
@@ -97,8 +97,7 @@ module Omniauthable
     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
+      temp_username.truncate(30, omission: '')
     end
   end
 end
diff --git a/app/models/concerns/remotable.rb b/app/models/concerns/remotable.rb
index ffe8a7565..cb8f46e68 100644
--- a/app/models/concerns/remotable.rb
+++ b/app/models/concerns/remotable.rb
@@ -27,11 +27,11 @@ module Remotable
             public_send("#{attachment_name}=", ResponseWithLimit.new(response, limit))
           end
         rescue Mastodon::UnexpectedResponseError, HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError => e
-          Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
+          Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
           public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
           raise e unless suppress_errors
         rescue Paperclip::Errors::NotIdentifiedByImageMagickError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, Paperclip::Error, Mastodon::DimensionsValidationError, Mastodon::StreamValidationError => e
-          Rails.logger.debug "Error fetching remote #{attachment_name}: #{e}"
+          Rails.logger.debug { "Error fetching remote #{attachment_name}: #{e}" }
           public_send("#{attachment_name}=", nil) if public_send("#{attachment_name}_file_name").present?
         end
 
diff --git a/app/models/form/admin_settings.rb b/app/models/form/admin_settings.rb
index f76ee42e7..6b468e3ea 100644
--- a/app/models/form/admin_settings.rb
+++ b/app/models/form/admin_settings.rb
@@ -40,6 +40,7 @@ class Form::AdminSettings
     media_cache_retention_period
     content_cache_retention_period
     backups_retention_period
+    status_page_url
   ).freeze
 
   INTEGER_KEYS = %i(
@@ -85,6 +86,7 @@ class Form::AdminSettings
   validates :show_domain_blocks_rationale, inclusion: { in: %w(disabled users all) }, if: -> { defined?(@show_domain_blocks_rationale) }
   validates :media_cache_retention_period, :content_cache_retention_period, :backups_retention_period, numericality: { only_integer: true }, allow_blank: true, if: -> { defined?(@media_cache_retention_period) || defined?(@content_cache_retention_period) || defined?(@backups_retention_period) }
   validates :site_short_description, length: { maximum: 200 }, if: -> { defined?(@site_short_description) }
+  validates :status_page_url, url: true
   validate :validate_site_uploads
 
   KEYS.each do |key|
diff --git a/app/models/session_activation.rb b/app/models/session_activation.rb
index 3a59bad93..0b7fa6fe4 100644
--- a/app/models/session_activation.rb
+++ b/app/models/session_activation.rb
@@ -59,7 +59,7 @@ class SessionActivation < ApplicationRecord
     end
 
     def exclusive(id)
-      where('session_id != ?', id).destroy_all
+      where.not(session_id: id).destroy_all
     end
   end
 
diff --git a/app/models/setting.rb b/app/models/setting.rb
index 4bcaa060f..c6558d692 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -23,7 +23,7 @@ class Setting < RailsSettings::Base
     def [](key)
       return super(key) unless rails_initialized?
 
-      val = Rails.cache.fetch(cache_key(key, nil)) do
+      Rails.cache.fetch(cache_key(key, nil)) do
         db_val = object(key)
 
         if db_val
@@ -35,7 +35,6 @@ class Setting < RailsSettings::Base
           default_settings[key]
         end
       end
-      val
     end
 
     def all_as_records
diff --git a/app/models/trends/history.rb b/app/models/trends/history.rb
index 74723e35c..83532e7bc 100644
--- a/app/models/trends/history.rb
+++ b/app/models/trends/history.rb
@@ -87,8 +87,8 @@ class Trends::History
   end
 
   def each(&block)
-    if block_given?
-      (0...7).map { |i| block.call(get(i.days.ago)) }
+    if block
+      (0...7).map { |i| yield(get(i.days.ago)) }
     else
       to_enum(:each)
     end
diff --git a/app/models/user.rb b/app/models/user.rb
index a813ac83c..5ac1f663c 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -266,7 +266,7 @@ class User < ApplicationRecord
   end
 
   def inactive_message
-    !approved? ? :pending : super
+    approved? ? super : :pending
   end
 
   def approve!
diff --git a/app/presenters/instance_presenter.rb b/app/presenters/instance_presenter.rb
index fba3cc734..e3ba984f7 100644
--- a/app/presenters/instance_presenter.rb
+++ b/app/presenters/instance_presenter.rb
@@ -38,6 +38,10 @@ class InstancePresenter < ActiveModelSerializers::Model
     Setting.site_terms
   end
 
+  def status_page_url
+    Setting.status_page_url
+  end
+
   def domain
     Rails.configuration.x.local_domain
   end
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index c45de4e06..8243a103f 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -47,6 +47,7 @@ class InitialStateSerializer < ActiveModel::Serializer
       single_user_mode: Rails.configuration.x.single_user_mode,
       translation_enabled: TranslationService.configured?,
       trends_as_landing_page: Setting.trends_as_landing_page,
+      status_page_url: Setting.status_page_url,
     }
 
     if object.current_account
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index c4e281b80..b95a61e89 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -129,10 +129,10 @@ class REST::AccountSerializer < ActiveModel::Serializer
   end
 
   def roles
-    if object.suspended?
+    if object.suspended? || object.user.nil?
       []
     else
-      [object.user.role].compact.filter { |role| role.highlighted? }
+      [object.user.role].compact.filter(&:highlighted?)
     end
   end
 
diff --git a/app/serializers/rest/instance_serializer.rb b/app/serializers/rest/instance_serializer.rb
index 24a1c1ae6..c97db9c5f 100644
--- a/app/serializers/rest/instance_serializer.rb
+++ b/app/serializers/rest/instance_serializer.rb
@@ -45,6 +45,7 @@ class REST::InstanceSerializer < ActiveModel::Serializer
     {
       urls: {
         streaming: Rails.configuration.x.streaming_api_base_url,
+        status: object.status_page_url,
       },
 
       accounts: {
@@ -97,8 +98,6 @@ class REST::InstanceSerializer < ActiveModel::Serializer
   def registrations_message
     if Setting.closed_registrations_message.present?
       markdown.render(Setting.closed_registrations_message)
-    else
-      nil
     end
   end
 
diff --git a/app/services/activitypub/fetch_featured_collection_service.rb b/app/services/activitypub/fetch_featured_collection_service.rb
index a746ef4d6..1208820df 100644
--- a/app/services/activitypub/fetch_featured_collection_service.rb
+++ b/app/services/activitypub/fetch_featured_collection_service.rb
@@ -53,7 +53,7 @@ class ActivityPub::FetchFeaturedCollectionService < BaseService
 
       status.id
     rescue ActiveRecord::RecordInvalid => e
-      Rails.logger.debug "Invalid pinned status #{uri}: #{e.message}"
+      Rails.logger.debug { "Invalid pinned status #{uri}: #{e.message}" }
       nil
     end
 
diff --git a/app/services/activitypub/fetch_remote_account_service.rb b/app/services/activitypub/fetch_remote_account_service.rb
index 7aba8269e..567dd8a14 100644
--- a/app/services/activitypub/fetch_remote_account_service.rb
+++ b/app/services/activitypub/fetch_remote_account_service.rb
@@ -6,7 +6,7 @@ class ActivityPub::FetchRemoteAccountService < ActivityPub::FetchRemoteActorServ
     actor = super
     return actor if actor.nil? || actor.is_a?(Account)
 
-    Rails.logger.debug "Fetching account #{uri} failed: Expected Account, got #{actor.class.name}"
+    Rails.logger.debug { "Fetching account #{uri} failed: Expected Account, got #{actor.class.name}" }
     raise Error, "Expected Account, got #{actor.class.name}" unless suppress_errors
   end
 end
diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb
index 4f60ea5e8..8908d21e2 100644
--- a/app/services/activitypub/fetch_remote_actor_service.rb
+++ b/app/services/activitypub/fetch_remote_actor_service.rb
@@ -38,7 +38,7 @@ class ActivityPub::FetchRemoteActorService < BaseService
 
     ActivityPub::ProcessAccountService.new.call(@username, @domain, @json, only_key: only_key, verified_webfinger: !only_key, request_id: request_id)
   rescue Error => e
-    Rails.logger.debug "Fetching actor #{uri} failed: #{e.message}"
+    Rails.logger.debug { "Fetching actor #{uri} failed: #{e.message}" }
     raise unless suppress_errors
   end
 
diff --git a/app/services/activitypub/fetch_remote_key_service.rb b/app/services/activitypub/fetch_remote_key_service.rb
index 32e82b47a..8eb97c1e6 100644
--- a/app/services/activitypub/fetch_remote_key_service.rb
+++ b/app/services/activitypub/fetch_remote_key_service.rb
@@ -38,7 +38,7 @@ class ActivityPub::FetchRemoteKeyService < BaseService
 
     find_actor(owner_uri, @owner, suppress_errors)
   rescue Error => e
-    Rails.logger.debug "Fetching key #{uri} failed: #{e.message}"
+    Rails.logger.debug { "Fetching key #{uri} failed: #{e.message}" }
     raise unless suppress_errors
   end
 
diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb
index fffe30195..52f48bd49 100644
--- a/app/services/activitypub/process_collection_service.rb
+++ b/app/services/activitypub/process_collection_service.rb
@@ -11,7 +11,7 @@ class ActivityPub::ProcessCollectionService < BaseService
     begin
       @json = compact(@json) if @json['signature'].is_a?(Hash)
     rescue JSON::LD::JsonLdError => e
-      Rails.logger.debug "Error when compacting JSON-LD document for #{value_or_id(@json['actor'])}: #{e.message}"
+      Rails.logger.debug { "Error when compacting JSON-LD document for #{value_or_id(@json['actor'])}: #{e.message}" }
       @json = original_json.without('signature')
     end
 
@@ -71,8 +71,8 @@ class ActivityPub::ProcessCollectionService < BaseService
     @account = ActivityPub::LinkedDataSignature.new(@json).verify_actor!
     @account = nil unless @account.is_a?(Account)
     @account
-  rescue JSON::LD::JsonLdError => e
-    Rails.logger.debug "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}"
+  rescue JSON::LD::JsonLdError, RDF::WriterError => e
+    Rails.logger.debug { "Could not verify LD-Signature for #{value_or_id(@json['actor'])}: #{e.message}" }
     nil
   end
 end
diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb
index 11b38ab92..1dc393e28 100644
--- a/app/services/activitypub/process_status_update_service.rb
+++ b/app/services/activitypub/process_status_update_service.rb
@@ -94,7 +94,7 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
 
         @next_media_attachments << media_attachment
       rescue Addressable::URI::InvalidURIError => e
-        Rails.logger.debug "Invalid URL in attachment: #{e}"
+        Rails.logger.debug { "Invalid URL in attachment: #{e}" }
       end
     end
 
diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index e5b5b730e..4d55aa5e2 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -30,7 +30,7 @@ class FetchLinkCardService < BaseService
 
     attach_card if @card&.persisted?
   rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e
-    Rails.logger.debug "Error fetching link #{@original_url}: #{e}"
+    Rails.logger.debug { "Error fetching link #{@original_url}: #{e}" }
     nil
   end
 
diff --git a/app/services/fetch_oembed_service.rb b/app/services/fetch_oembed_service.rb
index 7d0879c79..9851ac098 100644
--- a/app/services/fetch_oembed_service.rb
+++ b/app/services/fetch_oembed_service.rb
@@ -82,7 +82,7 @@ class FetchOEmbedService
     return if @endpoint_url.blank?
 
     body = Request.new(:get, @endpoint_url).perform do |res|
-      res.code != 200 ? nil : res.body_with_limit
+      res.code == 200 ? res.body_with_limit : nil
     end
 
     validate(parse_for_format(body)) if body.present?
diff --git a/app/services/fetch_resource_service.rb b/app/services/fetch_resource_service.rb
index 73204e55d..4470fca01 100644
--- a/app/services/fetch_resource_service.rb
+++ b/app/services/fetch_resource_service.rb
@@ -12,7 +12,7 @@ class FetchResourceService < BaseService
 
     process(url)
   rescue HTTP::Error, OpenSSL::SSL::SSLError, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError => e
-    Rails.logger.debug "Error fetching resource #{@url}: #{e}"
+    Rails.logger.debug { "Error fetching resource #{@url}: #{e}" }
     nil
   end
 
diff --git a/app/services/keys/claim_service.rb b/app/services/keys/claim_service.rb
index ae9e24a24..0451c3cb1 100644
--- a/app/services/keys/claim_service.rb
+++ b/app/services/keys/claim_service.rb
@@ -58,7 +58,7 @@ class Keys::ClaimService < BaseService
 
     @result = Result.new(@target_account, @device_id, key_id: json['id'], key: json['publicKeyBase64'], signature: json.dig('signature', 'signatureValue'))
   rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error => e
-    Rails.logger.debug "Claiming one-time key for #{@target_account.acct}:#{@device_id} failed: #{e}"
+    Rails.logger.debug { "Claiming one-time key for #{@target_account.acct}:#{@device_id} failed: #{e}" }
     nil
   end
 
diff --git a/app/services/keys/query_service.rb b/app/services/keys/query_service.rb
index ac3388bdc..404854c9f 100644
--- a/app/services/keys/query_service.rb
+++ b/app/services/keys/query_service.rb
@@ -73,7 +73,7 @@ class Keys::QueryService < BaseService
       Device.new(device_id: device['id'], name: device['name'], identity_key: device.dig('identityKey', 'publicKeyBase64'), fingerprint_key: device.dig('fingerprintKey', 'publicKeyBase64'), claim_url: device['claim'])
     end
   rescue HTTP::Error, OpenSSL::SSL::SSLError, Mastodon::Error => e
-    Rails.logger.debug "Querying devices for #{@account.acct} failed: #{e}"
+    Rails.logger.debug { "Querying devices for #{@account.acct} failed: #{e}" }
     nil
   end
 end
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index d8b81a7b9..1ba372cd6 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -54,7 +54,7 @@ class ResolveAccountService < BaseService
 
     fetch_account!
   rescue Webfinger::Error => e
-    Rails.logger.debug "Webfinger query for #{@uri} failed: #{e}"
+    Rails.logger.debug { "Webfinger query for #{@uri} failed: #{e}" }
     raise unless @options[:suppress_errors]
   end
 
diff --git a/app/services/verify_link_service.rb b/app/services/verify_link_service.rb
index 9708cdd73..707aeb4e0 100644
--- a/app/services/verify_link_service.rb
+++ b/app/services/verify_link_service.rb
@@ -11,7 +11,7 @@ class VerifyLinkService < BaseService
 
     field.mark_verified!
   rescue OpenSSL::SSL::SSLError, HTTP::Error, Addressable::URI::InvalidURIError, Mastodon::HostValidationError, Mastodon::LengthValidationError, IPAddr::AddressFamilyError => e
-    Rails.logger.debug "Error fetching link #{@url}: #{e}"
+    Rails.logger.debug { "Error fetching link #{@url}: #{e}" }
     nil
   end
 
@@ -19,7 +19,7 @@ class VerifyLinkService < BaseService
 
   def perform_request!
     @body = Request.new(:get, @url).add_headers('Accept' => 'text/html').perform do |res|
-      res.code != 200 ? nil : res.body_with_limit
+      res.code == 200 ? res.body_with_limit : nil
     end
   end
 
diff --git a/app/views/admin/settings/about/show.html.haml b/app/views/admin/settings/about/show.html.haml
index 6ee719e36..cbba20faa 100644
--- a/app/views/admin/settings/about/show.html.haml
+++ b/app/views/admin/settings/about/show.html.haml
@@ -24,6 +24,9 @@
       = f.input :show_domain_blocks_rationale, wrapper: :with_label, collection: %i(disabled users all), label_method: lambda { |value| t("admin.settings.domain_blocks.#{value}") }, include_blank: false, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li'
 
   .fields-group
+    = f.input :status_page_url, wrapper: :with_block_label, input_html: { placeholder: "https://status.#{Rails.configuration.x.local_domain}" }
+
+  .fields-group
     = f.input :site_terms, wrapper: :with_block_label, as: :text, input_html: { rows: 8 }
 
   .actions
diff --git a/app/workers/activitypub/processing_worker.rb b/app/workers/activitypub/processing_worker.rb
index 5e36fab51..1bb94b7f2 100644
--- a/app/workers/activitypub/processing_worker.rb
+++ b/app/workers/activitypub/processing_worker.rb
@@ -15,6 +15,6 @@ class ActivityPub::ProcessingWorker
 
     ActivityPub::ProcessCollectionService.new.call(body, actor, override_timestamps: true, delivered_to_account_id: delivered_to_account_id, delivery: true)
   rescue ActiveRecord::RecordInvalid => e
-    Rails.logger.debug "Error processing incoming ActivityPub object: #{e}"
+    Rails.logger.debug { "Error processing incoming ActivityPub object: #{e}" }
   end
 end
diff --git a/app/workers/import/relationship_worker.rb b/app/workers/import/relationship_worker.rb
index 6791b15c3..c2728c196 100644
--- a/app/workers/import/relationship_worker.rb
+++ b/app/workers/import/relationship_worker.rb
@@ -49,7 +49,7 @@ class Import::RelationshipWorker
         .with_error_handler { |error, handle| error.is_a?(HTTP::Error) || error.is_a?(OpenSSL::SSL::SSLError) ? handle.call(error) : raise(error) }
         .run
     else
-      block.call
+      yield
     end
   end
 end
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 63f9ed78c..45cfbc62e 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -15,7 +15,7 @@ class Scheduler::UserCleanupScheduler
   def clean_unconfirmed_accounts!
     User.where('confirmed_at is NULL AND confirmation_sent_at <= ?', 2.days.ago).reorder(nil).find_in_batches do |batch|
       # We have to do it separately because of missing database constraints
-      AccountModerationNote.where(account_id: batch.map(&:account_id)).delete_all
+      AccountModerationNote.where(target_account_id: batch.map(&:account_id)).delete_all
       Account.where(id: batch.map(&:account_id)).delete_all
       User.where(id: batch.map(&:id)).delete_all
     end
diff --git a/config.ru b/config.ru
index 3476455ef..d7295e476 100644
--- a/config.ru
+++ b/config.ru
@@ -1,5 +1,5 @@
 # frozen_string_literal: true
 # This file is used by Rack-based servers to start the application.
 
-require ::File.expand_path('../config/environment', __FILE__)
+require ::File.expand_path('config/environment', __dir__)
 run Rails.application
diff --git a/config/locales/activerecord.fr.yml b/config/locales/activerecord.fr.yml
index e2d950d1f..bd34fcbcf 100644
--- a/config/locales/activerecord.fr.yml
+++ b/config/locales/activerecord.fr.yml
@@ -19,7 +19,7 @@ fr:
         account:
           attributes:
             username:
-              invalid: seulement des lettres, des nombres et des tirets bas
+              invalid: seulement des lettres, des chiffres et des tirets bas
               reserved: est réservé
         admin/webhook:
           attributes:
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index 0a85b4c9a..f612d4d28 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -368,6 +368,7 @@ ast:
     discovery: Descubrimientu
     localization:
       body: Mastodon tradúcenlu voluntarios,
+      guide_link: https://crowdin.com/project/mastodon
       guide_link_text: tol mundu pue collaborar.
     sensitive_content: Conteníu sensible
     toot_layout: Distribución de los artículos
@@ -713,6 +714,10 @@ ast:
       unlisted_long: Tol mundu pue velos, mas nun apaecen nes llinies de tiempu públiques
   statuses_cleanup:
     exceptions: Esceiciones
+    interaction_exceptions: Esceiciones basaes nes interaiciones
+    keep_direct: Caltener los mensaxes direutos
+    keep_pinned: Caltener los artículos fixaos
+    keep_polls: Caltener les encuestes
     min_age:
       '1209600': 2 selmanes
       '15778476': 6 meses
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 913f275cc..d89aef9f3 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -142,7 +142,7 @@ da:
       show:
         created_reports: Indsendte anmeldelser
         targeted_reports: Anmeldt af andre
-      silence: Brgræns
+      silence: Begræns
       silenced: Begrænset
       statuses: Indlæg
       strikes: Tidligere anmeldelser
@@ -603,7 +603,7 @@ da:
         delete: Slet
         placeholder: Beskriv udførte foranstaltninger eller andre relevante opdateringer...
         title: Notater
-      notes_description_html: Se og skriv notater til andre moderatorer og dit fremtid selv
+      notes_description_html: Se og skriv notater til andre moderatorer og dit fremtidige jeg
       processed_msg: 'Anmeldelse #%{id} er blev behandlet'
       quick_actions_description_html: 'Træf en hurtig foranstaltning eller rul ned for at se anmeldt indhold:'
       remote_user_placeholder: fjernbrugeren fra %{instance}
diff --git a/config/locales/de.yml b/config/locales/de.yml
index ee5f3c28e..605eb8e73 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -84,7 +84,7 @@ de:
         remote: Extern
         title: Herkunft
       login_status: Anmeldestatus
-      media_attachments: Medienanhänge
+      media_attachments: Speicherplatz
       memorialize: In Gedenkseite umwandeln
       memorialized: Gedenkseite
       memorialized_msg: "%{username} wurde erfolgreich in ein Gedenkseiten-Konto umgewandelt"
@@ -108,7 +108,7 @@ de:
       previous_strikes_description_html:
         one: Dieses Konto hat <strong>einen</strong> Verstoß.
         other: Dieses Konto hat <strong>%{count}</strong> Verstöße.
-      promote: Befördern
+      promote: Berechtigungen erweitern
       protocol: Protokoll
       public: Öffentlich
       push_subscription_expires: PuSH-Abonnement läuft aus
@@ -194,7 +194,7 @@ de:
         destroy_instance: Domain-Daten entfernen
         destroy_ip_block: IP-Regel löschen
         destroy_status: Beitrag löschen
-        destroy_unavailable_domain: Nicht verfügbare Domain löschen
+        destroy_unavailable_domain: Nicht-verfügbare Domain entfernen
         destroy_user_role: Rolle entfernen
         disable_2fa_user: 2FA deaktivieren
         disable_custom_emoji: Eigenes Emoji deaktivieren
@@ -270,7 +270,7 @@ de:
         reopen_report_html: "%{name} hat die Meldung %{target} wieder geöffnet"
         resend_user_html: "%{name} hat erneut eine Bestätigungs-E-Mail für %{target} gesendet"
         reset_password_user_html: "%{name} hat das Passwort von %{target} zurückgesetzt"
-        resolve_report_html: "%{name} hat die Meldung %{target} bearbeitet"
+        resolve_report_html: "%{name} hat die Meldung %{target} geklärt"
         sensitive_account_html: "%{name} hat die Medien von %{target} mit einer Inhaltswarnung versehen"
         silence_account_html: "%{name} hat das Konto von %{target} stummgeschaltet"
         suspend_account_html: "%{name} hat das Konto von %{target} gesperrt"
@@ -286,7 +286,7 @@ de:
         update_status_html: "%{name} hat einen Beitrag von %{target} aktualisiert"
         update_user_role_html: "%{name} hat die Rolle %{target} geändert"
       deleted_account: gelöschtes Konto
-      empty: Keine Protokolle gefunden.
+      empty: Protokolle nicht gefunden.
       filter_by_action: Nach Aktion filtern
       filter_by_user: Nach Benutzer*in filtern
       title: Protokoll
@@ -604,7 +604,7 @@ de:
         create_and_resolve: Mit Kommentar lösen
         create_and_unresolve: Mit Kommentar wieder öffnen
         delete: Löschen
-        placeholder: Bitte beschreibe, welche Maßnahmen ergriffen wurden oder andere damit verbundene Aktualisierungen …
+        placeholder: Bitte beschreibe, welche Maßnahmen bzw. Sanktionen ergriffen worden sind, und führe alles auf, was es Erwähnenswertes zu diesem Profil zu berichten gibt …
         title: Notizen
       notes_description_html: Notiz an dich und andere Moderator*innen hinterlassen
       processed_msg: 'Meldung #%{id} erfolgreich bearbeitet'
diff --git a/config/locales/devise.fr.yml b/config/locales/devise.fr.yml
index 1047fae0b..8eb744d94 100644
--- a/config/locales/devise.fr.yml
+++ b/config/locales/devise.fr.yml
@@ -15,21 +15,21 @@ fr:
       pending: Votre compte est toujours en cours d'approbation.
       timeout: Votre session a expiré. Veuillez vous reconnecter pour continuer.
       unauthenticated: Vous devez vous connecter ou vous inscrire pour continuer.
-      unconfirmed: Vous devez valider votre adresse courriel pour continuer.
+      unconfirmed: Vous devez valider votre adresse de courriel pour continuer.
     mailer:
       confirmation_instructions:
-        action: Vérifier l’adresse courriel
+        action: Vérifier l’adresse de courriel
         action_with_app: Confirmer et retourner à %{app}
         explanation: Vous avez créé un compte sur %{host} avec cette adresse courriel. Vous êtes à un clic de l’activer. Si ce n’était pas vous, veuillez ignorer ce courriel.
         explanation_when_pending: Vous avez demandé à vous inscrire à %{host} avec cette adresse de courriel. Une fois que vous aurez confirmé cette adresse, nous étudierons votre demande. Vous ne pourrez pas vous connecter d’ici-là. Si votre demande est refusée, vos données seront supprimées du serveur, aucune action supplémentaire de votre part n’est donc requise. Si vous n’êtes pas à l’origine de cette demande, veuillez ignorer ce message.
         extra_html: Merci de consultez également <a href="%{terms_path}">les règles du serveur</a> et <a href="%{policy_path}">nos conditions d’utilisation</a>.
         subject: 'Mastodon : Merci de confirmer votre inscription sur %{instance}'
-        title: Vérifiez l’adresse courriel
+        title: Vérifiez l’adresse de courriel
       email_changed:
-        explanation: 'L’adresse courriel de votre compte est en cours de modification pour devenir :'
+        explanation: 'L’adresse de courriel de votre compte est en cours de modification pour devenir :'
         extra: Si vous n’avez pas changé votre adresse courriel, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte.
         subject: 'Mastodon : Courriel modifié'
-        title: Nouvelle adresse courriel
+        title: Nouvelle adresse de courriel
       password_change:
         explanation: Le mot de passe de votre compte a été changé.
         extra: Si vous n’avez pas changé votre mot de passe, il est probable que quelqu’un ait eu accès à votre compte. Veuillez changer votre mot de passe immédiatement ou contacter l’administrateur·rice du serveur si vous êtes bloqué·e hors de votre compte.
@@ -37,8 +37,8 @@ fr:
         title: Mot de passe modifié
       reconfirmation_instructions:
         explanation: Confirmez la nouvelle adresse pour changer votre courriel.
-        extra: Si ce changement n’a pas été initié par vous, veuillez ignorer ce courriel. L’adresse courriel du compte Mastodon ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus.
-        subject: 'Mastodon : Confirmez l’adresse courriel pour %{instance}'
+        extra: Si ce changement n’a pas été initié par vous, veuillez ignorer ce courriel. L’adresse de courriel du compte Mastodon ne changera pas tant que vous n’aurez pas cliqué sur le lien ci-dessus.
+        subject: 'Mastodon : Confirmez l’adresse de courriel pour %{instance}'
         title: Vérifier l’adresse courriel
       reset_password_instructions:
         action: Modifier le mot de passe
@@ -82,8 +82,8 @@ fr:
       success: Authentifié avec succès via %{kind}.
     passwords:
       no_token: Vous ne pouvez accéder à cette page sans passer par un courriel de réinitialisation de mot de passe. Si vous êtes passé⋅e par un courriel de ce type, assurez-vous d’utiliser l’URL complète.
-      send_instructions: Vous allez recevoir les instructions de réinitialisation du mot de passe dans quelques instants. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables.
-      send_paranoid_instructions: Si votre adresse électronique existe dans notre base de données, vous allez recevoir un lien de réinitialisation par courriel. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables.
+      send_instructions: Si votre adresse de courriel existe dans notre base de données, vous allez recevoir un lien de réinitialisation par courriel. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables.
+      send_paranoid_instructions: Si votre adresse de courriel existe dans notre base de données, vous allez recevoir un lien de réinitialisation par courriel. Veuillez, dans le cas où vous ne recevriez pas ce message, vérifier votre dossier d’indésirables.
       updated: Votre mot de passe a été modifié avec succès, vous êtes maintenant connecté.
       updated_not_active: Votre mot de passe a été modifié avec succès.
     registrations:
@@ -92,8 +92,8 @@ fr:
       signed_up_but_inactive: Vous êtes bien enregistré·e. Vous ne pouvez cependant pas vous connecter car votre compte n’est pas encore activé.
       signed_up_but_locked: Vous êtes bien enregistré·e. Vous ne pouvez cependant pas vous connecter car votre compte est verrouillé.
       signed_up_but_pending: Un message avec un lien de confirmation a été envoyé à votre adresse courriel. Après avoir cliqué sur le lien, nous examinerons votre demande. Vous serez informé·e si elle a été approuvée.
-      signed_up_but_unconfirmed: Un message contenant un lien de confirmation a été envoyé à votre adresse courriel. Ouvrez ce lien pour activer votre compte. Veuillez vérifier votre dossier d'indésirables si vous ne recevez pas le courriel.
-      update_needs_confirmation: Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse courriel. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. Si vous n'avez pas reçu le courriel, vérifiez votre dossier de spams.
+      signed_up_but_unconfirmed: Un message contenant un lien de confirmation a été envoyé à votre adresse de courriel. Ouvrez ce lien pour activer votre compte. Veuillez vérifier votre dossier d'indésirables si vous ne recevez pas le courriel.
+      update_needs_confirmation: Votre compte a bien été mis à jour, mais nous devons vérifier votre nouvelle adresse de courriel. Merci de vérifier vos courriels et de cliquer sur le lien de confirmation pour finaliser la validation de votre nouvelle adresse. Si vous n'avez pas reçu le courriel, vérifiez votre dossier d’indésirables.
       updated: Votre compte a été modifié avec succès.
     sessions:
       already_signed_out: Déconnecté·e avec succès.
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 7819d1fd8..d777c925a 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -86,7 +86,7 @@ fr:
         invalid_grant: L’autorisation accordée est invalide, expirée, annulée, ne concorde pas avec l’URL de redirection utilisée dans la requête d’autorisation, ou a été délivrée à un autre client.
         invalid_redirect_uri: L’URL de redirection n’est pas valide.
         invalid_request:
-          missing_param: 'Paramètre requis manquant: %{value}.'
+          missing_param: 'Paramètre requis manquant : %{value}.'
           request_not_authorized: La requête doit être autorisée. Le paramètre requis pour l'autorisation de la requête est manquant ou non valide.
           unknown: La requête omet un paramètre requis, inclut une valeur de paramètre non prise en charge ou est autrement mal formée.
         invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides ou le propriétaire de la ressource ne peut être trouvé
@@ -149,18 +149,18 @@ fr:
     scopes:
       admin:read: lire toutes les données du serveur
       admin:read:accounts: lire les informations sensibles de tous les comptes
-      admin:read:canonical_email_blocks: lire les informations sensibles de tous les bloqueurs d'e-mails canoniques
+      admin:read:canonical_email_blocks: lire les informations sensibles de tous les bloqueurs de courriels canoniques
       admin:read:domain_allows: lire les informations sensibles de tous les domaines autorisés
-      admin:read:domain_blocks: lire les informations sensibles de tous les blocqueurs de domaines
-      admin:read:email_domain_blocks: lire les informations sensibles de tous les blocqueurs d'e-mails de domaines
+      admin:read:domain_blocks: lire les informations sensibles de tous les bloqueurs de domaines
+      admin:read:email_domain_blocks: lire les informations sensibles de tous les bloqueurs de domaines de courriel
       admin:read:ip_blocks: lire les informations sensibles de tous les blocqueurs d'IP
       admin:read:reports: lire les informations sensibles de tous les signalements et des comptes signalés
       admin:write: modifier toutes les données sur le serveur
       admin:write:accounts: effectuer des actions de modération sur les comptes
-      admin:write:canonical_email_blocks: effectuer des actions de modération sur les bloqueurs d'e-mails canoniques
+      admin:write:canonical_email_blocks: effectuer des actions de modération sur les bloqueurs de courriels canoniques
       admin:write:domain_allows: effectuer des actions de modération sur les autorisations de domaines
       admin:write:domain_blocks: effectuer des actions de modération sur des bloqueurs de domaines
-      admin:write:email_domain_blocks: effectuer des actions de modération sur des bloqueurs d'e-mails de domaines
+      admin:write:email_domain_blocks: effectuer des actions de modération sur des bloqueurs de domaines de courriel
       admin:write:ip_blocks: effectuer des actions de modération sur des bloqueurs d'IP
       admin:write:reports: effectuer des actions de modération sur les signalements
       crypto: utiliser le chiffrement de bout-en-bout
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index 3bda08dcd..b02e00bf0 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -110,6 +110,75 @@ en-GB:
         other: This account has <strong>%{count}</strong> strikes.
       promote: Promote
       protocol: Protocol
+      public: Public
+      push_subscription_expires: PuSH subscription expires
+      redownload: Refresh profile
+      redownloaded_msg: Successfully refreshed %{username}'s profile from origin
+      reject: Reject
+      rejected_msg: Successfully rejected %{username}'s sign-up application
+      remote_suspension_irreversible: The data of this account has been irreversibly deleted.
+      remote_suspension_reversible_hint_html: The account has been suspended on their server, and the data will be fully removed on %{date}. Until then, the remote server can restore this account without any ill effects. If you wish to remove all of the account's data immediately, you can do so below.
+      remove_avatar: Remove avatar
+      remove_header: Remove header
+      removed_avatar_msg: Successfully removed %{username}'s avatar image
+      removed_header_msg: Successfully removed %{username}'s header image
+      resend_confirmation:
+        already_confirmed: This user is already confirmed
+        send: Resend confirmation email
+        success: Confirmation email successfully sent!
+      reset: Reset
+      reset_password: Reset password
+      resubscribe: Resubscribe
+      role: Role
+      search: Search
+      search_same_email_domain: Other users with the same e-mail domain
+      search_same_ip: Other users with the same IP
+      security_measures:
+        only_password: Only password
+        password_and_2fa: Password and 2FA
+      sensitive: Force-sensitive
+      sensitized: Marked as sensitive
+      shared_inbox_url: Shared inbox URL
+      show:
+        created_reports: Made reports
+        targeted_reports: Reported by others
+      silence: Limit
+      silenced: Limited
+      statuses: Posts
+      strikes: Previous strikes
+      subscribe: Subscribe
+      suspend: Suspend
+      suspended: Suspended
+      suspension_irreversible: The data of this account has been irreversibly deleted. You can unsuspend the account to make it usable but it will not recover any data it previously had.
+      suspension_reversible_hint_html: The account has been suspended, and the data will be fully removed on %{date}. Until then, the account can be restored without any ill effects. If you wish to remove all of the account's data immediately, you can do so below.
+      title: Accounts
+      unblock_email: Unblock email address
+      unblocked_email_msg: Successfully unblocked %{username}'s email address
+      unconfirmed_email: Unconfirmed email
+      undo_sensitized: Undo force-sensitive
+      undo_silenced: Undo limit
+      undo_suspension: Undo suspension
+      unsilenced_msg: Successfully undid limit of %{username}'s account
+      unsubscribe: Unsubscribe
+      unsuspended_msg: Successfully unsuspended %{username}'s account
+      username: Username
+      view_domain: View summary for domain
+      warn: Warn
+      web: Web
+      whitelisted: Allowed for federation
+    action_logs:
+      action_types:
+        approve_appeal: Approve Appeal
+        approve_user: Approve User
+        assigned_to_self_report: Assign Report
+        change_email_user: Change E-mail for User
+        change_role_user: Change Role of User
+        confirm_user: Confirm User
+        create_account_warning: Create Warning
+        create_announcement: Create Announcement
+        create_canonical_email_block: Create E-mail Block
+        create_custom_emoji: Create Custom Emoji
+        unassigned_report: Unassign Report
     roles:
       categories:
         devops: DevOps
@@ -132,7 +201,15 @@ en-GB:
     platforms:
       blackberry: BlackBerry
       chrome_os: ChromeOS
+  two_factor_authentication:
+    recovery_codes_regenerated: Recovery codes successfully regenerated
+    recovery_instructions_html: If you ever lose access to your phone, you can use one of the recovery codes below to regain access to your account. <strong>Keep the recovery codes safe</strong>. For example, you may print them and store them with other important documents.
+    webauthn: Security keys
   user_mailer:
+    appeal_approved:
+      action: Go to your account
+      explanation: The appeal of the strike against your account on %{strike_date} that you submitted on %{appeal_date} has been approved. Your account is once again in good standing.
+      subject: Your appeal from %{date} has been approved
     warning:
       subject:
         silence: Your account %{acct} has been limited
@@ -161,3 +238,8 @@ en-GB:
     otp_lost_help_html: If you lost access to both, you may get in touch with %{email}
     seamless_external_login: You are logged in via an external service, so password and e-mail settings are not available.
     signed_in_as: 'Signed in as:'
+  webauthn_credentials:
+    not_enabled: You haven't enabled WebAuthn yet
+    not_supported: This browser doesn't support security keys
+    otp_required: To use security keys please enable two-factor authentication first.
+    registered_on: Registered on %{date}
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 2131e253c..dc783a82c 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -1,7 +1,7 @@
 ---
 eo:
   about:
-    about_mastodon_html: 'La socia retejo de la estonteco: sen reklamo, sen kompania observado, etika desegno, kaj malcentrigo! Regu viajn datumojn per Mastodon!'
+    about_mastodon_html: 'La socia retejo de la estonteco: sen reklamo, sen observado por firmao, etika desegno, kaj malcentrigo! Regu viajn informojn per Mastodon!'
     contact_missing: Ne elektita
     contact_unavailable: Ne disponebla
     hosted_on: "%{domain} estas nodo de Mastodon"
@@ -223,8 +223,8 @@ eo:
         update_custom_emoji: Ĝisdatigi proprajn emoĝiojn
         update_domain_block: Ĝigdatigi domajnan blokadon
         update_ip_block: Krei IP-regulon
-        update_status: Ĝisdatigi staton
-        update_user_role: Ĝisdatigi Rolon
+        update_status: Ĝisdatigi afiŝon
+        update_user_role: Ĝisdatigi rolon
       actions:
         approve_appeal_html: "%{name} aprobis kontroldecidapelacion de %{target}"
         approve_user_html: "%{name} aprobis registriĝon de %{target}"
@@ -278,12 +278,12 @@ eo:
         unsensitive_account_html: "%{name} malmarkis audovidaĵojn de %{target} kiel sentemaj"
         unsilence_account_html: "%{name} malfaris limon de konto de %{target}"
         unsuspend_account_html: "%{name} malsuspendis la konton de %{target}"
-        update_announcement_html: "%{name} ĝisdatigis anoncon %{target}"
-        update_custom_emoji_html: "%{name} ĝisdatigis emoĝion %{target}"
+        update_announcement_html: "%{name} ĝisdatigis la anoncon %{target}"
+        update_custom_emoji_html: "%{name} ĝisdatigis la emoĝion %{target}"
         update_domain_block_html: "%{name} ĝisdatigis domajnblokon por %{target}"
         update_ip_block_html: "%{name} ŝanĝis regulon por IP %{target}"
         update_status_html: "%{name} ĝisdatigis mesaĝon de %{target}"
-        update_user_role_html: "%{name} ŝanĝis rolon %{target}"
+        update_user_role_html: "%{name} ŝanĝis la rolon %{target}"
       deleted_account: forigita konto
       empty: Neniu ĵurnalo trovita.
       filter_by_action: Filtri per ago
@@ -556,7 +556,7 @@ eo:
       pending: Atendante aprobon de la ripetilo
       save_and_enable: Konservi kaj ebligi
       setup: Agordi konekton al ripetilo
-      signatures_not_enabled: Ripetiloj ne ĝuste funkcias dum sekura reĝimo au limigita federacio reĝimo ebligitas
+      signatures_not_enabled: Relajsoj eble ne funkcias ĝuste dum sekura reĝimo aŭ reĝimo de limigita federado estas ŝaltita
       status: Stato
       title: Ripetiloj
     report_notes:
@@ -601,6 +601,7 @@ eo:
         placeholder: Priskribu faritajn agojn, aŭ ajnan novan informon pri tiu signalo…
         title: Notoj
       notes_description_html: Vidi kaj lasi notojn por aliaj kontrolantoj kaj estonta vi
+      processed_msg: 'La raporto #%{id} sukcese prilaborita'
       quick_actions_description_html: 'Agu au movu malsupre por vidi raportitajn enhavojn:'
       remote_user_placeholder: la ekstera uzanto de %{instance}
       reopen: Remalfermi signalon
@@ -613,9 +614,21 @@ eo:
       status: Mesaĝoj
       statuses: Raportita enhavo
       statuses_description_html: Sentema enhavo referencitas kun la raportita konto
+      summary:
+        action_preambles:
+          delete_html: 'Vi ja tuj <strong>forigos</strong> kelke da afiŝoj de <strong>@%{acct}</strong>. Tio faros kiel jene:'
+          mark_as_sensitive_html: 'Vi ja tuj <strong>markos</strong> kelke da afiŝoj de <strong>@%{acct}</strong> kiel <strong>tiklaj</strong>. Tio faros kiel:'
+          silence_html: 'Vi ja tuj <strong>limigos</strong> kelke da afiŝoj de <strong>@%{acct}</strong>. Tio faros kiel:'
+          suspend_html: 'Vi ja tuj <strong>suspendos</strong> la konton de <strong>@%{acct}</strong>. Tio faros kiel:'
+        actions:
+          suspend_html: Suspendi <strong>@%{acct}</strong>, fari ties profilon kaj enhavojn neatingeblaj kaj maleblaj interagi kun
+        close_report: 'Marki la raporto #%{id} kiel solvita'
+        close_reports_html: Marki <strong>ĉiuj</strong> raportoj kontraŭ <strong>@%{acct}</strong> kiel solvitaj
+        send_email_html: Sendi al <strong>@%{acct}</strong> retpoŝtaĵon de averto
       target_origin: Origino de raportita konto
       title: Signaloj
       unassign: Malasigni
+      unknown_action_msg: 'Nekonata ago: %{action}'
       unresolved: Nesolvitaj
       updated_at: Ĝisdatigita
       view_profile: Vidi profilon
@@ -710,6 +723,7 @@ eo:
         preamble: Interesa enhavo estas grava por novaj uzantoj kiuj eble ne konas ajn iun.
         profile_directory: Profilujo
         public_timelines: Publikaj templinioj
+        publish_discovered_servers: Publikigi la malkovritajn servilojn
         publish_statistics: Publikigi statistikojn
         title: Eltrovado
         trends: Tendencoj
@@ -938,6 +952,8 @@ eo:
   auth:
     apply_for_account: Peti konton
     change_password: Pasvorto
+    confirmations:
+      wrong_email_hint: Se tiu retpoŝtadreso ne estas ĝusta, vi povas ŝanĝi ĝin en la agordoj pri la konto.
     delete_account: Forigi konton
     delete_account_html: Se vi deziras forigi vian konton, vi povas <a href="%{path}">fari tion ĉi tie</a>. Vi bezonos konfirmi vian peton.
     description:
@@ -1366,6 +1382,8 @@ eo:
       unrecognized_emoji: ne estas rekonita emoĝio
   relationships:
     activity: Konta aktiveco
+    confirm_remove_selected_followers: Ĉu vi certas, ke vi volas forigi la elektitajn sekvantojn?
+    confirm_remove_selected_follows: Ĉu vi certas, ke vi volas forigi la elektitajn sekvatojn?
     dormant: Dormanta
     follow_selected_followers: Sekvi selektitajn sekvantojn
     followers: Sekvantoj
diff --git a/config/locales/fr-QC.yml b/config/locales/fr-QC.yml
index ed4c900f7..504ab8486 100644
--- a/config/locales/fr-QC.yml
+++ b/config/locales/fr-QC.yml
@@ -392,7 +392,7 @@ fr-QC:
         create: Créer le blocage
         hint: Le blocage de domaine n’empêchera pas la création de comptes dans la base de données, mais il appliquera automatiquement et rétrospectivement des méthodes de modération spécifiques sur ces comptes.
         severity:
-          desc_html: "<strong>Limiter</strong> rendra les messages des comptes de ce domaine invisibles à ceux qui ne les suivent pas. <strong>Suspendre</strong> supprimera tout le contenu, les médias, et données de profile pour les comptes de ce domaine de votre serveur. Utilisez <strong>Aucun</strong> si vous voulez simplement rejeter les fichiers multimédia."
+          desc_html: "<strong>Limiter</strong> rendra les messages des comptes de ce domaine invisibles pour tous les comptes qui ne les suivent pas. <strong>Suspendre</strong> supprimera de votre serveur tout le contenu, les médias et données de profil pour les comptes sur ce domaine. Utilisez <strong>Aucun</strong> si vous voulez simplement rejeter les fichiers multimédia."
           noop: Aucune
           silence: Limiter
           suspend: Suspendre
@@ -438,11 +438,12 @@ fr-QC:
       import:
         description_html: Vous êtes sur le point d'importer une liste de blocs de domaine. Veuillez examiner cette liste très attentivement, spécialement si vous n'êtes pas l'auteur de cette liste.
         existing_relationships_warning: Relations de suivi existantes
-        private_comment_description_html: 'Pour vous aider à suivre d''où viennent les blocs importés, des blocs importés seront créés avec le commentaire privé suivant : <q>%{comment}</q>'
+        private_comment_description_html: 'Pour vous aider à savoir d''où proviennent les blocages importés, ceux-ci seront créés avec le commentaire privé suivant : <q>%{comment}</q>'
         private_comment_template: Importé depuis %{source} le %{date}
-        title: Importer des blocs de domaine
+        title: Importer des blocages de domaine
+      invalid_domain_block: 'Un ou plusieurs blocages de domaine ont été ignorés en raison des erreurs suivantes : %{error}'
       new:
-        title: Importer des blocs de domaine
+        title: Importer des blocages de domaine
       no_file: Aucun fichier sélectionné
     follow_recommendations:
       description_html: "<strong>Les recommandations d'abonnement aident les nouvelles personnes à trouver rapidement du contenu intéressant</strong>. Si un·e utilisateur·rice n'a pas assez interagi avec les autres pour avoir des recommandations personnalisées, ces comptes sont alors recommandés. La sélection est mise à jour quotidiennement depuis un mélange de comptes ayant le plus d'interactions récentes et le plus grand nombre d'abonné·e·s locaux pour une langue donnée."
@@ -589,6 +590,7 @@ fr-QC:
       comment:
         none: Aucun
       comment_description_html: 'Pour fournir plus d''informations, %{name} a écrit :'
+      confirm_action: Confirmer l'action de modération contre @%{acct}
       created_at: Signalé
       delete_and_resolve: Supprimer les messages
       forwarded: Transféré
@@ -605,6 +607,7 @@ fr-QC:
         placeholder: Décrivez quelles actions ont été prises, ou toute autre mise à jour…
         title: Remarques
       notes_description_html: Voir et laisser des notes aux autres modérateurs et à votre futur moi-même
+      processed_msg: 'Le signalement #%{id} a été traité avec succès'
       quick_actions_description_html: 'Faites une action rapide ou faites défiler vers le bas pour voir le contenu signalé :'
       remote_user_placeholder: l'utilisateur·rice distant·e de %{instance}
       reopen: Ré-ouvrir le signalement
@@ -617,9 +620,28 @@ fr-QC:
       status: Statut
       statuses: Contenu signalé
       statuses_description_html: Le contenu offensant sera cité dans la communication avec le compte signalé
+      summary:
+        action_preambles:
+          delete_html: 'Vous êtes sur le point de <strong>supprimer</strong> certains messages de <strong>@%{acct}</strong>. Cela va :'
+          mark_as_sensitive_html: 'Vous êtes sur le point de <strong>marquer</strong> certains messages de <strong>@%{acct}</strong> comme <strong>sensibles</strong>. Cela va :'
+          silence_html: 'Vous êtes sur le point de <strong>limiter</strong> le compte de <strong>@%{acct}</strong>. Cela va :'
+          suspend_html: 'Vous êtes sur le point de <strong>suspendre</strong> le compte de <strong>@%{acct}</strong>. Cela va :'
+        actions:
+          delete_html: supprimer les messages incriminés
+          mark_as_sensitive_html: marquer le média des messages incriminés comme sensible
+          silence_html: limiter drastiquement la portée du compte de <strong>@%{acct}</strong> en rendant son profil, ainsi que ses contenus, visibles uniquement des personnes déjà abonnées ou qui le recherchent manuellement
+          suspend_html: suspendre le compte de <strong>@%{acct}</strong>, ce qui empêche toute interaction avec son profil et tout accès à ses contenus
+        close_report: 'marquer le signalement #%{id} comme résolu'
+        close_reports_html: marquer <strong>tous</strong> les signalements de <strong>@%{acct}</strong> comme résolus
+        delete_data_html: effacer le profil de <strong>@%{acct}</strong> et ses contenus dans 30 jours, à moins que la suspension du compte ne soit annulée entre temps
+        preview_preamble_html: "<strong>@%{acct}</strong> recevra un avertissement contenant les éléments suivants :"
+        record_strike_html: enregistrer une sanction contre <strong>@%{acct}</strong> pour vous aider à prendre des mesures supplémentaires en cas d'infractions futures de ce compte
+        send_email_html: envoyer un courriel d'avertissement à <strong>@%{acct}</strong>
+        warning_placeholder: Arguments supplémentaires pour l'action de modération (facultatif).
       target_origin: Origine du compte signalé
       title: Signalements
       unassign: Dés-assigner
+      unknown_action_msg: 'Action inconnue : %{action}'
       unresolved: Non résolus
       updated_at: Mis à jour
       view_profile: Voir le profil
@@ -943,6 +965,8 @@ fr-QC:
   auth:
     apply_for_account: Demander un compte
     change_password: Mot de passe
+    confirmations:
+      wrong_email_hint: Si cette adresse courriel est incorrecte, vous pouvez la modifier dans vos paramètres de compte.
     delete_account: Supprimer le compte
     delete_account_html: Si vous désirez supprimer votre compte, vous pouvez <a href="%{path}">cliquer ici</a>. Il vous sera demandé de confirmer cette action.
     description:
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 75f975623..278fc9e77 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -38,12 +38,12 @@ fr:
       avatar: Avatar
       by_domain: Domaine
       change_email:
-        changed_msg: Courriel modifié avec succès !
-        current_email: Courriel actuel
-        label: Modifier le courriel
-        new_email: Nouveau courriel
+        changed_msg: Adresse de courriel modifiée avec succès !
+        current_email: Adresse de courriel actuelle
+        label: Modifier l’adresse de courriel
+        new_email: Nouvelle adresse de courriel
         submit: Modifier le courriel
-        title: Modifier le courriel pour %{username}
+        title: Modifier l’adresse de courriel pour %{username}
       change_role:
         changed_msg: Rôle modifié avec succès !
         label: Modifier le rôle
@@ -64,7 +64,7 @@ fr:
       display_name: Nom affiché
       domain: Domaine
       edit: Éditer
-      email: Courriel
+      email: Adresse de courriel
       email_status: État du courriel
       enable: Dégeler
       enable_sign_in_token_auth: Activer l'authentification basée sur les jetons envoyés par courriel
@@ -152,9 +152,9 @@ fr:
       suspension_irreversible: Les données de ce compte ont été irréversiblement supprimées. Vous pouvez annuler la suspension du compte pour le rendre utilisable, mais il ne récupérera aucune donnée qu’il avait auparavant.
       suspension_reversible_hint_html: Le compte a été suspendu et les données seront complètement supprimées le %{date}. D’ici là, le compte peut être restauré sans aucun effet néfaste. Si vous souhaitez supprimer toutes les données du compte immédiatement, vous pouvez le faire ci-dessous.
       title: Comptes
-      unblock_email: Débloquer l'adresse courriel
-      unblocked_email_msg: L'adresse courriel de %{username} a été débloquée avec succès
-      unconfirmed_email: Courriel non confirmé
+      unblock_email: Débloquer l’adresse de courriel
+      unblocked_email_msg: L’adresse de courriel de %{username} a été débloquée avec succès
+      unconfirmed_email: Adresse de courriel non confirmée
       undo_sensitized: Annuler sensible
       undo_silenced: Annuler la limitation
       undo_suspension: Annuler la suspension
@@ -169,11 +169,11 @@ fr:
     action_logs:
       action_types:
         approve_appeal: Approuver l'appel
-        approve_user: Approuver l’utilisateur
+        approve_user: Approuver le compte
         assigned_to_self_report: Affecter le signalement
-        change_email_user: Modifier le courriel pour ce compte
-        change_role_user: Changer le rôle de l’utilisateur·rice
-        confirm_user: Confirmer l’utilisateur
+        change_email_user: Modifier l’adresse de courriel pour ce compte
+        change_role_user: Changer le rôle du compte
+        confirm_user: Confirmer le compte
         create_account_warning: Créer une alerte
         create_announcement: Créer une annonce
         create_canonical_email_block: Créer un blocage de domaine de courriel
@@ -202,11 +202,11 @@ fr:
         disable_user: Désactiver le compte
         enable_custom_emoji: Activer les émojis personnalisées
         enable_sign_in_token_auth_user: Activer l'authentification basée sur les jetons envoyés par courriel pour l'utilisateur·rice
-        enable_user: Activer l’utilisateur
+        enable_user: Activer le compte
         memorialize_account: Ériger en mémorial
-        promote_user: Promouvoir l’utilisateur
+        promote_user: Promouvoir le compte
         reject_appeal: Rejeter l'appel
-        reject_user: Rejeter l’utilisateur
+        reject_user: Rejeter le compte
         remove_avatar_user: Supprimer l’avatar
         reopen_report: Rouvrir le signalement
         resend_user: Renvoyer l'e-mail de confirmation
@@ -216,7 +216,7 @@ fr:
         silence_account: Limiter le compte
         suspend_account: Suspendre le compte
         unassigned_report: Ne plus assigner le signalement
-        unblock_email_account: Débloquer l'adresse courriel
+        unblock_email_account: Débloquer l’adresse de courriel
         unsensitive_account: Ne pas marquer les médias de votre compte comme sensibles
         unsilence_account: Annuler la limitation du compte
         unsuspend_account: Annuler la suspension du compte
@@ -235,7 +235,7 @@ fr:
         confirm_user_html: "%{name} a confirmé l'adresse courriel de l'utilisateur %{target}"
         create_account_warning_html: "%{name} a envoyé un avertissement à %{target}"
         create_announcement_html: "%{name} a créé une nouvelle annonce %{target}"
-        create_canonical_email_block_html: "%{name} a bloqué l’e-mail avec le hachage %{target}"
+        create_canonical_email_block_html: "%{name} a bloqué le courriel avec le hachage %{target}"
         create_custom_emoji_html: "%{name} a téléversé un nouvel émoji %{target}"
         create_domain_allow_html: "%{name} a autorisé la fédération avec le domaine %{target}"
         create_domain_block_html: "%{name} a bloqué le domaine %{target}"
@@ -245,7 +245,7 @@ fr:
         create_user_role_html: "%{name} a créé le rôle %{target}"
         demote_user_html: "%{name} a rétrogradé l'utilisateur·rice %{target}"
         destroy_announcement_html: "%{name} a supprimé l'annonce %{target}"
-        destroy_canonical_email_block_html: "%{name} a débloqué l'email avec le hash %{target}"
+        destroy_canonical_email_block_html: "%{name} a débloqué le courriel avec le hachage %{target}"
         destroy_custom_emoji_html: "%{name} a supprimé l'émoji %{target}"
         destroy_domain_allow_html: "%{name} a rejeté la fédération avec le domaine %{target}"
         destroy_domain_block_html: "%{name} a débloqué le domaine %{target}"
@@ -275,7 +275,7 @@ fr:
         silence_account_html: "%{name} a limité le compte de %{target}"
         suspend_account_html: "%{name} a suspendu le compte de %{target}"
         unassigned_report_html: "%{name} a désassigné le signalement %{target}"
-        unblock_email_account_html: "%{name} a débloqué l'adresse courriel de %{target}"
+        unblock_email_account_html: "%{name} a débloqué l’adresse de courriel de %{target}"
         unsensitive_account_html: "%{name} a enlevé le marquage comme sensible du média de %{target}"
         unsilence_account_html: "%{name} a annulé la limitation du compte de %{target}"
         unsuspend_account_html: "%{name} a réactivé le compte de %{target}"
@@ -342,10 +342,10 @@ fr:
       updated_msg: Émoji mis à jour avec succès !
       upload: Téléverser
     dashboard:
-      active_users: utilisateurs actifs
+      active_users: comptes actifs
       interactions: interactions
       media_storage: Stockage des médias
-      new_users: nouveaux utilisateurs
+      new_users: nouveaux comptes
       opened_reports: rapports ouverts
       pending_appeals_html:
         one: "<strong>%{count}</strong> appel en attente"
@@ -398,7 +398,7 @@ fr:
           suspend: Suspendre
         title: Nouveau blocage de domaine
       no_domain_block_selected: Aucun blocage de domaine n'a été modifié car aucun n'a été sélectionné
-      not_permitted: Vous n’êtes pas autorisé à effectuer cette action
+      not_permitted: Vous n’êtes pas autorisé⋅e à effectuer cette action
       obfuscate: Obfusquer le nom de domaine
       obfuscate_hint: Obfusquer partiellement le nom de domaine dans la liste si la publication de la liste des limitations de domaine est activée
       private_comment: Commentaire privé
@@ -432,12 +432,12 @@ fr:
       title: Blocage de domaines de courriel
     export_domain_allows:
       new:
-        title: Autoriser l'importation de domaine
+        title: Importer les autorisations de domaine
       no_file: Aucun fichier sélectionné
     export_domain_blocks:
       import:
-        description_html: Vous êtes sur le point d'importer une liste de blocs de domaine. Veuillez examiner cette liste très attentivement, spécialement si vous n'êtes pas l'auteur de cette liste.
-        existing_relationships_warning: Relations de suivi existantes
+        description_html: Vous êtes sur le point d'importer une liste de bloqueurs de domaine. Veuillez examiner cette liste très attentivement, surtout si vous ne l'avez pas créée vous-même.
+        existing_relationships_warning: Relations d'abonnement existantes
         private_comment_description_html: 'Pour vous aider à savoir d''où proviennent les blocages importés, ceux-ci seront créés avec le commentaire privé suivant : <q>%{comment}</q>'
         private_comment_template: Importé depuis %{source} le %{date}
         title: Importer des blocages de domaine
@@ -558,7 +558,7 @@ fr:
       pending: En attente de l’approbation du relai
       save_and_enable: Sauvegarder et activer
       setup: Paramétrer une connexion de relais
-      signatures_not_enabled: Les relais ne fonctionneront pas correctement lorsque le mode sécurisé ou le mode liste blanche est activé
+      signatures_not_enabled: Les relais peuvent ne pas fonctionner correctement lorsque les modes sécurisé ou de fédération limitée sont activés
       status: Statut
       title: Relais
     report_notes:
@@ -729,11 +729,11 @@ fr:
         preamble: Contrôle comment le contenu créé par les utilisateurs est enregistré et stocké dans Mastodon.
         title: Rétention du contenu
       default_noindex:
-        desc_html: Affecte tous les utilisateurs qui n'ont pas modifié ce paramètre eux-mêmes
-        title: Ne pas indexer par défaut les utilisateurs dans les moteurs de recherche
+        desc_html: Affecte tous les comptes qui n'ont pas modifié ce paramètre
+        title: Par défaut, ne pas indexer les comptes dans les moteurs de recherche
       discovery:
         follow_recommendations: Suivre les recommandations
-        preamble: Faire apparaître un contenu intéressant est essentiel pour interagir avec de nouveaux utilisateurs qui ne connaissent peut-être personne sur Mastodonte. Contrôlez le fonctionnement des différentes fonctionnalités de découverte sur votre serveur.
+        preamble: Il est essentiel de donner de la visibilité à des contenus intéressants pour attirer des utilisateur⋅rice⋅s néophytes qui ne connaissent peut-être personne sur Mastodon. Contrôlez le fonctionnement des différentes fonctionnalités de découverte sur votre serveur.
         profile_directory: Annuaire des profils
         public_timelines: Fils publics
         publish_discovered_servers: Publier les serveurs découverts
@@ -966,7 +966,7 @@ fr:
     apply_for_account: Demander un compte
     change_password: Mot de passe
     confirmations:
-      wrong_email_hint: Si cette adresse courriel est incorrecte, vous pouvez la modifier dans vos paramètres de compte.
+      wrong_email_hint: Si cette adresse de courriel est incorrecte, vous pouvez la modifier dans vos paramètres de compte.
     delete_account: Supprimer le compte
     delete_account_html: Si vous désirez supprimer votre compte, vous pouvez <a href="%{path}">cliquer ici</a>. Il vous sera demandé de confirmer cette action.
     description:
@@ -1003,7 +1003,7 @@ fr:
       email_settings_hint_html: Le courriel de confirmation a été envoyé à %{email}. Si cette adresse de courriel n’est pas correcte, vous pouvez la modifier dans les paramètres du compte.
       title: Configuration
     sign_in:
-      preamble_html: Connectez-vous avec vos identifiants <strong>%{domain}</strong> . Si votre compte est hébergé sur un autre serveur, vous ne pourrez pas vous connecter ici.
+      preamble_html: Connectez-vous avec vos identifiants sur <strong>%{domain}</strong>. Si votre compte est hébergé sur un autre serveur, vous ne pourrez pas vous connecter ici.
       title: Se connecter à %{domain}
     sign_up:
       preamble: Avec un compte sur ce serveur Mastodon, vous serez en mesure de suivre toute autre personne sur le réseau, quel que soit l’endroit où son compte est hébergé.
@@ -1059,7 +1059,7 @@ fr:
   deletes:
     challenge_not_passed: Les renseignements que vous avez entrés n'étaient pas exacts
     confirm_password: Entrez votre mot de passe actuel pour vérifier votre identité
-    confirm_username: Entrez votre nom d'utilisateur pour confirmer la procédure
+    confirm_username: Entrez votre identifiant pour confirmer la procédure
     proceed: Supprimer le compte
     success_msg: Votre compte a été supprimé avec succès
     warning:
@@ -1396,7 +1396,7 @@ fr:
     activity: Activité du compte
     confirm_follow_selected_followers: Voulez-vous vraiment suivre les abonné⋅e⋅s sélectionné⋅e⋅s ?
     confirm_remove_selected_followers: Voulez-vous vraiment supprimer les abonné⋅e⋅s sélectionné⋅e⋅s ?
-    confirm_remove_selected_follows: Voulez-vous vraiment suivre les abonnements sélectionnés ?
+    confirm_remove_selected_follows: Voulez-vous vraiment supprimer les abonnements sélectionnés ?
     dormant: Dormant
     follow_selected_followers: Suivre les abonné·e·s sélectionné·e·s
     followers: Abonné·e
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 4f2f820a7..288d56ca5 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -265,7 +265,7 @@ ja:
         reject_user_html: "%{name}さんが%{target}さんからの登録を拒否しました"
         remove_avatar_user_html: "%{name}さんが%{target}さんのアイコンを削除しました"
         reopen_report_html: "%{name}さんが通報 %{target}を未解決に戻しました"
-        resend_user_html: "%{name} が %{target} の確認メールを再送信しました"
+        resend_user_html: "%{name}さんが%{target}の確認メールを再送信しました"
         reset_password_user_html: "%{name}さんが%{target}さんのパスワードをリセットしました"
         resolve_report_html: "%{name}さんが通報 %{target}を解決済みにしました"
         sensitive_account_html: "%{name}さんが%{target}さんのメディアを閲覧注意にマークしました"
@@ -433,7 +433,7 @@ ja:
         private_comment_description_html: 'ブロックのインポート元を判別できるようにするため、ブロックは次のプライベートコメントを追加してインポートされます: <q>%{comment}</q>'
         private_comment_template: "%{source} から %{date} にインポートしました"
         title: ドメインブロックをインポート
-      invalid_domain_block: '次のエラーのため、1つ以上のドメインブロックがスキップされました: %{error}'
+      invalid_domain_block: 'エラーが発生したため、ブロックできなかったドメインがあります: %{error}'
       new:
         title: ドメインブロックをインポート
       no_file: ファイルが選択されていません
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 557e499f3..2f362ab66 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -72,7 +72,7 @@ ko:
       follows: 팔로우
       header: 헤더
       inbox_url: 수신함 URL
-      invite_request_text: 가입 하려는 이유
+      invite_request_text: 가입하려는 이유
       invited_by: 초대자
       ip: IP
       joined: 가입
@@ -495,7 +495,7 @@ ko:
       destroyed_msg: "%{domain}의 데이터는 곧바로 지워지도록 대기열에 들어갔습니다."
       empty: 도메인이 하나도 없습니다.
       known_accounts:
-        other: "%{count}개의 알려진 계정"
+        other: "%{count} 개의 알려진 계정"
       moderation:
         all: 모두
         limited: 제한됨
@@ -594,7 +594,7 @@ ko:
         create_and_resolve: 종결 및 참고사항 기재
         create_and_unresolve: 재검토 및 참고사항 기재
         delete: 삭제
-        placeholder: 어떤 대응을 했는지 서설 또는 그 밖의 관련된 갱신 사항들
+        placeholder: 어떤 대응을 했는지 설명 또는 그 밖의 관련된 갱신 사항들
         title: 참고사항
       notes_description_html: 확인하고 다른 중재자나 미래의 자신을 위해 기록을 작성합니다
       processed_msg: '신고 #%{id}가 정상적으로 처리되었습니다'
@@ -766,7 +766,7 @@ ko:
       reblogs: 리블로그
       status_changed: 게시물 변경됨
       title: 계정 게시물
-      trending: 유행중
+      trending: 유행 중
       visibility: 공개 설정
       with_media: 미디어 있음
     strikes:
@@ -856,7 +856,7 @@ ko:
         used_by_over_week:
           other: 지난 주 동안 %{count} 명의 사람들이 사용했습니다
       title: 유행
-      trending: 유행중
+      trending: 유행 중
     warning_presets:
       add_new: 새로 추가
       delete: 삭제
@@ -1167,7 +1167,7 @@ ko:
         hint: 이 필터는 다른 기준에 관계 없이 선택된 개별적인 게시물들에 적용됩니다. 웹 인터페이스에서 더 많은 게시물들을 이 필터에 추가할 수 있습니다.
         title: 필터링된 게시물
   footer:
-    trending_now: 지금 유행중
+    trending_now: 지금 유행 중
   generic:
     all: 모두
     all_items_on_page_selected_html:
@@ -1243,7 +1243,7 @@ ko:
     title: 인증 이력
   media_attachments:
     validations:
-      images_and_video: 이미 사진이 첨부 된 게시물엔 동영상을 첨부 할 수 없습니다
+      images_and_video: 이미 사진이 첨부된 게시물엔 동영상을 첨부 할 수 없습니다
       not_ready: 처리가 끝나지 않은 파일은 첨부할 수 없습니다. 잠시 후에 다시 시도해 주세요!
       too_many: 최대 4개까지 첨부할 수 있습니다
   migrations:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 671d998d9..9aa13fd45 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -638,6 +638,11 @@ ru:
       status: Статус
       statuses: Содержимое относящееся к жалобе
       statuses_description_html: Нарушающее правила содержимое будет процитировано при коммуникации с фигурирующим в жалобе аккаунтом
+      summary:
+        close_report: 'Отметить жалобу #%{id} как решённую'
+        close_reports_html: Отметить <strong>все</strong> жалобы на <strong>@%{acct}</strong> как разрешённые
+        delete_data_html: Удалить профиль и контент <strong>@%{acct}</strong> через 30 дней, если за это время они не будут разблокированы
+        preview_preamble_html: "<strong>@%{acct}</strong> получит предупреждение со следующим содержанием:"
       target_origin: Происхождение объекта жалобы
       title: Жалобы
       unassign: Снять назначение
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 3b5738375..bcabca034 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -91,11 +91,13 @@ ca:
         site_short_description: Una descripció curta per a ajudar a identificar de manera única el teu servidor. Qui el fa anar, per a qui és?
         site_terms: Fes servir la teva pròpia política de privacitat o deixa-ho en blanc per a la per defecte. Es pot estructurar amb format Markdown.
         site_title: Com pot la gent referir-se al teu servidor a part del seu nom de domini.
+        status_page_url: URL de la pàgina on els usuaris poden veure l'estat d'aquest servidor durant una interrupció del servei
         theme: El tema que els visitants i els nous usuaris veuen.
         thumbnail: Una imatge d'aproximadament 2:1 que es mostra al costat la informació del teu servidor.
         timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per els tuts més recents en el teu servidor.
         trendable_by_default: Omet la revisió manual del contingut en tendència. Els articles individuals poden encara ser eliminats després del fet.
         trends: Les tendències mostren quins tuts, etiquetes i notícies estan guanyant força en el teu servidor.
+        trends_as_landing_page: Mostra el contingut en tendència als usuaris i visitants no autenticats enlloc de la descripció d'aquest servidor. Requereix que les tendències estiguin activades.
       form_challenge:
         current_password: Estàs entrant en una àrea segura
       imports:
@@ -251,11 +253,13 @@ ca:
         site_short_description: Descripció del servidor
         site_terms: Política de Privacitat
         site_title: Nom del servidor
+        status_page_url: URL de la pàgina de l'estat
         theme: Tema per defecte
         thumbnail: Miniatura del servidor
         timeline_preview: Permet l'accés no autenticat a les línies de temps públiques
         trendable_by_default: Permet tendències sense revisió prèvia
         trends: Activa les tendències
+        trends_as_landing_page: Fer servir les tendències com a pàgina inicial
       interactions:
         must_be_follower: Bloqueja les notificacions de persones que no em segueixen
         must_be_following: Bloqueja les notificacions de persones no seguides
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index d1244b24e..7025c6385 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -91,11 +91,13 @@ cs:
         site_short_description: Krátký popis, který pomůže jednoznačně identifikovat váš server. Kdo ho provozuje, pro koho je určen?
         site_terms: Použijte vlastní zásady ochrany osobních údajů nebo ponechte prázdné pro použití výchozího nastavení. Může být strukturováno pomocí Markdown syntaxe.
         site_title: Jak mohou lidé odkazovat na váš server kromě názvu domény.
+        status_page_url: URL stránky, kde mohou lidé vidět stav tohoto serveru během výpadku
         theme: Vzhled stránky, který vidí noví a odhlášení uživatelé.
         thumbnail: Přibližně 2:1 obrázek zobrazený vedle informací o vašem serveru.
         timeline_preview: Odhlášení uživatelé budou moci procházet nejnovější veřejné příspěvky na serveru.
         trendable_by_default: Přeskočit manuální kontrolu populárního obsahu. Jednotlivé položky mohou být odstraněny z trendů později.
         trends: Trendy zobrazují, které příspěvky, hashtagy a zprávy získávají na serveru pozornost.
+        trends_as_landing_page: Zobrazit populární obsah odhlášeným uživatelům a návštěvníkům místo popisu tohoto serveru. Vyžaduje povolení trendů.
       form_challenge:
         current_password: Vstupujete do zabezpečeného prostoru
       imports:
@@ -251,11 +253,13 @@ cs:
         site_short_description: Popis serveru
         site_terms: Ochrana osobních údajů
         site_title: Název serveru
+        status_page_url: URL stránky se stavem
         theme: Výchozí motiv
         thumbnail: Miniatura serveru
         timeline_preview: Povolit neověřený přístup k veřejným časovým osám
         trendable_by_default: Povolit trendy bez předchozí revize
         trends: Povolit trendy
+        trends_as_landing_page: Použít trendy jako vstupní stránku
       interactions:
         must_be_follower: Blokovat oznámení od lidí, kteří vás nesledují
         must_be_following: Blokovat oznámení od lidí, které nesledujete
diff --git a/config/locales/simple_form.da.yml b/config/locales/simple_form.da.yml
index 0958426b6..3116f02d8 100644
--- a/config/locales/simple_form.da.yml
+++ b/config/locales/simple_form.da.yml
@@ -88,11 +88,13 @@ da:
         site_short_description: En kort beskrivelse mhp. entydigt at kunne identificere denne server. Hvem kører den, hvem er den for?
         site_terms: Brug egen fortrolighedspolitik eller lad stå tomt for standardpolitikken. Kan struktureres med Markdown-syntaks.
         site_title: Hvordan folk kan henvise til serveren udover domænenavnet.
+        status_page_url: URL'en til en side, hvor status for denne server kan ses under en afbrydelse
         theme: Tema, som udloggede besøgende og nye brugere ser.
         thumbnail: Et ca. 2:1 billede vist sammen med serveroplysningerne.
         timeline_preview: Udloggede besøgende kan gennemse serverens seneste offentlige indlæg.
         trendable_by_default: Spring manuel gennemgang af trendindhold over. Individuelle elementer kan stadig fjernes fra trends efter kendsgerningen.
         trends: Tendenser viser, hvilke indlæg, hashtags og nyheder opnår momentum på serveren.
+        trends_as_landing_page: Vis tendensindhold til udloggede brugere og besøgende i stedet for en beskrivelse af denne server. Kræver, at tendenser er aktiveret.
       form_challenge:
         current_password: Du bevæger dig ind på et sikkert område
       imports:
@@ -247,6 +249,7 @@ da:
         site_short_description: Serverbeskrivelse
         site_terms: Fortrolighedspolitik
         site_title: Servernavn
+        status_page_url: Statusside-URL
         theme: Standardtema
         thumbnail: Serverminiaturebillede
         timeline_preview: Tillad ikke-godkendt adgang til offentlige tidslinjer
diff --git a/config/locales/simple_form.de.yml b/config/locales/simple_form.de.yml
index 8c48db793..2ee277100 100644
--- a/config/locales/simple_form.de.yml
+++ b/config/locales/simple_form.de.yml
@@ -91,11 +91,13 @@ de:
         site_short_description: Eine kurze Beschreibung zur eindeutigen Identifizierung des Servers. Wer betreibt ihn, für wen ist er bestimmt?
         site_terms: Verwende eine eigene Datenschutzerklärung oder lasse das Feld leer, um die allgemeine Vorlage zu verwenden. Kann mit der Markdown-Syntax formatiert werden.
         site_title: Wie Personen neben dem Domainnamen auf deinen Server verweisen können.
+        status_page_url: URL einer Seite, auf der der Status des Servers während eines Ausfalls angezeigt werden kann
         theme: Das Design, das abgemeldete Besucher und neue Benutzer sehen.
         thumbnail: Ein Bild ungefähr im 2:1-Format, das neben den Server-Informationen angezeigt wird.
         timeline_preview: Besucher*innen und ausgeloggte Benutzer*innen können die neuesten öffentlichen Beiträge dieses Servers aufrufen.
         trendable_by_default: Manuelles Überprüfen angesagter Inhalte überspringen. Einzelne Elemente können später noch aus den Trends entfernt werden.
         trends: Trends zeigen, welche Beiträge, Hashtags und Nachrichten auf deinem Server immer beliebter werden.
+        trends_as_landing_page: Dies zeigt nicht angemeldeten Personen Trendinhalte anstelle einer Beschreibung des Servers an. Erfordert, dass Trends aktiviert sind.
       form_challenge:
         current_password: Du betrittst einen gesicherten Bereich
       imports:
@@ -202,7 +204,7 @@ de:
         setting_disable_swiping: Wischgesten deaktivieren
         setting_display_media: Medien-Anzeige
         setting_display_media_default: Standard
-        setting_display_media_hide_all: Alle Medien verstecken
+        setting_display_media_hide_all: Alle Medien verbergen
         setting_display_media_show_all: Alle Medien anzeigen
         setting_expand_spoilers: Beiträge mit Inhaltswarnung immer ausklappen
         setting_hide_network: Deine Follower und „Folge ich“ nicht anzeigen
@@ -251,11 +253,13 @@ de:
         site_short_description: Serverbeschreibung
         site_terms: Datenschutzerklärung
         site_title: Servername
+        status_page_url: URL der Statusseite
         theme: Standard-Design
         thumbnail: Vorschaubild des Servers
         timeline_preview: Nicht-authentifizierten Zugriff auf die öffentliche Timeline gestatten
         trendable_by_default: Trends ohne vorherige Überprüfung erlauben
         trends: Trends aktivieren
+        trends_as_landing_page: Trends als Landingpage verwenden
       interactions:
         must_be_follower: Benachrichtigungen von Profilen verbergen, die mir nicht folgen
         must_be_following: Benachrichtigungen von Profilen verbergen, denen ich nicht folge
diff --git a/config/locales/simple_form.el.yml b/config/locales/simple_form.el.yml
index 0a52204c0..d28435c7d 100644
--- a/config/locales/simple_form.el.yml
+++ b/config/locales/simple_form.el.yml
@@ -189,6 +189,8 @@ el:
         registrations_mode: Ποιος μπορεί να εγγραφεί
         site_contact_email: E-mail επικοινωνίας
         site_contact_username: Όνομα χρήστη επικοινωνίας
+        status_page_url: URL σελίδας κατάστασης
+        trends_as_landing_page: Χρήση των τάσεων ως σελίδα προορισμού
       interactions:
         must_be_follower: Μπλόκαρε τις ειδοποιήσεις από όσους δεν σε ακολουθούν
         must_be_following: Μπλόκαρε τις ειδοποιήσεις από όσους δεν ακολουθείς
diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml
index d66a708af..27aa80c42 100644
--- a/config/locales/simple_form.en-GB.yml
+++ b/config/locales/simple_form.en-GB.yml
@@ -91,11 +91,13 @@ en-GB:
         site_short_description: A short description to help uniquely identify your server. Who is running it, who is it for?
         site_terms: Use your own privacy policy or leave blank to use the default. Can be structured with Markdown syntax.
         site_title: How people may refer to your server besides its domain name.
+        status_page_url: URL of a page where people can see the status of this server during an outage
         theme: Theme that logged out visitors and new users see.
         thumbnail: A roughly 2:1 image displayed alongside your server information.
         timeline_preview: Logged out visitors will be able to browse the most recent public posts available on the server.
         trendable_by_default: Skip manual review of trending content. Individual items can still be removed from trends after the fact.
         trends: Trends show which posts, hashtags and news stories are gaining traction on your server.
+        trends_as_landing_page: Show trending content to logged-out users and visitors instead of a description of this server. Requires trends to be enabled.
       form_challenge:
         current_password: You are entering a secure area
       imports:
@@ -251,11 +253,13 @@ en-GB:
         site_short_description: Server description
         site_terms: Privacy Policy
         site_title: Server name
+        status_page_url: Status page URL
         theme: Default theme
         thumbnail: Server thumbnail
         timeline_preview: Allow unauthenticated access to public timelines
         trendable_by_default: Allow trends without prior review
         trends: Enable trends
+        trends_as_landing_page: Use trends as the landing page
       interactions:
         must_be_follower: Block notifications from non-followers
         must_be_following: Block notifications from people you don't follow
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index d01f0ae75..96b0131ef 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -91,6 +91,7 @@ en:
         site_short_description: A short description to help uniquely identify your server. Who is running it, who is it for?
         site_terms: Use your own privacy policy or leave blank to use the default. Can be structured with Markdown syntax.
         site_title: How people may refer to your server besides its domain name.
+        status_page_url: URL of a page where people can see the status of this server during an outage
         theme: Theme that logged out visitors and new users see.
         thumbnail: A roughly 2:1 image displayed alongside your server information.
         timeline_preview: Logged out visitors will be able to browse the most recent public posts available on the server.
@@ -252,6 +253,7 @@ en:
         site_short_description: Server description
         site_terms: Privacy Policy
         site_title: Server name
+        status_page_url: Status page URL
         theme: Default theme
         thumbnail: Server thumbnail
         timeline_preview: Allow unauthenticated access to public timelines
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index 7537f0a4a..4f1a6341b 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -245,6 +245,7 @@ eo:
         site_short_description: Priskribo de servilo
         site_terms: Privateca politiko
         site_title: Nomo de la servilo
+        status_page_url: URL de la paĝo de stato
         theme: Implicita etoso
         thumbnail: Bildeto de servilo
         timeline_preview: Permesi la neaŭtentigitan aliron al la publikaj templinioj
diff --git a/config/locales/simple_form.es-AR.yml b/config/locales/simple_form.es-AR.yml
index 0fdbfd937..bcceccfb1 100644
--- a/config/locales/simple_form.es-AR.yml
+++ b/config/locales/simple_form.es-AR.yml
@@ -91,11 +91,13 @@ es-AR:
         site_short_description: Una breve descripción para ayudar a identificar individualmente a tu servidor. ¿Quién lo administra, a quién va dirigido?
         site_terms: Usá tu propia política de privacidad o dejala en blanco para usar la predeterminada. Puede estructurarse con sintaxis Markdown.
         site_title: Cómo la gente puede referirse a tu servidor además de su nombre de dominio.
+        status_page_url: Dirección web de una página donde la gente puede ver el estado de este servidor durante un apagón
         theme: El tema que los visitantes no registrados y los nuevos usuarios ven.
         thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor.
         timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor.
         trendable_by_default: Omití la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias.
         trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor.
+        trends_as_landing_page: Mostrar contenido en tendencia para usuarios que no iniciaron sesión y visitantes, en lugar de una descripción de este servidor. Requiere que las tendencias estén habilitadas.
       form_challenge:
         current_password: Estás ingresando en un área segura
       imports:
@@ -251,11 +253,13 @@ es-AR:
         site_short_description: Descripción del servidor
         site_terms: Política de privacidad
         site_title: Nombre del servidor
+        status_page_url: Dirección web de la página de estado
         theme: Tema predeterminado
         thumbnail: Miniatura del servidor
         timeline_preview: Permitir el acceso no autenticado a las líneas temporales públicas
         trendable_by_default: Permitir tendencias sin revisión previa
         trends: Habilitar tendencias
+        trends_as_landing_page: Usar las tendencias como la página de destino
       interactions:
         must_be_follower: Bloquear notificaciones de cuentas que no te siguen
         must_be_following: Bloquear notificaciones de cuentas que no seguís
diff --git a/config/locales/simple_form.es-MX.yml b/config/locales/simple_form.es-MX.yml
index 0f0f5bb07..52d8974f2 100644
--- a/config/locales/simple_form.es-MX.yml
+++ b/config/locales/simple_form.es-MX.yml
@@ -91,11 +91,13 @@ es-MX:
         site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido?
         site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown.
         site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio.
+        status_page_url: URL de una página donde las personas pueden ver el estado de este servidor durante una interrupción
         theme: El tema que los visitantes no registrados y los nuevos usuarios ven.
         thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor.
         timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor.
         trendable_by_default: Omitir la revisión manual del contenido en tendencia. Los elementos individuales aún podrán eliminarse de las tendencias.
         trends: Las tendencias muestran qué mensajes, etiquetas y noticias están ganando tracción en tu servidor.
+        trends_as_landing_page: Mostrar contenido en tendencia para usuarios y visitantes desconectados en lugar de una descripción de este servidor. Requiere tendencias para ser habilitado.
       form_challenge:
         current_password: Estás entrando en un área segura
       imports:
@@ -251,11 +253,13 @@ es-MX:
         site_short_description: Descripción del servidor
         site_terms: Política de Privacidad
         site_title: Nombre del servidor
+        status_page_url: URL de página de estado
         theme: Tema por defecto
         thumbnail: Miniatura del servidor
         timeline_preview: Permitir el acceso no autenticado a las líneas de tiempo públicas
         trendable_by_default: Permitir tendencias sin revisión previa
         trends: Habilitar tendencias
+        trends_as_landing_page: Usar tendencias como página de destino
       interactions:
         must_be_follower: Bloquear notificaciones de personas que no te siguen
         must_be_following: Bloquear notificaciones de personas que no sigues
diff --git a/config/locales/simple_form.es.yml b/config/locales/simple_form.es.yml
index 759297930..fc8c332e0 100644
--- a/config/locales/simple_form.es.yml
+++ b/config/locales/simple_form.es.yml
@@ -91,6 +91,7 @@ es:
         site_short_description: Una breve descripción para ayudar a identificar su servidor de forma única. ¿Quién lo administra, a quién va dirigido?
         site_terms: Utiliza tu propia política de privacidad o déjala en blanco para usar la predeterminada Puede estructurarse con formato Markdown.
         site_title: Cómo puede referirse la gente a tu servidor además de por el nombre de dominio.
+        status_page_url: URL de la página donde la gente pueda ver el estado de este servidor durante la exclusión
         theme: El tema que los visitantes no registrados y los nuevos usuarios ven.
         thumbnail: Una imagen de aproximadamente 2:1 se muestra junto a la información de tu servidor.
         timeline_preview: Los visitantes no registrados podrán navegar por los mensajes públicos más recientes disponibles en el servidor.
diff --git a/config/locales/simple_form.et.yml b/config/locales/simple_form.et.yml
index 7e5a04ab2..8b7dace23 100644
--- a/config/locales/simple_form.et.yml
+++ b/config/locales/simple_form.et.yml
@@ -91,11 +91,13 @@ et:
         site_short_description: Lühikirjeldus serveri unikaalseks identifitseerimiseks. Kes haldab, kellele mõeldud?
         site_terms: Lisa siia serveri isikuandmete kaitse põhimõtted või jäta tühjaks, et kasutada geneerilisi. Tekstis on lubatud Markdowni süntaks.
         site_title: Kuidas inimesed saavad serverile viidata, lisaks domeeninimele.
+        status_page_url: Lehe URL, kus saab serveri maas oleku ajal näha serveri olekut
         theme: Teema, mida näevad sisenemata ning uued kasutajad.
         thumbnail: Umbes 2:1 mõõdus pilt serveri informatsiooni kõrval.
         timeline_preview: Sisenemata külastajatel on võimalik sirvida viimaseid avalikke postitusi serveril.
         trendable_by_default: Populaarse sisu ülevaatuse vahele jätmine. Pärast seda on siiski võimalik üksikuid üksusi trendidest eemaldada.
         trends: Populaarsuse suunad näitavad millised postitused, sildid ja uudislood koguvad sinu serveris tähelepanu.
+        trends_as_landing_page: Näitab välja logitud kasutajatele ja külalistele serveri kirjelduse asemel populaarset sisu. Populaarne sisu (trendid) peab selleks olema sisse lülitatud.
       form_challenge:
         current_password: Turvalisse alasse sisenemine
       imports:
@@ -251,11 +253,13 @@ et:
         site_short_description: Serveri lühikirjeldus
         site_terms: Isikuandmete kaitse
         site_title: Serveri nimi
+        status_page_url: Oleku lehe URL
         theme: Vaikmisi teema
         thumbnail: Serveri pisipilt
         timeline_preview: Luba autentimata ligipääs avalikele ajajoontele
         trendable_by_default: Luba trendid eelneva ülevaatuseta
         trends: Luba trendid
+        trends_as_landing_page: Kasuta maabumislehena lehte Populaarne
       interactions:
         must_be_follower: Keela teavitused mittejälgijatelt
         must_be_following: Keela teavitused kasutajatelt, keda sa ei jälgi
diff --git a/config/locales/simple_form.eu.yml b/config/locales/simple_form.eu.yml
index 29042deb5..175e0c96d 100644
--- a/config/locales/simple_form.eu.yml
+++ b/config/locales/simple_form.eu.yml
@@ -91,11 +91,13 @@ eu:
         site_short_description: Zure zerbitzaria identifikatzen laguntzen duen deskribapen laburra. Nork du ardura? Nori zuzendua dago?
         site_terms: Erabili zure pribatutasun politika edo hutsik utzi lehenetsia erabiltzeko. Markdown sintaxiarekin egituratu daiteke.
         site_title: Jendeak nola deituko dion zure zerbitzariari, domeinu-izenaz gain.
+        status_page_url: Kanporatua dagoen jendeak zerbitzari honen egoera ikus dezaten gune baten URL
         theme: Saioa hasi gabeko erabiltzaileek eta berriek ikusiko duten gaia.
         thumbnail: Zerbitzariaren informazioaren ondoan erakusten den 2:1 inguruko irudia.
         timeline_preview: Saioa hasi gabeko erabiltzaileek ezingo dituzte arakatu zerbitzariko bidalketa publiko berrienak.
         trendable_by_default: Saltatu joeretako edukiaren eskuzko berrikuspena. Ondoren elementuak banan-bana kendu daitezke joeretatik.
         trends: Joeretan zure zerbitzarian bogan dauden bidalketa, traola eta albisteak erakusten dira.
+        trends_as_landing_page: Saioa hasita ez duten erabiltzaileei eta bisitariei pil-pilean dagoen edukia erakutsi zerbitzari honen deskribapena erakutsi ordez. Joerak aktibatuak edukitzea beharrezkoa da.
       form_challenge:
         current_password: Zonalde seguruan sartzen ari zara
       imports:
@@ -251,11 +253,13 @@ eu:
         site_short_description: Zerbitzariaren deskribapena
         site_terms: Pribatutasun politika
         site_title: Zerbitzariaren izena
+        status_page_url: Egoera-orriaren URL
         theme: Lehenetsitako gaia
         thumbnail: Zerbitzariaren koadro txikia
         timeline_preview: Onartu autentifikatu gabeko sarbidea denbora lerro publikoetara
         trendable_by_default: Onartu joerak aurrez berrikusi gabe
         trends: Gaitu joerak
+        trends_as_landing_page: Joerak erabili helburuko orri gisa
       interactions:
         must_be_follower: Blokeatu jarraitzaile ez direnen jakinarazpenak
         must_be_following: Blokeatu zuk jarraitzen ez dituzu horien jakinarazpenak
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index ffcf16e01..39c6befdf 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -18,6 +18,7 @@ fi:
           disable: Estä käyttäjää käyttämästä tiliään, mutta älä poista tai piilota sen sisältöä.
           none: Käytä tätä lähettääksesi varoituksen käyttäjälle käynnistämättä mitään muita toimintoja.
           sensitive: Pakota kaikki tämän käyttäjän mediatiedostot arkaluontoisiksi.
+          suspend: Estä kaikki vuorovaikutus tältä -tai tälle tilille ja poista sen kaikki sisältö. Päätös voidaan peruuttaa 30 päivän aikana. Sulkee kaikki raportit tätä tiliä vasten.
         warning_preset_id: Valinnainen. Voit silti lisätä mukautetun tekstin esiasetuksen loppuun
       announcement:
         all_day: Kun valittu, vain valittu aikaväli näytetään
@@ -89,11 +90,13 @@ fi:
         site_short_description: Lyhyt kuvaus auttaa yksilöimään palvelimesi. Kuka sitä johtaa, kenelle se on tarkoitettu?
         site_terms: Käytä omaa tietosuojakäytäntöä tai jätä tyhjäksi, jos haluat käyttää oletusta. Voidaan jäsentää Markdown-syntaksilla.
         site_title: Kuinka ihmiset voivat viitata palvelimeen sen verkkotunnuksen lisäksi.
+        status_page_url: URL-osoite, jonka kautta palvelimen tila voidaan tarkastaa sen ollessa tavoittamattomissa
         theme: Teema, jonka uloskirjautuneet vierailijat ja uudet käyttäjät näkevät.
         thumbnail: Noin 2:1 kuva näytetään palvelimen tietojen rinnalla.
         timeline_preview: Uloskirjautuneet vierailijat voivat selata uusimpia julkisia viestejä, jotka ovat saatavilla palvelimella.
         trendable_by_default: Ohita suositun sisällön manuaalinen tarkistus. Yksittäisiä kohteita voidaan edelleen poistaa jälkikäteen.
         trends: Trendit osoittavat, mitkä julkaisut, aihetunnisteet ja uutiset ovat saamassa vetoa palvelimellasi.
+        trends_as_landing_page: Näytä suosittu sisältö uloskirjautuneille käyttäjille ja kävijöille palvelimen kuvauksen sijaan. Edellyttää suositun sisällön käyttöönottoa.
       form_challenge:
         current_password: Olet menossa suojatulle alueelle
       imports:
@@ -249,11 +252,13 @@ fi:
         site_short_description: Palvelimen kuvaus
         site_terms: Tietosuojakäytäntö
         site_title: Palvelimen nimi
+        status_page_url: Tilasivun URL-osoite
         theme: Oletusteema
         thumbnail: Palvelimen pikkukuva
         timeline_preview: Salli todentamaton pääsy julkiselle aikajanalle
         trendable_by_default: Salli trendit ilman ennakkotarkastusta
         trends: Trendit käyttöön
+        trends_as_landing_page: Käytä suosittua sisältöä aloitussivuna
       interactions:
         must_be_follower: Estä ilmoitukset käyttäjiltä, jotka eivät seuraa sinua
         must_be_following: Estä ilmoitukset käyttäjiltä, joita et seuraa
diff --git a/config/locales/simple_form.fo.yml b/config/locales/simple_form.fo.yml
index 36e98f5b7..2713d1f89 100644
--- a/config/locales/simple_form.fo.yml
+++ b/config/locales/simple_form.fo.yml
@@ -91,11 +91,13 @@ fo:
         site_short_description: Ein stutt lýsing at eyðmerkja ambætaran hjá tær. Hvør rekur hann og hvønn er hann til?
         site_terms: Brúka tín egna privatlívspolitikk ella lat vera blankt fyri at brúka tann sjálvsetta. Kann skrivast við Markdown syntaksi.
         site_title: Hvussu fólk kunnu vísa til ambætaran hjá tær útyvir at brúka navnaøkið.
+        status_page_url: Slóð til eina síðu, har ið fólk kunnu síggja støðuna á hesum ambætaranum í sambandi við streymslit
         theme: Uppsetingareyðkenni, sum vitjandi, ið ikki eru ritaði inn, og nýggir brúkarar síggja.
         thumbnail: Ein mynd í lutfallinum 2:1, sum verður víst saman við ambætaraupplýsingunum hjá tær.
         timeline_preview: Vitjandi, sum eru ritaði út, fara at kunna blaða ígjøgnum nýggjastu almennu postarnar, sum eru tøkir á ambætaranum.
         trendable_by_default: Loyp uppum serskilda eftirkannan av tilfari, sum er vælumtókt. Einstakir lutir kunnu framvegis strikast frá listum við vælumtóktum tilfari seinni.
         trends: Listar við vælumtóktum tilfari vísa, hvørjir postar, frámerki og tíðindasøgur hava framburð á tínum ambætara.
+        trends_as_landing_page: Vís vitjandi og brúkarum, sum ikki eru innritaðir, rák í staðin fyri eina lýsing av ambætaranum. Krevur at rák eru virkin.
       form_challenge:
         current_password: Tú ert á veg til eitt trygt øki
       imports:
@@ -251,11 +253,13 @@ fo:
         site_short_description: Ambætaralýsing
         site_terms: Privatlívspolitikkur
         site_title: Ambætaranavn
+        status_page_url: Slóð til støðusíðu
         theme: Sjálvvalt uppsetingareyðkenni
         thumbnail: Ambætarasmámynd
         timeline_preview: Loyv teimum, sum ikki eru ritaði inn, atgongd til almennar tíðarlinjur
         trendable_by_default: Loyv vælumtóktum tilfari uttan at viðgera tað fyrst
         trends: Loyv ráki
+        trends_as_landing_page: Brúka rák sum lendingarsíðu
       interactions:
         must_be_follower: Blokera fráboðanum frá teimum, sum ikki fylgja tær
         must_be_following: Blokera fráboðanum frá teimum, tú ikki fylgir
diff --git a/config/locales/simple_form.fr-QC.yml b/config/locales/simple_form.fr-QC.yml
index 8bba3b541..bc78f0ae6 100644
--- a/config/locales/simple_form.fr-QC.yml
+++ b/config/locales/simple_form.fr-QC.yml
@@ -18,6 +18,8 @@ fr-QC:
           disable: Empêcher l’utilisateur·rice d’utiliser son compte, mais ne pas supprimer ou masquer son contenu.
           none: Utilisez ceci pour envoyer un avertissement à l’utilisateur·rice, sans déclencher aucune autre action.
           sensitive: Forcer toutes les pièces jointes de cet·te utilisateur·rice à être signalées comme sensibles.
+          silence: Empêcher l'utilisateur⋅rice de publier des messages en visibilité publique et cacher tous ses messages et notifications aux comptes non abonnés. Cloture tous les signalements concernant ce compte.
+          suspend: Empêcher toute interaction depuis ou vers ce compte et supprimer son contenu. Réversible dans les 30 jours. Cloture tous les signalements concernant ce compte.
         warning_preset_id: Facultatif. Vous pouvez toujours ajouter un texte personnalisé à la fin de la présélection
       announcement:
         all_day: Coché, seules les dates de l’intervalle de temps seront affichées
@@ -72,6 +74,7 @@ fr-QC:
           hide: Cacher complètement le contenu filtré, faire comme s'il n'existait pas
           warn: Cacher le contenu filtré derrière un avertissement mentionnant le nom du filtre
       form_admin_settings:
+        activity_api_enabled: Nombre de messages publiés localement, de comptes actifs et de nouvelles inscriptions par tranche hebdomadaire
         backups_retention_period: Conserve les archives générées par l'utilisateur selon le nombre de jours spécifié.
         bootstrap_timeline_accounts: Ces comptes seront épinglés en tête de liste des recommandations pour les nouveaux utilisateurs.
         closed_registrations_message: Affiché lorsque les inscriptions sont fermées
@@ -79,6 +82,7 @@ fr-QC:
         custom_css: Vous pouvez appliquer des styles personnalisés sur la version Web de Mastodon.
         mascot: Remplace l'illustration dans l'interface Web avancée.
         media_cache_retention_period: Les fichiers multimédias téléchargés seront supprimés après le nombre de jours spécifiés lorsque la valeur est positive, et seront téléchargés à nouveau sur demande.
+        peers_api_enabled: Une liste de noms de domaine que ce serveur a rencontrés dans le fediverse. Aucune donnée indiquant si vous vous fédérez ou non avec un serveur particulier n'est incluse ici, seulement l'information que votre serveur connaît un autre serveur. Cette option est utilisée par les services qui collectent des statistiques sur la fédération en général.
         profile_directory: L'annuaire des profils répertorie tous les utilisateurs qui ont opté pour être découverts.
         require_invite_text: Lorsque les inscriptions nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif
         site_contact_email: Comment les personnes peuvent vous joindre pour des demandes de renseignements juridiques ou d'assistance.
@@ -227,6 +231,7 @@ fr-QC:
           hide: Cacher complètement
           warn: Cacher derrière un avertissement
       form_admin_settings:
+        activity_api_enabled: Publie des statistiques agrégées sur l'activité des utilisateur⋅rice⋅s dans l'API
         backups_retention_period: Période d'archivage utilisateur
         bootstrap_timeline_accounts: Toujours recommander ces comptes aux nouveaux utilisateurs
         closed_registrations_message: Message personnalisé lorsque les inscriptions ne sont pas disponibles
@@ -234,6 +239,7 @@ fr-QC:
         custom_css: CSS personnalisé
         mascot: Mascotte personnalisée (héritée)
         media_cache_retention_period: Durée de rétention des médias dans le cache
+        peers_api_enabled: Publie la liste des serveurs découverts dans l'API
         profile_directory: Activer l’annuaire des profils
         registrations_mode: Qui peut s’inscrire
         require_invite_text: Exiger une raison pour s’inscrire
diff --git a/config/locales/simple_form.fr.yml b/config/locales/simple_form.fr.yml
index d9398ff88..d395b8517 100644
--- a/config/locales/simple_form.fr.yml
+++ b/config/locales/simple_form.fr.yml
@@ -3,7 +3,7 @@ fr:
   simple_form:
     hints:
       account_alias:
-        acct: Spécifiez le nom d'utilisateur@domaine du compte à partir duquel vous souhaitez migrer
+        acct: Spécifiez l’identifiant@domaine du compte à partir duquel vous souhaitez migrer
       account_migration:
         acct: Spécifiez l’identifiant@domaine du compte vers lequel vous souhaitez migrer
       account_warning_preset:
@@ -35,13 +35,13 @@ fr:
         bot: Signale aux autres que ce compte exécute principalement des actions automatisées et pourrait ne pas être surveillé
         context: Un ou plusieurs contextes où le filtre devrait s’appliquer
         current_password: Par mesure de sécurité, veuillez saisir le mot de passe de ce compte
-        current_username: Pour confirmer, veuillez saisir le nom d'utilisateur de ce compte
+        current_username: Pour confirmer, veuillez saisir l’identifiant de ce compte
         digest: Uniquement envoyé après une longue période d’inactivité en cas de messages personnels reçus pendant votre absence
         discoverable: Permet à votre compte d’être découvert par des inconnus par le biais de recommandations, de tendances et autres fonctionnalités
         email: Vous recevrez un courriel de confirmation
         fields: Vous pouvez avoir jusqu’à 4 éléments affichés en tant que tableau sur votre profil
         header: Au format PNG, GIF ou JPG. %{size} maximum. Sera réduit à %{dimensions}px
-        inbox_url: Copiez l’URL depuis la page d’accueil du relai que vous souhaitez utiliser
+        inbox_url: Copiez l’URL depuis la page d’accueil du relais que vous souhaitez utiliser
         irreversible: Les messages filtrés disparaîtront irrévocablement, même si le filtre est supprimé plus tard
         locale: La langue de l’interface, des courriels et des notifications
         locked: Nécessite que vous approuviez manuellement chaque abonné·e
@@ -59,7 +59,7 @@ fr:
         setting_show_application: Le nom de l’application que vous utilisez pour publier sera affichée dans la vue détaillée de vos messages
         setting_use_blurhash: Les dégradés sont basés sur les couleurs des images cachées mais n’en montrent pas les détails
         setting_use_pending_items: Cacher les mises à jour des fils d’actualités derrière un clic, au lieu de les afficher automatiquement
-        username: Votre nom d’utilisateur sera unique sur %{domain}
+        username: Votre identifiant sera unique sur %{domain}
         whole_word: Si le mot-clé ou la phrase est alphanumérique, alors le filtre ne sera appliqué que s’il correspond au mot entier
       domain_allow:
         domain: Ce domaine pourra récupérer des données de ce serveur et les données entrantes seront traitées et stockées
@@ -78,24 +78,26 @@ fr:
         backups_retention_period: Conserve les archives générées par l'utilisateur selon le nombre de jours spécifié.
         bootstrap_timeline_accounts: Ces comptes seront épinglés en tête de liste des recommandations pour les nouveaux utilisateurs.
         closed_registrations_message: Affiché lorsque les inscriptions sont fermées
-        content_cache_retention_period: Les publications depuis d'autres serveurs seront supprimées après un nombre de jours spécifiés lorsque défini sur une valeur positive. Cela peut être irréversible.
+        content_cache_retention_period: Lorsque la valeur est positive, les messages publiés depuis d'autres serveurs seront supprimés après le nombre de jours défini. Cela peut être irréversible.
         custom_css: Vous pouvez appliquer des styles personnalisés sur la version Web de Mastodon.
         mascot: Remplace l'illustration dans l'interface Web avancée.
-        media_cache_retention_period: Les fichiers multimédias téléchargés seront supprimés après le nombre de jours spécifiés lorsque la valeur est positive, et seront téléchargés à nouveau sur demande.
-        peers_api_enabled: Une liste de noms de domaine que ce serveur a rencontrés dans le fediverse. Aucune donnée indiquant si vous vous fédérez ou non avec un serveur particulier n'est incluse ici, seulement l'information que votre serveur connaît un autre serveur. Cette option est utilisée par les services qui collectent des statistiques sur la fédération en général.
-        profile_directory: L'annuaire des profils répertorie tous les utilisateurs qui ont opté pour être découverts.
+        media_cache_retention_period: Lorsque la valeur est positive, les fichiers multimédias téléchargés seront supprimés après le nombre de jours défini et pourront être à nouveau téléchargés sur demande.
+        peers_api_enabled: Une liste de noms de domaine que ce serveur a rencontrés dans le fédiverse. Aucune donnée indiquant si vous vous fédérez ou non avec un serveur particulier n'est incluse ici, seulement l'information que votre serveur connaît un autre serveur. Cette option est utilisée par les services qui collectent des statistiques sur la fédération en général.
+        profile_directory: L'annuaire des profils répertorie tous les comptes qui choisi d'être découvrables.
         require_invite_text: Lorsque les inscriptions nécessitent une approbation manuelle, rendre le texte de l’invitation "Pourquoi voulez-vous vous inscrire ?" obligatoire plutôt que facultatif
-        site_contact_email: Comment les personnes peuvent vous joindre pour des demandes de renseignements juridiques ou d'assistance.
+        site_contact_email: Comment l'on peut vous joindre pour des requêtes d'assistance ou d'ordre juridique.
         site_contact_username: Comment les gens peuvent vous contacter sur Mastodon.
-        site_extended_description: Toute information supplémentaire qui peut être utile aux visiteurs et à vos utilisateurs. Peut être structurée avec la syntaxe Markdown.
-        site_short_description: Une courte description pour aider à identifier de manière unique votre serveur. Qui l'exécute, à qui il est destiné ?
-        site_terms: Utilisez votre propre politique de confidentialité ou laissez vide pour utiliser la syntaxe par défaut. Peut être structurée avec la syntaxe Markdown.
-        site_title: Comment les personnes peuvent se référer à votre serveur en plus de son nom de domaine.
+        site_extended_description: Toute information supplémentaire qui peut être utile aux non-inscrit⋅e⋅s et à vos utilisateur⋅rice⋅s. Peut être structurée avec la syntaxe Markdown.
+        site_short_description: Une description brève pour aider à faire connaître votre serveur de manière unique. Qui s'en occupe ? à qui est-il destiné ?
+        site_terms: Utilisez votre propre politique de confidentialité ou laissez vide pour utiliser les conditions définies par défaut. Peut être structurée avec la syntaxe Markdown.
+        site_title: Comment l'on peut faire référence à votre serveur, autrement que par le nom de domaine.
+        status_page_url: URL d'une page où les gens peuvent voir l'état de ce serveur en cas de panne
         theme: Thème que verront les utilisateur·rice·s déconnecté·e·s ainsi que les nouveaux·elles utilisateur·rice·s.
         thumbnail: Une image d'environ 2:1 affichée à côté des informations de votre serveur.
-        timeline_preview: Les visiteurs déconnectés pourront parcourir les derniers messages publics disponibles sur le serveur.
+        timeline_preview: Les utilisateur⋅rice⋅s déconnecté⋅e⋅s pourront parcourir les derniers messages publics disponibles sur le serveur.
         trendable_by_default: Ignorer l'examen manuel du contenu tendance. Des éléments individuels peuvent toujours être supprimés des tendances après coup.
-        trends: Les tendances montrent quelles publications, hashtags et actualités sont en train de gagner en traction sur votre serveur.
+        trends: Les tendances montrent quelles publications, hashtags et actualités gagnent en ampleur sur votre serveur.
+        trends_as_landing_page: Afficher le contenu tendance au lieu d'une description de ce serveur pour les comptes déconnectés et les non-inscrit⋅e⋅s. Nécessite que les tendances soient activées.
       form_challenge:
         current_password: Vous entrez une zone sécurisée
       imports:
@@ -174,7 +176,7 @@ fr:
         data: Données
         discoverable: Suggérer ce compte aux autres
         display_name: Nom public
-        email: Adresse courriel
+        email: Adresse de courriel
         expires_in: Expire après
         fields: Métadonnées du profil
         header: Image d’en-tête
@@ -220,7 +222,7 @@ fr:
         title: Nom
         type: Type d’import
         username: Identifiant
-        username_or_email: Nom d’utilisateur·rice ou courriel
+        username_or_email: Identifiant ou adresse courriel
         whole_word: Mot entier
       email_domain_block:
         with_dns_records: Inclure les enregistrements MX et IP du domaine
@@ -232,8 +234,8 @@ fr:
           warn: Cacher derrière un avertissement
       form_admin_settings:
         activity_api_enabled: Publie des statistiques agrégées sur l'activité des utilisateur⋅rice⋅s dans l'API
-        backups_retention_period: Période d'archivage utilisateur
-        bootstrap_timeline_accounts: Toujours recommander ces comptes aux nouveaux utilisateurs
+        backups_retention_period: Durée de rétention des archives utilisateur
+        bootstrap_timeline_accounts: Toujours recommander ces comptes aux nouveaux⋅elles utilisateur⋅rice⋅s
         closed_registrations_message: Message personnalisé lorsque les inscriptions ne sont pas disponibles
         content_cache_retention_period: Durée de rétention du contenu dans le cache
         custom_css: CSS personnalisé
@@ -245,17 +247,19 @@ fr:
         require_invite_text: Exiger une raison pour s’inscrire
         show_domain_blocks: Afficher les blocages de domaines
         show_domain_blocks_rationale: Montrer pourquoi les domaines ont été bloqués
-        site_contact_email: E-mail de contact
-        site_contact_username: Nom d'utilisateur du contact
+        site_contact_email: Adresse de courriel de contact
+        site_contact_username: Identifiant du contact
         site_extended_description: Description étendue
         site_short_description: Description du serveur
         site_terms: Politique de confidentialité
         site_title: Nom du serveur
+        status_page_url: URL de la page de l'état du serveur
         theme: Thème par défaut
         thumbnail: Miniature du serveur
         timeline_preview: Autoriser l’accès non authentifié aux fils publics
         trendable_by_default: Autoriser les tendances sans révision préalable
         trends: Activer les tendances
+        trends_as_landing_page: Utiliser les tendances comme page d'accueil
       interactions:
         must_be_follower: Bloquer les notifications des personnes qui ne vous suivent pas
         must_be_following: Bloquer les notifications des personnes que vous ne suivez pas
@@ -275,12 +279,12 @@ fr:
       notification_emails:
         appeal: Une personne fait appel d'une décision des modérateur·rice·s
         digest: Envoyer des courriels récapitulatifs
-        favourite: Quelqu’un a ajouté mon message à ses favoris
-        follow: Quelqu’un vient de me suivre
-        follow_request: Quelqu’un demande à me suivre
-        mention: Quelqu’un me mentionne
+        favourite: Quelqu’un a ajouté votre message à ses favoris
+        follow: Quelqu’un vient de vous suivre
+        follow_request: Quelqu’un demande à vous suivre
+        mention: Quelqu’un vous a mentionné⋅e
         pending_account: Nouveau compte en attente d’approbation
-        reblog: Quelqu’un a partagé mon message
+        reblog: Quelqu’un a partagé votre message
         report: Nouveau signalement soumis
         trending_tag: Nouvelle tendance nécessitant supervision
       rule:
diff --git a/config/locales/simple_form.fy.yml b/config/locales/simple_form.fy.yml
index 768635912..be950189b 100644
--- a/config/locales/simple_form.fy.yml
+++ b/config/locales/simple_form.fy.yml
@@ -91,11 +91,13 @@ fy:
         site_short_description: In koarte beskriuwing om it unike karakter fan jo server te toanen. Wa beheart de server, wat is de doelgroep?
         site_terms: Brûk jo eigen privacybeleid of lit leech om de standertwearde te brûken. Kin mei Markdown opmakke wurde.
         site_title: Hoe minsken bûten de domeinnamme nei jo server ferwize kinne.
+        status_page_url: URL fan in side dêr’t minsken de steat fan dizze server sjen kinne wylst in steuring
         theme: Tema dy’t ôfmelde besikers en nije brûkers sjen.
         thumbnail: In ôfbylding fan ûngefear in ferhâlding fan 2:1 dy’t njonken jo serverynformaasje toand wurdt.
         timeline_preview: Net oanmelde besikers kinne de meast resinte, op de server oanwêzige iepenbiere berjochten besjen.
         trendable_by_default: Hânmjittige beoardieling fan trends oerslaan. Yndividuele items kinne letter dochs noch ôfkard wurde.
         trends: Trends toane hokker berjochten, hashtags en nijsberjochten op jo server oan populariteit winne.
+        trends_as_landing_page: Toan trending ynhâld oan ôfmelde brûkers en besikers yn stee fan in beskriuwing fan dizze server. Fereasket dat trends ynskeakele binne.
       form_challenge:
         current_password: Jo betrêdzje in feilige omjouwing
       imports:
@@ -251,11 +253,13 @@ fy:
         site_short_description: Serveromskriuwing
         site_terms: Privacybelied
         site_title: Servernamme
+        status_page_url: URL fan steatside
         theme: Standerttema
         thumbnail: Serverthumbnail
         timeline_preview: Tagong ta de iepenbiere tiidlinen sûnder oan te melden tastean
         trendable_by_default: Trends goedkarre sûnder yn it foar geande beoardieling
         trends: Trends ynskeakelje
+        trends_as_landing_page: Lit trends op de startside sjen
       interactions:
         must_be_follower: Meldingen fan minsken dy’t jo net folgje blokkearje
         must_be_following: Meldingen fan minsken dy’t jo net folgje blokkearje
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index a0156e8c2..c4a6da566 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -91,11 +91,13 @@ gl:
         site_short_description: Breve descrición que axuda a identificar de xeito único o teu servidor. Quen o xestiona, a quen vai dirixido?
         site_terms: Escribe a túa propia política de privacidade ou usa o valor por defecto. Podes usar sintaxe Markdow.
         site_title: De que xeito se pode referir o teu servidor ademáis do seu nome de dominio.
+        status_page_url: URL dunha páxina onde se pode ver o estado deste servidor cando non está a funcionar
         theme: Decorado que verán visitantes e novas usuarias.
         thumbnail: Imaxe con proporcións 2:1 mostrada xunto á información sobre o servidor.
         timeline_preview: Visitantes e usuarias non conectadas poderán ver as publicacións públicas máis recentes do servidor.
         trendable_by_default: Omitir a revisión manual das tendencias. Poderás igualmente eliminar manualmente os elementos que vaian aparecendo.
         trends: As tendencias mostran publicacións, cancelos e novas historias que teñen popularidade no teu servidor.
+        trends_as_landing_page: Mostrar contidos en voga para as persoas sen sesión iniciada e visitantes no lugar dunha descrición deste servidor. Require ter activado Tendencias.
       form_challenge:
         current_password: Estás entrando nun área segura
       imports:
@@ -251,11 +253,13 @@ gl:
         site_short_description: Descrición do servidor
         site_terms: Política de Privacidade
         site_title: Nome do servidor
+        status_page_url: URL da páxina do estado
         theme: Decorado por omisión
         thumbnail: Icona do servidor
         timeline_preview: Permitir acceso á cronoloxía pública sen autenticación
         trendable_by_default: Permitir tendencias sen aprobación previa
         trends: Activar tendencias
+        trends_as_landing_page: Usar as tendencias como páxina de benvida
       interactions:
         must_be_follower: Bloquear as notificacións de non-seguidoras
         must_be_following: Bloquea as notificacións de persoas que non segues
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index 8afa07860..8e6631e36 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -91,11 +91,13 @@ he:
         site_short_description: תיאור קצר שיעזור להבחין בייחודיות השרת שלך. מי מריץ אותו, למי הוא מיועד?
         site_terms: נסחו מדיניות פרטיות או השאירו ריק כדי להשתמש בברירת המחדל. ניתן לנסח בעזרת תחביר מארקדאון.
         site_title: כיצד יקרא השרת שלך על ידי הקהל מלבד שם המתחם.
-        theme: ערכת המראה שיראו משתמשים חדשים ולא מחוברים.
+        status_page_url: כתובת לבדיקת מצב שרת זה בעת תקלה
+        theme: ערכת המראה שיראו משתמשים חדשים ומשתמשים שאינם מחוברים.
         thumbnail: תמונה ביחס 2:1 בערך שתוצג ליד המידע על השרת שלך.
         timeline_preview: משתמשים מנותקים יוכלו לדפדף בהודעות ציר הזמן הציבורי שעל השרת.
         trendable_by_default: לדלג על בדיקה ידנית של התכנים החמים. פריטים ספציפיים עדיין ניתנים להסרה לאחר מעשה.
         trends: נושאים חמים יציגו אילו הודעות, תגיות וידיעות חדשות צוברות חשיפה על השרת שלך.
+        trends_as_landing_page: הצג למבקרים ולמשתמשים שאינם מחוברים את הנושאים החמים במקום את תיאור השרת. מחייב הפעלה של אפשרות הנושאים החמים.
       form_challenge:
         current_password: את.ה נכנס. ת לאזור מאובטח
       imports:
@@ -251,11 +253,13 @@ he:
         site_short_description: תיאור השרת
         site_terms: מדיניות פרטיות
         site_title: שם השרת
+        status_page_url: URL של עמוד סטטוס חיצוני
         theme: ערכת נושא ברירת מחדל
         thumbnail: תמונה ממוזערת מהשרת
         timeline_preview: הרשאת גישה בלתי מאומתת לפיד הפומבי
         trendable_by_default: הרשאה לפריטים להופיע בנושאים החמים ללא אישור מוקדם
         trends: אפשר פריטים חמים (טרנדים)
+        trends_as_landing_page: דף הנחיתה יהיה "נושאים חמים"
       interactions:
         must_be_follower: חסימת התראות משאינם עוקבים
         must_be_following: חסימת התראות משאינם נעקבים
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index a8b891afe..81d74cebe 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -91,11 +91,13 @@ hu:
         site_short_description: Rövid leírás, amely segíthet a kiszolgálód egyedi azonosításában. Ki futtatja, kinek készült?
         site_terms: Használd a saját adatvédelmi irányelveidet, vagy hagyd üresen az alapértelmezett használatához. Markdown szintaxis használható.
         site_title: Hogyan hivatkozhatnak mások a kiszolgálódra a domain nevén kívül.
+        status_page_url: Annak az oldalnak az URL-je, melyen ennek a kiszolgálónak az állapotát látják az emberek egy leállás során
         theme: A téma, melyet a kijelentkezett látogatók és az új felhasználók látnak.
         thumbnail: Egy durván 2:1 arányú kép, amely a kiszolgálóinformációk mellett jelenik meg.
         timeline_preview: A kijelentkezett látogatók továbbra is böngészhetik a kiszolgáló legfrissebb nyilvános bejegyzéseit.
         trendable_by_default: Kézi felülvizsgálat kihagyása a felkapott tartalmaknál. Az egyes elemek utólag távolíthatók el a trendek közül.
         trends: A trendek azt mondják meg, hogy mely bejegyzések, hashtagek és hírbejegyzések felkapottak a kiszolgálódon.
+        trends_as_landing_page: Felkapott tartalmak mutatása a kijelentkezett felhasználók és látogatók számára ennek a kiszolgálónak a leírása helyett. Szükséges hozzá a trendek engedélyezése.
       form_challenge:
         current_password: Beléptél egy biztonsági térben
       imports:
@@ -251,11 +253,13 @@ hu:
         site_short_description: Kiszolgáló leírása
         site_terms: Adatvédelmi szabályzat
         site_title: Kiszolgáló neve
+        status_page_url: Állapotoldal URL-je
         theme: Alapértelmezett téma
         thumbnail: Kiszolgáló bélyegképe
         timeline_preview: A nyilvános idővonalak hitelesítés nélküli elérésének engedélyezése
         trendable_by_default: Trendek engedélyezése előzetes ellenőrzés nélkül
         trends: Trendek engedélyezése
+        trends_as_landing_page: Trendek használata nyitóoldalként
       interactions:
         must_be_follower: Nem követőidtől érkező értesítések tiltása
         must_be_following: Nem követettjeidtől érkező értesítések tiltása
diff --git a/config/locales/simple_form.is.yml b/config/locales/simple_form.is.yml
index dcb77ca4e..ed17c9753 100644
--- a/config/locales/simple_form.is.yml
+++ b/config/locales/simple_form.is.yml
@@ -91,11 +91,13 @@ is:
         site_short_description: Stutt lýsing sem hjálpar til við að auðkenna netþjóninn þinn. Hver er að reka hann, fyrir hverja er hann?
         site_terms: Notaðu þína eigin persónuverndarstefnu eða skildu þetta eftir autt til að nota sjálfgefna stefnu. Má sníða með Markdown-málskipan.
         site_title: Hvað fólk kallar netþjóninn þinn annað en með heiti lénsins.
+        status_page_url: Slóð á síðu þar sem fólk getur séð ástand netþjónsins þegar vandræði koma upp
         theme: Þema sem útskráðir gestir og nýjir notendur sjá.
         thumbnail: Mynd um það bil 2:1 sem birtist samhliða upplýsingum um netþjóninn þinn.
         timeline_preview: Gestir sem ekki eru skráðir inn munu geta skoðað nýjustu opinberu færslurnar sem tiltækar eru á þjóninum.
         trendable_by_default: Sleppa handvirkri yfirferð á vinsælu efni. Áfram verður hægt að fjarlægja stök atriði úr vinsældarlistum.
         trends: Vinsældir sýna hvaða færslur, myllumerki og fréttasögur séu í umræðunni á netþjóninum þínum.
+        trends_as_landing_page: Sýna vinsælt efni til ekki-innskráðra notenda í stað lýsingar á þessum netþjóni. Krefst þess að vinsældir efnis sé virkjað.
       form_challenge:
         current_password: Þú ert að fara inn á öryggissvæði
       imports:
@@ -251,11 +253,13 @@ is:
         site_short_description: Lýsing á vefþjóni
         site_terms: Persónuverndarstefna
         site_title: Heiti vefþjóns
+        status_page_url: Slóð á ástandssíðu
         theme: Sjálfgefið þema
         thumbnail: Smámynd vefþjóns
         timeline_preview: Leyfa óauðkenndan aðgang að opinberum tímalínum
         trendable_by_default: Leyfa vinsælt efni án undanfarandi yfirferðar
         trends: Virkja vinsælt
+        trends_as_landing_page: Nota vinsælasta sem upphafssíðu
       interactions:
         must_be_follower: Loka á tilkynningar frá þeim sem ekki eru fylgjendur
         must_be_following: Loka á tilkynningar frá þeim sem þú fylgist ekki með
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 4dc27cc61..3af09275f 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -91,11 +91,13 @@ it:
         site_short_description: Una breve descrizione per aiutare a identificare in modo univoco il tuo server. Chi lo gestisce, a chi è rivolto?
         site_terms: Usa la tua politica sulla privacy o lascia vuoto per usare l'impostazione predefinita. Può essere strutturata con la sintassi Markdown.
         site_title: In che modo le persone possono fare riferimento al tuo server oltre al suo nome di dominio.
+        status_page_url: URL di una pagina in cui le persone possono visualizzare lo stato di questo server durante un disservizio
         theme: Tema visualizzato dai visitatori e dai nuovi utenti disconnessi.
         thumbnail: Un'immagine approssimativamente 2:1 visualizzata insieme alle informazioni del tuo server.
         timeline_preview: I visitatori disconnessi potranno sfogliare i post pubblici più recenti disponibili sul server.
         trendable_by_default: Salta la revisione manuale dei contenuti di tendenza. I singoli elementi possono ancora essere rimossi dalle tendenze dopo il fatto.
         trends: Le tendenze mostrano quali post, hashtag e notizie stanno guadagnando popolarità sul tuo server.
+        trends_as_landing_page: Mostra i contenuti di tendenza agli utenti disconnessi e ai visitatori, invece di una descrizione di questo server. Richiede l'abilitazione delle tendenze.
       form_challenge:
         current_password: Stai entrando in un'area sicura
       imports:
@@ -251,11 +253,13 @@ it:
         site_short_description: Descrizione del server
         site_terms: Politica sulla privacy
         site_title: Nome del server
+        status_page_url: URL della pagina di stato
         theme: Tema predefinito
         thumbnail: Miniatura del server
         timeline_preview: Consenti l'accesso non autenticato alle timeline pubbliche
         trendable_by_default: Consenti le tendenze senza revisione preventiva
         trends: Abilita le tendenze
+        trends_as_landing_page: Utilizza le tendenze come pagina di destinazione
       interactions:
         must_be_follower: Blocca notifiche da chi non ti segue
         must_be_following: Blocca notifiche dalle persone che non segui
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 779555da3..f7e2cb954 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -84,18 +84,20 @@ ja:
         media_cache_retention_period: 正の値に設定されている場合、ダウンロードされたメディアファイルは指定された日数の後に削除され、リクエストに応じて再ダウンロードされます。
         peers_api_enabled: このサーバーが Fediverse で遭遇したドメイン名のリストです。このサーバーが知っているだけで、特定のサーバーと連合しているかのデータは含まれません。これは一般的に Fediverse に関する統計情報を収集するサービスによって使用されます。
         profile_directory: ディレクトリには、掲載する設定をしたすべてのユーザーが一覧表示されます。
-        require_invite_text: アカウント登録が承認制の場合、申請事由の入力を必須にします
+        require_invite_text: アカウント登録が承認制の場合、登録の際の申請事由の入力を必須にします
         site_contact_email: 法律またはサポートに関する問い合わせ先
         site_contact_username: マストドンでの連絡方法
         site_extended_description: 訪問者やユーザーに役立つかもしれない任意の追加情報。Markdownが使えます。
         site_short_description: 運営している人や組織、想定しているユーザーなど、サーバーの特徴を説明する短いテキスト
         site_terms: 独自のプライバシーポリシーを使用するか空白にしてデフォルトのプライバシーポリシーを使用します。Markdownが使えます。
         site_title: ドメイン名以外でサーバーを参照する方法
+        status_page_url: 障害発生時などにユーザーがサーバーの状態を確認できるページのURL
         theme: ログインしていない人と新規ユーザーに表示されるテーマ。
         thumbnail: サーバー情報と共に表示される、アスペクト比が約 2:1 の画像。
-        timeline_preview: ログアウトした人でも、サーバー上で利用可能な最新の公開投稿を閲覧することができます。
-        trendable_by_default: トレンドコンテンツの手動レビューをスキップする。個々のコンテンツは後でトレンドから削除できます。
-        trends: トレンドは、サーバー上でどの投稿、ハッシュタグ、ニュース記事が人気を集めているかを示します。
+        timeline_preview: ログインしていないユーザーがサーバー上の最新の公開投稿を閲覧できるようにします。
+        trendable_by_default: トレンドの審査を省略します。トレンドは掲載後でも個別に除外できます。
+        trends: トレンドは、サーバー上で人気を集めている投稿、ハッシュタグ、ニュース記事などが表示されます。
+        trends_as_landing_page: ログインしていないユーザーに対して、サーバーの説明の代わりにトレンドコンテンツを表示します。トレンドを有効にする必要があります。
       form_challenge:
         current_password: セキュリティ上重要なエリアにアクセスしています
       imports:
@@ -122,11 +124,11 @@ ja:
         chosen_languages: 選択すると、選択した言語の投稿のみが公開タイムラインに表示されるようになります
         role: このロールはユーザーが持つ権限を管理します
       user_role:
-        color: UI 全体で使用される色(RGB hex 形式)
+        color: UI 全体でロールの表示に使用される色(16進数RGB形式)
         highlighted: これによりロールが公開されます。
         name: ロールのバッジを表示する際の表示名
         permissions_as_keys: このロールを持つユーザーは次の機能にアクセスできます
-        position: 特定の状況では、より高いロールが競合の解決を決定します。特定のアクションは優先順位が低いロールでのみ実行できます。
+        position: 場合により、より高いロールのユーザーが紛争の解決を決定します。特定のアクションは優先度が低いロールでのみ実行できます。
       webhook:
         events: 送信するイベントを選択
         url: イベントの送信先
@@ -233,16 +235,16 @@ ja:
       form_admin_settings:
         activity_api_enabled: APIでユーザーアクティビティに関する集計統計を公開する
         backups_retention_period: ユーザーアーカイブの保持期間
-        bootstrap_timeline_accounts: 新規ユーザーに必ずおすすめするアカウント
-        closed_registrations_message: サインアップできない場合のカスタムメッセージ
+        bootstrap_timeline_accounts: おすすめユーザーに常に表示するアカウント
+        closed_registrations_message: アカウント作成を停止している時のカスタムメッセージ
         content_cache_retention_period: コンテンツキャッシュの保持期間
         custom_css: カスタムCSS
         mascot: カスタムマスコット(レガシー)
         media_cache_retention_period: メディアキャッシュの保持期間
-        peers_api_enabled: APIで接続しているサーバーのリストを公開する
+        peers_api_enabled: 発見したサーバーのリストをAPIで公開する
         profile_directory: ディレクトリを有効にする
         registrations_mode: 新規登録が可能な人
-        require_invite_text: 意気込み理由の入力を必須にする。
+        require_invite_text: 申請事由の入力を必須にする
         show_domain_blocks: ドメインブロックを表示
         show_domain_blocks_rationale: ドメインがブロックされた理由を表示
         site_contact_email: 連絡先メールアドレス
@@ -251,11 +253,13 @@ ja:
         site_short_description: サーバーの説明
         site_terms: プライバシーポリシー
         site_title: サーバーの名前
+        status_page_url: ステータスページのURL
         theme: デフォルトテーマ
         thumbnail: サーバーのサムネイル
         timeline_preview: 公開タイムラインへの未認証のアクセスを許可する
-        trendable_by_default: 審査前のハッシュタグのトレンドへの表示を許可する
+        trendable_by_default: 審査前のトレンドの掲載を許可する
         trends: トレンドを有効にする
+        trends_as_landing_page: 新規登録画面にトレンドを表示する
       interactions:
         must_be_follower: フォロワー以外からの通知をブロック
         must_be_following: フォローしていないユーザーからの通知をブロック
diff --git a/config/locales/simple_form.ko.yml b/config/locales/simple_form.ko.yml
index 007fa8561..d08226261 100644
--- a/config/locales/simple_form.ko.yml
+++ b/config/locales/simple_form.ko.yml
@@ -91,11 +91,13 @@ ko:
         site_short_description: 이 서버를 특별하게 구분할 수 있는 짧은 설명. 누가 운영하고, 누구를 위한 것인가요?
         site_terms: 자신만의 개인정보 정책을 사용하거나 비워두는 것으로 기본값을 사용할 수 있습니다. 마크다운 문법을 사용할 수 있습니다.
         site_title: 사람들이 이 서버를 도메인 네임 대신에 부를 이름.
+        status_page_url: 이 서버가 중단된 동안 사람들이 서버의 상태를 볼 수 있는 페이지 URL
         theme: 로그인 하지 않은 사용자나 새로운 사용자가 보게 될 테마.
         thumbnail: 대략 2:1 비율의 이미지가 서버 정보 옆에 표시됩니다.
         timeline_preview: 로그아웃 한 사용자들이 이 서버에 있는 최신 공개글들을 볼 수 있게 합니다.
         trendable_by_default: 유행하는 콘텐츠에 대한 수동 승인을 건너뜁니다. 이 설정이 적용된 이후에도 각각의 항목들을 삭제할 수 있습니다.
         trends: 트렌드는 어떤 게시물, 해시태그 그리고 뉴스 기사가 이 서버에서 인기를 끌고 있는지 보여줍니다.
+        trends_as_landing_page: 로그아웃한 사용자와 방문자에게 서버 설명 대신하여 유행하는 내용을 보여줍니다. 유행 기능을 활성화해야 합니다.
       form_challenge:
         current_password: 당신은 보안 구역에 진입하고 있습니다
       imports:
@@ -251,11 +253,13 @@ ko:
         site_short_description: 서버 설명
         site_terms: 개인정보 정책
         site_title: 서버 이름
+        status_page_url: 상태 페이지 URL
         theme: 기본 테마
         thumbnail: 서버 썸네일
         timeline_preview: 로그인 하지 않고 공개 타임라인에 접근하는 것을 허용
         trendable_by_default: 사전 리뷰 없이 트렌드에 오르는 것을 허용
         trends: 유행 활성화
+        trends_as_landing_page: 유행을 방문 페이지로 쓰기
       interactions:
         must_be_follower: 나를 팔로우 하지 않는 사람에게서 온 알림을 차단
         must_be_following: 내가 팔로우 하지 않는 사람에게서 온 알림을 차단
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index aec79eaa0..ff727235e 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -91,11 +91,13 @@ lv:
         site_short_description: Īss apraksts, kas palīdzēs unikāli identificēt tavu serveri. Kurš to darbina, kam tas paredzēts?
         site_terms: Izmanto pats savu konfidencialitātes politiku vai atstāj tukšu, lai izmantotu noklusējuma iestatījumu. Var strukturēt ar Markdown sintaksi.
         site_title: Kā cilvēki var atsaukties uz tavu serveri, izņemot tā domēna nosaukumu.
+        status_page_url: Tās lapas URL, kurā lietotāji var redzēt šī servera statusu pārtraukuma laikā
         theme: Tēma, kuru redz apmeklētāji, kuri ir atteikušies, un jaunie lietotāji.
         thumbnail: Aptuveni 2:1 attēls, kas tiek parādīts kopā ar tava servera informāciju.
         timeline_preview: Atteikušies apmeklētāji varēs pārlūkot jaunākās serverī pieejamās publiskās ziņas.
         trendable_by_default: Izlaist aktuālā satura manuālu pārskatīšanu. Atsevišķas preces joprojām var noņemt no tendencēm pēc fakta.
         trends: Tendences parāda, kuras ziņas, atsauces un ziņu stāsti gūst panākumus tavā serverī.
+        trends_as_landing_page: Šī servera apraksta vietā rādīt aktuālo saturu lietotājiem un apmeklētājiem, kuri ir atteikušies. Nepieciešams iespējot tendences.
       form_challenge:
         current_password: Tu ieej drošā zonā
       imports:
@@ -251,11 +253,13 @@ lv:
         site_short_description: Servera apraksts
         site_terms: Privātuma Politika
         site_title: Servera nosaukums
+        status_page_url: Statusa lapas URL
         theme: Noklusētā tēma
         thumbnail: Servera sīkbilde
         timeline_preview: Atļaut neautentificētu piekļuvi publiskajām ziņu lentām
         trendable_by_default: Atļaut tendences bez iepriekšējas pārskatīšanas
         trends: Iespējot tendences
+        trends_as_landing_page: Izmantojiet tendences kā galveno lapu
       interactions:
         must_be_follower: Bloķēt paziņojumus no ne-sekotājiem
         must_be_following: Bloķēt paziņojumus no cilvēkiem, kuriem tu neseko
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index ce474dab7..44e9e7819 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -91,11 +91,13 @@ nl:
         site_short_description: Een korte beschrijving om het unieke karakter van je server te tonen. Wie beheert de server, wat is de doelgroep?
         site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown.
         site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen.
+        status_page_url: URL van een pagina waar mensen de status van deze server kunnen zien tijdens een storing
         theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien.
         thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond.
         timeline_preview: Bezoekers (die niet zijn ingelogd) kunnen de meest recente, op de server aanwezige openbare berichten bekijken.
         trendable_by_default: Handmatige beoordeling van trends overslaan. Individuele items kunnen later alsnog worden afgekeurd.
         trends: Trends laten zien welke berichten, hashtags en nieuwsberichten op jouw server aan populariteit winnen.
+        trends_as_landing_page: Toon trending inhoud aan uitgelogde gebruikers en bezoekers in plaats van een beschrijving van deze server. Vereist dat trends zijn ingeschakeld.
       form_challenge:
         current_password: Je betreedt een veilige omgeving
       imports:
@@ -251,11 +253,13 @@ nl:
         site_short_description: Serveromschrijving
         site_terms: Privacybeleid
         site_title: Servernaam
+        status_page_url: URL van statuspagina
         theme: Standaardthema
         thumbnail: Serverthumbnail
         timeline_preview: Toegang tot de openbare tijdlijnen zonder in te loggen toestaan
         trendable_by_default: Trends goedkeuren zonder voorafgaande beoordeling
         trends: Trends inschakelen
+        trends_as_landing_page: Laat trends op de startpagina zien
       interactions:
         must_be_follower: Meldingen van mensen die jou niet volgen blokkeren
         must_be_following: Meldingen van mensen die jij niet volgt blokkeren
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index 712a8ea14..b6d351cb2 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -91,11 +91,13 @@ pl:
         site_short_description: Krótki opis, który pomoże w unikalnym zidentyfikowaniu Twojego serwera. Kto go obsługuje, do kogo jest skierowany?
         site_terms: Użyj własnej polityki prywatności lub zostaw puste, aby użyć domyślnej. Może być sformatowana za pomocą składni Markdown.
         site_title: Jak ludzie mogą odwoływać się do Twojego serwera inaczej niże przez nazwę jego domeny.
+        status_page_url: Adres URL strony, na której odwiedzający mogą zobaczyć status tego serwera w trakcie awarii
         theme: Motyw, który widzą wylogowani i nowi użytkownicy.
         thumbnail: Obraz o proporcjach mniej więcej 2:1 wyświetlany obok informacji o serwerze.
         timeline_preview: Wylogowani użytkownicy będą mogli przeglądać najnowsze publiczne wpisy dostępne na serwerze.
         trendable_by_default: Pomiń ręczny przegląd treści trendów. Pojedyncze elementy nadal mogą być usuwane z trendów po fakcie.
         trends: Tendencje pokazują, które posty, hasztagi i newsy zyskują popularność na Twoim serwerze.
+        trends_as_landing_page: Pokaż najpopularniejsze treści niezalogowanym użytkownikom i odwiedzającym zamiast opisu tego serwera. Wymaga włączenia trendów.
       form_challenge:
         current_password: Wchodzisz w strefę bezpieczną
       imports:
@@ -251,11 +253,13 @@ pl:
         site_short_description: Opis serwera
         site_terms: Polityka prywatności
         site_title: Nazwa serwera
+        status_page_url: Adres URL strony statusu
         theme: Domyślny motyw
         thumbnail: Miniaturka serwera
         timeline_preview: Zezwalaj na nieuwierzytelniony dostęp do publicznych osi czasu
         trendable_by_default: Zezwalaj na trendy bez wcześniejszego przeglądu
         trends: Włącz trendy
+        trends_as_landing_page: Użyj trendów jako strony początkowej
       interactions:
         must_be_follower: Nie wyświetlaj powiadomień od osób, które Cię nie obserwują
         must_be_following: Nie wyświetlaj powiadomień od osób, których nie obserwujesz
diff --git a/config/locales/simple_form.pt-PT.yml b/config/locales/simple_form.pt-PT.yml
index 3de885530..4e34c5897 100644
--- a/config/locales/simple_form.pt-PT.yml
+++ b/config/locales/simple_form.pt-PT.yml
@@ -91,11 +91,13 @@ pt-PT:
         site_short_description: Uma breve descrição para ajudar a identificar de forma única o seu servidor. Quem o está a gerir, e a quem se destina?
         site_terms: Use a sua própria política de privacidade ou deixe em branco para usar a política padrão. Pode ser estruturada com a sintaxe Markdown.
         site_title: Como as pessoas podem referir-se ao seu servidor para além do seu nome de domínio.
+        status_page_url: URL de uma página onde as pessoas podem ver o estado deste servidor durante uma interrupção
         theme: Tema que os visitantes e os novos utilizadores veem.
         thumbnail: Uma imagem de cerca de 2:1, apresentada ao lado da informação do seu servidor.
         timeline_preview: Os visitantes sem sessão iniciada poderão consultar as publicações públicas mais recentes disponíveis no servidor.
         trendable_by_default: Ignorar a revisão manual do conteúdo em alta. Elementos em avulso poderão ainda assim ser retirados das tendências mesmo após a sua apresentação.
         trends: As publicações em alta mostram quais as publicações, etiquetas e notícias que estão a ganhar destaque no seu servidor.
+        trends_as_landing_page: Mostrar conteúdo de tendências para usuários logados e visitantes em vez de uma descrição deste servidor. Requer que as tendências sejam ativadas.
       form_challenge:
         current_password: Está a entrar numa área segura
       imports:
@@ -251,11 +253,13 @@ pt-PT:
         site_short_description: Descrição do servidor
         site_terms: Política de privacidade
         site_title: Nome do servidor
+        status_page_url: URL da página de estado
         theme: Tema predefinido
         thumbnail: Miniatura do servidor
         timeline_preview: Permitir acesso não autenticado às cronologias públicas
         trendable_by_default: Permitir publicações em alta sem revisão prévia
         trends: Activar publicações em alta
+        trends_as_landing_page: Usar tendências como página inicial
       interactions:
         must_be_follower: Bloquear notificações de não-seguidores
         must_be_following: Bloquear notificações de pessoas que não segues
diff --git a/config/locales/simple_form.sk.yml b/config/locales/simple_form.sk.yml
index 78c8ea7e0..e8fb86f29 100644
--- a/config/locales/simple_form.sk.yml
+++ b/config/locales/simple_form.sk.yml
@@ -149,6 +149,7 @@ sk:
         name: Haštag
       form_admin_settings:
         peers_api_enabled: Zverejni zoznam objavených serverov v API
+        status_page_url: URL adresa stránky stavu
       interactions:
         must_be_follower: Blokuj oboznámenia od užívateľov, ktorí ma nenasledujú
         must_be_following: Blokuj oboznámenia od ľudí, ktorých nesledujem
diff --git a/config/locales/simple_form.sl.yml b/config/locales/simple_form.sl.yml
index 8bf5e43f1..ac14735a9 100644
--- a/config/locales/simple_form.sl.yml
+++ b/config/locales/simple_form.sl.yml
@@ -91,11 +91,13 @@ sl:
         site_short_description: Kratek opis v pomoč za identifikacijo vašega strežnika. Kdo ga vzdržuje, komu je namenjen?
         site_terms: Uporabite svoj lasten pravilnik o zasebnosti ali pustite prazno za privzetega. Lahko ga strukturirate s skladnjo Markdown.
         site_title: Kako naj imenujejo vaš strežnik poleg njegovega domenskega imena.
+        status_page_url: URL strani, kjer je moč videti stanje tega strežnika med prekinjenim delovanjem
         theme: Tema, ki jo vidijo odjavljeni obiskovalci in novi uporabniki.
         thumbnail: Slika v razmerju stranic približno 2:1, prikazana vzdolž podatkov o vašem strežniku.
         timeline_preview: Odjavljeni obiskovalci bodo lahko brskali po najnovejših javnih objavah, ki so na voljo na strežniku.
         trendable_by_default: Preskočite ročni pregled vsebine v trendu. Posamezne elemente še vedno lahko odstranite iz trenda post festum.
         trends: Trendi prikažejo, katere objave, ključniki in novice privlačijo zanimanje na vašem strežniku.
+        trends_as_landing_page: Odjavljenim uporabnikom in obiskovalcem namesto opisa tega strežnika pokažite vsebine v trendu. Trendi morajo biti omogočeni.
       form_challenge:
         current_password: Vstopate v varovano območje
       imports:
@@ -251,11 +253,13 @@ sl:
         site_short_description: Opis strežnika
         site_terms: Pravilnik o zasebnosti
         site_title: Ime strežnika
+        status_page_url: URL strani stanja
         theme: Privzeta tema
         thumbnail: Sličica strežnika
         timeline_preview: Omogoči neoverjen dostop do javnih časovnic
         trendable_by_default: Dovoli trende brez predhodnega pregleda
         trends: Omogoči trende
+        trends_as_landing_page: Uporabi trende za pristopno stran
       interactions:
         must_be_follower: Blokiraj obvestila nesledilcev
         must_be_following: Blokiraj obvestila oseb, ki jim ne sledite
diff --git a/config/locales/simple_form.sq.yml b/config/locales/simple_form.sq.yml
index 3c86da496..a11037fa9 100644
--- a/config/locales/simple_form.sq.yml
+++ b/config/locales/simple_form.sq.yml
@@ -91,11 +91,13 @@ sq:
         site_short_description: Një përshkrim i shkurtër për të ndihmuar identifikimin unik të shërbyesit tuaj. Kush e mban në punë, për kë është?
         site_terms: Përdorni rregullat tuaja të privatësisë, ose lëreni të zbrazët që të përdoren ato parazgjedhje. Mund të hartohet me sintaksë Markdown.
         site_title: Si mund t’i referohen njerëzit shërbyesit tuaj, përveç emrit të tij të përkatësisë.
+        status_page_url: URL e faqe ku njerëzit mund të shohin gjendjen e këtij shërbyesi, gjatë një ndërprerje të funksionimit
         theme: Temë që shohin vizitorët që kanë bërë daljen dhe përdorues të rinj.
         thumbnail: Një figurë afërsisht 2:1 e shfaqur tok me hollësi mbi shërbyesin tuaj.
         timeline_preview: Vizitorët që kanë bërë daljen do të jenë në gjendje të shfletojnë postimet më të freskëta publike të passhme në shërbyes.
         trendable_by_default: Anashkalo shqyrtim dorazi lënde në modë. Gjëra individuale prapë mund të hiqen nga lëndë në modë pas publikimi.
         trends: Gjërat në modë shfaqin cilat postime, hashtagë dhe histori të reja po tërheqin vëmendjen në shërbyesin tuaj.
+        trends_as_landing_page: Shfaq lëndë në modë për përdorues jo të futur në llogari dhe për vizitorë, në vend se të një përshkrimi të këtij shërbyesi. Lyp që të jenë të aktivizuara gjërat në modë.
       form_challenge:
         current_password: Po hyni në një zonë të sigurt
       imports:
@@ -251,11 +253,13 @@ sq:
         site_short_description: Përshkrim shërbyesi
         site_terms: Rregulla Privatësie
         site_title: Emër shërbyesi
+        status_page_url: URL faqeje gjendjesh
         theme: Temë parazgjedhje
         thumbnail: Miniaturë shërbyesi
         timeline_preview: Lejo hyrje pa mirëfilltësim te rrjedha kohore publike
         trendable_by_default: Lejoni gjëra në modë pa shqyrtim paraprak
         trends: Aktivizo gjëra në modë
+        trends_as_landing_page: Përdor gjërat në modë si faqe hyrëse
       interactions:
         must_be_follower: Blloko njoftime nga jo-ndjekës
         must_be_following: Blloko njoftime nga persona që s’i ndiqni
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index d7b306bd2..ed111ecc9 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -91,11 +91,13 @@ th:
         site_short_description: คำอธิบายแบบสั้นเพื่อช่วยระบุเซิร์ฟเวอร์ของคุณอย่างไม่ซ้ำกัน ผู้ดำเนินการเซิร์ฟเวอร์ เซิร์ฟเวอร์สำหรับใคร?
         site_terms: ใช้นโยบายความเป็นส่วนตัวของคุณเองหรือเว้นว่างไว้เพื่อใช้ค่าเริ่มต้น สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown
         site_title: วิธีที่ผู้คนอาจอ้างอิงถึงเซิร์ฟเวอร์ของคุณนอกเหนือจากชื่อโดเมนของเซิร์ฟเวอร์
+        status_page_url: URL ของหน้าที่ผู้คนสามารถเห็นสถานะของเซิร์ฟเวอร์นี้ในระหว่างการหยุดทำงาน
         theme: ชุดรูปแบบที่ผู้เยี่ยมชมที่ออกจากระบบและผู้ใช้ใหม่เห็น
         thumbnail: แสดงภาพ 2:1 โดยประมาณควบคู่ไปกับข้อมูลเซิร์ฟเวอร์ของคุณ
         timeline_preview: ผู้เยี่ยมชมที่ออกจากระบบจะสามารถเรียกดูโพสต์สาธารณะล่าสุดที่มีในเซิร์ฟเวอร์
         trendable_by_default: ข้ามการตรวจทานเนื้อหาที่กำลังนิยมด้วยตนเอง ยังคงสามารถเอารายการแต่ละรายการออกจากแนวโน้มได้หลังเกิดเหตุ
         trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ
+        trends_as_landing_page: แสดงเนื้อหาที่กำลังนิยมแก่ผู้ใช้และผู้เยี่ยมชมที่ออกจากระบบแทนที่จะเป็นคำอธิบายของเซิร์ฟเวอร์นี้ ต้องมีการเปิดใช้งานแนวโน้ม
       form_challenge:
         current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย
       imports:
@@ -179,7 +181,7 @@ th:
         fields: ข้อมูลอภิพันธุ์โปรไฟล์
         header: ส่วนหัว
         honeypot: "%{label} (ไม่ต้องกรอก)"
-        inbox_url: URL กล่องขาเข้าแบบรีเลย์
+        inbox_url: URL ของกล่องขาเข้าของรีเลย์
         irreversible: ลบแทนที่จะซ่อน
         locale: ภาษาส่วนติดต่อ
         locked: ต้องมีคำขอติดตาม
@@ -251,11 +253,13 @@ th:
         site_short_description: คำอธิบายเซิร์ฟเวอร์
         site_terms: นโยบายความเป็นส่วนตัว
         site_title: ชื่อเซิร์ฟเวอร์
+        status_page_url: URL ของหน้าสถานะ
         theme: ชุดรูปแบบเริ่มต้น
         thumbnail: ภาพขนาดย่อเซิร์ฟเวอร์
         timeline_preview: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง
         trendable_by_default: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า
         trends: เปิดใช้งานแนวโน้ม
+        trends_as_landing_page: ใช้แนวโน้มเป็นหน้าเริ่มต้น
       interactions:
         must_be_follower: ปิดกั้นการแจ้งเตือนจากผู้ที่ไม่ใช่ผู้ติดตาม
         must_be_following: ปิดกั้นการแจ้งเตือนจากผู้คนที่คุณไม่ได้ติดตาม
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 5f5cdbb39..3e0e7470d 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -91,11 +91,13 @@ tr:
         site_short_description: Sunucunuzu tekil olarak tanımlamaya yardımcı olacak kısa tanım. Kim işletiyor, kimin için?
         site_terms: Kendi gizlilik politikanızı kullanın veya varsayılanı kullanmak için boş bırakın. Markdown sözdizimiyle biçimlendirilebilir.
         site_title: İnsanlar sunucunuzu alan adı dışında nasıl isimlendirmeli.
+        status_page_url: İnsanların bir kesinti halinde sunucunun durumunu görebilecekleri bir sayfanın URL'si
         theme: Giriş yapmamış ziyaretçilerin ve yeni kullanıcıların gördüğü tema.
         thumbnail: Sunucu bilginizin yanında gösterilen yaklaşık 2:1'lik görüntü.
         timeline_preview: Giriş yapmamış ziyaretçiler, sunucuda mevcut olan en son genel gönderileri tarayabilecekler.
         trendable_by_default: Öne çıkan içeriğin elle incelenmesini atla. Tekil öğeler sonrada öne çıkanlardan kaldırılabilir.
         trends: Öne çıkanlar, sunucunuzda ilgi toplayan gönderileri, etiketleri ve haber yazılarını gösterir.
+        trends_as_landing_page: Giriş yapmış kullanıcılar ve ziyaretçilere sunucunun açıklması yerine öne çıkan içeriği göster. Öne çıkanların etkin olması gerekir.
       form_challenge:
         current_password: Güvenli bir bölgeye giriyorsunuz
       imports:
@@ -251,11 +253,13 @@ tr:
         site_short_description: Sunucu açıklaması
         site_terms: Gizlilik Politikası
         site_title: Sunucu adı
+        status_page_url: Durum sayfası URL'si
         theme: Öntanımlı tema
         thumbnail: Sunucu küçük resmi
         timeline_preview: Genel zaman çizelgelerine yetkisiz erişime izin ver
         trendable_by_default: Ön incelemesiz öne çıkanlara izin ver
         trends: Öne çıkanları etkinleştir
+        trends_as_landing_page: Giriş sayfası olarak öne çıkanları kullan
       interactions:
         must_be_follower: Takipçim olmayan kişilerden gelen bildirimleri engelle
         must_be_following: Takip etmediğim kişilerden gelen bildirimleri engelle
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index a14c631c2..be4d4b764 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -91,11 +91,13 @@ uk:
         site_short_description: Короткий опис, щоб допомогти однозначно ідентифікувати ваш сервер. Хто ним керує, для кого він потрібен?
         site_terms: Використовуйте власну політику приватності або залиште поле порожнім, щоб використовувати усталене значення. Може бути структуровано за допомогою синтаксису Markdown.
         site_title: Як люди можуть посилатися на ваш сервер, окрім його доменного імені.
+        status_page_url: URL сторінки, на якій люди можуть бачити статус цього сервера під час його збою в роботі
         theme: Тема, яку бачать відвідувачі, що вийшли з системи, та нові користувачі.
         thumbnail: Зображення приблизно 2:1, що показується поряд з відомостями про ваш сервер.
         timeline_preview: Зареєстровані відвідувачі зможуть переглядати останні публічні дописи, доступні на сервері.
         trendable_by_default: Пропустити ручний огляд популярних матеріалів. Індивідуальні елементи все ще можна вилучити з популярних постфактум.
         trends: Популярні показують, які дописи, хештеґи та новини набувають популярності на вашому сервері.
+        trends_as_landing_page: Показувати популярні матеріали для зареєстрованих користувачів і відвідувачів замість опису цього сервера. Для активації потрібні тренди.
       form_challenge:
         current_password: Ви входите до безпечної зони
       imports:
@@ -251,11 +253,13 @@ uk:
         site_short_description: Опис сервера
         site_terms: Політика приватності
         site_title: Назва сервера
+        status_page_url: URL сторінки статусу
         theme: Стандартна тема
         thumbnail: Мініатюра сервера
         timeline_preview: Дозволити неавтентифікований доступ до публічних стрічок
         trendable_by_default: Дозволити популярне без попереднього огляду
         trends: Увімкнути популярні
+        trends_as_landing_page: Використовуйте тенденції як цільову сторінку
       interactions:
         must_be_follower: Блокувати сповіщення від непідписаних людей
         must_be_following: Блокувати сповіщення від людей, на яких ви не підписані
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index fb2ca90fd..b5da24dd1 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -91,11 +91,13 @@ vi:
         site_short_description: Mô tả ngắn gọn để giúp nhận định máy chủ của bạn. Ai đang điều hành nó, nó là cho ai?
         site_terms: Sử dụng chính sách bảo mật của riêng bạn hoặc để trống để sử dụng mặc định. Có thể soạn bằng cú pháp Markdown.
         site_title: Cách mọi người có thể tham chiếu đến máy chủ của bạn ngoài tên miền của nó.
+        status_page_url: URL của trang nơi mọi người có thể xem trạng thái của máy chủ này khi ngừng hoạt động
         theme: Chủ đề mà khách truy cập đăng xuất và người mới nhìn thấy.
         thumbnail: 'Một hình ảnh tỉ lệ 2: 1 được hiển thị cùng với thông tin máy chủ của bạn.'
         timeline_preview: Khách truy cập đã đăng xuất sẽ có thể xem các tút công khai gần đây nhất trên máy chủ.
         trendable_by_default: Bỏ qua việc duyệt thủ công nội dung thịnh hành. Các mục riêng lẻ vẫn có thể bị xóa khỏi xu hướng sau này.
         trends: Hiển thị những tút, hashtag và tin tức đang được thảo luận nhiều trên máy chủ của bạn.
+        trends_as_landing_page: Hiển thị nội dung thịnh hành cho người dùng đã đăng xuất và khách truy cập thay vì mô tả về máy chủ này. Yêu cầu xu hướng được kích hoạt.
       form_challenge:
         current_password: Biểu mẫu này an toàn
       imports:
@@ -251,11 +253,13 @@ vi:
         site_short_description: Mô tả máy chủ
         site_terms: Chính sách bảo mật
         site_title: Tên máy chủ
+        status_page_url: URL trang trạng thái
         theme: Chủ đề mặc định
         thumbnail: Hình thu nhỏ của máy chủ
         timeline_preview: Cho phép truy cập vào dòng thời gian công khai
         trendable_by_default: Cho phép thịnh hành mà không cần duyệt trước
         trends: Bật thịnh hành
+        trends_as_landing_page: Dùng trang thịnh hành làm trang chào mừng
       interactions:
         must_be_follower: Chặn thông báo từ những người không theo dõi bạn
         must_be_following: Chặn thông báo từ những người bạn không theo dõi
diff --git a/config/locales/simple_form.zh-CN.yml b/config/locales/simple_form.zh-CN.yml
index 4ac81354d..18ba22921 100644
--- a/config/locales/simple_form.zh-CN.yml
+++ b/config/locales/simple_form.zh-CN.yml
@@ -91,11 +91,13 @@ zh-CN:
         site_short_description: 有助于区分你的服务器独特性的简短描述。谁在管理?供谁使用?
         site_terms: 使用你自己的隐私政策或留空以使用默认版。可以使用 Markdown 语法。
         site_title: 除了域名,人们还可以如何指代你的服务器。
+        status_page_url: 配置一个网址,当服务中断时,人们可以通过该网址查看服务器的状态。
         theme: 给未登录访客和新用户使用的主题。
         thumbnail: 与服务器信息一并展示的约 2:1 比例的图像。
         timeline_preview: 未登录访客将能够浏览服务器上最新的公共嘟文。
         trendable_by_default: 跳过对热门内容的手工审核。个别项目仍可在之后从趋势中删除。
         trends: 趋势中会显示正在你服务器上受到关注的嘟文、标签和新闻故事。
+        trends_as_landing_page: 向注销的用户和访问者显示趋势内容,而不是对该服务器的描述,需要启用趋势。
       form_challenge:
         current_password: 你正在进入安全区域
       imports:
@@ -251,11 +253,13 @@ zh-CN:
         site_short_description: 本站简介
         site_terms: 隐私政策
         site_title: 本站名称
+        status_page_url: 静态页面地址
         theme: 默认主题
         thumbnail: 本站缩略图
         timeline_preview: 时间轴预览
         trendable_by_default: 允许在未审核的情况下将话题置为热门
         trends: 启用趋势
+        trends_as_landing_page: 使用趋势作为登陆页面
       interactions:
         must_be_follower: 屏蔽来自未关注我的用户的通知
         must_be_following: 屏蔽来自我未关注的用户的通知
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index a4036e91b..855c40242 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -91,11 +91,13 @@ zh-TW:
         site_short_description: 一段有助於辨別您伺服器的簡短說明。例如:誰運行該伺服器、該伺服器是提供給哪些人群?
         site_terms: 使用您自己的隱私權政策,或者保留空白以使用預設值。可由 Markdown 語法撰寫。
         site_title: 除了網域外,其他人該如何指稱您的伺服器。
+        status_page_url: 當服務中斷時,可以提供使用者了解伺服器資訊頁面之 URL
         theme: 未登入之訪客或新使用者所見之佈景主題。
         thumbnail: 大約 2:1 圖片會顯示於您伺服器資訊之旁。
         timeline_preview: 未登入之訪客能夠瀏覽此伺服器上最新的公開嘟文。
         trendable_by_default: 跳過手動審核熱門內容。仍能在登上熱門趨勢後移除個別內容。
         trends: 熱門趨勢將顯示於您伺服器上正在吸引大量注意力的嘟文、主題標籤、或者新聞。
+        trends_as_landing_page: 顯示熱門趨勢內容給未登入使用者及訪客而不是關於此伺服器之描述。需要啟用熱門趨勢。
       form_challenge:
         current_password: 您正要進入安全區域
       imports:
@@ -251,11 +253,13 @@ zh-TW:
         site_short_description: 伺服器描述
         site_terms: 隱私權政策
         site_title: 伺服器名稱
+        status_page_url: 狀態頁面 URL
         theme: 預設佈景主題
         thumbnail: 伺服器縮圖
         timeline_preview: 允許未登入使用者瀏覽公開時間軸
         trendable_by_default: 允許熱門趨勢直接顯示,不需經過審核
         trends: 啟用熱門趨勢
+        trends_as_landing_page: 以熱門趨勢作為登陸頁面
       interactions:
         must_be_follower: 封鎖非跟隨者的通知
         must_be_following: 封鎖您未跟隨之使用者的通知
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index f5042f92b..d450fa08f 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -351,6 +351,7 @@ sk:
       no_file: Nevybraný žiaden súbor
     export_domain_blocks:
       import:
+        existing_relationships_warning: Existujúce vzťahy nasledovania
         title: Nahraj zákazy domén
       new:
         title: Nahraj zákazy domén
@@ -376,6 +377,7 @@ sk:
         policies:
           reject_media: Zamietni médiá
           reject_reports: Zamietni hlásenia
+          silence: Obmedzená
           suspend: Vylúč
         policy: Zásady
         reason: Verejné odôvodnenie
@@ -472,6 +474,7 @@ sk:
         delete: Vymaž
         placeholder: Opíš aké opatrenia boli urobené, alebo akékoľvek iné súvisiace aktualizácie…
         title: Poznámky
+      remote_user_placeholder: vzdialený užívateľ z %{instance}
       reopen: Znovu otvor report
       report: 'Nahlásiť #%{id}'
       reported_account: Nahlásený účet
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 0135574ff..8081559db 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -71,7 +71,7 @@ th:
       followers: ผู้ติดตาม
       follows: การติดตาม
       header: ส่วนหัว
-      inbox_url: URL กล่องขาเข้า
+      inbox_url: URL ของกล่องขาเข้า
       invite_request_text: เหตุผลสำหรับการเข้าร่วม
       invited_by: เชิญโดย
       ip: IP
@@ -135,7 +135,7 @@ th:
         password_and_2fa: รหัสผ่านและ 2FA
       sensitive: บังคับให้ละเอียดอ่อน
       sensitized: ทำเครื่องหมายว่าละเอียดอ่อนแล้ว
-      shared_inbox_url: URL กล่องขาเข้าที่แบ่งปัน
+      shared_inbox_url: URL ของกล่องขาเข้าที่แบ่งปัน
       show:
         created_reports: รายงานที่สร้าง
         targeted_reports: รายงานโดยผู้อื่น
@@ -543,11 +543,11 @@ th:
       enable: เปิดใช้งาน
       enable_hint: เมื่อเปิดใช้งาน เซิร์ฟเวอร์ของคุณจะบอกรับโพสต์สาธารณะทั้งหมดจากรีเลย์นี้ และจะเริ่มส่งโพสต์สาธารณะของเซิร์ฟเวอร์นี้ไปยังรีเลย์
       enabled: เปิดใช้งานอยู่
-      inbox_url: URL รีเลย์
+      inbox_url: URL ของรีเลย์
       pending: กำลังรอการอนุมัติของรีเลย์
       save_and_enable: บันทึกแล้วเปิดใช้งาน
-      setup: ตั้งค่าการเชื่อมต่อแบบรีเลย์
-      signatures_not_enabled: รีเลย์จะทำงานไม่ถูกต้องขณะที่มีการเปิดใช้งานโหมดปลอดภัยหรือโหมดการติดต่อกับภายนอกแบบจำกัด
+      setup: ตั้งค่าการเชื่อมต่อรีเลย์
+      signatures_not_enabled: รีเลย์อาจทำงานไม่ถูกต้องขณะที่มีการเปิดใช้งานโหมดปลอดภัยหรือโหมดการติดต่อกับภายนอกแบบจำกัด
       status: สถานะ
       title: รีเลย์
     report_notes:
diff --git a/lib/active_record/database_tasks_extensions.rb b/lib/active_record/database_tasks_extensions.rb
index e274f476d..d52186113 100644
--- a/lib/active_record/database_tasks_extensions.rb
+++ b/lib/active_record/database_tasks_extensions.rb
@@ -11,7 +11,7 @@ module ActiveRecord
         ActiveRecord::Base.establish_connection(db_config)
         Mastodon::Snowflake.define_timestamp_id
 
-        original_load_schema.bind(self).call(db_config, *args)
+        original_load_schema.bind_call(self, db_config, *args)
 
         Mastodon::Snowflake.ensure_id_sequences_exist
       end
diff --git a/lib/mastodon/premailer_webpack_strategy.rb b/lib/mastodon/premailer_webpack_strategy.rb
index 56ef09c1a..4356b7285 100644
--- a/lib/mastodon/premailer_webpack_strategy.rb
+++ b/lib/mastodon/premailer_webpack_strategy.rb
@@ -13,7 +13,7 @@ module PremailerWebpackStrategy
             HTTP.get(url).to_s
           else
             url = url[1..-1] if url.start_with?('/')
-            File.read(Rails.root.join('public', url))
+            File.read(Rails.public_path.join(url))
           end
 
     css.gsub(/url\(\//, "url(#{asset_host}/")
diff --git a/lib/mastodon/statuses_cli.rb b/lib/mastodon/statuses_cli.rb
index d4c2e6cf2..baab83e29 100644
--- a/lib/mastodon/statuses_cli.rb
+++ b/lib/mastodon/statuses_cli.rb
@@ -93,7 +93,7 @@ module Mastodon
         c.table_name = 'statuses_to_be_deleted'
       end
 
-      Object.const_set('StatusToBeDeleted', klass)
+      Object.const_set(:StatusToBeDeleted, klass)
 
       scope     = StatusToBeDeleted
       processed = 0
@@ -175,7 +175,7 @@ module Mastodon
         c.table_name = 'conversations_to_be_deleted'
       end
 
-      Object.const_set('ConversationsToBeDeleted', klass)
+      Object.const_set(:ConversationsToBeDeleted, klass)
 
       scope     = ConversationsToBeDeleted
       processed = 0
diff --git a/lib/rails/engine_extensions.rb b/lib/rails/engine_extensions.rb
index 4848b15f2..4e3767db9 100644
--- a/lib/rails/engine_extensions.rb
+++ b/lib/rails/engine_extensions.rb
@@ -2,7 +2,7 @@ module Rails
   module EngineExtensions
     # Rewrite task loading code to filter digitalocean.rake task
     def run_tasks_blocks(app)
-      Railtie.instance_method(:run_tasks_blocks).bind(self).call(app)
+      Railtie.instance_method(:run_tasks_blocks).bind_call(self, app)
       paths["lib/tasks"].existent.reject { |ext| ext.end_with?('digitalocean.rake') }.sort.each { |ext| load(ext) }
     end
   end
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
index 5931aae61..e1102af33 100644
--- a/lib/tasks/assets.rake
+++ b/lib/tasks/assets.rake
@@ -14,7 +14,7 @@ namespace :assets do
       File.write(dest, html)
     end
 
-    render_static_page 'errors/500', layout: 'error', dest: Rails.root.join('public', 'assets', '500.html')
+    render_static_page 'errors/500', layout: 'error', dest: Rails.public_path.join('assets', '500.html')
   end
 end
 
diff --git a/lib/tasks/branding.rake b/lib/tasks/branding.rake
index 2eec7c9e1..d1c1c9ded 100644
--- a/lib/tasks/branding.rake
+++ b/lib/tasks/branding.rake
@@ -54,7 +54,7 @@ namespace :branding do
       rsvg_convert.run(size: size, input: favicon_source, output: output_path)
     end
 
-    convert.run(input: favicons, output: Rails.root.join('public', 'favicon.ico'))
+    convert.run(input: favicons, output: Rails.public_path.join('favicon.ico'))
 
     apple_icon_sizes.each do |size|
       rsvg_convert.run(size: size, input: app_icon_source, output: output_dest.join("apple-touch-icon-#{size}x#{size}.png"))
@@ -69,7 +69,7 @@ namespace :branding do
   task generate_app_badge: :environment do
     rsvg_convert = Terrapin::CommandLine.new('rsvg-convert', '--stylesheet :stylesheet -w :size -h :size --keep-aspect-ratio :input -o :output')
     badge_source = Rails.root.join('app', 'javascript', 'images', 'logo-symbol-icon.svg')
-    output_dest  = Rails.root.join('public')
+    output_dest  = Rails.public_path
     stylesheet   = Rails.root.join('lib', 'assets', 'wordmark.light.css')
 
     rsvg_convert.run(stylesheet: stylesheet, input: badge_source, size: 192, output: output_dest.join('badge.png'))
diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake
index 473aee9cc..02d772b48 100644
--- a/lib/tasks/emojis.rake
+++ b/lib/tasks/emojis.rake
@@ -1,8 +1,8 @@
 # frozen_string_literal: true
 
 def gen_border(codepoint, color)
-  input = Rails.root.join('public', 'emoji', "#{codepoint}.svg")
-  dest = Rails.root.join('public', 'emoji', "#{codepoint}_border.svg")
+  input = Rails.public_path.join('emoji', "#{codepoint}.svg")
+  dest = Rails.public_path.join('emoji', "#{codepoint}_border.svg")
   doc = File.open(input) { |f| Nokogiri::XML(f) }
   svg = doc.at_css('svg')
   if svg.key?('viewBox')
@@ -69,7 +69,7 @@ namespace :emojis do
       end
     end
 
-    existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.root.join('public', 'emoji', "#{codepoints_to_filename(cc)}.svg")) } }
+    existence_maps = grouped_codes.map { |c| c.index_with { |cc| File.exist?(Rails.public_path.join('emoji', "#{codepoints_to_filename(cc)}.svg")) } }
     map = {}
 
     existence_maps.each do |group|
diff --git a/lib/tasks/mastodon.rake b/lib/tasks/mastodon.rake
index 876383d7f..1184e5273 100644
--- a/lib/tasks/mastodon.rake
+++ b/lib/tasks/mastodon.rake
@@ -463,10 +463,10 @@ namespace :mastodon do
           prompt.say 'Running `RAILS_ENV=production rails db:setup` ...'
           prompt.say "\n\n"
 
-          if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production', 'SAFETY_ASSURED' => '1' }), 'rails db:setup')
-            prompt.error 'That failed! Perhaps your configuration is not right'
-          else
+          if system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production', 'SAFETY_ASSURED' => '1' }), 'rails db:setup')
             prompt.ok 'Done!'
+          else
+            prompt.error 'That failed! Perhaps your configuration is not right'
           end
         end
 
@@ -479,10 +479,10 @@ namespace :mastodon do
             prompt.say 'Running `RAILS_ENV=production rails assets:precompile` ...'
             prompt.say "\n\n"
 
-            if !system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile')
-              prompt.error 'That failed! Maybe you need swap space?'
-            else
+            if system(env.transform_values(&:to_s).merge({ 'RAILS_ENV' => 'production' }), 'rails assets:precompile')
               prompt.say 'Done!'
+            else
+              prompt.error 'That failed! Maybe you need swap space?'
             end
           end
         end
diff --git a/package.json b/package.json
index 726e5d2c0..193b908f6 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "atrament": "0.2.4",
     "arrow-key-navigation": "^1.2.0",
     "autoprefixer": "^9.8.8",
-    "axios": "^1.2.6",
+    "axios": "^1.3.2",
     "babel-loader": "^8.3.0",
     "babel-plugin-lodash": "^3.3.4",
     "babel-plugin-preval": "^5.1.0",
@@ -67,7 +67,7 @@
     "glob": "^8.1.0",
     "history": "^4.10.1",
     "http-link-header": "^1.1.0",
-    "immutable": "^4.2.2",
+    "immutable": "^4.2.4",
     "imports-loader": "^1.2.0",
     "intl": "^1.2.5",
     "intl-messageformat": "^2.2.0",
@@ -117,7 +117,7 @@
     "requestidlecallback": "^0.3.0",
     "reselect": "^4.1.7",
     "rimraf": "^4.1.2",
-    "sass": "^1.57.1",
+    "sass": "^1.58.0",
     "sass-loader": "^10.2.0",
     "stacktrace-js": "^2.0.2",
     "stringz": "^2.1.0",
diff --git a/spec/models/concerns/remotable_spec.rb b/spec/models/concerns/remotable_spec.rb
index 9cc849ded..ca2d65d2d 100644
--- a/spec/models/concerns/remotable_spec.rb
+++ b/spec/models/concerns/remotable_spec.rb
@@ -194,7 +194,9 @@ RSpec.describe Remotable do
           let(:error_class) { error_class }
 
           it 'calls Rails.logger.debug' do
-            expect(Rails.logger).to receive(:debug).with(/^Error fetching remote #{hoge}: /)
+            expect(Rails.logger).to receive(:debug) do |&block|
+              expect(block.call).to match(/^Error fetching remote #{hoge}: /)
+            end
             foo.hoge_remote_url = url
           end
         end
diff --git a/spec/models/session_activation_spec.rb b/spec/models/session_activation_spec.rb
index 450dc1399..8db06c622 100644
--- a/spec/models/session_activation_spec.rb
+++ b/spec/models/session_activation_spec.rb
@@ -118,8 +118,8 @@ RSpec.describe SessionActivation, type: :model do
     let(:id) { '1' }
 
     it 'calls where.destroy_all' do
-      expect(described_class).to receive_message_chain(:where, :destroy_all)
-        .with('session_id != ?', id).with(no_args)
+      expect(described_class).to receive_message_chain(:where, :not, :destroy_all)
+        .with(session_id: id).with(no_args)
 
       described_class.exclusive(id)
     end
diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb
index 02827a388..c197bc007 100644
--- a/spec/rails_helper.rb
+++ b/spec/rails_helper.rb
@@ -1,5 +1,5 @@
 ENV['RAILS_ENV'] ||= 'test'
-require File.expand_path('../../config/environment', __FILE__)
+require File.expand_path('../config/environment', __dir__)
 
 abort("The Rails environment is running in production mode!") if Rails.env.production?
 
diff --git a/spec/workers/scheduler/user_cleanup_scheduler_spec.rb b/spec/workers/scheduler/user_cleanup_scheduler_spec.rb
new file mode 100644
index 000000000..da99f10f9
--- /dev/null
+++ b/spec/workers/scheduler/user_cleanup_scheduler_spec.rb
@@ -0,0 +1,39 @@
+require 'rails_helper'
+
+describe Scheduler::UserCleanupScheduler do
+  subject { described_class.new }
+
+  let!(:new_unconfirmed_user) { Fabricate(:user) }
+  let!(:old_unconfirmed_user) { Fabricate(:user) }
+  let!(:confirmed_user)       { Fabricate(:user) }
+  let!(:moderation_note)      { Fabricate(:account_moderation_note, account: Fabricate(:account), target_account: old_unconfirmed_user.account) }
+
+  describe '#perform' do
+    before do
+      # Need to update the already-existing users because their initialization overrides confirmation_sent_at
+      new_unconfirmed_user.update!(confirmed_at: nil, confirmation_sent_at: Time.now.utc)
+      old_unconfirmed_user.update!(confirmed_at: nil, confirmation_sent_at: 1.week.ago)
+      confirmed_user.update!(confirmed_at: 1.day.ago)
+    end
+
+    it 'deletes the old unconfirmed user' do
+      expect { subject.perform }.to change { User.exists?(old_unconfirmed_user.id) }.from(true).to(false)
+    end
+
+    it "deletes the old unconfirmed user's account" do
+      expect { subject.perform }.to change { Account.exists?(old_unconfirmed_user.account_id) }.from(true).to(false)
+    end
+
+    it 'does not delete the new unconfirmed user or their account' do
+      subject.perform
+      expect(User.exists?(new_unconfirmed_user.id)).to be true
+      expect(Account.exists?(new_unconfirmed_user.account_id)).to be true
+    end
+
+    it 'does not delete the confirmed user or their account' do
+      subject.perform
+      expect(User.exists?(confirmed_user.id)).to be true
+      expect(Account.exists?(confirmed_user.account_id)).to be true
+    end
+  end
+end
diff --git a/streaming/index.js b/streaming/index.js
index 45ea26bd6..dbebb573e 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -127,7 +127,6 @@ const startWorker = async (workerId) => {
       database: process.env.DB_NAME || 'mastodon_development',
       host:     process.env.DB_HOST || pg.defaults.host,
       port:     process.env.DB_PORT || pg.defaults.port,
-      max:      10,
     },
 
     production: {
@@ -136,20 +135,19 @@ const startWorker = async (workerId) => {
       database: process.env.DB_NAME || 'mastodon_production',
       host:     process.env.DB_HOST || 'localhost',
       port:     process.env.DB_PORT || 5432,
-      max:      10,
     },
   };
 
-  if (!!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable') {
-    pgConfigs.development.ssl = true;
-    pgConfigs.production.ssl = true;
-  }
-
   const app = express();
 
   app.set('trust proxy', process.env.TRUSTED_PROXY_IP ? process.env.TRUSTED_PROXY_IP.split(/(?:\s*,\s*|\s+)/) : 'loopback,uniquelocal');
 
-  const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL)));
+  const pgPool = new pg.Pool(Object.assign(pgConfigs[env], dbUrlToConfig(process.env.DATABASE_URL), {
+    max: process.env.DB_POOL || 10,
+    connectionTimeoutMillis: 15000,
+    ssl: !!process.env.DB_SSLMODE && process.env.DB_SSLMODE !== 'disable',
+  }));
+
   const server = http.createServer(app);
   const redisNamespace = process.env.REDIS_NAMESPACE || null;
 
@@ -858,6 +856,27 @@ const startWorker = async (workerId) => {
     res.end('OK');
   });
 
+  app.get('/metrics', (req, res) => server.getConnections((err, count) => {
+    res.writeHeader(200, { 'Content-Type': 'application/openmetrics-text; version=1.0.0; charset=utf-8' });
+    res.write('# TYPE connected_clients gauge\n');
+    res.write('# HELP connected_clients The number of clients connected to the streaming server\n');
+    res.write(`connected_clients ${count}.0\n`);
+    res.write('# TYPE connected_channels gauge\n');
+    res.write('# HELP connected_channels The number of Redis channels the streaming server is subscribed to\n');
+    res.write(`connected_channels ${Object.keys(subs).length}.0\n`);
+    res.write('# TYPE pg.pool.total_connections gauge \n');
+    res.write('# HELP pg.pool.total_connections The total number of clients existing within the pool\n');
+    res.write(`pg.pool.total_connections ${pgPool.totalCount}.0\n`);
+    res.write('# TYPE pg.pool.idle_connections gauge \n');
+    res.write('# HELP pg.pool.idle_connections The number of clients which are not checked out but are currently idle in the pool\n');
+    res.write(`pg.pool.idle_connections ${pgPool.idleCount}.0\n`);
+    res.write('# TYPE pg.pool.waiting_queries gauge \n');
+    res.write('# HELP pg.pool.waiting_queries The number of queued requests waiting on a client when all clients are checked out\n');
+    res.write(`pg.pool.waiting_queries ${pgPool.waitingCount}.0\n`);
+    res.write('# EOF\n');
+    res.end();
+  }));
+
   app.use(authenticationMiddleware);
   app.use(errorMiddleware);
 
diff --git a/yarn.lock b/yarn.lock
index 87619a1b8..e0dcd6eab 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1449,7 +1449,7 @@
     "@types/yargs" "^16.0.0"
     chalk "^4.0.0"
 
-"@jest/types@^29.3.1", "@jest/types@^29.4.1":
+"@jest/types@^29.4.1":
   version "29.4.1"
   resolved "https://registry.yarnpkg.com/@jest/types/-/types-29.4.1.tgz#f9f83d0916f50696661da72766132729dcb82ecb"
   integrity sha512-zbrAXDUOnpJ+FMST2rV7QZOgec8rskg2zv8g2ajeqitp4tvZiyqTCYXANrKsM+ryj5o+LI+ZN2EgU9drrkiwSA==
@@ -2545,10 +2545,10 @@ axe-core@^4.6.2:
   resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.6.3.tgz#fc0db6fdb65cc7a80ccf85286d91d64ababa3ece"
   integrity sha512-/BQzOX780JhsxDnPpH4ZiyrJAzcd8AfzFPkv+89veFSr1rcMjuq2JDCwypKaPeB6ljHp9KjXhPpjgCvQlWYuqg==
 
-axios@^1.2.6:
-  version "1.2.6"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-1.2.6.tgz#eacb6d065baa11bad5959e7ffa0cb6745c65f392"
-  integrity sha512-rC/7F08XxZwjMV4iuWv+JpD3E0Ksqg9nac4IIg6RwNuF0JTeWoCo/mBNG54+tNhhI11G3/VDRbdDQTs9hGp4pQ==
+axios@^1.3.2:
+  version "1.3.2"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.3.2.tgz#7ac517f0fa3ec46e0e636223fd973713a09c72b3"
+  integrity sha512-1M3O703bYqYuPhbHeya5bnhpYVsDDRyQSabNja04mZtboLNSuZ4YrltestrLXfHgmzua4TpUqRiVKbiQuo2epw==
   dependencies:
     follow-redirects "^1.15.0"
     form-data "^4.0.0"
@@ -5749,10 +5749,10 @@ ignore@^5.2.0, ignore@^5.2.1:
   resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
   integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==
 
-immutable@^4.0.0, immutable@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.2.tgz#2da9ff4384a4330c36d4d1bc88e90f9e0b0ccd16"
-  integrity sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==
+immutable@^4.0.0, immutable@^4.2.4:
+  version "4.2.4"
+  resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.2.4.tgz#83260d50889526b4b531a5e293709a77f7c55a2a"
+  integrity sha512-WDxL3Hheb1JkRN3sQkyujNlL/xRjAo3rJtaU5xeufUauG66JdMr32bLj4gF+vWl84DIA3Zxw7tiAjneYzRRw+w==
 
 import-cwd@^2.0.0:
   version "2.1.0"
@@ -6781,7 +6781,7 @@ jest-snapshot@^29.4.1:
     pretty-format "^29.4.1"
     semver "^7.3.5"
 
-jest-util@^29.3.1, jest-util@^29.4.1:
+jest-util@^29.4.1:
   version "29.4.1"
   resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-29.4.1.tgz#2eeed98ff4563b441b5a656ed1a786e3abc3e4c4"
   integrity sha512-bQy9FPGxVutgpN4VRc0hk6w7Hx/m6L53QxpDreTZgJd9gfx/AV2MjyPde9tGyZRINAUrSv57p2inGBu2dRLmkQ==
@@ -9706,10 +9706,10 @@ sass-loader@^10.2.0:
     schema-utils "^3.0.0"
     semver "^7.3.2"
 
-sass@^1.57.1:
-  version "1.57.1"
-  resolved "https://registry.yarnpkg.com/sass/-/sass-1.57.1.tgz#dfafd46eb3ab94817145e8825208ecf7281119b5"
-  integrity sha512-O2+LwLS79op7GI0xZ8fqzF7X2m/m8WFfI02dHOdsK5R2ECeS5F62zrwg/relM1rjSLy7Vd/DiMNIvPrQGsA0jw==
+sass@^1.58.0:
+  version "1.58.0"
+  resolved "https://registry.yarnpkg.com/sass/-/sass-1.58.0.tgz#ee8aea3ad5ea5c485c26b3096e2df6087d0bb1cc"
+  integrity sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg==
   dependencies:
     chokidar ">=3.0.0 <4.0.0"
     immutable "^4.0.0"