diff --git a/.bundler-audit.yml b/.bundler-audit.yml
deleted file mode 100644
index a457fc41e8..0000000000
--- a/.bundler-audit.yml
+++ /dev/null
@@ -1,4 +0,0 @@
----
-ignore:
-  # Sidekiq security issue, fixes in the latest Sidekiq 7 but we can not upgrade. Will be fixed in Sidekiq 6.5.10
-  - CVE-2023-26141
diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml
index 20aecd71d6..0369521963 100644
--- a/.devcontainer/docker-compose.yml
+++ b/.devcontainer/docker-compose.yml
@@ -70,7 +70,7 @@ services:
         hard: -1
 
   libretranslate:
-    image: libretranslate/libretranslate:v1.3.11
+    image: libretranslate/libretranslate:v1.3.12
     restart: unless-stopped
     volumes:
       - lt-data:/home/libretranslate/.local
diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml
index 343dc36ca1..0d0215bc06 100644
--- a/.github/workflows/test-ruby.yml
+++ b/.github/workflows/test-ruby.yml
@@ -282,8 +282,8 @@ jobs:
         ports:
           - 6379:6379
 
-      elasticsearch:
-        image: docker.elastic.co/elasticsearch/elasticsearch:7.17.13
+      search:
+        image: ${{ matrix.search-image }}
         env:
           discovery.type: single-node
           xpack.security.enabled: false
@@ -313,6 +313,11 @@ jobs:
           - '3.0'
           - '3.1'
           - '.ruby-version'
+        search-image:
+          - docker.elastic.co/elasticsearch/elasticsearch:7.17.13
+        include:
+          - ruby-version: '.ruby-version'
+            search-image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2
 
     steps:
       - uses: actions/checkout@v4
diff --git a/.gitignore b/.gitignore
index 2bc8b18c8f..cb442609a1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,9 +31,6 @@
 # Ignore Vagrant files
 .vagrant/
 
-# Ignore Capistrano customizations
-/config/deploy/*
-
 # Ignore IDE files
 .vscode/
 .idea/
diff --git a/.haml-lint_todo.yml b/.haml-lint_todo.yml
index 6d2aa0641f..69937c4c48 100644
--- a/.haml-lint_todo.yml
+++ b/.haml-lint_todo.yml
@@ -1,13 +1,13 @@
 # This configuration was generated by
 # `haml-lint --auto-gen-config`
-# on 2023-07-20 09:47:50 -0400 using Haml-Lint version 0.48.0.
+# on 2023-10-03 08:32:28 -0400 using Haml-Lint version 0.51.0.
 # The point is for the user to remove these configuration records
 # one by one as the lints are removed from the code base.
 # Note that changes in the inspected code, or installation of new
 # versions of Haml-Lint, may require this file to be generated again.
 
 linters:
-  # Offense count: 951
+  # Offense count: 944
   LineLength:
     enabled: false
 
@@ -15,7 +15,7 @@ linters:
   UnnecessaryStringOutput:
     enabled: false
 
-  # Offense count: 57
+  # Offense count: 44
   RuboCop:
     enabled: false
 
@@ -26,22 +26,16 @@ linters:
       - 'app/views/admin/reports/show.html.haml'
       - 'app/views/disputes/strikes/show.html.haml'
 
-  # Offense count: 32
+  # Offense count: 15
   InstanceVariables:
     exclude:
       - 'app/views/admin/reports/_actions.html.haml'
-      - 'app/views/admin/roles/_form.html.haml'
-      - 'app/views/admin/webhooks/_form.html.haml'
       - 'app/views/auth/registrations/_status.html.haml'
       - 'app/views/auth/sessions/two_factor/_otp_authentication_form.html.haml'
-      - 'app/views/authorize_interactions/_post_follow_actions.html.haml'
-      - 'app/views/invites/_form.html.haml'
       - 'app/views/relationships/_account.html.haml'
-      - 'app/views/shared/_og.html.haml'
 
-  # Offense count: 3
+  # Offense count: 2
   IdNames:
     exclude:
-      - 'app/views/authorize_interactions/error.html.haml'
       - 'app/views/oauth/authorizations/error.html.haml'
       - 'app/views/shared/_error_messages.html.haml'
diff --git a/.nvmrc b/.nvmrc
index b1b396bcfa..fa69d015bd 100644
--- a/.nvmrc
+++ b/.nvmrc
@@ -1 +1 @@
-20.7
+20.8
diff --git a/.prettierignore b/.prettierignore
index 27b6d5458a..07f83bb423 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -31,9 +31,6 @@
 # Ignore Vagrant files
 .vagrant/
 
-# Ignore Capistrano customizations
-/config/deploy/*
-
 # Ignore IDE files
 .vscode/
 .idea/
diff --git a/.rubocop.yml b/.rubocop.yml
index c8a433c729..64ec766b22 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -28,6 +28,7 @@ AllCops:
     - 'Vagrantfile'
     - 'vendor/**/*'
     - 'lib/json_ld/*' # Generated files
+    - 'lib/mastodon/migration_helpers.rb' # Vendored from GitLab
     - 'lib/templates/**/*'
 
 # Reason: Prefer Hashes without extreme indentation
@@ -75,12 +76,6 @@ Metrics/AbcSize:
     - 'lib/mastodon/cli/*.rb'
     - db/*migrate/**/*
 
-# Reason:
-# https://docs.rubocop.org/rubocop/cops_metrics.html#metricsblocknesting
-Metrics/BlockNesting:
-  Exclude:
-    - 'lib/mastodon/cli/*.rb'
-
 # Reason: Currently disabled in .rubocop_todo.yml
 # https://docs.rubocop.org/rubocop/cops_metrics.html#metricscyclomaticcomplexity
 Metrics/CyclomaticComplexity:
diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml
index 675975b17d..63ed2fb6c9 100644
--- a/.rubocop_todo.yml
+++ b/.rubocop_todo.yml
@@ -13,32 +13,6 @@ Bundler/OrderedGems:
   Exclude:
     - 'Gemfile'
 
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle, IndentationWidth.
-# SupportedStyles: with_first_argument, with_fixed_indentation
-Layout/ArgumentAlignment:
-  Exclude:
-    - 'config/initializers/cors.rb'
-    - 'config/initializers/session_store.rb'
-
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: AllowMultipleStyles, EnforcedHashRocketStyle, EnforcedColonStyle, EnforcedLastArgumentHashStyle.
-# SupportedHashRocketStyles: key, separator, table
-# SupportedColonStyles: key, separator, table
-# SupportedLastArgumentHashStyles: always_inspect, always_ignore, ignore_implicit, ignore_explicit
-Layout/HashAlignment:
-  Exclude:
-    - 'config/environments/production.rb'
-    - 'config/initializers/rack_attack.rb'
-    - 'config/routes.rb'
-
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: AllowDoxygenCommentStyle, AllowGemfileRubyComment.
-Layout/LeadingCommentSpace:
-  Exclude:
-    - 'config/application.rb'
-    - 'config/initializers/3_omniauth.rb'
-
 # This cop supports safe autocorrection (--autocorrect).
 # Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
 # URISchemes: http, https
@@ -46,14 +20,6 @@ Layout/LineLength:
   Exclude:
     - 'app/models/account.rb'
 
-# This cop supports safe autocorrection (--autocorrect).
-# Configuration parameters: EnforcedStyle.
-# SupportedStyles: require_no_space, require_space
-Layout/SpaceInLambdaLiteral:
-  Exclude:
-    - 'config/environments/production.rb'
-    - 'config/initializers/content_security_policy.rb'
-
 # Configuration parameters: AllowComments, AllowEmptyLambdas.
 Lint/EmptyBlock:
   Exclude:
@@ -291,10 +257,6 @@ RSpec/MultipleMemoizedHelpers:
 RSpec/NestedGroups:
   Max: 6
 
-RSpec/PendingWithoutReason:
-  Exclude:
-    - 'spec/models/account_spec.rb'
-
 # This cop supports unsafe autocorrection (--autocorrect-all).
 Rails/ApplicationController:
   Exclude:
@@ -844,6 +806,5 @@ Style/TrailingCommaInHashLiteral:
 Style/WordArray:
   Exclude:
     - 'app/helpers/languages_helper.rb'
-    - 'config/initializers/cors.rb'
     - 'spec/controllers/settings/imports_controller_spec.rb'
     - 'spec/models/form/import_spec.rb'
diff --git a/Capfile b/Capfile
deleted file mode 100644
index 86efa5bacf..0000000000
--- a/Capfile
+++ /dev/null
@@ -1,15 +0,0 @@
-# frozen_string_literal: true
-
-require 'capistrano/setup'
-require 'capistrano/deploy'
-require 'capistrano/scm/git'
-
-install_plugin Capistrano::SCM::Git
-
-require 'capistrano/rbenv'
-require 'capistrano/bundler'
-require 'capistrano/yarn'
-require 'capistrano/rails/assets'
-require 'capistrano/rails/migrations'
-
-Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
diff --git a/Dockerfile b/Dockerfile
index 4d397e3bdf..8e40091add 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
 # syntax=docker/dockerfile:1.4
 # This needs to be bookworm-slim because the Ruby image is built on bookworm-slim
-ARG NODE_VERSION="20.7-bookworm-slim"
+ARG NODE_VERSION="20.8-bookworm-slim"
 
 FROM ghcr.io/moritzheiber/ruby-jemalloc:3.2.2-slim as ruby
 FROM node:${NODE_VERSION} as build
diff --git a/Gemfile b/Gemfile
index 5ce96f71f2..449b0a9203 100644
--- a/Gemfile
+++ b/Gemfile
@@ -170,12 +170,6 @@ group :development do
   # Linter CLI for HAML files
   gem 'haml_lint', require: false
 
-  # Deployment automation
-  gem 'capistrano', '~> 3.17'
-  gem 'capistrano-rails', '~> 1.6'
-  gem 'capistrano-rbenv', '~> 2.2'
-  gem 'capistrano-yarn', '~> 2.0'
-
   # Validate missing i18n keys
   gem 'i18n-tasks', '~> 1.0', require: false
 end
diff --git a/Gemfile.lock b/Gemfile.lock
index 7842fb69d2..c64487c2e1 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -84,9 +84,9 @@ GEM
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.1, >= 1.2.0)
-    active_model_serializers (0.10.13)
-      actionpack (>= 4.1, < 7.1)
-      activemodel (>= 4.1, < 7.1)
+    active_model_serializers (0.10.14)
+      actionpack (>= 4.1)
+      activemodel (>= 4.1)
       case_transform (>= 0.2)
       jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
     activejob (7.0.8)
@@ -112,8 +112,6 @@ GEM
     addressable (2.8.5)
       public_suffix (>= 2.0.2, < 6.0)
     aes_key_wrap (1.1.0)
-    airbrussh (1.4.1)
-      sshkit (>= 1.6.1, != 1.7.0)
     android_key_attestation (0.3.0)
     annotate (3.2.0)
       activerecord (>= 3.2, < 8.0)
@@ -175,21 +173,6 @@ GEM
     bundler-audit (0.9.1)
       bundler (>= 1.2.0, < 3)
       thor (~> 1.0)
-    capistrano (3.17.3)
-      airbrussh (>= 1.0.0)
-      i18n
-      rake (>= 10.0.0)
-      sshkit (>= 1.9.0)
-    capistrano-bundler (2.1.0)
-      capistrano (~> 3.1)
-    capistrano-rails (1.6.3)
-      capistrano (~> 3.1)
-      capistrano-bundler (>= 1.1, < 3)
-    capistrano-rbenv (2.2.0)
-      capistrano (~> 3.1)
-      sshkit (~> 1.3)
-    capistrano-yarn (2.0.2)
-      capistrano (~> 3.0)
     capybara (3.39.2)
       addressable
       matrix
@@ -324,7 +307,7 @@ GEM
       ruby-progressbar (~> 1.4)
     globalid (1.1.0)
       activesupport (>= 5.0)
-    haml (6.1.2)
+    haml (6.2.0)
       temple (>= 0.8.2)
       thor
       tilt
@@ -333,8 +316,8 @@ GEM
       activesupport (>= 5.1)
       haml (>= 4.0.6)
       railties (>= 5.1)
-    haml_lint (0.50.0)
-      haml (>= 4.0, < 6.2)
+    haml_lint (0.51.0)
+      haml (>= 4.0)
       parallel (~> 1.10)
       rainbow
       rubocop (>= 1.0)
@@ -473,11 +456,8 @@ GEM
       net-protocol
     net-protocol (0.2.1)
       timeout
-    net-scp (4.0.0)
-      net-ssh (>= 2.6.5, < 8.0.0)
     net-smtp (0.3.3)
       net-protocol
-    net-ssh (7.1.0)
     nio4r (2.5.9)
     nokogiri (1.15.4)
       mini_portile2 (~> 2.8.2)
@@ -640,7 +620,7 @@ GEM
       sidekiq (>= 5, < 8)
     rspec-support (3.12.1)
     rspec_chunked (0.6)
-    rubocop (1.56.3)
+    rubocop (1.56.4)
       base64 (~> 0.1.1)
       json (~> 2.3)
       language_server-protocol (>= 3.17.0)
@@ -691,7 +671,7 @@ GEM
       rubyzip (>= 1.2.2, < 3.0)
       websocket (~> 1.0)
     semantic_range (3.0.0)
-    sidekiq (6.5.9)
+    sidekiq (6.5.10)
       connection_pool (>= 2.2.5, < 3)
       rack (~> 2.0)
       redis (>= 4.5.0, < 5)
@@ -726,9 +706,6 @@ GEM
       actionpack (>= 5.2)
       activesupport (>= 5.2)
       sprockets (>= 3.0.0)
-    sshkit (1.21.5)
-      net-scp (>= 1.1.2)
-      net-ssh (>= 2.8.0)
     stackprof (0.2.25)
     statsd-ruby (1.5.0)
     stoplight (3.0.2)
@@ -747,7 +724,7 @@ GEM
       climate_control (>= 0.0.3, < 1.0)
     test-prof (1.2.3)
     thor (1.2.2)
-    tilt (2.2.0)
+    tilt (2.3.0)
     timeout (0.4.0)
     tpm-key_attestation (0.12.0)
       bindata (~> 2.4)
@@ -773,7 +750,7 @@ GEM
     unf (0.1.4)
       unf_ext
     unf_ext (0.0.8.2)
-    unicode-display_width (2.4.2)
+    unicode-display_width (2.5.0)
     uri (0.12.2)
     validate_email (0.1.6)
       activemodel (>= 3.0)
@@ -829,10 +806,6 @@ DEPENDENCIES
   brakeman (~> 6.0)
   browser
   bundler-audit (~> 0.9)
-  capistrano (~> 3.17)
-  capistrano-rails (~> 1.6)
-  capistrano-rbenv (~> 2.2)
-  capistrano-yarn (~> 2.0)
   capybara (~> 3.39)
   charlock_holmes (~> 0.7.7)
   chewy (~> 7.3)
diff --git a/SECURITY.md b/SECURITY.md
index 9a08c4e251..3e13377db6 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -15,6 +15,7 @@ A "vulnerability in Mastodon" is a vulnerability in the code distributed through
 
 | Version | Supported        |
 | ------- | ---------------- |
+| 4.2.x   | Yes              |
 | 4.1.x   | Yes              |
 | 4.0.x   | Until 2023-10-31 |
 | 3.5.x   | Until 2023-12-31 |
diff --git a/app/controllers/about_controller.rb b/app/controllers/about_controller.rb
index c4b7e9c9d2..ffccf7a28e 100644
--- a/app/controllers/about_controller.rb
+++ b/app/controllers/about_controller.rb
@@ -5,15 +5,7 @@ class AboutController < ApplicationController
 
   skip_before_action :require_functional!
 
-  before_action :set_instance_presenter
-
   def show
     expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
   end
-
-  private
-
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
 end
diff --git a/app/controllers/auth/registrations_controller.rb b/app/controllers/auth/registrations_controller.rb
index a9d92b6e2b..629d35cde2 100644
--- a/app/controllers/auth/registrations_controller.rb
+++ b/app/controllers/auth/registrations_controller.rb
@@ -11,7 +11,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
   before_action :set_pack
   before_action :set_sessions, only: [:edit, :update]
   before_action :set_strikes, only: [:edit, :update]
-  before_action :set_instance_presenter, only: [:new, :create, :update]
   before_action :set_body_classes, only: [:new, :create, :edit, :update]
   before_action :require_not_suspended!, only: [:update]
   before_action :set_cache_headers, only: [:edit, :update]
@@ -112,10 +111,6 @@ class Auth::RegistrationsController < Devise::RegistrationsController
     use_pack %w(edit update).include?(action_name) ? 'admin' : 'auth'
   end
 
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
-
   def set_body_classes
     @body_classes = %w(edit update).include?(action_name) ? 'admin' : 'lighter'
   end
diff --git a/app/controllers/auth/sessions_controller.rb b/app/controllers/auth/sessions_controller.rb
index d59250b31c..01758d1a3a 100644
--- a/app/controllers/auth/sessions_controller.rb
+++ b/app/controllers/auth/sessions_controller.rb
@@ -12,7 +12,6 @@ class Auth::SessionsController < Devise::SessionsController
 
   include TwoFactorAuthenticationConcern
 
-  before_action :set_instance_presenter, only: [:new]
   before_action :set_body_classes
 
   content_security_policy only: :new do |p|
@@ -104,10 +103,6 @@ class Auth::SessionsController < Devise::SessionsController
     use_pack 'auth'
   end
 
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
-
   def set_body_classes
     @body_classes = 'lighter'
   end
diff --git a/app/controllers/concerns/account_controller_concern.rb b/app/controllers/concerns/account_controller_concern.rb
index e9cff22ca8..d63bcc85c9 100644
--- a/app/controllers/concerns/account_controller_concern.rb
+++ b/app/controllers/concerns/account_controller_concern.rb
@@ -9,17 +9,11 @@ module AccountControllerConcern
   FOLLOW_PER_PAGE = 12
 
   included do
-    before_action :set_instance_presenter
-
     after_action :set_link_headers, if: -> { request.format.nil? || request.format == :html }
   end
 
   private
 
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
-
   def set_link_headers
     response.headers['Link'] = LinkHeader.new(
       [
diff --git a/app/controllers/concerns/web_app_controller_concern.rb b/app/controllers/concerns/web_app_controller_concern.rb
index 129a978dc3..5160bf043f 100644
--- a/app/controllers/concerns/web_app_controller_concern.rb
+++ b/app/controllers/concerns/web_app_controller_concern.rb
@@ -4,11 +4,11 @@ module WebAppControllerConcern
   extend ActiveSupport::Concern
 
   included do
-    prepend_before_action :redirect_unauthenticated_to_permalinks!
+    vary_by 'Accept, Accept-Language, Cookie'
+
+    before_action :redirect_unauthenticated_to_permalinks!
     before_action :set_pack
     before_action :set_app_body_class
-
-    vary_by 'Accept, Accept-Language, Cookie'
   end
 
   def skip_csrf_meta_tags?
@@ -23,8 +23,10 @@ module WebAppControllerConcern
     return if user_signed_in? # NOTE: Different from upstream because we allow moved users to log in
 
     redirect_path = PermalinkRedirector.new(request.path).redirect_path
+    return if redirect_path.blank?
 
-    redirect_to(redirect_path) if redirect_path.present?
+    expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
+    redirect_to(redirect_path)
   end
 
   def set_pack
diff --git a/app/controllers/follower_accounts_controller.rb b/app/controllers/follower_accounts_controller.rb
index 55f9fb9265..15f38c74ee 100644
--- a/app/controllers/follower_accounts_controller.rb
+++ b/app/controllers/follower_accounts_controller.rb
@@ -3,7 +3,6 @@
 class FollowerAccountsController < ApplicationController
   include AccountControllerConcern
   include SignatureVerification
-  include WebAppControllerConcern
 
   vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
 
diff --git a/app/controllers/following_accounts_controller.rb b/app/controllers/following_accounts_controller.rb
index cce296f9fd..268fad96d0 100644
--- a/app/controllers/following_accounts_controller.rb
+++ b/app/controllers/following_accounts_controller.rb
@@ -3,7 +3,6 @@
 class FollowingAccountsController < ApplicationController
   include AccountControllerConcern
   include SignatureVerification
-  include WebAppControllerConcern
 
   vary_by -> { public_fetch_mode? ? 'Accept, Accept-Language, Cookie' : 'Accept, Accept-Language, Cookie, Signature' }
 
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index ee940e6707..03aa3eb52a 100644
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -3,15 +3,7 @@
 class HomeController < ApplicationController
   include WebAppControllerConcern
 
-  before_action :set_instance_presenter
-
   def index
     expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
   end
-
-  private
-
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
 end
diff --git a/app/controllers/privacy_controller.rb b/app/controllers/privacy_controller.rb
index 070ee8a06a..860e7c77a0 100644
--- a/app/controllers/privacy_controller.rb
+++ b/app/controllers/privacy_controller.rb
@@ -5,15 +5,7 @@ class PrivacyController < ApplicationController
 
   skip_before_action :require_functional!
 
-  before_action :set_instance_presenter
-
   def show
     expires_in(15.seconds, public: true, stale_while_revalidate: 30.seconds, stale_if_error: 1.day) unless user_signed_in?
   end
-
-  private
-
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
 end
diff --git a/app/controllers/statuses_controller.rb b/app/controllers/statuses_controller.rb
index 826a013cdc..02fea13502 100644
--- a/app/controllers/statuses_controller.rb
+++ b/app/controllers/statuses_controller.rb
@@ -10,7 +10,6 @@ class StatusesController < ApplicationController
 
   before_action :require_account_signature!, only: [:show, :activity], if: -> { request.format == :json && authorized_fetch_mode? }
   before_action :set_status
-  before_action :set_instance_presenter
   before_action :redirect_to_original, only: :show
   before_action :set_body_classes, only: :embed
 
@@ -68,10 +67,6 @@ class StatusesController < ApplicationController
     not_found
   end
 
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
-
   def redirect_to_original
     redirect_to(ActivityPub::TagManager.instance.url_for(@status.reblog), allow_other_host: true) if @status.reblog?
   end
diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb
index 2007fe8462..b0bdbde956 100644
--- a/app/controllers/tags_controller.rb
+++ b/app/controllers/tags_controller.rb
@@ -14,7 +14,6 @@ class TagsController < ApplicationController
   before_action :set_local
   before_action :set_tag
   before_action :set_statuses, if: -> { request.format == :rss }
-  before_action :set_instance_presenter
 
   skip_before_action :require_functional!, unless: :limited_federation_mode?
 
@@ -49,10 +48,6 @@ class TagsController < ApplicationController
     @statuses = cache_collection(TagFeed.new(@tag, nil, local: @local).get(limit_param), Status)
   end
 
-  def set_instance_presenter
-    @instance_presenter = InstancePresenter.new
-  end
-
   def limit_param
     params[:limit].present? ? [params[:limit].to_i, PAGE_SIZE_MAX].min : PAGE_SIZE
   end
diff --git a/app/helpers/admin/announcements_helper.rb b/app/helpers/admin/announcements_helper.rb
new file mode 100644
index 0000000000..97abe8e011
--- /dev/null
+++ b/app/helpers/admin/announcements_helper.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module Admin::AnnouncementsHelper
+  def datetime_pattern
+    '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}'
+  end
+
+  def datetime_placeholder
+    Time.zone.now.strftime('%FT%R')
+  end
+end
diff --git a/app/helpers/invites_helper.rb b/app/helpers/invites_helper.rb
new file mode 100644
index 0000000000..c189061db0
--- /dev/null
+++ b/app/helpers/invites_helper.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+module InvitesHelper
+  def invites_max_uses_options
+    [1, 5, 10, 25, 50, 100]
+  end
+
+  def invites_expires_options
+    [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week]
+  end
+end
diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb
index a8c66552cf..ddb10aa25f 100644
--- a/app/helpers/languages_helper.rb
+++ b/app/helpers/languages_helper.rb
@@ -230,6 +230,24 @@ module LanguagesHelper
     'sr-Latn': 'Srpski (latinica)',
   }.freeze
 
+  # Helper for self.sorted_locale_keys
+  private_class_method def self.locale_name_for_sorting(locale)
+    if locale.blank? || locale == 'und'
+      '000'
+    elsif (supported_locale = SUPPORTED_LOCALES[locale.to_sym])
+      ASCIIFolding.new.fold(supported_locale[1]).downcase
+    elsif (regional_locale = REGIONAL_LOCALE_NAMES[locale.to_sym])
+      ASCIIFolding.new.fold(regional_locale).downcase
+    else
+      locale
+    end
+  end
+
+  # Sort locales by native name for dropdown menus
+  def self.sorted_locale_keys(locale_keys)
+    locale_keys.sort_by { |key, _| locale_name_for_sorting(key) }
+  end
+
   def native_locale_name(locale)
     if locale.blank? || locale == 'und'
       I18n.t('generic.none')
@@ -254,6 +272,7 @@ module LanguagesHelper
 
   def valid_locale_or_nil(str)
     return if str.blank?
+    return str if valid_locale?(str)
 
     code, = str.to_s.split(/[_-]/) # Strip out the region from e.g. en_US or ja-JP
 
diff --git a/app/helpers/mascot_helper.rb b/app/helpers/mascot_helper.rb
index 0124c74f19..8ee04383ec 100644
--- a/app/helpers/mascot_helper.rb
+++ b/app/helpers/mascot_helper.rb
@@ -5,8 +5,6 @@ module MascotHelper
     full_asset_url(instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'))
   end
 
-  private
-
   def instance_presenter
     @instance_presenter ||= InstancePresenter.new
   end
diff --git a/app/helpers/routing_helper.rb b/app/helpers/routing_helper.rb
index 0d5a8505a2..2fb9ce72cb 100644
--- a/app/helpers/routing_helper.rb
+++ b/app/helpers/routing_helper.rb
@@ -3,11 +3,12 @@
 module RoutingHelper
   extend ActiveSupport::Concern
 
-  include Rails.application.routes.url_helpers
   include ActionView::Helpers::AssetTagHelper
   include Webpacker::Helper
 
   included do
+    include Rails.application.routes.url_helpers
+
     def default_url_options
       ActionMailer::Base.default_url_options
     end
diff --git a/app/helpers/settings_helper.rb b/app/helpers/settings_helper.rb
index 889ca7f402..fce36bf43e 100644
--- a/app/helpers/settings_helper.rb
+++ b/app/helpers/settings_helper.rb
@@ -2,7 +2,11 @@
 
 module SettingsHelper
   def filterable_languages
-    LanguagesHelper::SUPPORTED_LOCALES.keys
+    LanguagesHelper.sorted_locale_keys(LanguagesHelper::SUPPORTED_LOCALES.keys)
+  end
+
+  def ui_languages
+    LanguagesHelper.sorted_locale_keys(I18n.available_locales)
   end
 
   def session_device_icon(session)
diff --git a/app/javascript/flavours/glitch/components/admin/Retention.jsx b/app/javascript/flavours/glitch/components/admin/Retention.jsx
index 2cfc30b6fb..768dae1559 100644
--- a/app/javascript/flavours/glitch/components/admin/Retention.jsx
+++ b/app/javascript/flavours/glitch/components/admin/Retention.jsx
@@ -9,11 +9,12 @@ import api from 'flavours/glitch/api';
 import { roundTo10 } from 'flavours/glitch/utils/numbers';
 
 const dateForCohort = cohort => {
+  const timeZone = 'UTC';
   switch(cohort.frequency) {
   case 'day':
-    return <FormattedDate value={cohort.period} month='long' day='2-digit' />;
+    return <FormattedDate value={cohort.period} month='long' day='2-digit' timeZone={timeZone} />;
   default:
-    return <FormattedDate value={cohort.period} month='long' year='numeric' />;
+    return <FormattedDate value={cohort.period} month='long' year='numeric' timeZone={timeZone} />;
   }
 };
 
diff --git a/app/javascript/flavours/glitch/components/scrollable_list.jsx b/app/javascript/flavours/glitch/components/scrollable_list.jsx
index b4643151f3..2a746c5bd1 100644
--- a/app/javascript/flavours/glitch/components/scrollable_list.jsx
+++ b/app/javascript/flavours/glitch/components/scrollable_list.jsx
@@ -78,7 +78,7 @@ class ScrollableList extends PureComponent {
       const clientHeight = this.getClientHeight();
       const offset = scrollHeight - scrollTop - clientHeight;
 
-      if (400 > offset && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
+      if (scrollTop > 0 && offset < 400 && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
         this.props.onLoadMore();
       }
 
diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.jsx b/app/javascript/flavours/glitch/features/home_timeline/index.jsx
index 64470e97b7..ac378291e5 100644
--- a/app/javascript/flavours/glitch/features/home_timeline/index.jsx
+++ b/app/javascript/flavours/glitch/features/home_timeline/index.jsx
@@ -39,8 +39,17 @@ const getHomeFeedSpeed = createSelector([
 ], (statusIds, pendingStatusIds, statusMap) => {
   const recentStatusIds = pendingStatusIds.size > 0 ? pendingStatusIds : statusIds;
   const statuses = recentStatusIds.filter(id => id !== null).map(id => statusMap.get(id)).filter(status => status?.get('account') !== me).take(20);
-  const oldest = new Date(statuses.getIn([statuses.size - 1, 'created_at'], 0));
-  const newest = new Date(statuses.getIn([0, 'created_at'], 0));
+
+  if (statuses.isEmpty()) {
+    return {
+      gap: 0,
+      newest: new Date(0),
+    };
+  }
+
+  const datetimes = statuses.map(status => status.get('created_at', 0));
+  const oldest = new Date(datetimes.min());
+  const newest = new Date(datetimes.max());
   const averageGap = (newest - oldest) / (1000 * (statuses.size + 1)); // Average gap between posts on first page in seconds
 
   return {
diff --git a/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx b/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx
index 0ef37bb239..0de77b893f 100644
--- a/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx
+++ b/app/javascript/flavours/glitch/features/ui/components/link_footer.jsx
@@ -100,7 +100,7 @@ class LinkFooter extends PureComponent {
           {DividingCircle}
           <a href={source_url} rel='noopener noreferrer' target='_blank'><FormattedMessage id='footer.source_code' defaultMessage='View source code' /></a>
           {DividingCircle}
-          v{version}
+          <span class='version'>v{version}</span>
         </p>
       </div>
     );
diff --git a/app/javascript/flavours/glitch/styles/components/about.scss b/app/javascript/flavours/glitch/styles/components/about.scss
index ba55282969..98ff91ad18 100644
--- a/app/javascript/flavours/glitch/styles/components/about.scss
+++ b/app/javascript/flavours/glitch/styles/components/about.scss
@@ -41,6 +41,10 @@
     color: $dark-text-color;
     margin-bottom: 20px;
 
+    .version {
+      white-space: nowrap;
+    }
+
     strong {
       font-weight: 500;
     }
diff --git a/app/javascript/mastodon/actions/search.js b/app/javascript/mastodon/actions/search.js
index 7aea346e6d..38a089b486 100644
--- a/app/javascript/mastodon/actions/search.js
+++ b/app/javascript/mastodon/actions/search.js
@@ -147,6 +147,10 @@ export const openURL = (value, history, onFailure) => (dispatch, getState) => {
   const signedIn = !!getState().getIn(['meta', 'me']);
 
   if (!signedIn) {
+    if (onFailure) {
+      onFailure();
+    }
+
     return;
   }
 
diff --git a/app/javascript/mastodon/components/__tests__/hashtag_bar.tsx b/app/javascript/mastodon/components/__tests__/hashtag_bar.tsx
index 1856b7109e..b7225fc92e 100644
--- a/app/javascript/mastodon/components/__tests__/hashtag_bar.tsx
+++ b/app/javascript/mastodon/components/__tests__/hashtag_bar.tsx
@@ -45,6 +45,21 @@ describe('computeHashtagBarForStatus', () => {
     );
   });
 
+  it('does not truncate the contents when the last child is a text node', () => {
+    const status = createStatus(
+      'this is a #<a class="zrl" href="https://example.com/search?tag=test">test</a>. Some more text',
+      ['test'],
+    );
+
+    const { hashtagsInBar, statusContentProps } =
+      computeHashtagBarForStatus(status);
+
+    expect(hashtagsInBar).toEqual([]);
+    expect(statusContentProps.statusContent).toMatchInlineSnapshot(
+      `"this is a #<a class="zrl" href="https://example.com/search?tag=test">test</a>. Some more text"`,
+    );
+  });
+
   it('extract tags from the last line', () => {
     const status = createStatus(
       '<p>Simple text</p><p><a href="test">#hashtag</a></p>',
diff --git a/app/javascript/mastodon/components/admin/Retention.jsx b/app/javascript/mastodon/components/admin/Retention.jsx
index 7bef96d8c4..2f56710682 100644
--- a/app/javascript/mastodon/components/admin/Retention.jsx
+++ b/app/javascript/mastodon/components/admin/Retention.jsx
@@ -9,11 +9,12 @@ import api from 'mastodon/api';
 import { roundTo10 } from 'mastodon/utils/numbers';
 
 const dateForCohort = cohort => {
+  const timeZone = 'UTC';
   switch(cohort.frequency) {
   case 'day':
-    return <FormattedDate value={cohort.period} month='long' day='2-digit' />;
+    return <FormattedDate value={cohort.period} month='long' day='2-digit' timeZone={timeZone} />;
   default:
-    return <FormattedDate value={cohort.period} month='long' year='numeric' />;
+    return <FormattedDate value={cohort.period} month='long' year='numeric' timeZone={timeZone} />;
   }
 };
 
diff --git a/app/javascript/mastodon/components/column.jsx b/app/javascript/mastodon/components/column.jsx
index d737bd347c..cf9df3ba27 100644
--- a/app/javascript/mastodon/components/column.jsx
+++ b/app/javascript/mastodon/components/column.jsx
@@ -22,12 +22,6 @@ export default class Column extends PureComponent {
       scrollable = document.scrollingElement;
     } else {
       scrollable = this.node.querySelector('.scrollable');
-
-      // Some columns have nested `.scrollable` containers, with the outer one
-      // being a wrapper while the actual scrollable content is deeper.
-      if (scrollable.classList.contains('scrollable--flex')) {
-        scrollable = scrollable?.querySelector('.scrollable') || scrollable;
-      }
    }
 
     if (!scrollable) {
diff --git a/app/javascript/mastodon/components/hashtag_bar.tsx b/app/javascript/mastodon/components/hashtag_bar.tsx
index d45a6e20eb..91fa922198 100644
--- a/app/javascript/mastodon/components/hashtag_bar.tsx
+++ b/app/javascript/mastodon/components/hashtag_bar.tsx
@@ -109,7 +109,7 @@ export function computeHashtagBarForStatus(status: StatusLike): {
 
   const lastChild = template.content.lastChild;
 
-  if (!lastChild) return defaultResult;
+  if (!lastChild || lastChild.nodeType === Node.TEXT_NODE) return defaultResult;
 
   template.content.removeChild(lastChild);
   const contentWithoutLastLine = template;
diff --git a/app/javascript/mastodon/components/scrollable_list.jsx b/app/javascript/mastodon/components/scrollable_list.jsx
index 7672a4e424..79dc481362 100644
--- a/app/javascript/mastodon/components/scrollable_list.jsx
+++ b/app/javascript/mastodon/components/scrollable_list.jsx
@@ -78,7 +78,7 @@ class ScrollableList extends PureComponent {
       const clientHeight = this.getClientHeight();
       const offset = scrollHeight - scrollTop - clientHeight;
 
-      if (400 > offset && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
+      if (scrollTop > 0 && offset < 400 && this.props.onLoadMore && this.props.hasMore && !this.props.isLoading) {
         this.props.onLoadMore();
       }
 
diff --git a/app/javascript/mastodon/features/explore/index.jsx b/app/javascript/mastodon/features/explore/index.jsx
index 1a66adc87c..fefdc23fab 100644
--- a/app/javascript/mastodon/features/explore/index.jsx
+++ b/app/javascript/mastodon/features/explore/index.jsx
@@ -67,47 +67,45 @@ class Explore extends PureComponent {
           <Search />
         </div>
 
-        <div className='scrollable scrollable--flex' data-nosnippet>
-          {isSearching ? (
-            <SearchResults />
-          ) : (
-            <>
-              <div className='account__section-headline'>
-                <NavLink exact to='/explore'>
-                  <FormattedMessage tagName='div' id='explore.trending_statuses' defaultMessage='Posts' />
+        {isSearching ? (
+          <SearchResults />
+        ) : (
+          <>
+            <div className='account__section-headline'>
+              <NavLink exact to='/explore'>
+                <FormattedMessage tagName='div' id='explore.trending_statuses' defaultMessage='Posts' />
+              </NavLink>
+
+              <NavLink exact to='/explore/tags'>
+                <FormattedMessage tagName='div' id='explore.trending_tags' defaultMessage='Hashtags' />
+              </NavLink>
+
+              {signedIn && (
+                <NavLink exact to='/explore/suggestions'>
+                  <FormattedMessage tagName='div' id='explore.suggested_follows' defaultMessage='People' />
                 </NavLink>
+              )}
 
-                <NavLink exact to='/explore/tags'>
-                  <FormattedMessage tagName='div' id='explore.trending_tags' defaultMessage='Hashtags' />
-                </NavLink>
+              <NavLink exact to='/explore/links'>
+                <FormattedMessage tagName='div' id='explore.trending_links' defaultMessage='News' />
+              </NavLink>
+            </div>
 
-                {signedIn && (
-                  <NavLink exact to='/explore/suggestions'>
-                    <FormattedMessage tagName='div' id='explore.suggested_follows' defaultMessage='People' />
-                  </NavLink>
-                )}
+            <Switch>
+              <Route path='/explore/tags' component={Tags} />
+              <Route path='/explore/links' component={Links} />
+              <Route path='/explore/suggestions' component={Suggestions} />
+              <Route exact path={['/explore', '/explore/posts', '/search']}>
+                <Statuses multiColumn={multiColumn} />
+              </Route>
+            </Switch>
 
-                <NavLink exact to='/explore/links'>
-                  <FormattedMessage tagName='div' id='explore.trending_links' defaultMessage='News' />
-                </NavLink>
-              </div>
-
-              <Switch>
-                <Route path='/explore/tags' component={Tags} />
-                <Route path='/explore/links' component={Links} />
-                <Route path='/explore/suggestions' component={Suggestions} />
-                <Route exact path={['/explore', '/explore/posts', '/search']}>
-                  <Statuses multiColumn={multiColumn} />
-                </Route>
-              </Switch>
-
-              <Helmet>
-                <title>{intl.formatMessage(messages.title)}</title>
-                <meta name='robots' content={isSearching ? 'noindex' : 'all'} />
-              </Helmet>
-            </>
-          )}
-        </div>
+            <Helmet>
+              <title>{intl.formatMessage(messages.title)}</title>
+              <meta name='robots' content={isSearching ? 'noindex' : 'all'} />
+            </Helmet>
+          </>
+        )}
       </Column>
     );
   }
diff --git a/app/javascript/mastodon/features/explore/links.jsx b/app/javascript/mastodon/features/explore/links.jsx
index 663aa6d80f..e610c84d41 100644
--- a/app/javascript/mastodon/features/explore/links.jsx
+++ b/app/javascript/mastodon/features/explore/links.jsx
@@ -52,7 +52,7 @@ class Links extends PureComponent {
     }
 
     return (
-      <div className='explore__links'>
+      <div className='explore__links scrollable' data-nosnippet>
         {banner}
 
         {isLoading ? (<LoadingIndicator />) : links.map((link, i) => (
diff --git a/app/javascript/mastodon/features/explore/results.jsx b/app/javascript/mastodon/features/explore/results.jsx
index c6fe9b78e0..4c23d6422d 100644
--- a/app/javascript/mastodon/features/explore/results.jsx
+++ b/app/javascript/mastodon/features/explore/results.jsx
@@ -204,7 +204,7 @@ class Results extends PureComponent {
           <button onClick={this.handleSelectStatuses} className={type === 'statuses' ? 'active' : undefined}><FormattedMessage id='search_results.statuses' defaultMessage='Posts' /></button>
         </div>
 
-        <div className='explore__search-results'>
+        <div className='explore__search-results' data-nosnippet>
           <ScrollableList
             scrollKey='search-results'
             isLoading={isLoading}
diff --git a/app/javascript/mastodon/features/explore/suggestions.jsx b/app/javascript/mastodon/features/explore/suggestions.jsx
index f2907cdb22..c60aa7e11c 100644
--- a/app/javascript/mastodon/features/explore/suggestions.jsx
+++ b/app/javascript/mastodon/features/explore/suggestions.jsx
@@ -42,7 +42,7 @@ class Suggestions extends PureComponent {
     }
 
     return (
-      <div className='explore__suggestions'>
+      <div className='explore__suggestions scrollable' data-nosnippet>
         {isLoading ? <LoadingIndicator /> : suggestions.map(suggestion => (
           <AccountCard key={suggestion.get('account')} id={suggestion.get('account')} />
         ))}
diff --git a/app/javascript/mastodon/features/explore/tags.jsx b/app/javascript/mastodon/features/explore/tags.jsx
index 1a4d259690..11e0147214 100644
--- a/app/javascript/mastodon/features/explore/tags.jsx
+++ b/app/javascript/mastodon/features/explore/tags.jsx
@@ -51,7 +51,7 @@ class Tags extends PureComponent {
     }
 
     return (
-      <div className='explore__links'>
+      <div className='scrollable explore__links' data-nosnippet>
         {banner}
 
         {isLoading ? (<LoadingIndicator />) : hashtags.map(hashtag => (
diff --git a/app/javascript/mastodon/features/firehose/index.jsx b/app/javascript/mastodon/features/firehose/index.jsx
index e5b47d3fe0..efde58a5c0 100644
--- a/app/javascript/mastodon/features/firehose/index.jsx
+++ b/app/javascript/mastodon/features/firehose/index.jsx
@@ -169,32 +169,30 @@ const Firehose = ({ feedType, multiColumn }) => {
         <ColumnSettings />
       </ColumnHeader>
 
-      <div className='scrollable scrollable--flex'>
-        <div className='account__section-headline'>
-          <NavLink exact to='/public/local'>
-            <FormattedMessage tagName='div' id='firehose.local' defaultMessage='This server' />
-          </NavLink>
+      <div className='account__section-headline'>
+        <NavLink exact to='/public/local'>
+          <FormattedMessage tagName='div' id='firehose.local' defaultMessage='This server' />
+        </NavLink>
 
-          <NavLink exact to='/public/remote'>
-            <FormattedMessage tagName='div' id='firehose.remote' defaultMessage='Other servers' />
-          </NavLink>
+        <NavLink exact to='/public/remote'>
+          <FormattedMessage tagName='div' id='firehose.remote' defaultMessage='Other servers' />
+        </NavLink>
 
-          <NavLink exact to='/public'>
-            <FormattedMessage tagName='div' id='firehose.all' defaultMessage='All' />
-          </NavLink>
-        </div>
-
-        <StatusListContainer
-          prepend={prependBanner}
-          timelineId={`${feedType}${onlyMedia ? ':media' : ''}`}
-          onLoadMore={handleLoadMore}
-          trackScroll
-          scrollKey='firehose'
-          emptyMessage={emptyMessage}
-          bindToDocument={!multiColumn}
-        />
+        <NavLink exact to='/public'>
+          <FormattedMessage tagName='div' id='firehose.all' defaultMessage='All' />
+        </NavLink>
       </div>
 
+      <StatusListContainer
+        prepend={prependBanner}
+        timelineId={`${feedType}${onlyMedia ? ':media' : ''}`}
+        onLoadMore={handleLoadMore}
+        trackScroll
+        scrollKey='firehose'
+        emptyMessage={emptyMessage}
+        bindToDocument={!multiColumn}
+      />
+
       <Helmet>
         <title>{intl.formatMessage(messages.title)}</title>
         <meta name='robots' content='noindex' />
diff --git a/app/javascript/mastodon/features/home_timeline/index.jsx b/app/javascript/mastodon/features/home_timeline/index.jsx
index 63d373b9a9..93f9376285 100644
--- a/app/javascript/mastodon/features/home_timeline/index.jsx
+++ b/app/javascript/mastodon/features/home_timeline/index.jsx
@@ -39,8 +39,17 @@ const getHomeFeedSpeed = createSelector([
 ], (statusIds, pendingStatusIds, statusMap) => {
   const recentStatusIds = pendingStatusIds.size > 0 ? pendingStatusIds : statusIds;
   const statuses = recentStatusIds.filter(id => id !== null).map(id => statusMap.get(id)).filter(status => status?.get('account') !== me).take(20);
-  const oldest = new Date(statuses.getIn([statuses.size - 1, 'created_at'], 0));
-  const newest = new Date(statuses.getIn([0, 'created_at'], 0));
+
+  if (statuses.isEmpty()) {
+    return {
+      gap: 0,
+      newest: new Date(0),
+    };
+  }
+
+  const datetimes = statuses.map(status => status.get('created_at', 0));
+  const oldest = new Date(datetimes.min());
+  const newest = new Date(datetimes.max());
   const averageGap = (newest - oldest) / (1000 * (statuses.size + 1)); // Average gap between posts on first page in seconds
 
   return {
diff --git a/app/javascript/mastodon/features/ui/components/link_footer.jsx b/app/javascript/mastodon/features/ui/components/link_footer.jsx
index 7aaa887ac6..9585df2ec4 100644
--- a/app/javascript/mastodon/features/ui/components/link_footer.jsx
+++ b/app/javascript/mastodon/features/ui/components/link_footer.jsx
@@ -100,7 +100,7 @@ class LinkFooter extends PureComponent {
           {DividingCircle}
           <a href={source_url} rel='noopener noreferrer' target='_blank'><FormattedMessage id='footer.source_code' defaultMessage='View source code' /></a>
           {DividingCircle}
-          v{version}
+          <span class='version'>v{version}</span>
         </p>
       </div>
     );
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 4b055f53a4..85d6f2474a 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -190,6 +190,7 @@
   "conversation.open": "কথপোকথন দেখান",
   "conversation.with": "{names} এর সঙ্গে",
   "copypaste.copied": "অনুলিপিকৃত",
+  "copypaste.copy_to_clipboard": "ক্লিপবোর্ডে কপি করুন",
   "directory.federated": "পরিচিত ফেডিভারসের থেকে",
   "directory.local": "শুধু {domain} থেকে",
   "directory.new_arrivals": "নতুন আগত",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index acd53c28a7..76b37ef44b 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -383,7 +383,7 @@
   "lists.new.create": "Neue Liste erstellen",
   "lists.new.title_placeholder": "Titel der neuen Liste",
   "lists.replies_policy.followed": "Alle folgenden Profile",
-  "lists.replies_policy.list": "Mitglieder*innen der Liste",
+  "lists.replies_policy.list": "Mitglieder der Liste",
   "lists.replies_policy.none": "Niemanden",
   "lists.replies_policy.title": "Antworten anzeigen für:",
   "lists.search": "Suche nach Leuten, denen du folgst",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index c1b067cff8..f4a2e09e73 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -338,7 +338,7 @@
   "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها",
   "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن",
   "keyboard_shortcuts.description": "توضیح",
-  "keyboard_shortcuts.direct": "باز کردن ستون اشاره‌های خصوصی",
+  "keyboard_shortcuts.direct": "برای گشودن ستون اشاره‌های خصوصی",
   "keyboard_shortcuts.down": "پایین بردن در سیاهه",
   "keyboard_shortcuts.enter": "گشودن فرسته",
   "keyboard_shortcuts.favourite": "پسندیدن فرسته",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 2454bdf980..87d7c90c41 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -1,9 +1,9 @@
 {
-  "about.blocks": "Moderoidut palvelimet",
-  "about.contact": "Yhteystiedot:",
+  "about.blocks": "Valvotut palvelimet",
+  "about.contact": "Yhteydenotto:",
   "about.disclaimer": "Mastodon on vapaa avoimen lähdekoodin ohjelmisto ja Mastodon gGmbH:n tavaramerkki.",
   "about.domain_blocks.no_reason_available": "Syytä ei ole ilmoitettu",
-  "about.domain_blocks.preamble": "Yleisesti Mastodonin avulla voidaan tarkastella minkä tahansa muun fediverse-palvelinten sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.",
+  "about.domain_blocks.preamble": "Mastodonin avulla voidaan yleensä tarkastella minkä tahansa fediversumiin kuuluvan palvelimen sisältöä ja vuorovaikuttaa eri palvelinten käyttäjien kanssa. Nämä ovat tälle palvelimelle määritetyt poikkeukset.",
   "about.domain_blocks.silenced.explanation": "Et yleensä näe tämän palvelimen profiileja ja sisältöä, jollet erityisesti etsi juuri sitä tai liity siihen seuraamalla.",
   "about.domain_blocks.silenced.title": "Rajoitettu",
   "about.domain_blocks.suspended.explanation": "Mitään tämän palvelimen tietoja ei käsitellä, tallenneta tai vaihdeta, mikä tekee vuorovaikutuksesta ja viestinnästä sen käyttäjien kanssa mahdotonta.",
@@ -16,7 +16,7 @@
   "account.badges.bot": "Botti",
   "account.badges.group": "Ryhmä",
   "account.block": "Estä @{name}",
-  "account.block_domain": "Estä palvelu {domain}",
+  "account.block_domain": "Estä verkkotunnus {domain}",
   "account.block_short": "Estä",
   "account.blocked": "Estetty",
   "account.browse_more_on_origin_server": "Selaile lisää alkuperäisellä palvelimella",
@@ -25,11 +25,11 @@
   "account.disable_notifications": "Lopeta ilmoittamasta minulle, kun @{name} julkaisee",
   "account.domain_blocked": "Verkkotunnus estetty",
   "account.edit_profile": "Muokkaa profiilia",
-  "account.enable_notifications": "Ilmoita kun käyttäjä @{name} julkaisee viestin",
+  "account.enable_notifications": "Ilmoita minulle, kun @{name} julkaisee",
   "account.endorse": "Suosittele profiilissasi",
-  "account.featured_tags.last_status_at": "Viimeisin viesti {date}",
-  "account.featured_tags.last_status_never": "Ei viestejä",
-  "account.featured_tags.title": "Käyttäjän {name} esillä olevat aihetunnisteet",
+  "account.featured_tags.last_status_at": "Viimeisin julkaisu {date}",
+  "account.featured_tags.last_status_never": "Ei julkaisuja",
+  "account.featured_tags.title": "Käyttäjän {name} esille nostetut aihetunnisteet",
   "account.follow": "Seuraa",
   "account.followers": "seuraaja(t)",
   "account.followers.empty": "Kukaan ei seuraa tätä käyttäjää vielä.",
@@ -54,21 +54,21 @@
   "account.muted": "Mykistetty",
   "account.no_bio": "Kuvausta ei ole annettu.",
   "account.open_original_page": "Avaa alkuperäinen sivu",
-  "account.posts": "viesti(t)",
-  "account.posts_with_replies": "Viestit ja vastaukset",
+  "account.posts": "Julkaisut",
+  "account.posts_with_replies": "Julkaisut ja vastaukset",
   "account.report": "Raportoi @{name}",
-  "account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö klikkaamalla",
+  "account.requested": "Odottaa hyväksyntää. Peruuta seuraamispyyntö napsauttamalla",
   "account.requested_follow": "{name} on pyytänyt lupaa seurata sinua",
   "account.share": "Jaa käyttäjän @{name} profiili",
-  "account.show_reblogs": "Näytä tehostukset käyttäjältä @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} viesti} other {{counter} viestiä}}",
+  "account.show_reblogs": "Näytä käyttäjän @{name} tehostukset",
+  "account.statuses_counter": "{count, plural, one {{counter} julkaisu} other {{counter} julkaisua}}",
   "account.unblock": "Poista esto: @{name}",
   "account.unblock_domain": "Salli palvelu {domain}",
   "account.unblock_short": "Poista esto",
   "account.unendorse": "Poista suosittelu profiilistasi",
   "account.unfollow": "Lopeta seuraaminen",
   "account.unmute": "Poista käyttäjän @{name} mykistys",
-  "account.unmute_notifications_short": "Kumoa ilmoitusten mykistys",
+  "account.unmute_notifications_short": "Poista ilmoitusten mykistys",
   "account.unmute_short": "Poista mykistys",
   "account_note.placeholder": "Lisää muistiinpano napsauttamalla",
   "admin.dashboard.daily_retention": "Käyttäjän säilyminen rekisteröitymisen jälkeiseen päivään mennessä",
@@ -112,7 +112,7 @@
   "column.community": "Paikallinen aikajana",
   "column.direct": "Yksityiset maininnat",
   "column.directory": "Selaa profiileja",
-  "column.domain_blocks": "Estetyt palvelut",
+  "column.domain_blocks": "Estetyt verkkotunnukset",
   "column.favourites": "Suosikit",
   "column.firehose": "Live-syötteet",
   "column.follow_requests": "Seuraamispyynnöt",
@@ -120,7 +120,7 @@
   "column.lists": "Listat",
   "column.mutes": "Mykistetyt käyttäjät",
   "column.notifications": "Ilmoitukset",
-  "column.pins": "Kiinnitetyt viestit",
+  "column.pins": "Kiinnitetyt julkaisut",
   "column.public": "Yleinen aikajana",
   "column_back_button.label": "Takaisin",
   "column_header.hide_settings": "Piilota asetukset",
@@ -128,7 +128,7 @@
   "column_header.moveRight_settings": "Siirrä saraketta oikealle",
   "column_header.pin": "Kiinnitä",
   "column_header.show_settings": "Näytä asetukset",
-  "column_header.unpin": "Poista kiinnitys",
+  "column_header.unpin": "Irrota",
   "column_subheading.settings": "Asetukset",
   "community.column_settings.local_only": "Vain paikalliset",
   "community.column_settings.media_only": "Vain media",
@@ -137,13 +137,13 @@
   "compose.language.search": "Hae kieliä...",
   "compose.published.body": "Julkaisusi julkaistiin.",
   "compose.published.open": "Avaa",
-  "compose.saved.body": "Viesti tallennettu.",
+  "compose.saved.body": "Julkaisu tallennettu.",
   "compose_form.direct_message_warning_learn_more": "Lisätietoja",
-  "compose_form.encryption_warning": "Mastodonin viestit eivät ole päästä päähän salattuja. Älä jaa arkaluonteisia tietoja Mastodonissa.",
+  "compose_form.encryption_warning": "Mastodonin julkaisut eivät ole päästä päähän salattuja. Älä jaa arkaluonteisia tietoja Mastodonissa.",
   "compose_form.hashtag_warning": "Tätä julkaisua ei voi liittää aihetunnisteisiin, koska se ei ole julkinen. Vain näkyvyydeltään julkisiksi määritettyjä julkaisuja voidaan hakea aihetunnisteiden avulla.",
   "compose_form.lock_disclaimer": "Tilisi ei ole {locked}. Kuka tahansa voi seurata tiliäsi ja nähdä vain seuraajille rajaamasi julkaisut.",
   "compose_form.lock_disclaimer.lock": "lukittu",
-  "compose_form.placeholder": "Mitä sinulla on mielessäsi?",
+  "compose_form.placeholder": "Mitä mietit?",
   "compose_form.poll.add_option": "Lisää valinta",
   "compose_form.poll.duration": "Äänestyksen kesto",
   "compose_form.poll.option_placeholder": "Valinta {number}",
@@ -167,24 +167,24 @@
   "confirmations.cancel_follow_request.confirm": "Peruuta pyyntö",
   "confirmations.cancel_follow_request.message": "Haluatko varmasti peruuttaa pyyntösi seurata profiilia {name}?",
   "confirmations.delete.confirm": "Poista",
-  "confirmations.delete.message": "Haluatko varmasti poistaa tämän viestin?",
+  "confirmations.delete.message": "Haluatko varmasti poistaa tämän julkaisun?",
   "confirmations.delete_list.confirm": "Poista",
-  "confirmations.delete_list.message": "Haluatko varmasti poistaa tämän listan kokonaan?",
+  "confirmations.delete_list.message": "Haluatko varmasti poistaa tämän listan pysyvästi?",
   "confirmations.discard_edit_media.confirm": "Hylkää",
   "confirmations.discard_edit_media.message": "Sinulla on tallentamattomia muutoksia median kuvaukseen tai esikatseluun, hylätäänkö ne silti?",
   "confirmations.domain_block.confirm": "Estä koko verkkotunnus",
-  "confirmations.domain_block.message": "Haluatko aivan varmasti estää palvelun {domain} täysin? Useimmiten muutama kohdistettu esto tai mykistys on riittävä ja suositeltava toimenpide. Et näe kyseisen sisältöä kyseiseltä verkkoalueelta missään julkisissa aikajanoissa tai ilmoituksissa. Tälle verkkoalueelle kuuluvat seuraajasi poistetaan.",
+  "confirmations.domain_block.message": "Haluatko aivan varmasti estää koko verkkotunnuksen {domain}? Useimmiten muutama kohdistettu esto tai mykistys on riittävä ja suositeltava toimi. Et näe sisältöä tästä verkkotunnuksesta millään julkisilla aikajanoilla tai ilmoituksissa. Tähän verkkotunnukseen kuuluvat seuraajasi poistetaan.",
   "confirmations.edit.confirm": "Muokkaa",
-  "confirmations.edit.message": "Muokkaaminen nyt korvaa viestin, jota paraikaa työstät. Haluatko varmasti jatkaa?",
+  "confirmations.edit.message": "Jos muokkaat viestiä nyt, se korvaa parhaillaan työstämäsi viestin. Haluatko varmasti jatkaa?",
   "confirmations.logout.confirm": "Kirjaudu ulos",
   "confirmations.logout.message": "Haluatko varmasti kirjautua ulos?",
   "confirmations.mute.confirm": "Mykistä",
   "confirmations.mute.explanation": "Tämä toiminto piilottaa heidän julkaisunsa sinulta – mukaan lukien ne, joissa heidät mainitaan – sallien heidän yhä nähdä julkaisusi ja seurata sinua.",
-  "confirmations.mute.message": "Haluatko varmasti mykistää profiilin {name}?",
+  "confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
   "confirmations.redraft.confirm": "Poista & palauta muokattavaksi",
-  "confirmations.redraft.message": "Haluatko varmasti poistaa viestin ja tehdä siitä luonnoksen? Suosikiksi lisäykset sekä tehostukset menetään, ja vastaukset alkuperäisviestiisi jäävät orvoiksi.",
+  "confirmations.redraft.message": "Haluatko varmasti poistaa julkaisun ja tehdä siitä luonnoksen? Suosikit ja tehostukset menetetään, ja alkuperäisen julkaisun vastaukset jäävät orvoiksi.",
   "confirmations.reply.confirm": "Vastaa",
-  "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa tällä hetkellä työstämäsi viestin. Oletko varma, että haluat jatkaa?",
+  "confirmations.reply.message": "Jos vastaat nyt, vastaus korvaa parhaillaan työstämäsi viestin. Haluatko varmasti jatkaa?",
   "confirmations.unfollow.confirm": "Lopeta seuraaminen",
   "confirmations.unfollow.message": "Haluatko varmasti lakata seuraamasta profiilia {name}?",
   "conversation.delete": "Poista keskustelu",
@@ -193,20 +193,20 @@
   "conversation.with": "{names} kanssa",
   "copypaste.copied": "Kopioitu",
   "copypaste.copy_to_clipboard": "Kopioi leikepöydälle",
-  "directory.federated": "Koko tunnettu fediverse",
+  "directory.federated": "Koko tunnettu fediversumi",
   "directory.local": "Vain palvelusta {domain}",
   "directory.new_arrivals": "Äskettäin saapuneet",
   "directory.recently_active": "Hiljattain aktiiviset",
   "disabled_account_banner.account_settings": "Tilin asetukset",
   "disabled_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä.",
-  "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset julkaisut käyttäjiltä, joiden tilejä isännöi {domain}.",
+  "dismissable_banner.community_timeline": "Nämä ovat viimeisimpiä julkaisuja käyttäjiltä, joiden tili sijaitsee palvelimella {domain}.",
   "dismissable_banner.dismiss": "Hylkää",
-  "dismissable_banner.explore_links": "Näistä uutisista puhutaan juuri nyt tällä ja muilla hajautetun verkon palvelimilla.",
-  "dismissable_banner.explore_statuses": "Nämä ovat tänään huomiota keräävimpiä sosiaalisen verkon julkaisuja. Tuoreimmat, tehostetuimmat sekä suosikeiksi merkityimmät sijoitetaan listauksessa korkeammalle.",
-  "dismissable_banner.explore_tags": "Nämä aihetunnisteet saavat juuri nyt vetovoimaa tällä ja muilla hajautetun verkon palvelimilla olevien ihmisten keskuudessa.",
-  "dismissable_banner.public_timeline": "Nämä ovat viimeisimpiä julkaisuja sosiaalisen verkon käyttäjiltä, joita seurataan palvelussa {domain}.",
+  "dismissable_banner.explore_links": "Näitä uutisia jaetaan tänään sosiaalisessa verkossa eniten. Uusimmat ja eri käyttäjien eniten lähettämät uutiset nousevat listauksessa korkeimmalle.",
+  "dismissable_banner.explore_statuses": "Nämä sosiaalisen verkon julkaisut keräävät tänään eniten huomiota. Uusimmat, tehostetuimmat ja suosikiksi lisätyimmät nousevat listauksessa korkeimmalle.",
+  "dismissable_banner.explore_tags": "Nämä sosiaalisen verkon aihetunnisteet keräävät tänään eniten huomiota. Useimman käyttäjän käyttämät aihetunnisteet nousevat listauksessa korkeimmalle.",
+  "dismissable_banner.public_timeline": "Nämä ovat viimeisimpiä julkaisuja sosiaalisen verkon käyttäjiltä, joita seurataan palvelimella {domain}.",
   "embed.instructions": "Upota julkaisu verkkosivullesi kopioimalla alla oleva koodi.",
-  "embed.preview": "Se tulee näyttämään tältä:",
+  "embed.preview": "Tältä se näyttää:",
   "emoji_button.activity": "Aktiviteetit",
   "emoji_button.clear": "Tyhjennä",
   "emoji_button.custom": "Mukautetut",
@@ -218,7 +218,7 @@
   "emoji_button.objects": "Esineet",
   "emoji_button.people": "Ihmiset",
   "emoji_button.recent": "Usein käytetyt",
-  "emoji_button.search": "Etsi...",
+  "emoji_button.search": "Hae...",
   "emoji_button.search_results": "Hakutulokset",
   "emoji_button.symbols": "Symbolit",
   "emoji_button.travel": "Matkailu ja paikat",
@@ -226,25 +226,25 @@
   "empty_column.account_timeline": "Ei viestejä täällä.",
   "empty_column.account_unavailable": "Profiilia ei löydy",
   "empty_column.blocks": "Et ole estänyt käyttäjiä.",
-  "empty_column.bookmarked_statuses": "Et ole vielä lisännyt viestejä kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.",
+  "empty_column.bookmarked_statuses": "Et ole vielä lisännyt julkaisuja kirjanmerkkeihisi. Kun lisäät yhden, se näkyy tässä.",
   "empty_column.community": "Paikallinen aikajana on tyhjä. Kirjoita jotain julkista, niin homma lähtee käyntiin!",
   "empty_column.direct": "Yksityisiä mainintoja ei vielä ole. Jos lähetät tai sinulle lähetetään sellaisia, näet ne täällä.",
   "empty_column.domain_blocks": "Palveluita ei ole vielä estetty.",
   "empty_column.explore_statuses": "Mikään ei trendaa nyt. Tarkista myöhemmin uudelleen!",
-  "empty_column.favourited_statuses": "Sinulla ei ole vielä yhtään suosikkiviestiä. Kun lisäät yhden, näkyy se tässä.",
-  "empty_column.favourites": "Kukaan ei ole vielä merkinnyt tätä viestiä suosikiksi. Kun joku tekee niin, näkyy asia täällä.",
-  "empty_column.follow_requests": "Et ole vielä vastaanottanut seurauspyyntöjä. Saamasi pyynnöt näytetään täällä.",
-  "empty_column.followed_tags": "Et ole vielä ottanut yhtään aihetunnistetta seurattavaksesi. Jos tai kun sitten teet niin, ne listautuvat tänne.",
+  "empty_column.favourited_statuses": "Sinulla ei ole vielä yhtään suosikkijulkaisua. Kun lisäät sellaisen, näkyy se tässä.",
+  "empty_column.favourites": "Kukaan ei ole vielä lisännyt tätä julkaisua suosikkeihinsa. Kun joku tekee niin, tulee hän tähän näkyviin.",
+  "empty_column.follow_requests": "Et ole vielä vastaanottanut seuraamispyyntöjä. Saamasi pyynnöt näkyvät täällä.",
+  "empty_column.followed_tags": "Et seuraa vielä yhtäkään aihetunnistetta. Kun alat seurata, ne tulevat tähän näkyviin.",
   "empty_column.hashtag": "Tällä aihetunnisteella ei ole vielä mitään.",
   "empty_column.home": "Kotiaikajanasi on tyhjä! Seuraa useampia henkilöjä, niin näet enemmän sisältöä.",
-  "empty_column.list": "Tässä luettelossa ei ole vielä mitään. Kun tämän luettelon jäsenet julkaisevat uusia viestejä, ne näkyvät täällä.",
+  "empty_column.list": "Tällä listalla ei ole vielä mitään. Kun tämän listan jäsenet lähettävät uusia julkaisuja, ne näkyvät tässä.",
   "empty_column.lists": "Sinulla ei ole vielä yhtään listaa. Kun luot sellaisen, näkyy se tässä.",
   "empty_column.mutes": "Et ole mykistänyt vielä yhtään käyttäjää.",
   "empty_column.notifications": "Sinulla ei ole vielä ilmoituksia. Kun keskustelet muille, näet sen täällä.",
   "empty_column.public": "Täällä ei ole mitään! Kirjoita jotain julkisesti. Voit myös seurata muiden palvelimien käyttäjiä",
   "error.unexpected_crash.explanation": "Sivua ei voi näyttää oikein, johtuen bugista tai ongelmasta selaimen yhteensopivuudessa.",
   "error.unexpected_crash.explanation_addons": "Sivua ei voitu näyttää oikein. Tämä virhe johtuu todennäköisesti selaimen lisäosasta tai automaattisista käännöstyökaluista.",
-  "error.unexpected_crash.next_steps": "Kokeile sivun päivitystä. Jos se ei auta, voi Mastodonin käyttö silti olla mahdollista eri selaimella tai natiivilla sovelluksella.",
+  "error.unexpected_crash.next_steps": "Kokeile päivittää sivu. Jos se ei auta, voi Mastodonin käyttö ehkä onnistua eri selaimella tai natiivisovelluksella.",
   "error.unexpected_crash.next_steps_addons": "Yritä poistaa ne käytöstä ja päivittää sivu. Jos se ei auta, voit silti käyttää Mastodonia eri selaimen tai sovelluksen kautta.",
   "errors.unexpected_crash.copy_stacktrace": "Kopioi pinon jäljitys leikepöydälle",
   "errors.unexpected_crash.report_issue": "Ilmoita ongelmasta",
@@ -254,28 +254,28 @@
   "explore.trending_links": "Uutiset",
   "explore.trending_statuses": "Julkaisut",
   "explore.trending_tags": "Aihetunnisteet",
-  "filter_modal.added.context_mismatch_explanation": "Tämä suodatinluokka ei koske asiayhteyttä, jossa olet käyttänyt tätä viestiä. Jos haluat, että viesti suodatetaan myös tässä yhteydessä, sinun on muokattava suodatinta.",
-  "filter_modal.added.context_mismatch_title": "Asiayhteys ei täsmää!",
-  "filter_modal.added.expired_explanation": "Tämä suodatinluokka on vanhentunut ja sinun on muutettava viimeistä voimassaolon päivää, jotta sitä voidaan käyttää.",
+  "filter_modal.added.context_mismatch_explanation": "Tämä suodatinluokka ei koske kontekstia, jossa olet tarkastellut tätä julkaisua. Jos haluat, että julkaisu suodatetaan myös tässä kontekstissa, sinun pitää muokata suodatinta.",
+  "filter_modal.added.context_mismatch_title": "Konteksti ei täsmää!",
+  "filter_modal.added.expired_explanation": "Tämä suodatinluokka on vanhentunut, joten sinun on muutettava viimeistä voimassaolopäivää, jotta suodatin on voimassa.",
   "filter_modal.added.expired_title": "Vanhentunut suodatin!",
-  "filter_modal.added.review_and_configure": "Voit tarkastella tätä suodatinluokkaa ja määrittää sen tarkemmin siirtymällä {settings_link}.",
+  "filter_modal.added.review_and_configure": "Voit tarkastella tätä suodatinluokkaa ja määrittää sen tarkemmin kohdassa {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Suodattimen asetukset",
   "filter_modal.added.settings_link": "asetukset-sivulle",
-  "filter_modal.added.short_explanation": "Tämä viesti on lisätty seuraavaan suodatinluokkaan: {title}.",
+  "filter_modal.added.short_explanation": "Tämä julkaisu on lisätty seuraavaan suodatinluokkaan: {title}.",
   "filter_modal.added.title": "Suodatin lisätty!",
-  "filter_modal.select_filter.context_mismatch": "ei sovellu tähän asiayhteyteen",
+  "filter_modal.select_filter.context_mismatch": "ei sovellu tähän kontekstiin",
   "filter_modal.select_filter.expired": "vanhentunut",
   "filter_modal.select_filter.prompt_new": "Uusi luokka: {name}",
   "filter_modal.select_filter.search": "Etsi tai luo",
-  "filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi luokka",
-  "filter_modal.select_filter.title": "Suodata tämä viesti",
-  "filter_modal.title.status": "Suodata viesti",
+  "filter_modal.select_filter.subtitle": "Käytä olemassa olevaa luokkaa tai luo uusi",
+  "filter_modal.select_filter.title": "Suodata tämä julkaisu",
+  "filter_modal.title.status": "Suodata julkaisu",
   "firehose.all": "Kaikki",
   "firehose.local": "Tämä palvelin",
   "firehose.remote": "Muut palvelimet",
   "follow_request.authorize": "Valtuuta",
   "follow_request.reject": "Hylkää",
-  "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, on palvelun {domain} ylläpito arvioinut, että saatat olla halukas tarkistamaan nämä seurauspyynnöt erikseen.",
+  "follow_requests.unlocked_explanation": "Vaikkei tiliäsi ole lukittu, palvelimen {domain} ylläpito on arvioinut, että saatat olla halukas tarkistamaan nämä seuraamispyynnöt erikseen.",
   "followed_tags": "Seuratut aihetunnisteet",
   "footer.about": "Tietoja",
   "footer.directory": "Profiilihakemisto",
@@ -307,34 +307,34 @@
   "home.column_settings.basic": "Perusasetukset",
   "home.column_settings.show_reblogs": "Näytä tehostukset",
   "home.column_settings.show_replies": "Näytä vastaukset",
-  "home.explore_prompt.body": "Kotisyötteesi on sekoitus seuraamistasi aihetunnisteista ja käyttäjistä sekä heidän tehostamistaan viesteistä. Jos se näyttää tällä hetkellä turhan hiljaiselta, saatat haluta:",
+  "home.explore_prompt.body": "Kotisyötteesi on sekoitus seuraamiasi aihetunnisteita ja käyttäjiä sekä heidän tehostamiaan julkaisuja. Jos se tuntuu liian hiljaiselta, saatat haluta:",
   "home.explore_prompt.title": "Tämä on tukikohtasi Mastodonissa.",
-  "home.hide_announcements": "Piilota ilmoitukset",
+  "home.hide_announcements": "Piilota tiedotteet",
   "home.pending_critical_update.body": "Päivitäthän Mastodon-palvelimen mahdollisimman pian!",
   "home.pending_critical_update.link": "Tutustu päivityssisältöihin",
   "home.pending_critical_update.title": "Kriittinen tietoturvapäivitys saatavilla!",
-  "home.show_announcements": "Näytä ilmoitukset",
-  "interaction_modal.description.favourite": "Mastodon-tilisi myötä voit merkitä julkaisuja suosikeiksi, jolloin osoitat julkaisijoille arvostavasi sisältöä, ja tallennat sitä myös helpommin saatavillesi jatkossa.",
-  "interaction_modal.description.follow": "Kun sinulla on Mastodon-tili, voit seurata käyttäjää {name} nähdäksesi hänen viestinsä kotisyötteessäsi.",
-  "interaction_modal.description.reblog": "Kun sinulla on tili Mastodonissa, voit tehostaa viestiä ja jakaa sen omien seuraajiesi kanssa.",
-  "interaction_modal.description.reply": "Kun sinulla on tili Mastodonissa, voit vastata tähän viestiin.",
-  "interaction_modal.login.action": "Palaa aloitussivulle",
-  "interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus (kuten mastodon.social)",
+  "home.show_announcements": "Näytä tiedotteet",
+  "interaction_modal.description.favourite": "Mastodon-tilillä voit lisätä tämän julkaisun suosikkeihisi osoittaaksesi kirjoittajalle arvostavasi sitä ja tallentaaksesi sen tulevaa käyttöä varten.",
+  "interaction_modal.description.follow": "Mastodon-tilillä voit seurata käyttäjää {name} saadaksesi hänen julkaisunsa kotisyötteeseesi.",
+  "interaction_modal.description.reblog": "Mastodon-tilillä voit tehostaa tätä julkaisua jakaaksesi sen seuraajiesi kanssa.",
+  "interaction_modal.description.reply": "Mastodon-tilillä voit vastata tähän julkaisuun.",
+  "interaction_modal.login.action": "Siirry kotiin",
+  "interaction_modal.login.prompt": "Kotipalvelimesi verkkotunnus, kuten mastodon.social",
   "interaction_modal.no_account_yet": "Etkö ole vielä Mastodonissa?",
   "interaction_modal.on_another_server": "Toisella palvelimella",
   "interaction_modal.on_this_server": "Tällä palvelimella",
   "interaction_modal.sign_in": "Et ole kirjautunut tälle palvelimelle. Millä palvelimella tilisi sijaitsee?",
-  "interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jolla loit tilisi. Jos et muista, etsi tervetuliaissähköpostia saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@mastodon.social)",
+  "interaction_modal.sign_in_hint": "Vihje: Se on sama verkkosivusto, jolle rekisteröidyit. Jos et muista, etsi tervetulosähköposti saapuneista viesteistäsi. Voit myös syöttää koko käyttäjätunnuksesi! (Esimerkki: @Mastodon@Mastodon.social)",
   "interaction_modal.title.favourite": "Lisää käyttäjän {name} julkaisu suosikkeihin",
-  "interaction_modal.title.follow": "Seuraa {name}",
-  "interaction_modal.title.reblog": "Tehosta käyttäjän {name} viestiä",
-  "interaction_modal.title.reply": "Vastaa käyttäjän {name} viestiin",
+  "interaction_modal.title.follow": "Seuraa käyttäjää {name}",
+  "interaction_modal.title.reblog": "Tehosta käyttäjän {name} julkaisua",
+  "interaction_modal.title.reply": "Vastaa käyttäjän {name} julkaisuun",
   "intervals.full.days": "{number, plural, one {# päivä} other {# päivää}}",
   "intervals.full.hours": "{number, plural, one {# tunti} other {# tuntia}}",
   "intervals.full.minutes": "{number, plural, one {# minuutti} other {# minuuttia}}",
   "keyboard_shortcuts.back": "Siirry takaisin",
   "keyboard_shortcuts.blocked": "Avaa estettyjen käyttäjien luettelo",
-  "keyboard_shortcuts.boost": "Tehosta viestiä",
+  "keyboard_shortcuts.boost": "Tehosta julkaisua",
   "keyboard_shortcuts.column": "Kohdista sarakkeeseen",
   "keyboard_shortcuts.compose": "siirry tekstinsyöttöön",
   "keyboard_shortcuts.description": "Kuvaus",
@@ -342,7 +342,7 @@
   "keyboard_shortcuts.down": "Siirry listassa alaspäin",
   "keyboard_shortcuts.enter": "Avaa julkaisu",
   "keyboard_shortcuts.favourite": "Lisää julkaisu suosikkeihin",
-  "keyboard_shortcuts.favourites": "Avaa suosikkilista",
+  "keyboard_shortcuts.favourites": "Avaa suosikkiluettelo",
   "keyboard_shortcuts.federated": "Avaa yleinen aikajana",
   "keyboard_shortcuts.heading": "Pikanäppäimet",
   "keyboard_shortcuts.home": "Avaa kotiaikajana",
@@ -354,16 +354,16 @@
   "keyboard_shortcuts.my_profile": "Avaa profiilisi",
   "keyboard_shortcuts.notifications": "Avaa ilmoitukset-valikko",
   "keyboard_shortcuts.open_media": "Avaa media",
-  "keyboard_shortcuts.pinned": "Avaa lista kiinnitetyistä viesteistä",
+  "keyboard_shortcuts.pinned": "Avaa kiinnitettyjen julkaisujen luettelo",
   "keyboard_shortcuts.profile": "Avaa kirjoittajan profiili",
-  "keyboard_shortcuts.reply": "Vastaa viestiin",
-  "keyboard_shortcuts.requests": "Avaa lista seurauspyynnöistä",
+  "keyboard_shortcuts.reply": "Vastaa julkaisuun",
+  "keyboard_shortcuts.requests": "Avaa seuraamispyyntöjen luettelo",
   "keyboard_shortcuts.search": "siirry hakukenttään",
   "keyboard_shortcuts.spoilers": "Näytä/piilota sisältövaroituskenttä",
   "keyboard_shortcuts.start": "avaa \"Aloitus\"",
   "keyboard_shortcuts.toggle_hidden": "näytä/piilota sisältövaroituksella merkitty teksti",
   "keyboard_shortcuts.toggle_sensitivity": "näytä/piilota media",
-  "keyboard_shortcuts.toot": "Luo uusi viesti",
+  "keyboard_shortcuts.toot": "Luo uusi julkaisu",
   "keyboard_shortcuts.unfocus": "Poistu teksti-/hakukentästä",
   "keyboard_shortcuts.up": "Siirry listassa ylöspäin",
   "lightbox.close": "Sulje",
@@ -372,19 +372,19 @@
   "lightbox.next": "Seuraava",
   "lightbox.previous": "Edellinen",
   "limited_account_hint.action": "Näytä profiili joka tapauksessa",
-  "limited_account_hint.title": "Palvelun {domain} ylläpito on piilottanut tämän profiilin.",
+  "limited_account_hint.title": "Palvelun {domain} valvojat ovat piilottaneet tämän profiilin.",
   "link_preview.author": "Julkaissut {name}",
-  "lists.account.add": "Lisää listaan",
-  "lists.account.remove": "Poista listasta",
+  "lists.account.add": "Lisää listalle",
+  "lists.account.remove": "Poista listalta",
   "lists.delete": "Poista lista",
   "lists.edit": "Muokkaa listaa",
-  "lists.edit.submit": "Vaihda otsikko",
-  "lists.exclusive": "Piilota nämä julkaisut kotiaikajanaltasi",
+  "lists.edit.submit": "Vaihda nimi",
+  "lists.exclusive": "Piilota nämä julkaisut kotisyötteestä",
   "lists.new.create": "Lisää lista",
   "lists.new.title_placeholder": "Uuden listan nimi",
-  "lists.replies_policy.followed": "Jokainen seurattu käyttäjä",
-  "lists.replies_policy.list": "Listan jäsenet",
-  "lists.replies_policy.none": "Ei kukaan",
+  "lists.replies_policy.followed": "Jokaiselle seuratulle käyttäjälle",
+  "lists.replies_policy.list": "Listan jäsenille",
+  "lists.replies_policy.none": "Ei kellekään",
   "lists.replies_policy.title": "Näytä vastaukset:",
   "lists.search": "Etsi seuraamistasi henkilöistä",
   "lists.subheading": "Omat listasi",
@@ -400,23 +400,23 @@
   "navigation_bar.blocks": "Estetyt käyttäjät",
   "navigation_bar.bookmarks": "Kirjanmerkit",
   "navigation_bar.community_timeline": "Paikallinen aikajana",
-  "navigation_bar.compose": "Julkaise",
+  "navigation_bar.compose": "Kirjoita uusi julkaisu",
   "navigation_bar.direct": "Yksityiset maininnat",
   "navigation_bar.discover": "Löydä uutta",
-  "navigation_bar.domain_blocks": "Estetyt palvelut",
+  "navigation_bar.domain_blocks": "Estetyt verkkotunnukset",
   "navigation_bar.edit_profile": "Muokkaa profiilia",
   "navigation_bar.explore": "Selaa",
   "navigation_bar.favourites": "Suosikit",
   "navigation_bar.filters": "Mykistetyt sanat",
   "navigation_bar.follow_requests": "Seuraamispyynnöt",
   "navigation_bar.followed_tags": "Seuratut aihetunnisteet",
-  "navigation_bar.follows_and_followers": "Seurattavat ja seuraajat",
+  "navigation_bar.follows_and_followers": "Seuratut ja seuraajat",
   "navigation_bar.lists": "Listat",
   "navigation_bar.logout": "Kirjaudu ulos",
   "navigation_bar.mutes": "Mykistetyt käyttäjät",
-  "navigation_bar.opened_in_classic_interface": "Julkaisut, profiilit sekä tietyt muut sivut avataan oletuksena perinteisessä käyttöliittymässä.",
+  "navigation_bar.opened_in_classic_interface": "Julkaisut, profiilit ja tietyt muut sivut avautuvat oletuksena perinteiseen web-käyttöliittymään.",
   "navigation_bar.personal": "Henkilökohtainen",
-  "navigation_bar.pins": "Kiinnitetyt viestit",
+  "navigation_bar.pins": "Kiinnitetyt julkaisut",
   "navigation_bar.preferences": "Asetukset",
   "navigation_bar.public_timeline": "Yleinen aikajana",
   "navigation_bar.search": "Haku",
@@ -430,9 +430,9 @@
   "notification.mention": "{name} mainitsi sinut",
   "notification.own_poll": "Äänestyksesi on päättynyt",
   "notification.poll": "Äänestys, johon osallistuit, on päättynyt",
-  "notification.reblog": "{name} tehosti viestiäsi",
-  "notification.status": "{name} julkaisi juuri viestin",
-  "notification.update": "{name} muokkasi viestiä",
+  "notification.reblog": "{name} tehosti julkaisuasi",
+  "notification.status": "{name} julkaisi juuri",
+  "notification.update": "{name} muokkasi julkaisua",
   "notifications.clear": "Tyhjennä ilmoitukset",
   "notifications.clear_confirmation": "Haluatko varmasti poistaa kaikki ilmoitukset pysyvästi?",
   "notifications.column_settings.admin.report": "Uudet ilmoitukset:",
@@ -446,7 +446,7 @@
   "notifications.column_settings.follow_request": "Uudet seuraamispyynnöt:",
   "notifications.column_settings.mention": "Maininnat:",
   "notifications.column_settings.poll": "Äänestyksen tulokset:",
-  "notifications.column_settings.push": "Push-ilmoitukset",
+  "notifications.column_settings.push": "Puskuilmoitukset",
   "notifications.column_settings.reblog": "Tehostukset:",
   "notifications.column_settings.show": "Näytä sarakkeessa",
   "notifications.column_settings.sound": "Äänimerkki",
@@ -473,11 +473,11 @@
   "onboarding.action.back": "Palaa takaisin",
   "onboarding.actions.back": "Palaa takaisin",
   "onboarding.actions.go_to_explore": "Siirry suosituimpien aiheiden syötteeseen",
-  "onboarding.actions.go_to_home": "Siirry kotisyötteeseen",
+  "onboarding.actions.go_to_home": "Siirry kotisyötteeseeni",
   "onboarding.compose.template": "Tervehdys #Mastodon!",
   "onboarding.follows.empty": "Valitettavasti tuloksia ei voida näyttää juuri nyt. Voit kokeilla hakua tai selata tutustumissivua löytääksesi seurattavaa, tai yrittää myöhemmin uudelleen.",
   "onboarding.follows.lead": "Kokoat oman kotisyötteesi itse. Mitä enemmän ihmisiä seuraat, sitä aktiivisempi ja kiinnostavampi syöte on. Nämä profiilit voivat olla alkuun hyvä lähtökohta — voit aina lopettaa niiden seuraamisen myöhemmin!",
-  "onboarding.follows.title": "Suosittua Mastodonissa",
+  "onboarding.follows.title": "Mukauta kotisyötettäsi",
   "onboarding.share.lead": "Kerro ihmisille, kuinka he voivat löytää sinut Mastodonista!",
   "onboarding.share.message": "Olen {username} #Mastodon'issa! Seuraa minua osoitteessa {url}",
   "onboarding.share.next_steps": "Mahdolliset seuraavat vaiheet:",
@@ -493,10 +493,10 @@
   "onboarding.steps.setup_profile.title": "Mukauta profiiliasi",
   "onboarding.steps.share_profile.body": "Kerro kavereillesi, kuinka sinut löytää Mastodonista",
   "onboarding.steps.share_profile.title": "Jaa Mastodon-profiilisi",
-  "onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit lisäsuojata tiliäsi ottamalla kaksivaiheisen todennuksen käyttöön palvelun tiliasetuksista. Ominaisuus toimii haluamasi TOTP-todennussovelluksen avulla, eikä käyttö edellytä puhelinnumeron antamista!",
-  "onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon kuuluu hajautettuun verkkoon, osa kohtaamistasi profiileista sijaitsee muilla palvelimilla kuin sinun. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa ilmaistaan käyttäjänimen perässä!",
+  "onboarding.tips.2fa": "<strong>Tiesitkö?</strong> Voit suojata tilisi ottamalla kaksivaiheisen todennuksen käyttöön tilisi asetuksista. Se toimii millä tahansa TOTP-sovelluksella, eikä sen käyttö edellytä puhelinnumeroa!",
+  "onboarding.tips.accounts_from_other_servers": "<strong>Tiesitkö?</strong> Koska Mastodon on hajautettu, osa kohtaamistasi profiileista sijaitsee muilla kuin sinun palvelimellasi. Voit silti viestiä saumattomasti heidän kanssaan! Heidän palvelimensa mainitaan käyttäjänimen jälkiosassa!",
   "onboarding.tips.migration": "<strong>Tiesitkö?</strong> Jos koet, ettei {domain} ole jatkossa itsellesi hyvä palvelinvalinta, voit siirtyä toiselle Mastodon-palvelimelle menettämättä seuraajiasi. Voit jopa isännöidä omaa palvelintasi!",
-  "onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi, ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi tietoihin. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä mitään asiakirjoja!",
+  "onboarding.tips.verification": "<strong>Tiesitkö?</strong> Voit vahvistaa tilisi lisäämällä omalle verkkosivustollesi linkin Mastodon-profiiliisi ja lisäämällä sitten verkkosivustosi osoitteen Mastodon-profiilisi lisäkenttään. Tämä ei maksa mitään, eikä sinun tarvitse lähetellä asiakirjoja!",
   "password_confirmation.exceeds_maxlength": "Salasanan vahvistus ylittää salasanan enimmäispituuden",
   "password_confirmation.mismatching": "Salasanan vahvistus ei täsmää",
   "picture_in_picture.restore": "Laita se takaisin",
@@ -510,15 +510,15 @@
   "poll.votes": "{votes, plural, one {# ääni} other {# ääntä}}",
   "poll_button.add_poll": "Lisää äänestys",
   "poll_button.remove_poll": "Poista äänestys",
-  "privacy.change": "Muuta viestin näkyvyyttä",
-  "privacy.direct.long": "Näkyvissä vain mainituille käyttäjille",
-  "privacy.direct.short": "Vain mainitut henkilöt",
-  "privacy.private.long": "Näkyvissä vain seuraajille",
+  "privacy.change": "Muuta julkaisun näkyvyyttä",
+  "privacy.direct.long": "Näkyy vain mainituille käyttäjille",
+  "privacy.direct.short": "Vain mainitut käyttäjät",
+  "privacy.private.long": "Näkyy vain seuraajille",
   "privacy.private.short": "Vain seuraajat",
-  "privacy.public.long": "Näkyvissä kaikille",
+  "privacy.public.long": "Näkyy kaikille",
   "privacy.public.short": "Julkinen",
-  "privacy.unlisted.long": "Näkyvissä kaikille, mutta jättäen pois hakemisen mahdollisuus",
-  "privacy.unlisted.short": "Listaamaton julkinen",
+  "privacy.unlisted.long": "Näkyy kaikille, mutta jää pois löytämisominaisuuksista",
+  "privacy.unlisted.short": "Listaamaton",
   "privacy_policy.last_updated": "Viimeksi päivitetty {date}",
   "privacy_policy.title": "Tietosuojakäytäntö",
   "refresh": "Päivitä",
@@ -539,11 +539,11 @@
   "report.block": "Estä",
   "report.block_explanation": "Et näe hänen viestejään, eikä hän voi nähdä viestejäsi tai seurata sinua. Hän näkevät, että olet estänyt hänet.",
   "report.categories.legal": "Lakiasiat",
-  "report.categories.other": "muu",
+  "report.categories.other": "Muu",
   "report.categories.spam": "Roskaposti",
   "report.categories.violation": "Sisältö rikkoo yhtä tai useampaa palvelimen sääntöä",
-  "report.category.subtitle": "Valitse se, mikä sopii parhaiten",
-  "report.category.title": "Kerro meille miksi tämä {type} pitää raportoida",
+  "report.category.subtitle": "Valitse sopivin",
+  "report.category.title": "Kerro meille, miksi tämä {type} pitää raportoida",
   "report.category.title_account": "profiili",
   "report.category.title_status": "julkaisu",
   "report.close": "Valmis",
@@ -551,7 +551,7 @@
   "report.forward": "Välitä kohteeseen {target}",
   "report.forward_hint": "Tämä tili on toisella palvelimella. Haluatko lähettää nimettömän raportin myös sinne?",
   "report.mute": "Mykistä",
-  "report.mute_explanation": "Et näe hänen viestejään. Hän voi silti seurata sinua ja nähdä viestisi. Hän ei tiedä, että on mykistetty.",
+  "report.mute_explanation": "Et näe hänen julkaisujaan. Hän voi silti seurata sinua ja nähdä julkaisusi. Hän ei tiedä, että hänet on mykistetty.",
   "report.next": "Seuraava",
   "report.placeholder": "Lisäkommentit",
   "report.reasons.dislike": "En pidä siitä",
@@ -564,10 +564,10 @@
   "report.reasons.spam_description": "Haitalliset linkit, väärennetyt sitoutumiset tai toistuvat vastaukset",
   "report.reasons.violation": "Se rikkoo palvelimen sääntöjä",
   "report.reasons.violation_description": "Tiedät, että se rikkoo tiettyjä sääntöjä",
-  "report.rules.subtitle": "Valitse kaikki jotka sopivat",
+  "report.rules.subtitle": "Valitse kaikki sopivat",
   "report.rules.title": "Mitä sääntöjä rikotaan?",
   "report.statuses.subtitle": "Valitse kaikki sopivat",
-  "report.statuses.title": "Onko olemassa yhtään viestiä, jotka tukevat tätä raporttia?",
+  "report.statuses.title": "Onko julkaisuja, jotka tukevat tätä raporttia?",
   "report.submit": "Lähetä",
   "report.target": "Raportoidaan {target}",
   "report.thanks.take_action": "Tässä on vaihtoehtosi hallita näkemääsi Mastodonissa:",
@@ -576,7 +576,7 @@
   "report.thanks.title_actionable": "Kiitos raportista, tutkimme asiaa.",
   "report.unfollow": "Lopeta käyttäjän @{name} seuraaminen",
   "report.unfollow_explanation": "Seuraat tätä tiliä. Estääksesi tilin viestejä näykymästä kotisyötteessäsi, lopeta sen seuraaminen.",
-  "report_notification.attached_statuses": "{count, plural, one {{count} viesti} other {{count} viestiä}} liitteenä",
+  "report_notification.attached_statuses": "{count, plural, one {{count} julkaisu} other {{count} julkaisua}} liitteenä",
   "report_notification.categories.legal": "Laillinen",
   "report_notification.categories.other": "Muu",
   "report_notification.categories.spam": "Roskaposti",
@@ -588,7 +588,7 @@
   "search.quick_action.go_to_account": "Avaa profiili {x}",
   "search.quick_action.go_to_hashtag": "Siirry aihetunnisteeseen {x}",
   "search.quick_action.open_url": "Avaa URL-osoite Mastodonissa",
-  "search.quick_action.status_search": "Julkaisut, jotka vastaavat hakua {x}",
+  "search.quick_action.status_search": "Julkaisut haulla {x}",
   "search.search_or_paste": "Etsi tai kirjoita URL-osoite",
   "search_popout.full_text_search_disabled_message": "Ei saatavilla palvelimella {domain}.",
   "search_popout.language_code": "ISO-kielikoodi",
@@ -602,8 +602,8 @@
   "search_results.hashtags": "Aihetunnisteet",
   "search_results.nothing_found": "Näille hakusanoille ei löytynyt mitään",
   "search_results.see_all": "Näytä kaikki",
-  "search_results.statuses": "Viestit",
-  "search_results.title": "Etsi {q}",
+  "search_results.statuses": "Julkaisut",
+  "search_results.title": "Hae {q}",
   "server_banner.about_active_users": "Palvelinta käyttäneet ihmiset viimeisen 30 päivän aikana (kuukauden aktiiviset käyttäjät)",
   "server_banner.active_users": "aktiivista käyttäjää",
   "server_banner.administered_by": "Ylläpitäjä:",
@@ -613,15 +613,15 @@
   "sign_in_banner.create_account": "Luo tili",
   "sign_in_banner.sign_in": "Kirjaudu",
   "sign_in_banner.sso_redirect": "Kirjaudu tai rekisteröidy",
-  "sign_in_banner.text": "Kirjaudu sisään seurataksesi profiileja tai aihetunnisteita, merkitäksesi julkaisuja suosikeiksi, julkaistaksesi sekä vastataksesi julkaisuihin. Voit vuorovaikuttaa myös eri palvelimella sijaitsevalta tililtäsi.",
-  "status.admin_account": "Avaa moderaattorinäkymä tilistä @{name}",
-  "status.admin_domain": "Avaa palvelimen {domain} moderointitoiminnot",
-  "status.admin_status": "Avaa viesti moderointinäkymässä",
+  "sign_in_banner.text": "Kirjaudu sisään, niin voit seurata profiileja tai aihetunnisteita, lisätä julkaisuja suosikkeihin, jakaa julkaisuja ja vastata niihin. Voit olla vuorovaikutuksessa myös eri palvelimella olevalta tililtäsi.",
+  "status.admin_account": "Avaa tilin @{name} valvontanäkymä",
+  "status.admin_domain": "Avaa palvelimen {domain} valvontanäkymä",
+  "status.admin_status": "Avaa julkaisu valvontanäkymässä",
   "status.block": "Estä @{name}",
-  "status.bookmark": "Tallenna kirjanmerkki",
+  "status.bookmark": "Lisää kirjanmerkki",
   "status.cancel_reblog_private": "Peru tehostus",
-  "status.cannot_reblog": "Tätä viestiä ei voi tehostaa",
-  "status.copy": "Kopioi linkki viestiin",
+  "status.cannot_reblog": "Tätä julkaisua ei voi tehostaa",
+  "status.copy": "Kopioi julkaisun linkki",
   "status.delete": "Poista",
   "status.detailed_status": "Yksityiskohtainen keskustelunäkymä",
   "status.direct": "Mainitse @{name} yksityisesti",
@@ -630,8 +630,8 @@
   "status.edited": "Muokattu {date}",
   "status.edited_x_times": "Muokattu {count, plural, one {{count} kerran} other {{count} kertaa}}",
   "status.embed": "Upota",
-  "status.favourite": "Merkitse suosikiksi",
-  "status.filter": "Suodata tämä viesti",
+  "status.favourite": "Suosikki",
+  "status.filter": "Suodata tämä julkaisu",
   "status.filtered": "Suodatettu",
   "status.hide": "Piilota julkaisu",
   "status.history.created": "{name} luotu {date}",
@@ -644,27 +644,27 @@
   "status.more": "Lisää",
   "status.mute": "Mykistä @{name}",
   "status.mute_conversation": "Mykistä keskustelu",
-  "status.open": "Laajenna viesti",
+  "status.open": "Laajenna julkaisu",
   "status.pin": "Kiinnitä profiiliin",
   "status.pinned": "Kiinnitetty julkaisu",
   "status.read_more": "Näytä enemmän",
   "status.reblog": "Tehosta",
   "status.reblog_private": "Tehosta alkuperäiselle yleisölle",
   "status.reblogged_by": "{name} tehosti",
-  "status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.",
+  "status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä julkaisua. Kun joku tekee niin, tulee hän tähän näkyviin.",
   "status.redraft": "Poista ja palauta muokattavaksi",
   "status.remove_bookmark": "Poista kirjanmerkki",
   "status.replied_to": "Vastattu {name}",
   "status.reply": "Vastaa",
   "status.replyAll": "Vastaa ketjuun",
   "status.report": "Raportoi @{name}",
-  "status.sensitive_warning": "Arkaluontoista sisältöä",
+  "status.sensitive_warning": "Arkaluonteista sisältöä",
   "status.share": "Jaa",
   "status.show_filter_reason": "Näytä joka tapauksessa",
   "status.show_less": "Näytä vähemmän",
-  "status.show_less_all": "Näytä vähemmän kaikista",
+  "status.show_less_all": "Näytä kaikista vähemmän",
   "status.show_more": "Näytä lisää",
-  "status.show_more_all": "Näytä lisää kaikista",
+  "status.show_more_all": "Näytä kaikista enemmän",
   "status.show_original": "Näytä alkuperäinen",
   "status.title.with_attachments": "{user} liitti {attachmentCount, plural, one {{attachmentCount} tiedoston} other {{attachmentCount} tiedostoa}}",
   "status.translate": "Käännä",
@@ -672,7 +672,7 @@
   "status.uncached_media_warning": "Esikatselu ei ole käytettävissä",
   "status.unmute_conversation": "Poista keskustelun mykistys",
   "status.unpin": "Irrota profiilista",
-  "subscribed_languages.lead": "Vain valituilla kielillä julkaistut viestit näkyvät etusivullasi ja aikajanalla muutoksen jälkeen. Valitse ei mitään, jos haluat vastaanottaa viestejä kaikilla kielillä.",
+  "subscribed_languages.lead": "Vain valituilla kielillä kirjoitetut julkaisut näkyvät koti- ja lista-aikajanoillasi muutoksen jälkeen. Älä valitse mitään, jos haluat nähdä julkaisuja kaikilla kielillä.",
   "subscribed_languages.save": "Tallenna muutokset",
   "subscribed_languages.target": "Vaihda tilatut kielet {target}",
   "tabs_bar.home": "Koti",
@@ -685,8 +685,8 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} muilta palvelimilta ei näytetä.",
   "timeline_hint.resources.followers": "Seuraajat",
   "timeline_hint.resources.follows": "seurattua",
-  "timeline_hint.resources.statuses": "Vanhemmat viestit",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} viimeisten {days, plural, one {päivän} other {{days} päivän}}",
+  "timeline_hint.resources.statuses": "Vanhemmat julkaisut",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} henkilö} other {{counter} henkilöä}} {days, plural, one {viimeisen päivän} other {viimeisten {days} päivän}} aikana",
   "trends.trending_now": "Suosittua nyt",
   "ui.beforeunload": "Luonnos häviää, jos poistut Mastodonista.",
   "units.short.billion": "{count} mrd.",
@@ -711,11 +711,11 @@
   "upload_modal.detect_text": "Tunnista teksti kuvasta",
   "upload_modal.edit_media": "Muokkaa mediaa",
   "upload_modal.hint": "Klikkaa tai vedä ympyrä esikatselussa valitaksesi keskipiste, joka näkyy aina pienoiskuvissa.",
-  "upload_modal.preparing_ocr": "Valmistellaan OCR…",
+  "upload_modal.preparing_ocr": "Valmistellaan tekstintunnistusta…",
   "upload_modal.preview_label": "Esikatselu ({ratio})",
   "upload_progress.label": "Ladataan...",
   "upload_progress.processing": "Käsitellään…",
-  "username.taken": "Kyseinen käyttäjätunnus on jo käytössä. Kokeile eri tunnusta",
+  "username.taken": "Käyttäjätunnus on jo varattu. Kokeile toista",
   "video.close": "Sulje video",
   "video.download": "Lataa tiedosto",
   "video.exit_fullscreen": "Poistu koko näytön tilasta",
@@ -725,5 +725,5 @@
   "video.mute": "Mykistä ääni",
   "video.pause": "Keskeytä",
   "video.play": "Toista",
-  "video.unmute": "Poista äänen mykistys"
+  "video.unmute": "Palauta ääni"
 }
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index 4da7477dca..16a18048b4 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -308,7 +308,7 @@
   "home.column_settings.show_reblogs": "Afficher boosts",
   "home.column_settings.show_replies": "Afficher réponses",
   "home.explore_prompt.body": "Votre fil d'actualité aura un mélange de messages depuis les hashtags que vous avez choisi de suivre, les personnes que vous avez choisi de suivre, et les messages qu'ils boostent. Si ça vous semble trop calme à votre goût, n’hésitez pas à :",
-  "home.explore_prompt.title": "C'est chez vous dans Mastadon.",
+  "home.explore_prompt.title": "C'est votre page d'accueil dans Mastodon.",
   "home.hide_announcements": "Masquer les annonces",
   "home.pending_critical_update.body": "Veuillez mettre à jour votre serveur Mastodon dès que possible !",
   "home.pending_critical_update.link": "Voir les mises à jour",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index e61aa773dc..776991b014 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -17,6 +17,7 @@
   "account.blocked": "Արգելափակուած է",
   "account.browse_more_on_origin_server": "Դիտել աւելին իրական պրոֆիլում",
   "account.cancel_follow_request": "Withdraw follow request",
+  "account.direct": "Մասնաւոր յիշատակում @{name}",
   "account.disable_notifications": "Ծանուցումները անջատել @{name} գրառումների համար",
   "account.domain_blocked": "Տիրոյթը արգելափակուած է",
   "account.edit_profile": "Խմբագրել հաշիւը",
@@ -85,9 +86,11 @@
   "column.blocks": "Արգելափակուած օգտատէրեր",
   "column.bookmarks": "Էջանիշեր",
   "column.community": "Տեղական հոսք",
+  "column.direct": "Մասնաւոր յիշատակումներ",
   "column.directory": "Զննել անձնական էջերը",
   "column.domain_blocks": "Թաքցուած տիրոյթները",
   "column.favourites": "Հաւանածներ",
+  "column.firehose": "Հոսքեր",
   "column.follow_requests": "Հետեւելու հայցեր",
   "column.home": "Հիմնական",
   "column.lists": "Ցանկեր",
@@ -135,6 +138,7 @@
   "confirmations.block.block_and_report": "Արգելափակել եւ բողոքել",
   "confirmations.block.confirm": "Արգելափակել",
   "confirmations.block.message": "Վստա՞հ ես, որ ուզում ես արգելափակել {name}֊ին։",
+  "confirmations.cancel_follow_request.confirm": "Կասեցնել հայցը",
   "confirmations.delete.confirm": "Ջնջել",
   "confirmations.delete.message": "Վստա՞հ ես, որ ուզում ես ջնջել այս գրառումը։",
   "confirmations.delete_list.confirm": "Ջնջել",
@@ -216,6 +220,8 @@
   "filter_modal.select_filter.search": "Որոնել կամ ստեղծել",
   "filter_modal.select_filter.title": "Զտել այս գրառումը",
   "firehose.all": "Բոլորը",
+  "firehose.local": "Այս հանգոյցը",
+  "firehose.remote": "Այլ հանգոյցներ",
   "follow_request.authorize": "Վաւերացնել",
   "follow_request.reject": "Մերժել",
   "follow_requests.unlocked_explanation": "Այս հարցումը ուղարկուած է հաշուից, որի համար {domain}-ի անձնակազմը միացրել է ձեռքով ստուգում։",
@@ -246,6 +252,8 @@
   "home.column_settings.show_replies": "Ցուցադրել պատասխանները",
   "home.hide_announcements": "Թաքցնել յայտարարութիւնները",
   "home.show_announcements": "Ցուցադրել յայտարարութիւնները",
+  "interaction_modal.on_another_server": "Այլ հանգոյցում",
+  "interaction_modal.on_this_server": "Այս հանգոյցում",
   "interaction_modal.title.favourite": "Հաւանել {name}-ի գրառումը",
   "interaction_modal.title.follow": "Հետեւել {name}-ին",
   "interaction_modal.title.reblog": "Տարածել {name}-ի գրառումը",
@@ -316,6 +324,7 @@
   "navigation_bar.bookmarks": "Էջանիշեր",
   "navigation_bar.community_timeline": "Տեղական հոսք",
   "navigation_bar.compose": "Ստեղծել նոր գրառում",
+  "navigation_bar.direct": "Մասնաւոր յիշատակումներ",
   "navigation_bar.discover": "Բացայայտել",
   "navigation_bar.domain_blocks": "Թաքցուած տիրոյթներ",
   "navigation_bar.edit_profile": "Խմբագրել հաշիւը",
@@ -451,11 +460,15 @@
   "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
   "report_notification.categories.other": "Այլ",
   "report_notification.categories.spam": "Սպամ",
+  "search.no_recent_searches": "Որոնման պատմութիւն չկայ",
   "search.placeholder": "Փնտրել",
   "search.search_or_paste": "Որոնել կամ դնել URL",
+  "search_popout.options": "Որոնման տեսակները",
+  "search_popout.recent": "Վերջին որոնումները",
   "search_results.accounts": "Հաշիւներ",
   "search_results.all": "Բոլորը",
   "search_results.hashtags": "Պիտակներ",
+  "search_results.see_all": "Տեսնել բոլորը",
   "search_results.statuses": "Գրառումներ",
   "search_results.title": "Որոնել {q}-ն",
   "server_banner.active_users": "ակտիւ մարդիկ",
@@ -475,6 +488,8 @@
   "status.copy": "Պատճէնել գրառման յղումը",
   "status.delete": "Ջնջել",
   "status.detailed_status": "Շղթայի ընդլայնուած դիտում",
+  "status.direct": "Մասնաւոր յիշատակում @{name}",
+  "status.direct_indicator": "Մասնաւոր յիշատակում",
   "status.edit": "Խմբագրել",
   "status.edited": "Խմբագրուել է՝ {date}",
   "status.edited_x_times": "Edited {count, plural, one {# time} other {# times}}",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index cfba6db93f..0bf0a96a27 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -1,13 +1,13 @@
 {
   "about.blocks": "制限中のサーバー",
   "about.contact": "連絡先",
-  "about.disclaimer": "Mastodonは自由なオープンソースソフトウェアでMastodon gGmbHの商標です。",
-  "about.domain_blocks.no_reason_available": "制限理由",
-  "about.domain_blocks.preamble": "Mastodonでは連合先のどのようなサーバーのユーザーとも交流できます。ただし次のサーバーには例外が設定されています。",
+  "about.disclaimer": "Mastodonは自由なオープンソースソフトウェアであり、Mastodon gGmbHの商標です。",
+  "about.domain_blocks.no_reason_available": "理由未記載",
+  "about.domain_blocks.preamble": "Mastodonでは原則的にあらゆるサーバー同士で交流したり、互いの投稿を読んだりできますが、当サーバーでは例外的に次のような制限を設けています。",
   "about.domain_blocks.silenced.explanation": "このサーバーのプロフィールやコンテンツは、明示的に検索したり、フォローでオプトインしない限り、通常は表示されません。",
   "about.domain_blocks.silenced.title": "制限",
   "about.domain_blocks.suspended.explanation": "これらのサーバーからのデータは処理されず、保存や変換もされません。該当するユーザーとの交流もできません。",
-  "about.domain_blocks.suspended.title": "停止済み",
+  "about.domain_blocks.suspended.title": "停止中",
   "about.not_available": "この情報はこのサーバーでは利用できません。",
   "about.powered_by": "{mastodon}による分散型ソーシャルメディア",
   "about.rules": "サーバーのルール",
@@ -301,7 +301,7 @@
   "hashtag.counter_by_uses_today": "今日{count, plural, other {{counter}件}}",
   "hashtag.follow": "ハッシュタグをフォローする",
   "hashtag.unfollow": "ハッシュタグのフォローを解除",
-  "hashtags.and_other": "+{count, plural, other {#件}}",
+  "hashtags.and_other": "ほか{count, plural, other {#個}}",
   "home.actions.go_to_explore": "話題をさがす",
   "home.actions.go_to_suggestions": "フォローするユーザーを検索",
   "home.column_settings.basic": "基本設定",
@@ -405,7 +405,7 @@
   "navigation_bar.discover": "見つける",
   "navigation_bar.domain_blocks": "ブロックしたドメイン",
   "navigation_bar.edit_profile": "プロフィールを編集",
-  "navigation_bar.explore": "エクスプローラー",
+  "navigation_bar.explore": "探索する",
   "navigation_bar.favourites": "お気に入り",
   "navigation_bar.filters": "フィルター設定",
   "navigation_bar.follow_requests": "フォローリクエスト",
@@ -424,7 +424,7 @@
   "not_signed_in_indicator.not_signed_in": "この機能を使うにはログインする必要があります。",
   "notification.admin.report": "{name}さんが{target}さんを通報しました",
   "notification.admin.sign_up": "{name}さんがサインアップしました",
-  "notification.favourite": "{name}さんがあなたの投稿をお気に入りに追加しました。",
+  "notification.favourite": "{name}さんがお気に入りしました",
   "notification.follow": "{name}さんにフォローされました",
   "notification.follow_request": "{name}さんがあなたにフォローリクエストしました",
   "notification.mention": "{name}さんがあなたに返信しました",
@@ -518,7 +518,7 @@
   "privacy.public.long": "誰でも閲覧可",
   "privacy.public.short": "公開",
   "privacy.unlisted.long": "誰でも閲覧可、サイレント",
-  "privacy.unlisted.short": "未収載",
+  "privacy.unlisted.short": "非収載",
   "privacy_policy.last_updated": "{date}に更新",
   "privacy_policy.title": "プライバシーポリシー",
   "refresh": "更新",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 2480f879ca..7f71d9318b 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -13,7 +13,7 @@
   "about.rules": "Servera noteikumi",
   "account.account_note_header": "Piezīme",
   "account.add_or_remove_from_list": "Pievienot vai Noņemt no sarakstiem",
-  "account.badges.bot": "Robots",
+  "account.badges.bot": "Automatizēts",
   "account.badges.group": "Grupa",
   "account.block": "Bloķēt @{name}",
   "account.block_domain": "Bloķēt domēnu {domain}",
@@ -26,7 +26,7 @@
   "account.domain_blocked": "Domēns ir bloķēts",
   "account.edit_profile": "Rediģēt profilu",
   "account.enable_notifications": "Paziņot man, kad @{name} publicē ierakstu",
-  "account.endorse": "Izcelt profilā",
+  "account.endorse": "Izcelts profilā",
   "account.featured_tags.last_status_at": "Beidzamā ziņa {date}",
   "account.featured_tags.last_status_never": "Ierakstu nav",
   "account.featured_tags.title": "{name} izceltie tēmturi",
@@ -102,7 +102,7 @@
   "bundle_modal_error.message": "Kaut kas nogāja greizi, ielādējot šo komponenti.",
   "bundle_modal_error.retry": "Mēģināt vēlreiz",
   "closed_registrations.other_server_instructions": "Tā kā Mastodon ir decentralizēts, tu vari izveidot kontu citā serverī un joprojām mijiedarboties ar šo.",
-  "closed_registrations_modal.description": "Pašlaik nav iespējams izveidot kontu domēnā {domain}, taču ņem vērā, ka tev nav nepieciešams konts tieši domēnā {domain}, lai izmantotu Mastodon.",
+  "closed_registrations_modal.description": "Pašlaik nav iespējams izveidot kontu domēnā {domain}, taču ņem vērā, ka tev nav nepieciešams konts tieši {domain}, lai lietotu Mastodon.",
   "closed_registrations_modal.find_another_server": "Atrast citu serveri",
   "closed_registrations_modal.preamble": "Mastodon ir decentralizēts, tāpēc neatkarīgi no tā, kur tu izveido savu kontu, varēsi sekot līdzi un sazināties ar ikvienu šajā serverī. Tu pat vari vadīt to pats!",
   "closed_registrations_modal.title": "Reģistrēšanās Mastodon",
@@ -113,7 +113,7 @@
   "column.direct": "Privāti pieminēti",
   "column.directory": "Pārlūkot profilus",
   "column.domain_blocks": "Bloķētie domēni",
-  "column.favourites": "Iecienīti",
+  "column.favourites": "Iecienītie",
   "column.firehose": "Tiešraides plūsmas",
   "column.follow_requests": "Sekošanas pieprasījumi",
   "column.home": "Sākums",
@@ -151,7 +151,7 @@
   "compose_form.poll.switch_to_multiple": "Mainīt aptaujas veidu, lai atļautu vairākas izvēles",
   "compose_form.poll.switch_to_single": "Mainīt aptaujas veidu, lai atļautu vienu izvēli",
   "compose_form.publish": "Publicēt",
-  "compose_form.publish_form": "Publicēt",
+  "compose_form.publish_form": "Jauns ieraksts",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Saglabāt izmaiņas",
   "compose_form.sensitive.hide": "{count, plural, one {Atzīmēt multividi kā sensitīvu} other {Atzīmēt multivides kā sensitīvas}}",
@@ -161,13 +161,13 @@
   "compose_form.spoiler.unmarked": "Pievienot satura brīdinājumu",
   "compose_form.spoiler_placeholder": "Ieraksti savu brīdinājumu šeit",
   "confirmation_modal.cancel": "Atcelt",
-  "confirmations.block.block_and_report": "Bloķēt un sūdzēties",
+  "confirmations.block.block_and_report": "Bloķēt un ziņot",
   "confirmations.block.confirm": "Bloķēt",
   "confirmations.block.message": "Vai tiešām vēlies bloķēt {name}?",
   "confirmations.cancel_follow_request.confirm": "Atsaukt pieprasījumu",
   "confirmations.cancel_follow_request.message": "Vai tiešām vēlies atsaukt pieprasījumu sekot {name}?",
   "confirmations.delete.confirm": "Dzēst",
-  "confirmations.delete.message": "Vai tiešām vēlies dzēst šo ziņu?",
+  "confirmations.delete.message": "Vai tiešām vēlies dzēst šo ierakstu?",
   "confirmations.delete_list.confirm": "Dzēst",
   "confirmations.delete_list.message": "Vai tiešam vēlies neatgriezeniski dzēst šo sarakstu?",
   "confirmations.discard_edit_media.confirm": "Atmest",
@@ -202,7 +202,7 @@
   "dismissable_banner.community_timeline": "Šīs ir jaunākās publiskās ziņas no personām, kuru kontus mitina {domain}.",
   "dismissable_banner.dismiss": "Atcelt",
   "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.",
-  "dismissable_banner.explore_statuses": "Šīs ir ziņas no visa sociālā tīkla, kas šodien kļūst arvien populārākas. Jaunākas ziņas ar vairāk uzlabojumiem un iecienītākajām ziņām tiek novērtētas augstāk.",
+  "dismissable_banner.explore_statuses": "Ieraksti, kas šobrīd gūst arvien lielāku ievērību visā sociālajā tīklā. Augstāk tiek kārtoti neseni ieraksti, kas pastiprināti un pievienoti izlasēm.",
   "dismissable_banner.explore_tags": "Šie tēmturi šobrīd kļūst arvien populārāki cilvēku vidū šajā un citos decentralizētā tīkla serveros.",
   "dismissable_banner.public_timeline": "Šīs ir jaunākās publiskās ziņas no lietotājiem sociālajā tīmeklī, kurām seko lietotāji domēnā {domain}.",
   "embed.instructions": "Iestrādā šo ziņu savā mājaslapā, kopējot zemāk redzamo kodu.",
@@ -236,7 +236,7 @@
   "empty_column.follow_requests": "Šobrīd tev nav sekošanas pieprasījumu. Kad kāds pieteiksies tev sekot, pieprasījums parādīsies šeit.",
   "empty_column.followed_tags": "Tu vēl neesi sekojis nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.",
   "empty_column.hashtag": "Ar šo tēmturi nekas nav atrodams.",
-  "empty_column.home": "Tava mājas laika līnija ir tukša! Lai to aizpildītu, pieseko vairāk cilvēkiem. {suggestions}",
+  "empty_column.home": "Tava mājas laikrinda ir tukša! Lai to aizpildītu, pieseko vairāk cilvēkiem.",
   "empty_column.list": "Šis saraksts pašreiz ir tukšs. Kad šī saraksta dalībnieki publicēs jaunas ziņas, tās parādīsies šeit.",
   "empty_column.lists": "Pašreiz tev nav neviena saraksta. Kad tādu izveidosi, tas parādīsies šeit.",
   "empty_column.mutes": "Neviens lietotājs vēl nav apklusināts.",
@@ -309,11 +309,11 @@
   "home.column_settings.show_replies": "Rādīt atbildes",
   "home.explore_prompt.body": "Tavā mājas plūsmā būs dažādu ziņu sajaukums no atsaucēm, kurām esi izvēlējies sekot, personām, kurām esi izvēlējies sekot, un ziņām, kuras tās izceļ. Ja tas šķiet pārāk kluss, iespējams, vēlēsies:",
   "home.explore_prompt.title": "Šī ir tava Mastodon mājvieta.",
-  "home.hide_announcements": "Slēpt anonsus",
+  "home.hide_announcements": "Slēpt paziņojumus",
   "home.pending_critical_update.body": "Lūdzu, pēc iespējas ātrāk atjaunini savu Mastodon serveri!",
   "home.pending_critical_update.link": "Skatīt jauninājumus",
   "home.pending_critical_update.title": "Pieejams kritisks drošības jauninājums!",
-  "home.show_announcements": "Rādīt anonsus",
+  "home.show_announcements": "Rādīt paziņojumus",
   "interaction_modal.description.favourite": "Ar Mastodon kontu tu vari pievienot šo ziņu izlasei, lai informētu autoru, ka to novērtē, un saglabātu to vēlākai lasīšanai.",
   "interaction_modal.description.follow": "Ar Mastodon kontu tu vari sekot {name}, lai saņemtu viņu ziņas savā mājas plūsmā.",
   "interaction_modal.description.reblog": "Izmantojot kontu Mastodon, tu vari izcelt šo ziņu, lai kopīgotu to ar saviem sekotājiem.",
@@ -369,7 +369,7 @@
   "lightbox.close": "Aizvērt",
   "lightbox.compress": "Saspiest attēla skata lodziņu",
   "lightbox.expand": "Izvērst attēla skata lodziņu",
-  "lightbox.next": "Nākamais",
+  "lightbox.next": "Tālāk",
   "lightbox.previous": "Iepriekšējais",
   "limited_account_hint.action": "Tik un tā rādīt profilu",
   "limited_account_hint.title": "{domain} moderatori ir paslēpuši šo profilu.",
@@ -422,8 +422,8 @@
   "navigation_bar.search": "Meklēt",
   "navigation_bar.security": "Drošība",
   "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.",
-  "notification.admin.report": "{name} sūdzējās par {target}",
-  "notification.admin.sign_up": "{name} pierakstījās",
+  "notification.admin.report": "{name} ziņoja par {target}",
+  "notification.admin.sign_up": "{name} ir pierakstījies",
   "notification.favourite": "{name} pievienoja tavu ziņu izlasei",
   "notification.follow": "{name} uzsāka tev sekot",
   "notification.follow_request": "{name} nosūtīja tev sekošanas pieprasījumu",
@@ -435,7 +435,7 @@
   "notification.update": "{name} rediģēja ierakstu",
   "notifications.clear": "Notīrīt paziņojumus",
   "notifications.clear_confirmation": "Vai tiešām vēlies neatgriezeniski notīrīt visus savus paziņojumus?",
-  "notifications.column_settings.admin.report": "Jaunas sūdzības:",
+  "notifications.column_settings.admin.report": "Jauni ziņojumi:",
   "notifications.column_settings.admin.sign_up": "Jaunas pierakstīšanās:",
   "notifications.column_settings.alert": "Darbvirsmas paziņojumi",
   "notifications.column_settings.favourite": "Izlase:",
@@ -445,7 +445,7 @@
   "notifications.column_settings.follow": "Jauni sekotāji:",
   "notifications.column_settings.follow_request": "Jauni sekošanas pieprasījumi:",
   "notifications.column_settings.mention": "Pieminējumi:",
-  "notifications.column_settings.poll": "Aptauju rezultāti:",
+  "notifications.column_settings.poll": "Aptaujas rezultāti:",
   "notifications.column_settings.push": "Uznirstošie paziņojumi",
   "notifications.column_settings.reblog": "Pastiprinātie ieraksti:",
   "notifications.column_settings.show": "Rādīt kolonnā",
@@ -457,13 +457,13 @@
   "notifications.filter.all": "Visi",
   "notifications.filter.boosts": "Pastiprinātie ieraksti",
   "notifications.filter.favourites": "Izlases",
-  "notifications.filter.follows": "Sekošana",
+  "notifications.filter.follows": "Seko",
   "notifications.filter.mentions": "Pieminējumi",
-  "notifications.filter.polls": "Aptauju rezultāti",
+  "notifications.filter.polls": "Aptaujas rezultāti",
   "notifications.filter.statuses": "Jaunumi no cilvēkiem, kuriem tu seko",
   "notifications.grant_permission": "Piešķirt atļauju.",
   "notifications.group": "{count} paziņojumi",
-  "notifications.mark_as_read": "Atzīmēt visus paziņojumus kā izlasītus",
+  "notifications.mark_as_read": "Atzīmēt katru paziņojumu kā izlasītu",
   "notifications.permission_denied": "Darbvirsmas paziņojumi nav pieejami, jo iepriekš tika noraidīts pārlūka atļauju pieprasījums",
   "notifications.permission_denied_alert": "Darbvirsmas paziņojumus nevar iespējot, jo pārlūkprogrammai atļauja tika iepriekš atteikta",
   "notifications.permission_required": "Darbvirsmas paziņojumi nav pieejami, jo nav piešķirta nepieciešamā atļauja.",
@@ -476,23 +476,23 @@
   "onboarding.actions.go_to_home": "Dodieties uz manu mājas plūsmu",
   "onboarding.compose.template": "Sveiki, #Mastodon!",
   "onboarding.follows.empty": "Diemžēl pašlaik nevar parādīt rezultātus. Vari mēģināt izmantot meklēšanu vai pārlūkot izpētes lapu, lai atrastu personas, kurām sekot, vai mēģināt vēlreiz vēlāk.",
-  "onboarding.follows.lead": "Savu mājas plūsmu veido tu pats. Jo vairāk cilvēkiem tu sekosi, jo aktīvāk un interesantāk viss būs. Šie profili var būt labs sākumpunkts — vēlāk vienmēr varēsi pārstāt sekot!",
+  "onboarding.follows.lead": "Tava mājas plūsma ir galvenais veids, kā izbaudīt Mastodon. Jo vairāk cilvēku sekosi, jo aktīvāk un interesantāk tas būs. Lai sāktu, šeit ir daži ieteikumi:",
   "onboarding.follows.title": "Populārs Mastodon",
   "onboarding.share.lead": "Paziņo citiem, kā viņi tevi var atrast Mastodon!",
   "onboarding.share.message": "Es esmu {username} #Mastodon! Nāc sekot man uz {url}",
   "onboarding.share.next_steps": "Iespējamie nākamie soļi:",
   "onboarding.share.title": "Kopīgo savu profilu",
-  "onboarding.start.lead": "Tavs jaunais Mastodon konts ir gatavs lietošanai. Lūk, kā tu vari to pilnīgāk izmantot:",
-  "onboarding.start.skip": "Vai vēlies izlaist tieši uz priekšu?",
+  "onboarding.start.lead": "Tagad tu esat daļa no Mastodon — unikālas, decentralizētas sociālo mediju platformas, kurā tu, nevis algoritms, veido savu pieredzi. Sāksim darbu šajā jaunajā sociālajā jomā:",
+  "onboarding.start.skip": "Nav nepieciešama palīdzība darba sākšanai?",
   "onboarding.start.title": "Tev tas izdevās!",
   "onboarding.steps.follow_people.body": "Tu pats veido savu plūsmu. Piepildīsim to ar interesantiem cilvēkiem.",
   "onboarding.steps.follow_people.title": "Sekot {count, plural, one {one person} other {# cilvēkiem}}",
-  "onboarding.steps.publish_status.body": "Sveicini pasauli.",
+  "onboarding.steps.publish_status.body": "Sveicini pasauli ar tekstu, fotoattēliem, video, vai aptaujām {emoji}",
   "onboarding.steps.publish_status.title": "Izveido savu pirmo ziņu",
   "onboarding.steps.setup_profile.body": "Citi, visticamāk, sazināsies ar tevi, izmantojot aizpildītu profilu.",
   "onboarding.steps.setup_profile.title": "Pielāgo savu profilu",
   "onboarding.steps.share_profile.body": "Paziņo saviem draugiem, kā tevi atrast Mastodon!",
-  "onboarding.steps.share_profile.title": "Kopīgo savu profilu",
+  "onboarding.steps.share_profile.title": "Kopīgo savu Mastodon profilu",
   "onboarding.tips.2fa": "<strong>Vai zināji?</strong> Tu vari aizsargāt savu kontu, konta iestatījumos iestatot divu faktoru autentifikāciju. Tas darbojas ar jebkuru tevis izvēlētu TOTP lietotni, nav nepieciešams tālruņa numurs!",
   "onboarding.tips.accounts_from_other_servers": "<strong>Vai zināji?</strong> Tā kā Mastodon ir decentralizēts, daži profili, ar kuriem saskaraties, tiks mitināti citos, nevis tavos serveros. Un tomēr tu varat sazināties ar viņiem nevainojami! Viņu serveris atrodas viņu lietotājvārda otrajā pusē!",
   "onboarding.tips.migration": "<strong>Vai zināji?</strong> Ja uzskati, ka {domain} nākotnē nav lieliska servera izvēle, vari pāriet uz citu Mastodon serveri, nezaudējot savus sekotājus. Tu pat vari mitināt savu personīgo serveri!",
@@ -518,7 +518,7 @@
   "privacy.public.long": "Redzams visiem",
   "privacy.public.short": "Publiska",
   "privacy.unlisted.long": "Redzams visiem, bet izslēgts no satura atklāšanas funkcijām",
-  "privacy.unlisted.short": "Nerindota",
+  "privacy.unlisted.short": "Neiekļautie",
   "privacy_policy.last_updated": "Pēdējo reizi atjaunināta {date}",
   "privacy_policy.title": "Privātuma politika",
   "refresh": "Atsvaidzināt",
@@ -563,25 +563,25 @@
   "report.reasons.spam": "Tas ir spams",
   "report.reasons.spam_description": "Ļaunprātīgas saites, viltus iesaistīšana vai atkārtotas atbildes",
   "report.reasons.violation": "Tas pārkāpj servera noteikumus",
-  "report.reasons.violation_description": "Tu zini, ka tas pārkāpj konkrētus noteikumus",
+  "report.reasons.violation_description": "Tu zini, ka tas pārkāpj īpašus noteikumus",
   "report.rules.subtitle": "Atlasi visus atbilstošos",
   "report.rules.title": "Kuri noteikumi tiek pārkāpti?",
   "report.statuses.subtitle": "Atlasi visus atbilstošos",
   "report.statuses.title": "Vai ir kādi ieraksti, kas atbalsta šo sūdzību?",
   "report.submit": "Iesniegt",
-  "report.target": "Sūdzība par {target}",
-  "report.thanks.take_action": "Vari veikt šīs darbības, lai kontrolētu Mastodon redzamo saturu:",
+  "report.target": "Ziņošana par: {target}",
+  "report.thanks.take_action": "Tālāk ir norādītas iespējas, kā kontrolēt Mastodon redzamo saturu:",
   "report.thanks.take_action_actionable": "Kamēr mēs to izskatām, tu vari veikt darbības pret @{name}:",
   "report.thanks.title": "Vai nevēlies to redzēt?",
   "report.thanks.title_actionable": "Paldies, ka ziņoji, mēs to izskatīsim.",
   "report.unfollow": "Pārtraukt sekot @{name}",
   "report.unfollow_explanation": "Tu seko šim kontam. Lai vairs neredzētu viņu ziņas savā mājas plūsmā, pārtrauc viņiem sekot.",
-  "report_notification.attached_statuses": "{count, plural, one {Pievienots {count} ieraksts} other {Pievienoti {count} ieraksti}}",
+  "report_notification.attached_statuses": "Pievienoti {count, plural,one {{count} sūtījums} other {{count} sūtījumi}}",
   "report_notification.categories.legal": "Tiesisks",
   "report_notification.categories.other": "Cita",
   "report_notification.categories.spam": "Spams",
   "report_notification.categories.violation": "Noteikumu pārkāpums",
-  "report_notification.open": "Atvērt sūdzību",
+  "report_notification.open": "Atvērt ziņojumu",
   "search.no_recent_searches": "Nav nesen veiktu meklējumu",
   "search.placeholder": "Meklēšana",
   "search.quick_action.account_search": "Profili atbilst {x}",
@@ -628,7 +628,7 @@
   "status.direct_indicator": "Pieminēts privāti",
   "status.edit": "Rediģēt",
   "status.edited": "Rediģēts {date}",
-  "status.edited_x_times": "Rediģēts {count, plural, one {{count} reizi} other {{count} reizes}}",
+  "status.edited_x_times": "Rediģēts {count, plural, one {{count} reize} other {{count} reizes}}",
   "status.embed": "Iestrādāt",
   "status.favourite": "Iecienīts",
   "status.filter": "Filtrē šo ziņu",
@@ -656,8 +656,8 @@
   "status.remove_bookmark": "Noņemt grāmatzīmi",
   "status.replied_to": "Atbildēja {name}",
   "status.reply": "Atbildēt",
-  "status.replyAll": "Atbildēt uz pavedienu",
-  "status.report": "Sūdzēties par @{name}",
+  "status.replyAll": "Atbildēt uz tematu",
+  "status.report": "Ziņot par @{name}",
   "status.sensitive_warning": "Sensitīvs saturs",
   "status.share": "Kopīgot",
   "status.show_filter_reason": "Tomēr rādīt",
@@ -668,7 +668,7 @@
   "status.show_original": "Rādīt oriģinālu",
   "status.title.with_attachments": "{user} publicējis {attachmentCount, plural, one {pielikumu} other {{attachmentCount} pielikumus}}",
   "status.translate": "Tulkot",
-  "status.translated_from_with": "Tulkots no {lang}, izmantojot {provider}",
+  "status.translated_from_with": "Tulkots no {lang} izmantojot {provider}",
   "status.uncached_media_warning": "Priekšskatījums nav pieejams",
   "status.unmute_conversation": "Noņemt sarunas apklusinājumu",
   "status.unpin": "Noņemt profila piespraudumu",
@@ -681,16 +681,16 @@
   "time_remaining.hours": "{number, plural, one {Atlikusi # stunda} other {Atlikušas # stundas}}",
   "time_remaining.minutes": "{number, plural, one {Atlikusi # minūte} other {Atlikušas # minūtes}}",
   "time_remaining.moments": "Atlikuši daži mirkļi",
-  "time_remaining.seconds": "{number, plural, one {Atlikusi # sekunde} other {Atlikušas # sekundes}}",
+  "time_remaining.seconds": "Atlikušas {number, plural, one {# sekunde} other {# sekundes}}",
   "timeline_hint.remote_resource_not_displayed": "{resource} no citiem serveriem nav parādīti.",
   "timeline_hint.resources.followers": "Sekotāji",
-  "timeline_hint.resources.follows": "Sekojošie",
+  "timeline_hint.resources.follows": "Seko",
   "timeline_hint.resources.statuses": "Vecāki ieraksti",
   "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} cilvēki}} par {days, plural, one {# dienu} other {{days} dienām}}",
   "trends.trending_now": "Aktuālās tendences",
-  "ui.beforeunload": "Ja pametīsiet Mastodon, jūsu melnraksts tiks zaudēts.",
+  "ui.beforeunload": "Ja pametīsit Mastodonu, jūsu melnraksts tiks zaudēts.",
   "units.short.billion": "{count}Mjd",
-  "units.short.million": "{count}Mjn",
+  "units.short.million": "{count}M",
   "units.short.thousand": "{count}Tk",
   "upload_area.title": "Velc un nomet, lai augšupielādētu",
   "upload_button.label": "Pievienot bildi, video vai audio datni",
@@ -707,7 +707,7 @@
   "upload_modal.apply": "Pielietot",
   "upload_modal.applying": "Pielieto…",
   "upload_modal.choose_image": "Izvēlēties attēlu",
-  "upload_modal.description_placeholder": "Raibais runcis Rīgā ratu rumbā rūc",
+  "upload_modal.description_placeholder": "Raibais runcis rīgā ratu rumbā rūc",
   "upload_modal.detect_text": "Noteikt tekstu no attēla",
   "upload_modal.edit_media": "Rediģēt multividi",
   "upload_modal.hint": "Noklikšķini vai velc apli priekšskatījumā, lai izvēlētos fokusa punktu, kas vienmēr būs redzams visos sīktēlos.",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index c6993c809c..3814e69151 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -593,6 +593,7 @@
   "search_results.all": "Semua",
   "search_results.hashtags": "Tanda pagar",
   "search_results.nothing_found": "Tidak dapat menemui apa-apa untuk istilah carian tersebut",
+  "search_results.see_all": "Lihat semua",
   "search_results.statuses": "Hantaran",
   "search_results.title": "Mencari {q}",
   "server_banner.about_active_users": "Pengguna pelayan ini sepanjang 30 hari yang lalu (Pengguna Aktif Bulanan)",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index ae9cef5938..69db89dc86 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -537,7 +537,7 @@
   "relative_time.today": "сегодня",
   "reply_indicator.cancel": "Отмена",
   "report.block": "Заблокировать",
-  "report.block_explanation": "В перестаните видеть посты этого пользователя, а он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять что вы заблокировали его/её.",
+  "report.block_explanation": "Вы перестанете видеть посты этого пользователя, и он(а) больше не сможет подписаться на вас и читать ваши посты. Он(а) сможет понять, что вы заблокировали его/её.",
   "report.categories.legal": "Правовая информация",
   "report.categories.other": "Другое",
   "report.categories.spam": "Спам",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index 27c19adf8e..632e716bca 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -1,79 +1,79 @@
 {
+  "about.blocks": "මැදිහත්කරණ සේවාදායක",
+  "about.contact": "සබඳතාව:",
+  "about.disclaimer": "මාස්ටඩන් යනු නිදහස් විවෘත මූලාශ්‍ර මෘදුකාංගයකි. එය මාස්ටඩන් gGmbH හි වෙළඳ නාමයකි.",
+  "about.domain_blocks.suspended.title": "අත්හිටුවා ඇත",
+  "about.rules": "සේවාදායකයේ නීති",
   "account.account_note_header": "සටහන",
   "account.add_or_remove_from_list": "ලැයිස්තු වලින් එකතු හෝ ඉවත් කරන්න",
-  "account.badges.bot": "ස්වයං ක්‍රමලේඛය",
   "account.badges.group": "සමූහය",
   "account.block": "@{name} අවහිර කරන්න",
   "account.block_domain": "{domain} වසම අවහිර කරන්න",
+  "account.block_short": "අවහිර",
   "account.blocked": "අවහිර කර ඇත",
   "account.browse_more_on_origin_server": "මුල් පැතිකඩෙහි තවත් පිරික්සන්න",
-  "account.cancel_follow_request": "Withdraw follow request",
   "account.disable_notifications": "@{name} පළ කරන විට මට දැනුම් නොදෙන්න",
   "account.domain_blocked": "වසම අවහිර කර ඇත",
   "account.edit_profile": "පැතිකඩ සංස්කරණය",
   "account.enable_notifications": "@{name} පළ කරන විට මට දැනුම් දෙන්න",
   "account.endorse": "පැතිකඩෙහි විශේෂාංගය",
+  "account.featured_tags.last_status_never": "ලිපි නැත",
   "account.follow": "අනුගමනය",
   "account.followers": "අනුගාමිකයින්",
   "account.followers.empty": "කිසිවෙක් අනුගමනය කර නැත.",
-  "account.followers_counter": "{count, plural, one {{counter} අනුගාමිකයෙක්} other {{counter} අනුගාමිකයින්}}",
   "account.following": "අනුගමනය",
   "account.following_counter": "{count, plural, one {අනුගාමිකයින් {counter}} other {අනුගාමිකයින් {counter}}}",
   "account.follows.empty": "තවමත් කිසිවෙක් අනුගමනය නොකරයි.",
   "account.follows_you": "ඔබව අනුගමනය කරයි",
-  "account.hide_reblogs": "@{name}සිට බූස්ට් සඟවන්න",
+  "account.go_to_profile": "පැතිකඩට යන්න",
+  "account.joined_short": "එක් වූ දිනය",
   "account.link_verified_on": "මෙම සබැඳියේ අයිතිය {date} දී පරීක්‍ෂා කෙරිණි",
-  "account.locked_info": "මෙම ගිණුමේ රහස්‍යතා තත්ත්වය අගුලු දමා ඇත. හිමිකරු ඔවුන් අනුගමනය කළ හැක්කේ කාටදැයි හස්තීයව සමාලෝචනය කරයි.",
   "account.media": "මාධ්‍යය",
-  "account.mention": "@{name} සැඳහුම",
+  "account.mention": "@{name} සඳහන් කරන්ක",
   "account.mute": "@{name} නිහඬ කරන්න",
+  "account.mute_short": "නිහඬ",
   "account.muted": "නිහඬ කළා",
   "account.posts": "ලිපි",
-  "account.posts_with_replies": "ටූට්ස් සහ පිළිතුරු",
+  "account.posts_with_replies": "ලිපි සහ පිළිතුරු",
   "account.report": "@{name} වාර්තා කරන්න",
-  "account.requested": "අනුමැතිය බලාපොරොත්තුවෙන්",
   "account.share": "@{name} ගේ පැතිකඩ බෙදාගන්න",
-  "account.show_reblogs": "@{name}සිට බූස්ට් පෙන්වන්න",
-  "account.statuses_counter": "{count, plural, one {{counter} ටූට්} other {{counter} ටූට්ස්}}",
   "account.unblock": "@{name} අනවහිර කරන්න",
   "account.unblock_domain": "{domain} වසම අනවහිර කරන්න",
   "account.unblock_short": "අනවහිර",
   "account.unendorse": "පැතිකඩෙහි විශේෂාංග නොකරන්න",
-  "account.unfollow": "අනුගමනය නොකරන්න",
-  "account.unmute": "@{name}නිහඬ නොකරන්න",
   "account.unmute_short": "නොනිහඬ",
   "account_note.placeholder": "සටහන යෙදීමට ඔබන්න",
-  "admin.dashboard.daily_retention": "ලියාපදිංචි වීමෙන් පසු දිනකට පරිශීලක රඳවා ගැනීමේ අනුපාතය",
-  "admin.dashboard.monthly_retention": "ලියාපදිංචි වීමෙන් පසු මාසය අනුව පරිශීලක රඳවා ගැනීමේ අනුපාතය",
-  "admin.dashboard.retention.average": "සාමාන්යය",
-  "admin.dashboard.retention.cohort": "ලියාපදිංචි වීමේ මාසය",
+  "admin.dashboard.retention.cohort": "ලියාපදිංචි මාසය",
   "admin.dashboard.retention.cohort_size": "නව පරිශ්‍රීලකයින්",
   "alert.rate_limited.message": "{retry_time, time, medium} කට පසුව උත්සාහ කරන්න.",
-  "alert.rate_limited.title": "මිල සීමා සහිතයි",
-  "alert.unexpected.message": "අනපේක්ෂිත දෝෂයක් ඇතිවුනා.",
+  "alert.rate_limited.title": "අනුපාතනය වී ඇත",
+  "alert.unexpected.message": "අනපේක්‍ෂිත දෝෂයක් සිදු විය.",
   "alert.unexpected.title": "අපොයි!",
   "announcement.announcement": "නිවේදනය",
-  "attachments_list.unprocessed": "(සැකසුම් නොකළ)",
   "audio.hide": "හඬපටය සඟවන්න",
   "autosuggest_hashtag.per_week": "සතියකට {count}",
-  "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට ඔබට {combo} එබිය හැක",
+  "boost_modal.combo": "ඊළඟ වතාවේ මෙය මඟ හැරීමට {combo} එබීමට හැකිය",
   "bundle_column_error.retry": "නැවත උත්සාහ කරන්න",
   "bundle_modal_error.close": "වසන්න",
-  "bundle_modal_error.message": "මෙම සංරචකය පූරණය කිරීමේදී යම් දෙයක් වැරදී ඇත.",
+  "bundle_modal_error.message": "මෙම සංරචකය පූරණයේ දී යම් දෙයක් වැරදී ඇත.",
   "bundle_modal_error.retry": "නැවත උත්සාහ කරන්න",
+  "closed_registrations_modal.find_another_server": "වෙනත් සේවාදායක",
   "column.about": "පිලිබඳව",
   "column.blocks": "අවහිර කළ අය",
-  "column.bookmarks": "පොත් යොමු",
-  "column.community": "දේශීය කාලරේඛාව",
+  "column.bookmarks": "පොත්යොමු",
+  "column.community": "ස්ථානීය කාලරේඛාව",
+  "column.direct": "පෞද්ගලික සැඳහුම්",
   "column.directory": "පැතිකඩ පිරික්සන්න",
   "column.domain_blocks": "අවහිර කළ වසම්",
+  "column.favourites": "ප්‍රියතමයන්",
+  "column.firehose": "සජීව සංග්‍රහ",
   "column.follow_requests": "අනුගමන ඉල්ලීම්",
   "column.home": "මුල් පිටුව",
-  "column.lists": "ලේඛන",
+  "column.lists": "ලැයිස්තු",
   "column.mutes": "නිහඬ කළ අය",
   "column.notifications": "දැනුම්දීම්",
   "column.pins": "ඇමිණූ ලිපි",
-  "column.public": "ෆෙඩරේටඩ් කාලරේඛාව",
+  "column.public": "ඒකාබද්ධ කාලරේඛාව",
   "column_back_button.label": "ආපසු",
   "column_header.hide_settings": "සැකසුම් සඟවන්න",
   "column_header.moveLeft_settings": "තීරුව වමට ගෙනයන්න",
@@ -87,70 +87,62 @@
   "community.column_settings.remote_only": "දුරස්ථව පමණයි",
   "compose.language.change": "භාෂාව සංශෝධනය",
   "compose.language.search": "භාෂා සොයන්න...",
+  "compose.published.body": "ලිපිය පළ විය.",
+  "compose.published.open": "අරින්න",
+  "compose.saved.body": "ලිපිය සුරැකිණි.",
   "compose_form.direct_message_warning_learn_more": "තව දැනගන්න",
-  "compose_form.encryption_warning": "Mastodon හි පළ කිරීම් අන්තයේ සිට අවසානය දක්වා සංකේතනය කර නොමැත. Mastodon හරහා කිසිදු සංවේදී තොරතුරක් බෙදා නොගන්න.",
-  "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
-  "compose_form.lock_disclaimer": "ඔබගේ ගිණුම {locked}නොවේ. ඔබගේ අනුගාමිකයින්ට පමණක් පළ කිරීම් බැලීමට ඕනෑම කෙනෙකුට ඔබව අනුගමනය කළ හැක.",
+  "compose_form.encryption_warning": "මාස්ටඩන් වෙත පළ කරන දෑ අන්ත සංකේතනයෙන් ආරක්‍ෂා නොවේ. මාස්ටඩන් හරහා කිසිදු සංවේදී තොරතුරක් බෙදා නොගන්න.",
   "compose_form.lock_disclaimer.lock": "අගුළු දමා ඇත",
   "compose_form.placeholder": "ඔබගේ සිතුවිලි මොනවාද?",
   "compose_form.poll.add_option": "තේරීමක් යොදන්න",
   "compose_form.poll.duration": "මත විමසීමේ කාලය",
   "compose_form.poll.option_placeholder": "තේරීම {number}",
   "compose_form.poll.remove_option": "මෙම ඉවත් කරන්න",
-  "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයක් ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න",
-  "compose_form.poll.switch_to_single": "තනි තේරීමකට ඉඩ දීම සඳහා මත විමසුම වෙනස් කරන්න",
+  "compose_form.poll.switch_to_multiple": "තේරීම් කිහිපයකට මත විමසුම වෙනස් කරන්න",
+  "compose_form.poll.switch_to_single": "තනි තේරීමකට මත විමසුම වෙනස් කරන්න",
   "compose_form.publish": "ප්‍රකාශනය",
-  "compose_form.publish_form": "Publish",
+  "compose_form.publish_form": "නව ලිපිය",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "වෙනස්කම් සුරකින්න",
-  "compose_form.sensitive.hide": "{count, plural, one {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න} other {මාධ්ය සංවේදී ලෙස සලකුණු කරන්න}}",
-  "compose_form.sensitive.marked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත}}",
-  "compose_form.sensitive.unmarked": "{count, plural, one {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත} other {මාධ්‍ය සංවේදී ලෙස සලකුණු කර නැත}}",
-  "compose_form.spoiler.marked": "අනතුරු ඇඟවීම පිටුපස පෙළ සඟවා ඇත",
-  "compose_form.spoiler.unmarked": "ප්‍රයෝජනය සඟවා නැත",
+  "compose_form.spoiler.marked": "අන්තර්ගත අවවාදය ඉවත් කරන්න",
+  "compose_form.spoiler.unmarked": "අන්තර්ගත අවවාදයක් එක් කරන්න",
   "compose_form.spoiler_placeholder": "අවවාදය මෙහි ලියන්න",
   "confirmation_modal.cancel": "අවලංගු",
   "confirmations.block.block_and_report": "අවහිර කර වාර්තා කරන්න",
   "confirmations.block.confirm": "අවහිර",
   "confirmations.block.message": "ඔබට {name} අවහිර කිරීමට වුවමනා ද?",
   "confirmations.delete.confirm": "මකන්න",
-  "confirmations.delete.message": "ඔබට මෙම තත්ත්වය මැකීමට අවශ්‍ය බව විශ්වාසද?",
+  "confirmations.delete.message": "ඔබට මෙම ලිපිය මැකීමට වුවමනා ද?",
   "confirmations.delete_list.confirm": "මකන්න",
-  "confirmations.delete_list.message": "ඔබට මෙම ලැයිස්තුව ස්ථිරවම මැකීමට අවශ්‍ය බව විශ්වාසද?",
+  "confirmations.delete_list.message": "ඔබට මෙම ලැයිස්තුව සදහටම මැකීමට වුවමනා ද?",
   "confirmations.discard_edit_media.confirm": "ඉවත ලන්න",
   "confirmations.discard_edit_media.message": "ඔබට මාධ්‍ය විස්තරයට හෝ පෙරදසුනට නොසුරකින ලද වෙනස්කම් තිබේ, කෙසේ වෙතත් ඒවා ඉවත දමන්නද?",
   "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න",
-  "confirmations.domain_block.message": "ඔබට සම්පූර්ණ {domain}අවහිර කිරීමට අවශ්‍ය බව ඔබට සැබවින්ම විශ්වාසද? බොහෝ අවස්ථාවලදී ඉලක්කගත බ්ලොක් හෝ නිශ්ශබ්ද කිරීම් කිහිපයක් ප්රමාණවත් වන අතර වඩාත් යෝග්ය වේ. ඔබ කිසිදු පොදු කාලරාමුවක හෝ ඔබගේ දැනුම්දීම් වල එම වසමේ අන්තර්ගතය නොදකිනු ඇත. එම වසමෙන් ඔබගේ අනුගාමිකයින් ඉවත් කරනු ලැබේ.",
+  "confirmations.edit.confirm": "සංස්කරණය",
   "confirmations.logout.confirm": "නික්මෙන්න",
   "confirmations.logout.message": "ඔබට නික්මෙන්න අවශ්‍ය බව විශ්වාසද?",
   "confirmations.mute.confirm": "නිශ්ශබ්ද",
-  "confirmations.mute.explanation": "මෙය ඔවුන්ගෙන් පළ කිරීම් සහ ඒවා සඳහන් කරන පළ කිරීම් සඟවයි, නමුත් එය ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට සහ ඔබව අනුගමනය කිරීමට තවමත් ඉඩ ලබා දේ.",
-  "confirmations.mute.message": "ඔබට {name} නිශ්ශබ්ද කිරීමට අවශ්‍ය බව විශ්වාසද?",
-  "confirmations.redraft.confirm": "මකන්න සහ නැවත කෙටුම්පත් කරන්න",
+  "confirmations.mute.message": "{name} නිහඬ කිරීමට වුවමනා ද?",
   "confirmations.reply.confirm": "පිළිතුර",
-  "confirmations.reply.message": "දැන් පිළිතුරු දීම ඔබ දැනට රචනා කරන පණිවිඩය උඩින් ලියයි. ඔබට ඉදිරියට යාමට අවශ්‍ය බව විශ්වාසද?",
-  "confirmations.unfollow.confirm": "අනුගමනය නොකරන්න",
-  "confirmations.unfollow.message": "ඔබට {name}අනුගමනය නොකිරීමට අවශ්‍ය බව විශ්වාසද?",
   "conversation.delete": "සංවාදය මකන්න",
   "conversation.mark_as_read": "කියවූ බව යොදන්න",
   "conversation.open": "සංවාදය බලන්න",
   "conversation.with": "{names} සමඟ",
   "copypaste.copied": "පිටපත් විය",
-  "directory.federated": "දන්නා fediverse වලින්",
+  "copypaste.copy_to_clipboard": "පසුරුපුවරුවට පිටපතක්",
+  "directory.federated": "දන්නා ෆෙඩිවර්ස් වෙතින්",
   "directory.local": "{domain} වෙතින් පමණි",
   "directory.new_arrivals": "නව පැමිණීම්",
   "directory.recently_active": "මෑත දී සක්‍රියයි",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
-  "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම තත්ත්වය ඔබේ වෙබ් අඩවියට ඇතුළත් කරන්න.",
-  "embed.preview": "එය පෙනෙන්නේ කෙසේද යන්න මෙන්න:",
+  "disabled_account_banner.account_settings": "ගිණුමේ සැකසුම්",
+  "embed.instructions": "පහත කේතය පිටපත් කිරීමෙන් මෙම ලිපිය ඔබගේ අඩවියට කාවද්දන්න.",
+  "embed.preview": "මෙන්න එය පෙනෙන අන්දම:",
   "emoji_button.activity": "ක්‍රියාකාරකම",
   "emoji_button.clear": "මකන්න",
   "emoji_button.custom": "අභිරුචි",
-  "emoji_button.flags": "කොඩි",
   "emoji_button.food": "ආහාර සහ පාන",
   "emoji_button.label": "ඉමොජි යොදන්න",
-  "emoji_button.nature": "ස්වභාවික",
+  "emoji_button.nature": "සොබාදහම",
   "emoji_button.not_found": "ගැළපෙන ඉමෝජි හමු නොවිණි",
   "emoji_button.objects": "වස්තූන්",
   "emoji_button.people": "මිනිසුන්",
@@ -160,158 +152,149 @@
   "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": "ඔබට තවමත් පිටු සලකුණු කළ මෙවලම් කිසිවක් නොමැත. ඔබ එකක් පිටු සලකුණු කළ විට, එය මෙහි පෙන්වනු ඇත.",
-  "empty_column.community": "දේශීය කාලරේඛාව හිස් ය. පන්දුව පෙරළීමට ප්‍රසිද්ධියේ යමක් ලියන්න!",
+  "empty_column.bookmarked_statuses": "ඔබ සතුව පොත්යොමු තබන ලද ලිපි කිසිවක් නැත. ඔබ පොත්යොමුවක් තබන විට, එය මෙහි දිස්වනු ඇත.",
   "empty_column.domain_blocks": "අවහිර කරන ලද වසම් නැත.",
   "empty_column.explore_statuses": "දැන් කිසිවක් නැඹුරු නොවේ. පසුව නැවත පරීක්ෂා කරන්න!",
-  "empty_column.follow_requests": "ඔබට තවමත් අනුගමනය කිරීමේ ඉල්ලීම් කිසිවක් නොමැත. ඔබට එකක් ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.",
-  "empty_column.hashtag": "මෙම හැෂ් ටැග් එකේ තවම කිසිවක් නොමැත.",
-  "empty_column.home": "ඔබගේ නිවසේ කාලරේඛාව හිස්ය! එය පිරවීම සඳහා තවත් පුද්ගලයින් අනුගමනය කරන්න. {suggestions}",
-  "empty_column.list": "මෙම ලැයිස්තුවේ තවමත් කිසිවක් නොමැත. මෙම ලැයිස්තුවේ සාමාජිකයන් නව තත්ව පළ කරන විට, ඔවුන් මෙහි දිස් වනු ඇත.",
+  "empty_column.follow_requests": "ඔබට තවමත් අනුගමන ඉල්ලීම් ලැබී නැත. ඉල්ලීමක් ලැබුණු විට, එය මෙහි පෙන්වනු ඇත.",
+  "empty_column.home": "ඔබගේ මුල් පිටුව හිස් ය! මෙය පිරවීමට බොහෝ පුද්ගලයින් අනුගමනය කරන්න.",
   "empty_column.lists": "ඔබට තවමත් ලැයිස්තු කිසිවක් නැත. ඔබ එකක් සාදන විට, එය මෙහි පෙන්වනු ඇත.",
   "empty_column.mutes": "ඔබ තවමත් කිසිදු පරිශීලකයෙකු නිහඬ කර නැත.",
-  "empty_column.notifications": "ඔබට තවම දැනුම්දීම් කිසිවක් නැත. වෙනත් පුද්ගලයින් ඔබ සමඟ අන්තර් ක්‍රියා කරන විට, ඔබ එය මෙහි දකිනු ඇත.",
-  "empty_column.public": "මෙහි කිසිවක් නැත! යමක් ප්‍රසිද්ධියේ ලියන්න, නැතහොත් එය පිරවීම සඳහා වෙනත් සේවාදායකයන්ගෙන් පරිශීලකයන් හස්තීයව අනුගමනය කරන්න",
+  "empty_column.notifications": "ඔබට දැනුම්දීම් ලැබී නැත. අන් අය සහ ඔබ අතර අන්‍යෝන්‍ය බලපවත්වන දෑ මෙහි දිස්වනු ඇත.",
   "error.unexpected_crash.explanation": "අපගේ කේතයේ දෝෂයක් හෝ බ්‍රවුසර ගැළපුම් ගැටලුවක් හේතුවෙන්, මෙම පිටුව නිවැරදිව ප්‍රදර්ශනය කළ නොහැක.",
   "error.unexpected_crash.explanation_addons": "මෙම පිටුව නිවැරදිව ප්‍රදර්ශනය කළ නොහැක. මෙම දෝෂය බ්‍රවුසර ඇඩෝනයක් හෝ ස්වයංක්‍රීය පරිවර්තන මෙවලම් නිසා ඇති විය හැක.",
-  "error.unexpected_crash.next_steps": "පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.",
-  "error.unexpected_crash.next_steps_addons": "ඒවා අක්‍රිය කර පිටුව නැවුම් කිරීමට උත්සාහ කරන්න. එය උදව් නොකළහොත්, ඔබට තවමත් වෙනත් බ්‍රවුසරයක් හෝ ස්වදේශීය යෙදුමක් හරහා Mastodon භාවිත කිරීමට හැකි වේ.",
-  "errors.unexpected_crash.copy_stacktrace": "ස්ටැක්ට්රේස් පසුරු පුවරුවට පිටපත් කරන්න",
+  "error.unexpected_crash.next_steps": "පිටුව නැවුම් කර බලන්න. එයින් ඵලක් නොවේ නම්, වෙනත් අතිරික්සුවක් හෝ නිසග යෙදුමක් හරහා මාස්ටඩන් භාවිතා කරන්න.",
+  "error.unexpected_crash.next_steps_addons": "ඒවා අබල කර පිටුව නැවුම් කරන්න. එයින් ඵලක් නොවේ නම්, වෙනත් අතිරික්සුවක් හෝ නිසග යෙදුමක් හරහා මාස්ටඩන් භාවිතා කරන්න.",
   "errors.unexpected_crash.report_issue": "ගැටළුව වාර්තාව",
   "explore.search_results": "සෙවුම් ප්‍රතිඵල",
-  "explore.title": "ගවේශණය",
+  "explore.suggested_follows": "පුද්ගලයින්",
+  "explore.title": "ගවේශනය",
+  "explore.trending_links": "පුවත්",
+  "explore.trending_statuses": "ලිපි",
   "filter_modal.added.expired_title": "පෙරහන ඉකුත්ය!",
   "filter_modal.added.review_and_configure_title": "පෙරහන් සැකසුම්",
   "filter_modal.added.settings_link": "සැකසුම් පිටුව",
+  "filter_modal.added.title": "පෙරහන එක් කළා!",
   "filter_modal.select_filter.expired": "ඉකුත්ය",
   "filter_modal.select_filter.prompt_new": "නව ප්‍රවර්ගය: {name}",
   "filter_modal.select_filter.search": "සොයන්න හෝ සාදන්න",
-  "follow_request.authorize": "අවසරලත්",
+  "filter_modal.select_filter.title": "මෙම ලිපිය පෙරන්න",
+  "filter_modal.title.status": "ලිපියක් පෙරන්න",
+  "firehose.local": "මෙම සේවාදායකය",
+  "firehose.remote": "වෙනත් සේවාදායක",
   "follow_request.reject": "ප්‍රතික්‍ෂේප",
-  "follow_requests.unlocked_explanation": "ඔබගේ ගිණුම අගුලු දමා නොතිබුණද, {domain} කාර්ය මණ්ඩලය සිතුවේ ඔබට මෙම ගිණුම් වලින් ලැබෙන ඉල්ලීම් හස්තීයව සමාලෝචනය කිරීමට අවශ්‍ය විය හැකි බවයි.",
+  "footer.about": "පිළිබඳව",
+  "footer.directory": "පැතිකඩ නාමාවලිය",
+  "footer.get_app": "යෙදුම ගන්න",
+  "footer.invite": "ආරාධනා කරන්න",
+  "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.tag_mode.all": "මේ සියල්ලම",
-  "hashtag.column_settings.tag_mode.any": "ඇතුළත් එකක්",
   "hashtag.column_settings.tag_mode.none": "මේ කිසිවක් නැත",
   "hashtag.column_settings.tag_toggle": "මෙම තීරුවේ අමතර ටැග් ඇතුළත් කරන්න",
+  "home.actions.go_to_explore": "නැගී එන දෑ බලන්න",
+  "home.actions.go_to_suggestions": "පුද්ගලයින් සොයන්න",
   "home.column_settings.basic": "මූලික",
-  "home.column_settings.show_reblogs": "බූස්ට් පෙන්වන්න",
   "home.column_settings.show_replies": "පිළිතුරු පෙන්වන්න",
+  "home.explore_prompt.title": "මෙය ඔබගේ මාස්ටඩන් මුල් පිටුවයි.",
   "home.hide_announcements": "නිවේදන සඟවන්න",
+  "home.pending_critical_update.link": "යාවත්කාල බලන්න",
   "home.show_announcements": "නිවේදන පෙන්වන්න",
-  "intervals.full.days": "{number, plural, one {# දින} other {# දින}}",
-  "intervals.full.hours": "{number, plural, one {# පැය} other {# පැය}}",
-  "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}}",
+  "interaction_modal.on_this_server": "මෙම සේවාදායකයෙහි",
+  "intervals.full.days": "{number, plural, one {දවස් #} other {දවස් #}}",
+  "intervals.full.hours": "{number, plural, one {පැය #} other {පැය #}}",
+  "intervals.full.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}}",
   "keyboard_shortcuts.back": "ආපසු යාත්‍රණය",
-  "keyboard_shortcuts.blocked": "අවහිර කළ පරිශීලක ලැයිස්තුව විවෘත කිරීමට",
-  "keyboard_shortcuts.boost": "වැඩි කිරීමට",
-  "keyboard_shortcuts.column": "එක් තීරුවක තත්ත්වය නාභිගත කිරීමට",
-  "keyboard_shortcuts.compose": "රචනා පාඨ ප්‍රදේශය නාභිගත කිරීමට",
   "keyboard_shortcuts.description": "සවිස්තරය",
-  "keyboard_shortcuts.direct": "to open direct messages column",
-  "keyboard_shortcuts.down": "ලැයිස්තුවේ පහළට ගමන් කිරීමට",
+  "keyboard_shortcuts.down": "ලැයිස්තුවේ පහළට ගෙනයන්න",
   "keyboard_shortcuts.enter": "ලිපිය අරින්න",
+  "keyboard_shortcuts.favourites": "ප්‍රියතමයන් ලැයිස්තුව අරින්න",
   "keyboard_shortcuts.federated": "ෆෙඩරේටඩ් කාලරාමුව විවෘත කිරීමට",
   "keyboard_shortcuts.heading": "යතුරුපුවරු කෙටිමං",
-  "keyboard_shortcuts.home": "නිවසේ කාලරේඛාව විවෘත කිරීමට",
   "keyboard_shortcuts.hotkey": "උණු යතුර",
-  "keyboard_shortcuts.legend": "මෙම පුරාවෘත්තය ප්රදර්ශනය කිරීමට",
   "keyboard_shortcuts.local": "දේශීය කාලරේඛාව විවෘත කිරීමට",
   "keyboard_shortcuts.mention": "කතුවරයා සඳහන් කිරීමට",
-  "keyboard_shortcuts.muted": "නිශ්ශබ්ද පරිශීලක ලැයිස්තුව විවෘත කිරීමට",
+  "keyboard_shortcuts.muted": "නිහඬ කළ අය පෙන්වන්න",
   "keyboard_shortcuts.my_profile": "ඔබගේ පැතිකඩ අරින්න",
   "keyboard_shortcuts.notifications": "දැනුම්දීම් තීරුව විවෘත කිරීමට",
   "keyboard_shortcuts.open_media": "මාධ්‍ය අරින්න",
-  "keyboard_shortcuts.pinned": "ඇමිණූ ලිපි ලේඛනය අරින්න",
+  "keyboard_shortcuts.pinned": "ඇමිණූ ලිපි ලැයිස්තුව අරින්න",
   "keyboard_shortcuts.profile": "කතෘගේ පැතිකඩ අරින්න",
   "keyboard_shortcuts.reply": "පිළිතුරු දීමට",
-  "keyboard_shortcuts.requests": "පහත ඉල්ලීම් ලැයිස්තුව විවෘත කිරීමට",
-  "keyboard_shortcuts.search": "සෙවුම් අවධානය යොමු කිරීමට",
-  "keyboard_shortcuts.spoilers": "CW ක්ෂේත්‍රය පෙන්වීමට/සැඟවීමට",
+  "keyboard_shortcuts.spoilers": "CW ක්‍ෂේත්‍රය පෙන්වන්න/සඟවන්න",
   "keyboard_shortcuts.start": "\"පටන් ගන්න\" තීරුව අරින්න",
-  "keyboard_shortcuts.toggle_hidden": "CW පිටුපස පෙළ පෙන්වීමට/සැඟවීමට",
   "keyboard_shortcuts.toggle_sensitivity": "මාධ්‍ය පෙන්වන්න/සඟවන්න",
-  "keyboard_shortcuts.toot": "අලුත්ම ටූට් එකක් පටන් ගන්න",
-  "keyboard_shortcuts.unfocus": "අවධානය යොමු නොකිරීමට textarea/search රචනා කරන්න",
-  "keyboard_shortcuts.up": "ලැයිස්තුවේ ඉහළට යාමට",
+  "keyboard_shortcuts.toot": "නව ලිපියක් අරඹන්න",
+  "keyboard_shortcuts.up": "ලැයිස්තුවේ ඉහළට ගෙනයන්න",
   "lightbox.close": "වසන්න",
-  "lightbox.compress": "රූප බැලීමේ කොටුව සම්පීඩනය කරන්න",
-  "lightbox.expand": "රූප දර්ශන පෙට්ටිය දිග හරින්න",
   "lightbox.next": "ඊළඟ",
   "lightbox.previous": "පෙර",
   "limited_account_hint.action": "කෙසේ හෝ පැතිකඩ පෙන්වන්න",
-  "lists.account.add": "ලේඛනයට දමන්න",
-  "lists.account.remove": "ලේඛනයෙන් ඉවතලන්න",
-  "lists.delete": "ලේඛනය මකන්න",
-  "lists.edit": "ලේඛනය සංස්කරණය",
-  "lists.edit.submit": "මාතෘකාව වෙනස් කරන්න",
-  "lists.new.create": "ලැයිස්තුව එකතු කරන්න",
-  "lists.new.title_placeholder": "නව ලැයිස්තු මාතෘකාව",
-  "lists.replies_policy.followed": "අනුගමනය කරන ඕනෑම පරිශීලකයෙක්",
-  "lists.replies_policy.list": "ලැයිස්තුවේ සාමාජිකයන්",
+  "lists.account.add": "ලැයිස්තුවට දමන්න",
+  "lists.account.remove": "ලැයිස්තුවෙන් ඉවතලන්න",
+  "lists.delete": "ලැයිස්තුව මකන්න",
+  "lists.edit": "ලැයිස්තුව සංස්කරණය",
+  "lists.edit.submit": "සිරැසිය සංශෝධනය",
+  "lists.new.title_placeholder": "නව ලැයිස්තුවේ සිරැසිය",
+  "lists.replies_policy.list": "ලැයිස්තුවේ සාමාජිකයින්",
   "lists.replies_policy.none": "කිසිවෙක් නැත",
   "lists.replies_policy.title": "පිළිතුරු පෙන්වන්න:",
-  "lists.search": "ඔබ අනුගමනය කරන පුද්ගලයින් අතර සොයන්න",
-  "lists.subheading": "ඔබගේ ලේඛන",
-  "load_pending": "{count, plural, one {# නව අයිතමයක්} other {නව අයිතම #ක්}}",
+  "lists.subheading": "ඔබගේ ලැයිස්තු",
   "loading_indicator.label": "පූරණය වෙමින්...",
-  "media_gallery.toggle_visible": "{number, plural, one {රූපය සඟවන්න} other {පින්තූර සඟවන්න}}",
   "mute_modal.duration": "පරාසය",
-  "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?",
-  "mute_modal.indefinite": "අවිනිශ්චිත",
+  "mute_modal.hide_notifications": "මෙම පුද්ගලයාගේ දැනුම්දීම් සඟවන්නද?",
+  "navigation_bar.about": "පිළිබඳව",
   "navigation_bar.blocks": "අවහිර කළ අය",
   "navigation_bar.bookmarks": "පොත්යොමු",
-  "navigation_bar.community_timeline": "දේශීය කාලරේඛාව",
-  "navigation_bar.compose": "නව ටූට් සාදන්න",
-  "navigation_bar.discover": "සොයා ගන්න",
+  "navigation_bar.community_timeline": "ස්ථානීය කාලරේඛාව",
+  "navigation_bar.compose": "නව ලිපියක් ලියන්න",
+  "navigation_bar.direct": "පෞද්ගලික සැඳහුම්",
   "navigation_bar.domain_blocks": "අවහිර කළ වසම්",
   "navigation_bar.edit_profile": "පැතිකඩ සංස්කරණය",
-  "navigation_bar.explore": "ගවේෂණය කරන්න",
+  "navigation_bar.explore": "ගවේශනය",
+  "navigation_bar.favourites": "ප්‍රියතමයන්",
   "navigation_bar.filters": "නිහඬ කළ වචන",
   "navigation_bar.follow_requests": "අනුගමන ඉල්ලීම්",
   "navigation_bar.follows_and_followers": "අනුගමනය හා අනුගාමිකයින්",
-  "navigation_bar.lists": "ලේඛන",
+  "navigation_bar.lists": "ලැයිස්තු",
   "navigation_bar.logout": "නික්මෙන්න",
   "navigation_bar.mutes": "නිහඬ කළ අය",
   "navigation_bar.personal": "පුද්ගලික",
   "navigation_bar.pins": "ඇමිණූ ලිපි",
   "navigation_bar.preferences": "අභිප්‍රේත",
-  "navigation_bar.public_timeline": "ෆෙඩරේටඩ් කාලරේඛාව",
+  "navigation_bar.public_timeline": "ඒකාබද්ධ කාලරේඛාව",
+  "navigation_bar.search": "සොයන්න",
   "navigation_bar.security": "ආරක්ෂාව",
   "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} වාර්තා {target}",
-  "notification.admin.sign_up": "{name} අත්සන් කර ඇත",
   "notification.follow": "{name} ඔබව අනුගමනය කළා",
-  "notification.follow_request": "{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත",
   "notification.mention": "{name} ඔබව සඳහන් කර ඇත",
   "notification.own_poll": "ඔබගේ මත විමසුම නිමයි",
   "notification.poll": "ඔබ ඡන්දය දුන් මත විමසුමක් නිමයි",
-  "notification.reblog": "{name} ඔබේ තත්ත්වය ඉහළ නැංවීය",
   "notification.status": "{name} දැන් පළ කළා",
-  "notification.update": "{name} පළ කිරීමක් සංස්කරණය කළා",
+  "notification.update": "{name} ලිපියක් සංස්කරණය කළා",
   "notifications.clear": "දැනුම්දීම් මකන්න",
-  "notifications.clear_confirmation": "ඔබට ඔබගේ සියලු දැනුම්දීම් ස්ථිරවම හිස් කිරීමට අවශ්‍ය බව විශ්වාසද?",
+  "notifications.clear_confirmation": "දැනුම්දීම් සියල්ල හිස් කිරීමට වුවමනා ද?",
   "notifications.column_settings.admin.report": "නව වාර්තා:",
   "notifications.column_settings.admin.sign_up": "නව ලියාපදිංචි:",
   "notifications.column_settings.alert": "වැඩතල දැනුම්දීම්",
+  "notifications.column_settings.favourite": "ප්‍රියතමයන්:",
   "notifications.column_settings.filter_bar.advanced": "සියළු ප්‍රවර්ග පෙන්වන්න",
   "notifications.column_settings.filter_bar.category": "ඉක්මන් පෙරහන් තීරුව",
   "notifications.column_settings.filter_bar.show_bar": "පෙරහන් තීරුව පෙන්වන්න",
   "notifications.column_settings.follow": "නව අනුගාමිකයින්:",
   "notifications.column_settings.follow_request": "නව අනුගමන ඉල්ලීම්:",
   "notifications.column_settings.mention": "සැඳහුම්:",
-  "notifications.column_settings.poll": "ඡන්ද ප්‍රතිඵල:",
+  "notifications.column_settings.poll": "මත විමසුමේ ප්‍රතිඵල:",
   "notifications.column_settings.push": "තල්ලු දැනුම්දීම්",
-  "notifications.column_settings.reblog": "තල්ලු කිරීම්:",
   "notifications.column_settings.show": "තීරුවෙහි පෙන්වන්න",
   "notifications.column_settings.sound": "ශබ්දය වාදනය",
   "notifications.column_settings.status": "නව ලිපි:",
@@ -319,42 +302,26 @@
   "notifications.column_settings.unread_notifications.highlight": "නොකියවූ දැනුම්දීම් ඉස්මතු කරන්න",
   "notifications.column_settings.update": "සංශෝධන:",
   "notifications.filter.all": "සියල්ල",
-  "notifications.filter.boosts": "බූස්ට් කරයි",
+  "notifications.filter.favourites": "ප්‍රියතමයන්",
   "notifications.filter.follows": "අනුගමනය",
   "notifications.filter.mentions": "සැඳහුම්",
-  "notifications.filter.polls": "ඡන්ද ප්‍රතිඵල",
-  "notifications.filter.statuses": "ඔබ අනුගමනය කරන පුද්ගලයින්ගෙන් යාවත්කාලීන",
-  "notifications.grant_permission": "අවසර දෙන්න.",
+  "notifications.filter.polls": "මත විමසුමේ ප්‍රතිඵල",
   "notifications.group": "දැනුම්දීම් {count}",
   "notifications.mark_as_read": "සියළු දැනුම්දීම් කියවූ බව යොදන්න",
-  "notifications.permission_denied": "කලින් ප්‍රතික්ෂේප කළ බ්‍රවුසර අවසර ඉල්ලීම හේතුවෙන් ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත",
-  "notifications.permission_denied_alert": "බ්‍රවුසර අවසරය පෙර ප්‍රතික්ෂේප කර ඇති බැවින්, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කළ නොහැක",
-  "notifications.permission_required": "අවශ්‍ය අවසරය ලබා දී නොමැති නිසා ඩෙස්ක්ටොප් දැනුම්දීම් නොමැත.",
   "notifications_permission_banner.enable": "වැඩතල දැනුම්දීම් සබල කරන්න",
-  "notifications_permission_banner.how_to_control": "Mastodon විවෘතව නොමැති විට දැනුම්දීම් ලබා ගැනීමට, ඩෙස්ක්ටොප් දැනුම්දීම් සබල කරන්න. ඔබට ඒවා සක්‍රිය කළ පසු ඉහත {icon} බොත්තම හරහා ඩෙස්ක්ටොප් දැනුම්දීම් ජනනය කරන්නේ කුමන ආකාරයේ අන්තර්ක්‍රියාද යන්න නිවැරදිව පාලනය කළ හැක.",
-  "notifications_permission_banner.title": "කිසිම දෙයක් අතපසු කරන්න එපා",
-  "onboarding.actions.go_to_explore": "See what's trending",
-  "onboarding.actions.go_to_home": "Go to your home feed",
-  "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
-  "onboarding.follows.title": "Popular on Mastodon",
-  "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
-  "onboarding.start.skip": "Want to skip right ahead?",
-  "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
-  "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
-  "onboarding.steps.publish_status.body": "Say hello to the world.",
-  "onboarding.steps.setup_profile.body": "Others are more likely to interact with you with a filled out profile.",
-  "onboarding.steps.setup_profile.title": "Customize your profile",
-  "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
-  "onboarding.steps.share_profile.title": "Share your profile",
-  "picture_in_picture.restore": "ආපහු දාන්න",
+  "notifications_permission_banner.title": "කිසිවක් අතපසු නොකරන්න",
+  "onboarding.compose.template": "ආයුබෝ #මාස්ටඩන්!",
+  "onboarding.share.title": "ඔබගේ පැතිකඩ බෙදාගන්න",
+  "onboarding.steps.publish_status.title": "පළමු ලිපිය පළ කරන්න",
+  "onboarding.steps.setup_profile.title": "ඔබගේ පැතිකඩ අභිරුචිකරණය",
+  "onboarding.steps.share_profile.body": "මාස්ටඩන් හි ඔබව සොයා ගන්නේ කෙසේදැයි යහළුවන්ට දන්වන්න",
+  "onboarding.steps.share_profile.title": "ඔබගේ පැතිකඩ බෙදාගන්න",
   "poll.closed": "වසා ඇත",
   "poll.refresh": "නැවුම් කරන්න",
-  "poll.total_people": "{count, plural, one {# පුද්ගලයා} other {# මහජන}}",
-  "poll.total_votes": "{count, plural, one {# ඡන්දය} other {ඡන්ද #}}",
+  "poll.reveal": "ප්‍රතිඵල බලන්න",
   "poll.vote": "ඡන්දය",
-  "poll.voted": "ඔබ මෙම පිළිතුරට ඡන්දය දුන්නා",
-  "poll.votes": "{votes, plural, one {# ඡන්දය} other {ඡන්ද #}}",
-  "poll_button.add_poll": "මත විමසුමක් යොදන්න",
+  "poll.voted": "ඔබ මෙම උත්තරයට ඡන්දය දී ඇත",
+  "poll_button.add_poll": "මත විමසුමක් අරඹන්න",
   "poll_button.remove_poll": "මත විමසුම ඉවතලන්න",
   "privacy.change": "ලිපියේ රහස්‍යතාව සංශෝධනය",
   "privacy.direct.long": "සඳහන් කළ අයට දිස්වෙයි",
@@ -363,13 +330,11 @@
   "privacy.private.short": "අනුගාමිකයින් පමණි",
   "privacy.public.long": "සැමට දිස්වෙයි",
   "privacy.public.short": "ප්‍රසිද්ධ",
-  "privacy.unlisted.long": "සැමට දෘශ්‍යමාන, නමුත් සොයාගැනීමේ විශේෂාංග වලින් ඉවත් විය",
-  "privacy.unlisted.short": "ලැයිස්තුගත නොකළ",
+  "privacy_policy.title": "රහස්‍යතා ප්‍රතිපත්තිය",
   "refresh": "නැවුම් කරන්න",
   "regeneration_indicator.label": "පූරණය වෙමින්…",
-  "regeneration_indicator.sublabel": "ඔබේ නිවසේ පෝෂණය සූදානම් වෙමින් පවතී!",
   "relative_time.days": "ද. {number}",
-  "relative_time.full.days": "{number, plural, one {# දින} other {# දින}} පෙර",
+  "relative_time.full.days": "{number, plural, one {දවස් #} other {දවස් #}} කට පෙර",
   "relative_time.full.hours": "{number, plural, one {පැය #} other {පැය #}} කට පෙර",
   "relative_time.full.just_now": "මේ දැන්",
   "relative_time.full.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}} කට පෙර",
@@ -381,25 +346,23 @@
   "relative_time.today": "අද",
   "reply_indicator.cancel": "අවලංගු කරන්න",
   "report.block": "අවහිර",
-  "report.block_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට ඔබේ පළ කිරීම් බැලීමට හෝ ඔබව අනුගමනය කිරීමට නොහැකි වනු ඇත. ඔවුන් අවහිර කර ඇති බව ඔවුන්ට පැවසිය හැකිය.",
   "report.categories.other": "වෙනත්",
   "report.categories.spam": "ආයාචිත",
-  "report.categories.violation": "අන්තර්ගතය සේවාදායක නීති එකක් හෝ කිහිපයක් උල්ලංඝනය කරයි",
-  "report.category.subtitle": "හොඳම ගැලපීම තෝරන්න",
+  "report.categories.violation": "අන්තර්ගතය නිසා සේවාදායකයේ නීතියක් හෝ කිහිපයක් කඩ වේ",
   "report.category.title": "මෙම {type}සමඟ සිදුවන්නේ කුමක්දැයි අපට කියන්න",
   "report.category.title_account": "පැතිකඩ",
-  "report.category.title_status": "තැපැල්",
+  "report.category.title_status": "ලිපිය",
   "report.close": "අහවරයි",
   "report.comment.title": "අප දැනගත යුතු යැයි ඔබ සිතන තවත් යමක් තිබේද?",
   "report.forward": "{target} වෙත හරවන්න",
   "report.forward_hint": "ගිණුම වෙනත් සේවාදායකයකින්. වාර්තාවේ නිර්නාමික පිටපතක් එතනටත් එවන්න?",
   "report.mute": "නිහඬ",
-  "report.mute_explanation": "ඔබට ඔවුන්ගේ පෝස්ට් නොපෙනේ. ඔවුන්ට තවමත් ඔබව අනුගමනය කිරීමට සහ ඔබේ පළ කිරීම් දැකීමට හැකි අතර ඒවා නිශ්ශබ්ද කර ඇති බව නොදැනේ.",
+  "report.mute_explanation": "ඔබ ඔවුන්ගේ ලිපි නොදකිනු ඇත. ඔවුන්ට තවමත් ඔබව අනුගමනයට සහ ඔබගේ ලිපි දැකීමට හැකි අතර ඔවුන්ව නිහඬ කර ඇති බව දැන ගැනීමට නොහැකිය.",
   "report.next": "ඊළඟ",
   "report.placeholder": "අමතර අදහස්",
   "report.reasons.dislike": "මම එයට අකැමතියි",
   "report.reasons.dislike_description": "ඒක බලන්න ඕන දෙයක් නෙවෙයි",
-  "report.reasons.other": "ඒක වෙන දෙයක්",
+  "report.reasons.other": "එය වෙනත් දෙයක්",
   "report.reasons.other_description": "ගැටළුව වෙනත් වර්ග වලට නොගැලපේ",
   "report.reasons.spam": "එය අයාචිතයි",
   "report.reasons.spam_description": "අනිෂ්ට සබැඳි, ව්‍යාජ නියැලීම, හෝ පුනරාවර්තන පිළිතුරු",
@@ -408,44 +371,48 @@
   "report.rules.subtitle": "අදාළ සියල්ල තෝරන්න",
   "report.rules.title": "කුමන නීති උල්ලංඝනය කරන්නේද?",
   "report.statuses.subtitle": "අදාළ සියල්ල තෝරන්න",
-  "report.statuses.title": "මෙම වාර්තාව උපස්ථ කරන පෝස්ට් තිබේද?",
+  "report.statuses.title": "මෙම වාර්තාව උපස්ථ කළ ලිපි තිබේ ද?",
   "report.submit": "යොමන්න",
-  "report.target": "වාර්තාව {target}",
-  "report.thanks.take_action": "Mastodon හි ඔබ දකින දේ පාලනය කිරීම සඳහා ඔබේ විකල්ප මෙන්න:",
+  "report.target": "{target} වාර්තා කිරීම",
+  "report.thanks.take_action": "මාස්ටඩන් හි ඔබ දකින දෑ පාලනයට තිබෙන විකල්ප:",
   "report.thanks.take_action_actionable": "අපි මෙය සමාලෝචනය කරන අතරතුර, ඔබට @{name}ට එරෙහිව පියවර ගත හැක:",
   "report.thanks.title": "මෙය නොපෙන්විය යුතුද?",
   "report.thanks.title_actionable": "වාර්තා කිරීමට ස්තූතියි, අපි මේ ගැන සොයා බලමු.",
   "report.unfollow": "@{name}අනුගමනය නොකරන්න",
-  "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබේ නිවසේ සංග්‍රහයේ ඔවුන්ගේ පළ කිරීම් තවදුරටත් නොදැකීමට, ඒවා අනුගමනය නොකරන්න.",
+  "report.unfollow_explanation": "ඔබ මෙම ගිණුම අනුගමනය කරයි. ඔබගේ මුල් පිටුවේ ඔවුන්ගේ ලිපි නොදැකීමට, ඔවුන්ව තවදුරටත් අනුගමනය නොකරන්න.",
   "report_notification.attached_statuses": "{count, plural, one {ලිපි {count}} other {ලිපි {count} ක්}} අමුණා ඇත",
   "report_notification.categories.other": "වෙනත්",
   "report_notification.categories.spam": "ආයාචිත",
   "report_notification.categories.violation": "නීතිය කඩ කිරීම",
   "report_notification.open": "විවෘත වාර්තාව",
   "search.placeholder": "සොයන්න",
+  "search.quick_action.open_url": "ලිපිනය මාස්ටඩන්හි අරින්න",
+  "search.search_or_paste": "සොයන්න හෝ ඒ.ස.නි. අලවන්න",
   "search_results.all": "සියල්ල",
-  "search_results.hashtags": "හැෂ් ටැග්",
   "search_results.nothing_found": "මෙම සෙවුම් පද සඳහා කිසිවක් සොයාගත නොහැකි විය",
+  "search_results.see_all": "සියල්ල බලන්න",
   "search_results.statuses": "ලිපි",
-  "sign_in_banner.sign_in": "Sign in",
-  "status.admin_account": "@{name}සඳහා මධ්‍යස්ථ අතුරුමුහුණත විවෘත කරන්න",
-  "status.admin_status": "මධ්‍යස්ථ අතුරුමුහුණතෙහි මෙම තත්ත්වය විවෘත කරන්න",
+  "search_results.title": "{q} සොයන්න",
+  "server_banner.learn_more": "තව දැනගන්න",
+  "sign_in_banner.create_account": "ගිණුමක් සාදන්න",
+  "sign_in_banner.sign_in": "පිවිසෙන්න",
+  "status.admin_status": "මෙම ලිපිය මැදිහත්කරණ අතුරුමුහුණතෙහි අරින්න",
   "status.block": "@{name} අවහිර",
   "status.bookmark": "පොත්යොමුවක්",
-  "status.cannot_reblog": "මෙම තනතුර වැඩි කළ නොහැක",
-  "status.copy": "තත්වයට සබැඳිය පිටපත් කරන්න",
   "status.delete": "මකන්න",
   "status.detailed_status": "විස්තරාත්මක සංවාද දැක්ම",
   "status.edit": "සංස්කරණය",
   "status.edited": "සංශෝධිතයි {date}",
   "status.edited_x_times": "සංශෝධිතයි {count, plural, one {වාර {count}} other {වාර {count}}}",
   "status.embed": "කාවැද්දූ",
+  "status.filter": "මෙම ලිපිය පෙරන්න",
   "status.filtered": "පෙරන ලද",
+  "status.hide": "ලිපිය සඟවන්න",
   "status.history.created": "{name} නිර්මාණය {date}",
   "status.history.edited": "{name} සංස්කරණය {date}",
   "status.load_more": "තව පූරණය",
   "status.media_hidden": "මාධ්‍ය සඟවා ඇත",
-  "status.mention": "@{name} සැඳහුම",
+  "status.mention": "@{name} සඳහන් කරන්ක",
   "status.more": "තව",
   "status.mute": "@{name} නිහඬව",
   "status.mute_conversation": "සංවාදය නිහඬව",
@@ -453,15 +420,10 @@
   "status.pin": "පැතිකඩට අමුණන්න",
   "status.pinned": "ඇමිණූ ලිපියකි",
   "status.read_more": "තව කියවන්න",
-  "status.reblog": "බූස්ට් කරන්න",
-  "status.reblog_private": "මුල් දෘශ්‍යතාව සමඟ වැඩි කරන්න",
-  "status.reblogged_by": "{name} වැඩි කරන ලදී",
-  "status.reblogs.empty": "තාම කවුරුත් මේ toot එක boost කරලා නැහැ. යමෙකු එසේ කළ විට, ඔවුන් මෙහි පෙන්වනු ඇත.",
-  "status.redraft": "මකන්න සහ නැවත කෙටුම්පත",
   "status.remove_bookmark": "පොත්යොමුව ඉවතලන්න",
   "status.reply": "පිළිතුරු",
-  "status.replyAll": "ත්‍රෙඩ් එකට පිළිතුරු දෙන්න",
-  "status.report": "@{name} වාර්තාව",
+  "status.replyAll": "නූලට පිළිතුරු දෙන්න",
+  "status.report": "@{name} වාර්තා කරන්න",
   "status.sensitive_warning": "සංවේදී අන්තර්ගතයකි",
   "status.share": "බෙදාගන්න",
   "status.show_filter_reason": "කෙසේ වුවද පෙන්වන්න",
@@ -469,29 +431,29 @@
   "status.show_less_all": "සියල්ල අඩුවෙන් පෙන්වන්න",
   "status.show_more": "තවත් පෙන්වන්න",
   "status.show_more_all": "සියල්ල වැඩියෙන් පෙන්වන්න",
-  "status.title.with_attachments": "{user} posted {attachmentCount, plural, one {an attachment} other {# attachments}}",
+  "status.translate": "පරිවර්තනය",
+  "status.translated_from_with": "{provider} මගින් {lang} භාෂාවෙන් පරිවර්තනය කර ඇත",
+  "status.uncached_media_warning": "පෙරදසුන නැත",
   "status.unmute_conversation": "සංවාදය නොනිහඬ",
   "status.unpin": "පැතිකඩෙන් ගළවන්න",
   "subscribed_languages.save": "වෙනස්කම් සුරකින්න",
   "tabs_bar.home": "මුල් පිටුව",
   "tabs_bar.notifications": "දැනුම්දීම්",
-  "time_remaining.days": "{number, plural, one {# දින} other {# දින}} අත්හැරියා",
-  "time_remaining.hours": "{number, plural, one {# පැය} other {# පැය}} අත්හැරියා",
-  "time_remaining.minutes": "{number, plural, one {විනාඩි #} other {# මිනිත්තු}} අත්හැරියා",
-  "time_remaining.moments": "ඉතිරිව ඇති මොහොත",
-  "time_remaining.seconds": "{number, plural, one {# දෙවැනි} other {# තත්පර}} අත්හැරියා",
+  "time_remaining.days": "{number, plural, one {දවස් #} other {දවස් #}} ක් ඉතිරිය",
+  "time_remaining.hours": "{number, plural, one {පැය #} other {පැය #}} ක් ඉතිරිය",
+  "time_remaining.minutes": "{number, plural, one {විනාඩි #} other {විනාඩි #}} ක් ඉතිරිය",
+  "time_remaining.seconds": "{number, plural, one {තත්පර #} other {තත්පර #}} ක් ඉතිරිය",
   "timeline_hint.remote_resource_not_displayed": "වෙනත් සේවාදායකයන්ගෙන් {resource} දර්ශනය නොවේ.",
   "timeline_hint.resources.followers": "අනුගාමිකයින්",
   "timeline_hint.resources.follows": "අනුගමනය",
   "timeline_hint.resources.statuses": "පරණ ලිපි",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {# days}}",
-  "trends.trending_now": "දැන් ප්‍රවණතාවය",
+  "trends.trending_now": "දැන් නැගී එන",
   "ui.beforeunload": "ඔබ මාස්ටඩන් හැර ගියහොත් කටුපිටපත අහිමි වේ.",
   "units.short.billion": "{count}බී",
   "units.short.million": "ද.ල. {count}",
   "units.short.thousand": "{count}කි",
   "upload_area.title": "උඩුගතයට ඇද දමන්න",
-  "upload_button.label": "රූප, දෘශ්‍යක හෝ හඬපට යොදන්න",
+  "upload_button.label": "රූප, දෘශ්‍යක හෝ හඬපට අමුණන්න",
   "upload_error.limit": "සීමාව ඉක්මවා ඇත.",
   "upload_error.poll": "මත විමසුම් සමඟ ගොනු යෙදීමට ඉඩ නොදේ.",
   "upload_form.audio_description": "නොඇසෙන අය සඳහා විස්තර කරන්න",
@@ -508,10 +470,11 @@
   "upload_modal.description_placeholder": "කඩිසර දුඹුරු හිවලෙක් කම්මැලි බල්ලා මතින් පනී",
   "upload_modal.detect_text": "රූපයෙහි පෙළ අනාවරණය",
   "upload_modal.edit_media": "මාධ්‍ය සංස්කරණය",
-  "upload_modal.hint": "සියලුම සිඟිති රූ මත සැම විටම දර්ශනය වන නාභි ලක්ෂ්‍යය තේරීමට පෙරදසුනෙහි රවුම ක්ලික් කරන්න හෝ අදින්න.",
-  "upload_modal.preparing_ocr": "OCR…සූදානම් කරමින්",
+  "upload_modal.preparing_ocr": "OCR සඳහා සැරසෙමින්…",
   "upload_modal.preview_label": "පෙරදසුන ({ratio})",
   "upload_progress.label": "උඩුගත වෙමින්...",
+  "upload_progress.processing": "සැකසෙමින්…",
+  "username.taken": "නම දැනටමත් අරගෙන ඇත",
   "video.close": "දෘශ්‍යකය වසන්න",
   "video.download": "ගොනුව බාගන්න",
   "video.exit_fullscreen": "පූර්ණ තිරයෙන් පිටවන්න",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index bd1252b47f..da12eaa1b5 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -12,53 +12,53 @@
   "about.powered_by": "Decentralizované sociálne médiá poháňané technológiou {mastodon}",
   "about.rules": "Pravidlá servera",
   "account.account_note_header": "Poznámka",
-  "account.add_or_remove_from_list": "Pridaj do, alebo odober zo zoznamov",
+  "account.add_or_remove_from_list": "Pridaj alebo odober zo zoznamov",
   "account.badges.bot": "Bot",
   "account.badges.group": "Skupina",
   "account.block": "Blokuj @{name}",
-  "account.block_domain": "Ukry všetko z {domain}",
+  "account.block_domain": "Skry všetko z {domain}",
   "account.block_short": "Blokuj",
   "account.blocked": "Blokovaný/á",
   "account.browse_more_on_origin_server": "Prehľadávaj viac na pôvodnom profile",
-  "account.cancel_follow_request": "Stiahni žiadosť o nasledovanie",
-  "account.direct": "Spomeň @{name} v súkromí",
-  "account.disable_notifications": "Prestaň ma oboznamovať, keď má @{name} príspevky",
-  "account.domain_blocked": "Doména ukrytá",
+  "account.cancel_follow_request": "Zruš žiadosť o sledovanie",
+  "account.direct": "Spomeň @{name} súkromne",
+  "account.disable_notifications": "Prestaň mi oznamovať, keď má @{name} príspevky",
+  "account.domain_blocked": "Doména skrytá",
   "account.edit_profile": "Uprav profil",
-  "account.enable_notifications": "Oboznamuj ma, keď má @{name} príspevky",
+  "account.enable_notifications": "Oznamuj mi, keď má @{name} príspevky",
   "account.endorse": "Zobrazuj na profile",
   "account.featured_tags.last_status_at": "Posledný príspevok dňa {date}",
   "account.featured_tags.last_status_never": "Žiadne príspevky",
   "account.featured_tags.title": "Odporúčané hashtagy používateľa {name}",
-  "account.follow": "Nasleduj",
-  "account.followers": "Nasledovatelia",
+  "account.follow": "Sleduj",
+  "account.followers": "Sledovatelia",
   "account.followers.empty": "Tohto používateľa ešte nikto nenasleduje.",
-  "account.followers_counter": "{count, plural, one {{counter} Sledujúci} few {{counter} Sledujúci} many {{counter} Sledujúci} other {{counter} Sledujúci}}",
-  "account.following": "Nasledujem",
+  "account.followers_counter": "{count, plural, one {{counter} Sledujúci} few {{counter} Sledujúci} many {{counter} Sledujúcich} other {{counter} Sledujúcich}}",
+  "account.following": "Sledujem",
   "account.following_counter": "{count, plural, one {{counter} Sledovaných} other {{counter} Sledujúcich}}",
-  "account.follows.empty": "Tento používateľ ešte nikoho nenasleduje.",
-  "account.follows_you": "Nasleduje ťa",
+  "account.follows.empty": "Tento používateľ ešte nikoho nesleduje.",
+  "account.follows_you": "Sleduje ťa",
   "account.go_to_profile": "Prejdi na profil",
-  "account.hide_reblogs": "Skry vyzdvihnutia od @{name}",
+  "account.hide_reblogs": "Skry zdieľania od @{name}",
   "account.in_memoriam": "In Memoriam.",
   "account.joined_short": "Pridal/a sa",
   "account.languages": "Zmeniť odoberané jazyky",
   "account.link_verified_on": "Vlastníctvo tohto odkazu bolo skontrolované {date}",
-  "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sám prehodnocuje, kto ho môže sledovať.",
+  "account.locked_info": "Stav súkromia pre tento účet je nastavený na zamknutý. Jeho vlastník sa sám rozhoduje, kto ho môže sledovať.",
   "account.media": "Médiá",
   "account.mention": "Spomeň @{name}",
   "account.moved_to": "{name} uvádza, že jeho/jej nový účet je teraz:",
-  "account.mute": "Nevšímaj si @{name}",
-  "account.mute_notifications_short": "Stíš oboznámenia",
-  "account.mute_short": "Nevšímaj si",
-  "account.muted": "Nevšímaný/á",
-  "account.no_bio": "Nieje uvedený žiadny popis.",
+  "account.mute": "Stíš @{name}",
+  "account.mute_notifications_short": "Stíš oznámenia",
+  "account.mute_short": "Stíš",
+  "account.muted": "Stíšený",
+  "account.no_bio": "Nie je uvedený žiadny popis.",
   "account.open_original_page": "Otvor pôvodnú stránku",
   "account.posts": "Príspevky",
   "account.posts_with_replies": "Príspevky a odpovede",
   "account.report": "Nahlás @{name}",
   "account.requested": "Čaká na schválenie. Klikni pre zrušenie žiadosti",
-  "account.requested_follow": "{name} ťa žiada nasledovať",
+  "account.requested_follow": "{name} ti poslal žiadosť na sledovanie",
   "account.share": "Zdieľaj @{name} profil",
   "account.show_reblogs": "Ukáž vyzdvihnutia od @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
@@ -84,7 +84,7 @@
   "alert.rate_limited.title": "Tempo obmedzené",
   "alert.unexpected.message": "Vyskytla sa nečakaná chyba.",
   "alert.unexpected.title": "Ups!",
-  "announcement.announcement": "Oboznámenie",
+  "announcement.announcement": "Oznámenie",
   "attachments_list.unprocessed": "(nespracované)",
   "audio.hide": "Skry zvuk",
   "autosuggest_hashtag.per_week": "{count} týždenne",
@@ -119,7 +119,7 @@
   "column.home": "Domov",
   "column.lists": "Zoznamy",
   "column.mutes": "Nevšímaní užívatelia",
-  "column.notifications": "Oboznámenia",
+  "column.notifications": "Oznámenia",
   "column.pins": "Pripnuté príspevky",
   "column.public": "Federovaná časová os",
   "column_back_button.label": "Späť",
@@ -185,7 +185,7 @@
   "confirmations.redraft.message": "Ste si istý, že chcete premazať a prepísať tento príspevok? Jeho nadobudnuté vyzdvihnutia a obľúbenia, ale i odpovede na pôvodný príspevok budú odlúčené.",
   "confirmations.reply.confirm": "Odpovedz",
   "confirmations.reply.message": "Odpovedaním akurát teraz prepíšeš správu, ktorú máš práve rozpísanú. Si si istý/á, že chceš pokračovať?",
-  "confirmations.unfollow.confirm": "Nesleduj",
+  "confirmations.unfollow.confirm": "Prestaň sledovať",
   "confirmations.unfollow.message": "Naozaj chceš prestať sledovať {name}?",
   "conversation.delete": "Vymaž konverzáciu",
   "conversation.mark_as_read": "Označ za prečítané",
@@ -223,7 +223,7 @@
   "emoji_button.symbols": "Symboly",
   "emoji_button.travel": "Cestovanie a miesta",
   "empty_column.account_suspended": "Účet bol vylúčený",
-  "empty_column.account_timeline": "Niesu tu žiadne príspevky!",
+  "empty_column.account_timeline": "Nie sú tu žiadne príspevky!",
   "empty_column.account_unavailable": "Profil nedostupný",
   "empty_column.blocks": "Ešte si nikoho nezablokoval/a.",
   "empty_column.bookmarked_statuses": "Ešte nemáš žiadné záložky. Keď si pridáš príspevok k záložkám, zobrazí sa tu.",
@@ -296,19 +296,24 @@
   "hashtag.column_settings.tag_mode.any": "Hociktorý z týchto",
   "hashtag.column_settings.tag_mode.none": "Žiaden z týchto",
   "hashtag.column_settings.tag_toggle": "Vlož dodatočné haštagy pre tento stĺpec",
-  "hashtag.follow": "Nasleduj haštag",
+  "hashtag.counter_by_accounts": "{count, plural, one {{counter} sledujúci} few {{counter} sledujúci} many {{counter} sledujúcich} other {{counter} sledujúcich}}",
+  "hashtag.counter_by_uses": "{count, plural, one {{counter} príspevok} few {{counter} príspevky} many {{counter} príspevkov} other {{counter} príspevkov}}",
+  "hashtag.counter_by_uses_today": "{count, plural, one {{counter} príspevok} few {{counter} príspevky} many {{counter} príspevkov} other {{counter} príspevkov}} dnes",
+  "hashtag.follow": "Sleduj haštag",
   "hashtag.unfollow": "Nesleduj haštag",
+  "hashtags.and_other": "…a {count, plural, one {} few {# ďalšie} many {# ďalších}other {# ďalších}}",
   "home.actions.go_to_explore": "Pozrieť, čo je trendy",
   "home.actions.go_to_suggestions": "Nájdi ľudí na sledovanie",
   "home.column_settings.basic": "Základné",
   "home.column_settings.show_reblogs": "Ukáž vyzdvihnuté",
   "home.column_settings.show_replies": "Ukáž odpovede",
+  "home.explore_prompt.body": "Váš domovský informačný kanál bude obsahovať mix príspevkov z mriežok, ktoré ste sa rozhodli sledovať, ľudí, ktorých ste sa rozhodli sledovať, a príspevkov, ktoré preferujú. Ak sa vám to zdá príliš málo, možno budete chcieť:",
   "home.explore_prompt.title": "Toto je tvoja domovina v rámci Mastodonu.",
-  "home.hide_announcements": "Skry oboznámenia",
+  "home.hide_announcements": "Skry oznámenia",
   "home.pending_critical_update.body": "Prosím aktualizuj si svoj Mastodon server, ako náhle to bude možné!",
   "home.pending_critical_update.link": "Pozri aktualizácie",
   "home.pending_critical_update.title": "Je dostupná kritická bezpečnostná aktualizácia!",
-  "home.show_announcements": "Ukáž oboznámenia",
+  "home.show_announcements": "Ukáž oznámenia",
   "interaction_modal.description.favourite": "S účtom na Mastodone si môžeš tento príspevok obľúbiť, aby si dal/a autorovi vedieť, že ho oceňuješ, a uložiť si ho na neskôr.",
   "interaction_modal.description.follow": "Ak máte konto na Mastodone, môžete sledovať {name} a dostávať príspevky do svojho domovského kanála.",
   "interaction_modal.description.reblog": "Ak máte účet na Mastodone, môžete tento príspevok posilniť a zdieľať ho s vlastnými sledovateľmi.",
@@ -319,6 +324,7 @@
   "interaction_modal.on_another_server": "Na inom serveri",
   "interaction_modal.on_this_server": "Na tomto serveri",
   "interaction_modal.sign_in": "Nie si prihláseý/á na tomto serveri. Kde je tvoj účet hostovaný?",
+  "interaction_modal.sign_in_hint": "Tip: Toto je webová stránka, na ktorej ste sa zaregistrovali. Ak si nepamätáte, pohľadajte uvítací e-mail vo svojej schránke. Môžete tiež zadať svoje celé používateľské meno! (napr. @Mastodon@mastodon.social)",
   "interaction_modal.title.favourite": "Obľúb si {name} ov/in príspevok",
   "interaction_modal.title.follow": "Nasleduj {name}",
   "interaction_modal.title.reblog": "Vyzdvihni {name}ov/in príspevok",
@@ -346,7 +352,7 @@
   "keyboard_shortcuts.mention": "spomeň autora",
   "keyboard_shortcuts.muted": "otvor zoznam stíšených užívateľov",
   "keyboard_shortcuts.my_profile": "otvor svoj profil",
-  "keyboard_shortcuts.notifications": "otvor panel oboznámení",
+  "keyboard_shortcuts.notifications": "Otvor panel oznámení",
   "keyboard_shortcuts.open_media": "na otvorenie médií",
   "keyboard_shortcuts.pinned": "otvor zoznam pripnutých príspevkov",
   "keyboard_shortcuts.profile": "otvor autorov profil",
@@ -373,6 +379,7 @@
   "lists.delete": "Vymaž list",
   "lists.edit": "Uprav zoznam",
   "lists.edit.submit": "Zmeň názov",
+  "lists.exclusive": "Skryť tieto príspevky z domovskej stránky",
   "lists.new.create": "Pridaj zoznam",
   "lists.new.title_placeholder": "Názov nového zoznamu",
   "lists.replies_policy.followed": "Akýkoľvek nasledovaný užívateľ",
@@ -426,11 +433,11 @@
   "notification.reblog": "{name} zdieľal/a tvoj príspevok",
   "notification.status": "{name} práve uverejnil/a",
   "notification.update": "{name} upravil/a príspevok",
-  "notifications.clear": "Vyčisti oboznámenia",
-  "notifications.clear_confirmation": "Naozaj chceš nenávratne prečistiť všetky tvoje oboznámenia?",
+  "notifications.clear": "Vyčisti oznámenia",
+  "notifications.clear_confirmation": "Naozaj chceš nenávratne odstrániť všetky tvoje oznámenia?",
   "notifications.column_settings.admin.report": "Nové hlásenia:",
   "notifications.column_settings.admin.sign_up": "Nové registrácie:",
-  "notifications.column_settings.alert": "Oboznámenia na ploche",
+  "notifications.column_settings.alert": "Oznámenia na ploche",
   "notifications.column_settings.favourite": "Obľúbené:",
   "notifications.column_settings.filter_bar.advanced": "Zobraz všetky kategórie",
   "notifications.column_settings.filter_bar.category": "Rýchle triedenie",
@@ -444,8 +451,8 @@
   "notifications.column_settings.show": "Ukáž v stĺpci",
   "notifications.column_settings.sound": "Prehraj zvuk",
   "notifications.column_settings.status": "Nové príspevky:",
-  "notifications.column_settings.unread_notifications.category": "Neprečítané oboznámenia",
-  "notifications.column_settings.unread_notifications.highlight": "Zdôrazni neprečítané oboznámenia",
+  "notifications.column_settings.unread_notifications.category": "Neprečítané oznámenia",
+  "notifications.column_settings.unread_notifications.highlight": "Zdôrazni neprečítané oznámenia",
   "notifications.column_settings.update": "Úpravy:",
   "notifications.filter.all": "Všetky",
   "notifications.filter.boosts": "Vyzdvihnutia",
@@ -455,12 +462,12 @@
   "notifications.filter.polls": "Výsledky ankiet",
   "notifications.filter.statuses": "Aktualizácie od ľudí, ktorých nasleduješ",
   "notifications.grant_permission": "Udeľ povolenie.",
-  "notifications.group": "{count} oboznámení",
-  "notifications.mark_as_read": "Označ každé oboznámenie za prečítané",
-  "notifications.permission_denied": "Oboznámenia na plochu sú nedostupné, kvôli predtým zamietnutej požiadavke prehliadača",
-  "notifications.permission_denied_alert": "Oboznámenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača o to, bola už skôr zamietnutá",
-  "notifications.permission_required": "Oboznámenia na ploche sú nedostupné, pretože potrebné povolenia neboli udelené.",
-  "notifications_permission_banner.enable": "Povoliť oboznámenia na plochu",
+  "notifications.group": "{count} Oznámení",
+  "notifications.mark_as_read": "Označ každé oznámenie za prečítané",
+  "notifications.permission_denied": "Oznámenia na ploche sú nedostupné, kvôli predtým zamietnutej požiadavke prehliadača",
+  "notifications.permission_denied_alert": "Oznámenia na ploche nemôžu byť zapnuté, pretože požiadavka prehliadača bola už skôr zamietnutá",
+  "notifications.permission_required": "Oznámenia na ploche sú nedostupné, pretože potrebné povolenia neboli udelené.",
+  "notifications_permission_banner.enable": "Povoliť oznámenia na ploche",
   "notifications_permission_banner.how_to_control": "Ak chcete dostávať upozornenia, keď Mastodon nie je otvorený, povoľte upozornenia na ploche. Po ich zapnutí môžete presne kontrolovať, ktoré typy interakcií generujú upozornenia na ploche, a to prostredníctvom tlačidla {icon} vyššie.",
   "notifications_permission_banner.title": "Nikdy nezmeškaj jedinú vec",
   "onboarding.action.back": "Vziať ma späť",
@@ -468,6 +475,7 @@
   "onboarding.actions.go_to_explore": "See what's trending",
   "onboarding.actions.go_to_home": "Go to your home feed",
   "onboarding.compose.template": "Nazdar #Mastodon!",
+  "onboarding.follows.empty": "Žiaľ, momentálne sa nedajú zobraziť žiadne výsledky. Môžete skúsiť použiť vyhľadávanie alebo navštíviť stránku objavovania a nájsť ľudí, ktorých chcete sledovať, alebo to skúste znova neskôr.",
   "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
   "onboarding.follows.title": "Popular on Mastodon",
   "onboarding.share.lead": "Daj ľudom vedieť, ako ťa môžu na Mastodone nájsť!",
@@ -476,6 +484,7 @@
   "onboarding.share.title": "Zdieľaj svoj profil",
   "onboarding.start.lead": "Your new Mastodon account is ready to go. Here's how you can make the most of it:",
   "onboarding.start.skip": "Want to skip right ahead?",
+  "onboarding.start.title": "Zvládli ste to!",
   "onboarding.steps.follow_people.body": "You curate your own feed. Lets fill it with interesting people.",
   "onboarding.steps.follow_people.title": "Follow {count, plural, one {one person} other {# people}}",
   "onboarding.steps.publish_status.body": "Say hello to the world.",
@@ -484,6 +493,12 @@
   "onboarding.steps.setup_profile.title": "Customize your profile",
   "onboarding.steps.share_profile.body": "Let your friends know how to find you on Mastodon!",
   "onboarding.steps.share_profile.title": "Share your profile",
+  "onboarding.tips.2fa": "<strong>Vedeli ste?</strong> Svoj účet môžete zabezpečiť nastavením dvojfaktorového overenia v nastaveniach účtu. Funguje to s akoukoľvek aplikáciou TOTP podľa vášho výberu, nie je potrebné žiadne telefónne číslo!",
+  "onboarding.tips.accounts_from_other_servers": "<strong>Vedeli ste?</strong> Keďže Mastodon je decentralizovaný, niektoré profily, s ktorými sa stretnete, budú na iných serveroch, ako je váš. Aj napriek tomu s nimi môžete bezproblémovo komunikovať! Ich server je v druhej časti ich používateľského mena!",
+  "onboarding.tips.migration": "<strong>Vedeli ste?</strong> Ak máte pocit, že doména {domain} pre vás v budúcnosti nebude skvelou voľbou, môžete prejsť na iný server Mastodon bez straty svojich sledovateľov. Môžete dokonca hostovať svoj vlastný server!",
+  "onboarding.tips.verification": "<strong>Vedeli ste?</strong> Svoj účet môžete overiť umiestnením odkazu na svoj profil Mastodon na svoju vlastnú webovú lokalitu a pridaním webovej lokality do svojho profilu. Nie sú potrebné žiadne poplatky ani doklady!",
+  "password_confirmation.exceeds_maxlength": "Potvrdené heslo presahuje maximálnu dĺžku hesla",
+  "password_confirmation.mismatching": "Zadané heslá sa nezhodujú",
   "picture_in_picture.restore": "Vrátiť späť",
   "poll.closed": "Uzatvorená",
   "poll.refresh": "Obnoviť",
@@ -542,6 +557,7 @@
   "report.reasons.dislike": "Nepáči sa mi",
   "report.reasons.dislike_description": "Nieje to niečo, čo chceš vidieť",
   "report.reasons.legal": "Je to nelegálne",
+  "report.reasons.legal_description": "Domnievate sa, že porušuje zákony vašej krajiny alebo krajiny servera",
   "report.reasons.other": "Je to niečo iné",
   "report.reasons.other_description": "Tento problém nepatrí do iných kategórií",
   "report.reasons.spam": "Je to spam",
@@ -559,6 +575,7 @@
   "report.thanks.title": "Nechceš to vidieť?",
   "report.thanks.title_actionable": "Vďaka za nahlásenie, pozrieme sa na to.",
   "report.unfollow": "Nesleduj @{name}",
+  "report.unfollow_explanation": "Tento účet sledujete. Ak už nechcete vidieť jeho príspevky vo svojom domovskom kanáli, zrušte jeho sledovanie.",
   "report_notification.attached_statuses": "{count, plural, one {# post} other {# posts}} attached",
   "report_notification.categories.legal": "Právne ujednania",
   "report_notification.categories.other": "Ostatné",
@@ -573,6 +590,8 @@
   "search.quick_action.open_url": "Otvor URL v rámci Mastodonu",
   "search.quick_action.status_search": "Príspevky zodpovedajúce {x}",
   "search.search_or_paste": "Hľadaj, alebo vlož URL adresu",
+  "search_popout.full_text_search_disabled_message": "Nie je k dispozícii v doméne {domain}.",
+  "search_popout.language_code": "ISO kód jazyka",
   "search_popout.options": "Možnosti vyhľadávania",
   "search_popout.quick_actions": "Rýchle akcie",
   "search_popout.recent": "Nedávne vyhľadávania",
@@ -585,14 +604,18 @@
   "search_results.see_all": "Ukáž všetky",
   "search_results.statuses": "Príspevky",
   "search_results.title": "Hľadaj {q}",
+  "server_banner.about_active_users": "Ľudia používajúci tento server za posledných 30 dní (Aktívni používatelia za mesiac)",
   "server_banner.active_users": "aktívni užívatelia",
   "server_banner.administered_by": "Správcom je:",
+  "server_banner.introduction": "{domain} je súčasťou decentralizovanej sociálnej siete využívajúcej technológiu {mastodon}.",
   "server_banner.learn_more": "Zisti viac",
   "server_banner.server_stats": "Serverové štatistiky:",
   "sign_in_banner.create_account": "Vytvor účet",
   "sign_in_banner.sign_in": "Prihlás sa",
   "sign_in_banner.sso_redirect": "Prihlás sa, alebo zaregistruj",
+  "sign_in_banner.text": "Prihláste sa, aby ste mohli sledovať profily alebo haštagy, obľúbené veci, zdieľať ich a odpovedať na príspevky. Môžete tiež komunikovať zo svojho účtu na inom serveri.",
   "status.admin_account": "Otvor moderovacie rozhranie užívateľa @{name}",
+  "status.admin_domain": "Otvor rozhranie na moderovanie domény {domain}",
   "status.admin_status": "Otvor tento príspevok v moderovacom rozhraní",
   "status.block": "Blokuj @{name}",
   "status.bookmark": "Záložka",
@@ -649,9 +672,11 @@
   "status.uncached_media_warning": "Náhľad nie je k dispozícii",
   "status.unmute_conversation": "Prestaň si nevšímať konverzáciu",
   "status.unpin": "Odopni z profilu",
+  "subscribed_languages.lead": "Po zmene sa na vašej domovskej stránke a časovej osi zoznamu zobrazia iba príspevky vo vybraných jazykoch. Ak chcete dostávať príspevky vo všetkých jazykoch, vyberte možnosť žiadne.",
   "subscribed_languages.save": "Ulož zmeny",
+  "subscribed_languages.target": "Zmeniť prihlásené jazyky pre {target}",
   "tabs_bar.home": "Domov",
-  "tabs_bar.notifications": "Oboznámenia",
+  "tabs_bar.notifications": "Oznámenia",
   "time_remaining.days": "Ostáva {number, plural, one {# deň} few {# dní} many {# dní} other {# dní}}",
   "time_remaining.hours": "Ostáva {number, plural, one {# hodina} few {# hodín} many {# hodín} other {# hodiny}}",
   "time_remaining.minutes": "Ostáva {number, plural, one {# minúta} few {# minút} many {# minút} other {# minúty}}",
@@ -680,6 +705,7 @@
   "upload_form.video_description": "Popíš, pre ľudí so stratou sluchu, alebo očným znevýhodnením",
   "upload_modal.analyzing_picture": "Analyzujem obrázok…",
   "upload_modal.apply": "Použi",
+  "upload_modal.applying": "Nastavovanie…",
   "upload_modal.choose_image": "Vyber obrázok",
   "upload_modal.description_placeholder": "Rýchla hnedá líška skáče ponad lenivého psa",
   "upload_modal.detect_text": "Rozpoznaj text z obrázka",
@@ -689,6 +715,7 @@
   "upload_modal.preview_label": "Náhľad ({ratio})",
   "upload_progress.label": "Nahráva sa...",
   "upload_progress.processing": "Spracovávanie…",
+  "username.taken": "Používateľské meno je obsadené. Skúste iné",
   "video.close": "Zavri video",
   "video.download": "Stiahni súbor",
   "video.exit_fullscreen": "Vypni zobrazenie na celú obrazovku",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 9750784bbc..f64952f7b5 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -514,7 +514,7 @@
   "privacy.direct.long": "Vidljivo samo pomenutim korisnicima",
   "privacy.direct.short": "Samo pomenute osobe",
   "privacy.private.long": "Vidljivo samo pratiocima",
-  "privacy.private.short": "Samo pratiocima",
+  "privacy.private.short": "Samo pratioci",
   "privacy.public.long": "Vidljivo za sve",
   "privacy.public.short": "Javno",
   "privacy.unlisted.long": "Vidljivo svima, ali isključeno iz funkcija otkrivanja",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index bb4739cbcc..130b28bc74 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -514,7 +514,7 @@
   "privacy.direct.long": "Видљиво само поменутим корисницима",
   "privacy.direct.short": "Само поменуте особе",
   "privacy.private.long": "Видљиво само пратиоцима",
-  "privacy.private.short": "Само пратиоцима",
+  "privacy.private.short": "Само пратиоци",
   "privacy.public.long": "Видљиво за све",
   "privacy.public.short": "Јавно",
   "privacy.unlisted.long": "Видљиво свима, али искључено из функција откривања",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index a6694b21df..8b5f7de2f3 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -373,7 +373,7 @@
   "lightbox.previous": "上一步",
   "limited_account_hint.action": "一律顯示個人檔案",
   "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。",
-  "link_preview.author": "按照 {name}",
+  "link_preview.author": "由 {name} 提供",
   "lists.account.add": "新增至列表",
   "lists.account.remove": "從列表中移除",
   "lists.delete": "刪除列表",
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index cbc0c62e95..32da8961f1 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -8279,6 +8279,9 @@ noscript {
   flex: 1 1 auto;
   display: flex;
   flex-direction: column;
+  background: $ui-base-color;
+  border-bottom-left-radius: 4px;
+  border-bottom-right-radius: 4px;
 }
 
 .story {
@@ -9009,6 +9012,10 @@ noscript {
     color: $dark-text-color;
     margin-bottom: 20px;
 
+    .version {
+      white-space: nowrap;
+    }
+
     strong {
       font-weight: 500;
     }
@@ -9284,14 +9291,17 @@ noscript {
     0 10px 15px -3px rgba($base-shadow-color, 0.25),
     0 4px 6px -4px rgba($base-shadow-color, 0.25);
   cursor: default;
-  transition: 0.5s cubic-bezier(0.89, 0.01, 0.5, 1.1);
-  transform: translateZ(0);
   font-size: 15px;
   line-height: 21px;
 
   &.notification-bar-active {
     inset-inline-start: 1rem;
   }
+
+  .no-reduce-motion & {
+    transition: 0.5s cubic-bezier(0.89, 0.01, 0.5, 1.1);
+    transform: translateZ(0);
+  }
 }
 
 .notification-bar-title {
diff --git a/app/lib/account_statuses_filter.rb b/app/lib/account_statuses_filter.rb
index e3d73067b0..4438529044 100644
--- a/app/lib/account_statuses_filter.rb
+++ b/app/lib/account_statuses_filter.rb
@@ -60,8 +60,12 @@ class AccountStatusesFilter
       .where(reblog_of_id: nil)
       .or(
         scope
+          # This is basically `Status.not_domain_blocked_by_account(current_account)`
+          # and `Status.not_excluded_by_account(current_account)` but on the
+          # `reblog` association. Unfortunately, there seem to be no clean way
+          # to re-use those scopes in our case.
+          .where(reblog: { accounts: { domain: nil } }).or(scope.where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } }))
           .where.not(reblog: { account_id: current_account.excluded_from_timeline_account_ids })
-          .where.not(reblog: { accounts: { domain: current_account.excluded_from_timeline_domains } })
       )
   end
 
diff --git a/app/lib/activitypub/case_transform.rb b/app/lib/activitypub/case_transform.rb
index da2c5eb8b0..bf5de72210 100644
--- a/app/lib/activitypub/case_transform.rb
+++ b/app/lib/activitypub/case_transform.rb
@@ -14,6 +14,8 @@ module ActivityPub::CaseTransform
       when String
         camel_lower_cache[value] ||= if value.start_with?('_:')
                                        "_:#{value.delete_prefix('_:').underscore.camelize(:lower)}"
+                                     elsif LanguagesHelper::ISO_639_1_REGIONAL.key?(value.to_sym)
+                                       value
                                      else
                                        value.underscore.camelize(:lower)
                                      end
diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb
index 72a98a88ab..ccf556eae0 100644
--- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb
+++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb
@@ -25,7 +25,8 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim
   end
 
   def ruby_version
-    value = "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}"
+    yjit = defined?(RubyVM::YJIT) && RubyVM::YJIT.enabled?
+    value = "#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}#{yjit ? ' +YJIT' : ''}"
 
     {
       key: 'ruby',
diff --git a/app/lib/admin/metrics/dimension/space_usage_dimension.rb b/app/lib/admin/metrics/dimension/space_usage_dimension.rb
index cc85608904..f1b6dba040 100644
--- a/app/lib/admin/metrics/dimension/space_usage_dimension.rb
+++ b/app/lib/admin/metrics/dimension/space_usage_dimension.rb
@@ -11,7 +11,7 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension
   protected
 
   def perform_query
-    [postgresql_size, redis_size, media_size]
+    [postgresql_size, redis_size, media_size, search_size].compact
   end
 
   def postgresql_size
@@ -65,4 +65,22 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension
                       redis.info
                     end
   end
+
+  def search_size
+    return unless Chewy.enabled?
+
+    client_info = Chewy.client.info
+
+    value = Chewy.client.indices.stats['indices'].values.sum { |index_data| index_data['primaries']['store']['size_in_bytes'] }
+
+    {
+      key: 'search',
+      human_key: client_info.dig('version', 'distribution') == 'opensearch' ? 'OpenSearch' : 'Elasticsearch',
+      value: value.to_s,
+      unit: 'bytes',
+      human_value: number_to_human_size(value),
+    }
+  rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
+    nil
+  end
 end
diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb
index 406bb5bcb9..ea35807f30 100644
--- a/app/lib/admin/system_check/elasticsearch_check.rb
+++ b/app/lib/admin/system_check/elasticsearch_check.rb
@@ -76,14 +76,35 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
   end
 
   def compatible_version?
-    return false if running_version.nil?
-
-    Gem::Version.new(running_version) >= Gem::Version.new(required_version) ||
-      Gem::Version.new(compatible_wire_version) >= Gem::Version.new(required_version)
+    running_version_ok? || compatible_wire_version_ok?
   rescue ArgumentError
     false
   end
 
+  def running_version_ok?
+    return false if running_version.blank?
+
+    gem_version_running >= gem_version_required
+  end
+
+  def compatible_wire_version_ok?
+    return false if compatible_wire_version.blank?
+
+    gem_version_compatible_wire >= gem_version_required
+  end
+
+  def gem_version_running
+    Gem::Version.new(running_version)
+  end
+
+  def gem_version_required
+    Gem::Version.new(required_version)
+  end
+
+  def gem_version_compatible_wire
+    Gem::Version.new(compatible_wire_version)
+  end
+
   def mismatched_indexes
     @mismatched_indexes ||= INDEXES.filter_map do |klass|
       klass.base_name if Chewy.client.indices.get_mapping[klass.index_name]&.deep_symbolize_keys != klass.mappings_hash
diff --git a/app/lib/importer/base_importer.rb b/app/lib/importer/base_importer.rb
index a21557d303..7688426b48 100644
--- a/app/lib/importer/base_importer.rb
+++ b/app/lib/importer/base_importer.rb
@@ -34,7 +34,9 @@ class Importer::BaseImporter
   # Estimate the amount of documents that would be indexed. Not exact!
   # @returns [Integer]
   def estimate!
-    ActiveRecord::Base.connection_pool.with_connection { |connection| connection.select_one("SELECT reltuples AS estimate FROM pg_class WHERE relname = '#{index.adapter.target.table_name}'")['estimate'].to_i }
+    reltuples = ActiveRecord::Base.connection_pool.with_connection { |connection| connection.select_one("SELECT reltuples FROM pg_class WHERE relname = '#{index.adapter.target.table_name}'")['reltuples'].to_i }
+    # If the table has never yet been vacuumed or analyzed, reltuples contains -1
+    [reltuples, 0].max
   end
 
   # Import data from the database into the index
diff --git a/app/models/account.rb b/app/models/account.rb
index d670767dab..e15606368a 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -66,7 +66,7 @@ class Account < ApplicationRecord
   BACKGROUND_REFRESH_INTERVAL = 1.week.freeze
 
   USERNAME_RE   = /[a-z0-9_]+([a-z0-9_.-]+[a-z0-9_]+)?/i
-  MENTION_RE    = %r{(?<=^|[^/[:word:]])@((#{USERNAME_RE})(?:@[[:word:].-]+[[:word:]]+)?)}i
+  MENTION_RE    = %r{(?<![=/[:word:]])@((#{USERNAME_RE})(?:@[[:word:].-]+[[:word:]]+)?)}i
   URL_PREFIX_RE = %r{\Ahttp(s?)://[^/]+}
   USERNAME_ONLY_RE = /\A#{USERNAME_RE}\z/i
 
@@ -131,7 +131,7 @@ class Account < ApplicationRecord
   scope :searchable, -> { without_unapproved.without_suspended.where(moved_to_account_id: nil) }
   scope :discoverable, -> { searchable.without_silenced.where(discoverable: true).joins(:account_stat) }
   scope :followable_by, ->(account) { joins(arel_table.join(Follow.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(Follow.arel_table[:target_account_id]).and(Follow.arel_table[:account_id].eq(account.id))).join_sources).where(Follow.arel_table[:id].eq(nil)).joins(arel_table.join(FollowRequest.arel_table, Arel::Nodes::OuterJoin).on(arel_table[:id].eq(FollowRequest.arel_table[:target_account_id]).and(FollowRequest.arel_table[:account_id].eq(account.id))).join_sources).where(FollowRequest.arel_table[:id].eq(nil)) }
-  scope :by_recent_status, -> { order(Arel.sql('account_stats.last_status_at DESC NULLS LAST')) }
+  scope :by_recent_status, -> { includes(:account_stat).merge(AccountStat.order('last_status_at DESC NULLS LAST')).references(:account_stat) }
   scope :by_recent_sign_in, -> { order(Arel.sql('users.current_sign_in_at DESC NULLS LAST')) }
   scope :popular, -> { order('account_stats.followers_count desc') }
   scope :by_domain_and_subdomains, ->(domain) { where(domain: Instance.by_domain_and_subdomains(domain).select(:domain)) }
diff --git a/app/models/admin/action_log_filter.rb b/app/models/admin/action_log_filter.rb
index f89d452ef4..0117974628 100644
--- a/app/models/admin/action_log_filter.rb
+++ b/app/models/admin/action_log_filter.rb
@@ -38,7 +38,7 @@ class Admin::ActionLogFilter
     destroy_status: { target_type: 'Status', action: 'destroy' }.freeze,
     destroy_user_role: { target_type: 'UserRole', action: 'destroy' }.freeze,
     destroy_canonical_email_block: { target_type: 'CanonicalEmailBlock', action: 'destroy' }.freeze,
-    disable_2fa_user: { target_type: 'User', action: 'disable' }.freeze,
+    disable_2fa_user: { target_type: 'User', action: 'disable_2fa' }.freeze,
     disable_custom_emoji: { target_type: 'CustomEmoji', action: 'disable' }.freeze,
     disable_user: { target_type: 'User', action: 'disable' }.freeze,
     enable_custom_emoji: { target_type: 'CustomEmoji', action: 'enable' }.freeze,
diff --git a/app/models/form/import.rb b/app/models/form/import.rb
index 2fc74715b5..29a2975c7b 100644
--- a/app/models/form/import.rb
+++ b/app/models/form/import.rb
@@ -43,14 +43,14 @@ class Form::Import
   validate :validate_data
 
   def guessed_type
-    return :muting if csv_data.headers.include?('Hide notifications')
-    return :following if csv_data.headers.include?('Show boosts') || csv_data.headers.include?('Notify on new posts') || csv_data.headers.include?('Languages')
-    return :following if data.original_filename&.start_with?('follows') || data.original_filename&.start_with?('following_accounts')
-    return :blocking if data.original_filename&.start_with?('blocks') || data.original_filename&.start_with?('blocked_accounts')
-    return :muting if data.original_filename&.start_with?('mutes') || data.original_filename&.start_with?('muted_accounts')
-    return :domain_blocking if data.original_filename&.start_with?('domain_blocks') || data.original_filename&.start_with?('blocked_domains')
-    return :bookmarks if data.original_filename&.start_with?('bookmarks')
-    return :lists if data.original_filename&.start_with?('lists')
+    return :muting if csv_headers_match?('Hide notifications')
+    return :following if csv_headers_match?('Show boosts') || csv_headers_match?('Notify on new posts') || csv_headers_match?('Languages')
+    return :following if file_name_matches?('follows') || file_name_matches?('following_accounts')
+    return :blocking if file_name_matches?('blocks') || file_name_matches?('blocked_accounts')
+    return :muting if file_name_matches?('mutes') || file_name_matches?('muted_accounts')
+    return :domain_blocking if file_name_matches?('domain_blocks') || file_name_matches?('blocked_domains')
+    return :bookmarks if file_name_matches?('bookmarks')
+    return :lists if file_name_matches?('lists')
   end
 
   # Whether the uploaded CSV file seems to correspond to a different import type than the one selected
@@ -79,6 +79,14 @@ class Form::Import
 
   private
 
+  def file_name_matches?(string)
+    data.original_filename&.start_with?(string)
+  end
+
+  def csv_headers_match?(string)
+    csv_data.headers.include?(string)
+  end
+
   def default_csv_headers
     case type.to_sym
     when :following, :blocking, :muting
diff --git a/app/models/relationship_filter.rb b/app/models/relationship_filter.rb
index 955d7d188a..d686f9ed89 100644
--- a/app/models/relationship_filter.rb
+++ b/app/models/relationship_filter.rb
@@ -114,7 +114,7 @@ class RelationshipFilter
   def activity_scope(value)
     case value
     when 'dormant'
-      AccountStat.where(last_status_at: nil).or(AccountStat.where(AccountStat.arel_table[:last_status_at].lt(1.month.ago)))
+      Account.joins(:account_stat).where(account_stat: { last_status_at: [nil, ...1.month.ago] })
     else
       raise Mastodon::InvalidParameterError, "Unknown activity: #{value}"
     end
diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb
index c9b3bce2d1..fd0e23cb81 100644
--- a/app/models/report_filter.rb
+++ b/app/models/report_filter.rb
@@ -19,7 +19,7 @@ class ReportFilter
     scope = Report.unresolved
 
     params.each do |key, value|
-      scope = scope.merge scope_for(key, value), rewhere: true
+      scope = scope.merge scope_for(key, value)
     end
 
     scope
diff --git a/app/policies/backup_policy.rb b/app/policies/backup_policy.rb
index 0ef89a8d0c..86b8efbe96 100644
--- a/app/policies/backup_policy.rb
+++ b/app/policies/backup_policy.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 class BackupPolicy < ApplicationPolicy
-  MIN_AGE = 1.week
+  MIN_AGE = 6.days
 
   def create?
     user_signed_in? && current_user.backups.where('created_at >= ?', MIN_AGE.ago).count.zero?
diff --git a/app/serializers/manifest_serializer.rb b/app/serializers/manifest_serializer.rb
index 48f3aa7a6a..aa7f7ce5d8 100644
--- a/app/serializers/manifest_serializer.rb
+++ b/app/serializers/manifest_serializer.rb
@@ -84,6 +84,10 @@ class ManifestSerializer < ActiveModel::Serializer
         name: 'Notifications',
         url: '/notifications',
       },
+      {
+        name: 'Explore',
+        url: '/explore',
+      },
     ]
   end
 end
diff --git a/app/services/software_update_check_service.rb b/app/services/software_update_check_service.rb
index 49b92f104d..c8ce1753f5 100644
--- a/app/services/software_update_check_service.rb
+++ b/app/services/software_update_check_service.rb
@@ -35,11 +35,13 @@ class SoftwareUpdateCheckService < BaseService
   end
 
   def process_update_notices!(update_notices)
-    return if update_notices.blank? || update_notices['updatesAvailable'].blank?
+    return if update_notices.blank? || update_notices['updatesAvailable'].nil?
 
     # Clear notices that are not listed by the update server anymore
     SoftwareUpdate.where.not(version: update_notices['updatesAvailable'].pluck('version')).delete_all
 
+    return if update_notices['updatesAvailable'].blank?
+
     # Check if any of the notices is new, and issue notifications
     known_versions = SoftwareUpdate.where(version: update_notices['updatesAvailable'].pluck('version')).pluck(:version)
     new_update_notices = update_notices['updatesAvailable'].filter { |notice| known_versions.exclude?(notice['version']) }
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index 44867d0a26..7801ef1913 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -72,7 +72,7 @@
       .dashboard__counters__label= t 'admin.accounts.login_status'
 
 - if @account.local? && @account.user.nil?
-  = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.where(reference_account_id: @account.id).exists?
+  = link_to t('admin.accounts.unblock_email'), unblock_email_admin_account_path(@account.id), method: :post, class: 'button' if can?(:unblock_email, @account) && CanonicalEmailBlock.exists?(reference_account_id: @account.id)
 - else
   .table-wrapper
     %table.table.inline-table
diff --git a/app/views/admin/announcements/edit.html.haml b/app/views/admin/announcements/edit.html.haml
index df1ac455fb..150d98272f 100644
--- a/app/views/admin/announcements/edit.html.haml
+++ b/app/views/admin/announcements/edit.html.haml
@@ -5,8 +5,8 @@
   = render 'shared/error_messages', object: @announcement
 
   .fields-group
-    = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
-    = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
+    = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
+    = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
 
   .fields-group
     = f.input :all_day, as: :boolean, wrapper: :with_label
@@ -16,7 +16,7 @@
 
   - unless @announcement.published?
     .fields-group
-      = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
+      = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
 
   .actions
     = f.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/announcements/new.html.haml b/app/views/admin/announcements/new.html.haml
index cb39672e16..0123632ff4 100644
--- a/app/views/admin/announcements/new.html.haml
+++ b/app/views/admin/announcements/new.html.haml
@@ -5,8 +5,8 @@
   = render 'shared/error_messages', object: @announcement
 
   .fields-group
-    = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
-    = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
+    = f.input :starts_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
+    = f.input :ends_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
 
   .fields-group
     = f.input :all_day, as: :boolean, wrapper: :with_label
@@ -15,7 +15,7 @@
     = f.input :text, wrapper: :with_block_label
 
   .fields-group
-    = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: '[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}(:[0-9]{2}){1,2}', placeholder: Time.now.strftime('%FT%R') }
+    = f.input :scheduled_at, include_blank: true, wrapper: :with_block_label, html5: true, input_html: { pattern: datetime_pattern, placeholder: datetime_placeholder }
 
   .actions
     = f.button :button, t('.create'), type: :submit
diff --git a/app/views/admin/invites/index.html.haml b/app/views/admin/invites/index.html.haml
index ee6ba0f574..964deaba8f 100644
--- a/app/views/admin/invites/index.html.haml
+++ b/app/views/admin/invites/index.html.haml
@@ -14,7 +14,8 @@
 - if policy(:invite).create?
   %p= t('invites.prompt')
 
-  = render 'invites/form'
+  = simple_form_for(@invite, url: admin_invites_path) do |form|
+    = render partial: 'invites/form', object: form
 
   %hr.spacer/
 
diff --git a/app/views/admin/reports/actions/preview.html.haml b/app/views/admin/reports/actions/preview.html.haml
index eb67eebe0d..8634bb215c 100644
--- a/app/views/admin/reports/actions/preview.html.haml
+++ b/app/views/admin/reports/actions/preview.html.haml
@@ -61,7 +61,7 @@
                       = fa_icon 'link'
                       = media_attachment.file_file_name
                 .strike-card__statuses-list__item__meta
-                  = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do
+                  = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank', rel: 'noopener noreferrer' do
                     %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
                   - unless status.application.nil?
                     ·
diff --git a/app/views/admin/roles/_form.html.haml b/app/views/admin/roles/_form.html.haml
index 3cbec0d0b5..2400332145 100644
--- a/app/views/admin/roles/_form.html.haml
+++ b/app/views/admin/roles/_form.html.haml
@@ -1,40 +1,36 @@
-= simple_form_for @role, url: @role.new_record? ? admin_roles_path : admin_role_path(@role) do |f|
-  = render 'shared/error_messages', object: @role
+= render 'shared/error_messages', object: form.object
 
-  - if @role.everyone?
-    .flash-message.info
-      = t('admin.roles.everyone_full_description_html')
-  - else
+- if form.object.everyone?
+  .flash-message.info
+    = t('admin.roles.everyone_full_description_html')
+- else
+  .fields-group
+    = form.input :name, wrapper: :with_label
+
+  - unless current_user.role == form.object
     .fields-group
-      = f.input :name, wrapper: :with_label
+      = form.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 }
 
-    - unless current_user.role.id == @role.id
-      .fields-group
-        = f.input :position, wrapper: :with_label, input_html: { max: current_user.role.position - 1 }
+  .fields-group
+    = form.input :color, wrapper: :with_label, input_html: { placeholder: '#000000', type: 'color' }
 
-    .fields-group
-      = f.input :color, wrapper: :with_label, input_html: { placeholder: '#000000', type: 'color' }
+  %hr.spacer/
 
-    %hr.spacer/
+  .fields-group
+    = form.input :highlighted, wrapper: :with_label
 
-    .fields-group
-      = f.input :highlighted, wrapper: :with_label
+  %hr.spacer/
 
-    %hr.spacer/
+- unless current_user.role == form.object
 
-  - unless current_user.role.id == @role.id
+  .field-group
+    .input.with_block_label
+      %label= t('simple_form.labels.user_role.permissions_as_keys')
+      %span.hint= t('simple_form.hints.user_role.permissions_as_keys')
 
-    .field-group
-      .input.with_block_label
-        %label= t('simple_form.labels.user_role.permissions_as_keys')
-        %span.hint= t('simple_form.hints.user_role.permissions_as_keys')
+    - (form.object.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions|
+      %h4= t(category, scope: 'admin.roles.categories')
 
-      - (@role.everyone? ? UserRole::Flags::CATEGORIES.slice(:invites) : UserRole::Flags::CATEGORIES).each do |category, permissions|
-        %h4= t(category, scope: 'admin.roles.categories')
+      = form.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: ->(privilege) { safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 }
 
-        = f.input :permissions_as_keys, collection: permissions, wrapper: :with_block_label, include_blank: false, label_method: ->(privilege) { safe_join([t("admin.roles.privileges.#{privilege}"), content_tag(:span, t("admin.roles.privileges.#{privilege}_description"), class: 'hint')]) }, required: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', label: false, hint: false, disabled: permissions.filter { |privilege| UserRole::FLAGS[privilege] & current_user.role.computed_permissions == 0 }
-
-    %hr.spacer/
-
-  .actions
-    = f.button :button, @role.new_record? ? t('admin.roles.add_new') : t('generic.save_changes'), type: :submit
+  %hr.spacer/
diff --git a/app/views/admin/roles/edit.html.haml b/app/views/admin/roles/edit.html.haml
index 5688b69b1f..ec3f5b6fbe 100644
--- a/app/views/admin/roles/edit.html.haml
+++ b/app/views/admin/roles/edit.html.haml
@@ -4,4 +4,7 @@
 - content_for :heading_actions do
   = link_to t('admin.roles.delete'), admin_role_path(@role), method: :delete, data: { confirm: t('admin.accounts.are_you_sure') }, class: 'button button--destructive' if can?(:destroy, @role)
 
-= render partial: 'form'
+= simple_form_for @role, url: admin_role_path(@role) do |form|
+  = render partial: 'form', object: form
+  .actions
+    = form.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/roles/new.html.haml b/app/views/admin/roles/new.html.haml
index 8210792718..6ca0c2137b 100644
--- a/app/views/admin/roles/new.html.haml
+++ b/app/views/admin/roles/new.html.haml
@@ -1,4 +1,7 @@
 - content_for :page_title do
   = t('admin.roles.add_new')
 
-= render partial: 'form'
+= simple_form_for @role, url: admin_roles_path do |form|
+  = render partial: 'form', object: form
+  .actions
+    = form.button :button, t('admin.roles.add_new'), type: :submit
diff --git a/app/views/admin/statuses/show.html.haml b/app/views/admin/statuses/show.html.haml
index e070e5872b..5fda50a94e 100644
--- a/app/views/admin/statuses/show.html.haml
+++ b/app/views/admin/statuses/show.html.haml
@@ -2,7 +2,7 @@
   = t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false))
 
 - content_for :heading_actions do
-  = link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank'
+  = link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank', rel: 'noopener noreferrer'
 
 %h3= t('admin.statuses.metadata')
 
diff --git a/app/views/admin/tags/show.html.haml b/app/views/admin/tags/show.html.haml
index 71bce0c0cb..0878887cea 100644
--- a/app/views/admin/tags/show.html.haml
+++ b/app/views/admin/tags/show.html.haml
@@ -9,7 +9,7 @@
 
   .dashboard
     .dashboard__item
-      = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank'
+      = react_admin_component :counter, measure: 'tag_accounts', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_accounts_measure'), href: tag_url(@tag), target: '_blank', rel: 'noopener noreferrer'
     .dashboard__item
       = react_admin_component :counter, measure: 'tag_uses', start_at: @time_period.first, end_at: @time_period.last, params: { id: @tag.id }, label: t('admin.trends.tags.dashboard.tag_uses_measure')
     .dashboard__item
diff --git a/app/views/admin/webhooks/_form.html.haml b/app/views/admin/webhooks/_form.html.haml
index c870e943f4..6c4574fd3b 100644
--- a/app/views/admin/webhooks/_form.html.haml
+++ b/app/views/admin/webhooks/_form.html.haml
@@ -1,14 +1,10 @@
-= simple_form_for @webhook, url: @webhook.new_record? ? admin_webhooks_path : admin_webhook_path(@webhook) do |f|
-  = render 'shared/error_messages', object: @webhook
+= render 'shared/error_messages', object: form.object
 
-  .fields-group
-    = f.input :url, wrapper: :with_block_label, input_html: { placeholder: 'https://' }
+.fields-group
+  = form.input :url, wrapper: :with_block_label, input_html: { placeholder: 'https://' }
 
-  .fields-group
-    = f.input :events, collection: Webhook::EVENTS, wrapper: :with_block_label, include_blank: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', disabled: Webhook::EVENTS.filter { |event| !current_user.role.can?(Webhook.permission_for_event(event)) }
+.fields-group
+  = form.input :events, collection: Webhook::EVENTS, wrapper: :with_block_label, include_blank: false, as: :check_boxes, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', disabled: Webhook::EVENTS.filter { |event| !current_user.role.can?(Webhook.permission_for_event(event)) }
 
-  .fields-group
-    = f.input :template, wrapper: :with_block_label, input_html: { placeholder: '{ "content": "Hello {{object.username}}" }' }
-
-  .actions
-    = f.button :button, @webhook.new_record? ? t('admin.webhooks.add_new') : t('generic.save_changes'), type: :submit
+.fields-group
+  = form.input :template, wrapper: :with_block_label, input_html: { placeholder: '{ "content": "Hello {{object.username}}" }' }
diff --git a/app/views/admin/webhooks/edit.html.haml b/app/views/admin/webhooks/edit.html.haml
index 3dc0ace9bf..2c2a7aa034 100644
--- a/app/views/admin/webhooks/edit.html.haml
+++ b/app/views/admin/webhooks/edit.html.haml
@@ -1,4 +1,7 @@
 - content_for :page_title do
   = t('admin.webhooks.edit')
 
-= render partial: 'form'
+= simple_form_for @webhook, url: admin_webhook_path(@webhook) do |form|
+  = render partial: 'form', object: form
+  .actions
+    = form.button :button, t('generic.save_changes'), type: :submit
diff --git a/app/views/admin/webhooks/new.html.haml b/app/views/admin/webhooks/new.html.haml
index 1258df74ab..f51b039ce8 100644
--- a/app/views/admin/webhooks/new.html.haml
+++ b/app/views/admin/webhooks/new.html.haml
@@ -1,4 +1,7 @@
 - content_for :page_title do
   = t('admin.webhooks.new')
 
-= render partial: 'form'
+= simple_form_for @webhook, url: admin_webhooks_path do |form|
+  = render partial: 'form', object: form
+  .actions
+    = form.button :button, t('admin.webhooks.add_new'), type: :submit
diff --git a/app/views/auth/registrations/new.html.haml b/app/views/auth/registrations/new.html.haml
index f473a993b0..c001b66c22 100644
--- a/app/views/auth/registrations/new.html.haml
+++ b/app/views/auth/registrations/new.html.haml
@@ -26,7 +26,7 @@
     = f.input :confirm_password, as: :string, placeholder: t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), required: false, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: t('simple_form.labels.defaults.password')), autocomplete: 'off' }, hint: false
     = f.input :website, as: :url, wrapper: :with_label, label: t('simple_form.labels.defaults.honeypot', label: 'Website'), required: false, input_html: { 'aria-label': t('simple_form.labels.defaults.honeypot', label: 'Website'), autocomplete: 'off' }
 
-  - if approved_registrations? && !@invite.present?
+  - if approved_registrations? && @invite.blank?
     %p.lead= t('auth.sign_up.manual_review', domain: site_hostname)
 
     .fields-group
diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml
index ce52e470d9..de883bd873 100644
--- a/app/views/disputes/strikes/show.html.haml
+++ b/app/views/disputes/strikes/show.html.haml
@@ -25,7 +25,7 @@
       - unless @strike.none_action?
         %p= t "user_mailer.warning.explanation.#{@strike.action}", instance: Rails.configuration.x.local_domain
 
-      - unless @strike.text.blank?
+      - if @strike.text.present?
         = linkify(@strike.text)
 
       - if @strike.report && !@strike.report.other?
@@ -57,7 +57,7 @@
                       = fa_icon 'link'
                       = media_attachment.file_file_name
                 .strike-card__statuses-list__item__meta
-                  = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank' do
+                  = link_to ActivityPub::TagManager.instance.url_for(status), target: '_blank', rel: 'noopener noreferrer' do
                     %time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
                   - unless status.application.nil?
                     ·
diff --git a/app/views/invites/_form.html.haml b/app/views/invites/_form.html.haml
index 7ea521ebc7..dbbb785e83 100644
--- a/app/views/invites/_form.html.haml
+++ b/app/views/invites/_form.html.haml
@@ -1,14 +1,13 @@
-= simple_form_for(@invite, url: controller.is_a?(Admin::InvitesController) ? admin_invites_path : invites_path) do |f|
-  = render 'shared/error_messages', object: @invite
+= render 'shared/error_messages', object: form.object
 
-  .fields-row
-    .fields-row__column.fields-row__column-6.fields-group
-      = f.input :max_uses, wrapper: :with_label, collection: [1, 5, 10, 25, 50, 100], label_method: ->(num) { I18n.t('invites.max_uses', count: num) }, prompt: I18n.t('invites.max_uses_prompt')
-    .fields-row__column.fields-row__column-6.fields-group
-      = f.input :expires_in, wrapper: :with_label, collection: [30.minutes, 1.hour, 6.hours, 12.hours, 1.day, 1.week].map(&:to_i), label_method: ->(i) { I18n.t("invites.expires_in.#{i}") }, prompt: I18n.t('invites.expires_in_prompt')
+.fields-row
+  .fields-row__column.fields-row__column-6.fields-group
+    = form.input :max_uses, wrapper: :with_label, collection: invites_max_uses_options, label_method: ->(num) { I18n.t('invites.max_uses', count: num) }, prompt: I18n.t('invites.max_uses_prompt')
+  .fields-row__column.fields-row__column-6.fields-group
+    = form.input :expires_in, wrapper: :with_label, collection: invites_expires_options.map(&:to_i), label_method: ->(i) { I18n.t("invites.expires_in.#{i}") }, prompt: I18n.t('invites.expires_in_prompt')
 
-  .fields-group
-    = f.input :autofollow, wrapper: :with_label
+.fields-group
+  = form.input :autofollow, wrapper: :with_label
 
-  .actions
-    = f.button :button, t('invites.generate'), type: :submit
+.actions
+  = form.button :button, t('invites.generate'), type: :submit
diff --git a/app/views/invites/index.html.haml b/app/views/invites/index.html.haml
index 61420ab1e4..88ed662af8 100644
--- a/app/views/invites/index.html.haml
+++ b/app/views/invites/index.html.haml
@@ -4,7 +4,8 @@
 - if policy(:invite).create?
   %p= t('invites.prompt')
 
-  = render 'form'
+  = simple_form_for(@invite, url: invites_path) do |form|
+    = render partial: 'form', object: form
 
   %hr.spacer/
 
diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml
index c08836d178..959b72361a 100644
--- a/app/views/settings/preferences/appearance/show.html.haml
+++ b/app/views/settings/preferences/appearance/show.html.haml
@@ -7,8 +7,7 @@
 = simple_form_for current_user, url: settings_preferences_appearance_path, html: { method: :put, id: 'edit_user' } do |f|
   .fields-row
     .fields-group.fields-row__column.fields-row__column-6
-      = f.input :locale, collection: I18n.available_locales, wrapper: :with_label, include_blank: false, label_method: ->(locale) { native_locale_name(locale) }, selected: I18n.locale, hint: false
-
+      = f.input :locale, collection: ui_languages, wrapper: :with_label, include_blank: false, label_method: ->(locale) { native_locale_name(locale) }, selected: I18n.locale, hint: false
     .fields-group.fields-row__column.fields-row__column-6
       = f.input :time_zone, wrapper: :with_label, collection: ActiveSupport::TimeZone.all.map { |tz| ["(GMT#{tz.formatted_offset}) #{tz.name}", tz.tzinfo.name] }, hint: false
 
diff --git a/app/views/shared/_og.html.haml b/app/views/shared/_og.html.haml
index a5d99ae33a..385351ee14 100644
--- a/app/views/shared/_og.html.haml
+++ b/app/views/shared/_og.html.haml
@@ -1,12 +1,12 @@
-- thumbnail     = @instance_presenter.thumbnail
-- description ||= @instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html'))
+- thumbnail     = instance_presenter.thumbnail
+- description ||= instance_presenter.description.presence || strip_tags(t('about.about_mastodon_html'))
 
 %meta{ name: 'description', content: description }/
 
 = opengraph 'og:site_name', t('about.hosted_on', domain: site_hostname)
 = opengraph 'og:url', url_for(only_path: false)
 = opengraph 'og:type', 'website'
-= opengraph 'og:title', @instance_presenter.title
+= opengraph 'og:title', instance_presenter.title
 = opengraph 'og:description', description
 = opengraph 'og:image', full_asset_url(thumbnail&.file&.url(:'@1x') || asset_pack_path('media/images/preview.png', protocol: :request))
 = opengraph 'og:image:width', thumbnail ? thumbnail.meta['width'] : '1200'
diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml
index 70cfbd6b87..9e171ff592 100644
--- a/app/views/statuses/_detailed_status.html.haml
+++ b/app/views/statuses/_detailed_status.html.haml
@@ -77,4 +77,4 @@
 
     - if user_signed_in?
       ·
-      = link_to t('statuses.open_in_web'), web_url("@#{status.account.pretty_acct}/#{status.id}"), class: 'detailed-status__application', target: '_blank'
+      = link_to t('statuses.open_in_web'), web_url("@#{status.account.pretty_acct}/#{status.id}"), class: 'detailed-status__application', target: '_blank', rel: 'noopener noreferrer'
diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml
index 8a878bead6..5d64e83247 100644
--- a/app/views/user_mailer/warning.html.haml
+++ b/app/views/user_mailer/warning.html.haml
@@ -39,7 +39,7 @@
                               - unless @warning.none_action?
                                 %p= t "user_mailer.warning.explanation.#{@warning.action}", instance: @instance
 
-                              - unless @warning.text.blank?
+                              - if @warning.text.present?
                                 = linkify(@warning.text)
 
                               - if @warning.report && !@warning.report.other?
@@ -68,7 +68,7 @@
           %table.content-section{ cellspacing: 0, cellpadding: 0 }
             %tbody
               %tr
-                %td.content-cell{ class: @statuses.nil? || @statuses.empty? ? '' : 'content-start' }
+                %td.content-cell{ class: @statuses.blank? ? '' : 'content-start' }
                   %table.column{ cellspacing: 0, cellpadding: 0 }
                     %tbody
                       %tr
diff --git a/app/workers/account_deletion_worker.rb b/app/workers/account_deletion_worker.rb
index b501511728..e4f943fbd1 100644
--- a/app/workers/account_deletion_worker.rb
+++ b/app/workers/account_deletion_worker.rb
@@ -3,7 +3,7 @@
 class AccountDeletionWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.week.to_i
 
   def perform(account_id, options = {})
     account = Account.find(account_id)
diff --git a/app/workers/activitypub/synchronize_featured_collection_worker.rb b/app/workers/activitypub/synchronize_featured_collection_worker.rb
index f67d693cb3..7a187d7f53 100644
--- a/app/workers/activitypub/synchronize_featured_collection_worker.rb
+++ b/app/workers/activitypub/synchronize_featured_collection_worker.rb
@@ -3,7 +3,7 @@
 class ActivityPub::SynchronizeFeaturedCollectionWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.day.to_i
 
   def perform(account_id, options = {})
     options = { note: true, hashtag: false }.deep_merge(options.deep_symbolize_keys)
diff --git a/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb b/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb
index 14af4f725c..570415c821 100644
--- a/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb
+++ b/app/workers/activitypub/synchronize_featured_tags_collection_worker.rb
@@ -3,7 +3,7 @@
 class ActivityPub::SynchronizeFeaturedTagsCollectionWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.day.to_i
 
   def perform(account_id, url)
     ActivityPub::FetchFeaturedTagsCollectionService.new.call(Account.find(account_id), url)
diff --git a/app/workers/activitypub/update_distribution_worker.rb b/app/workers/activitypub/update_distribution_worker.rb
index d0391bb6f6..a04ac621f3 100644
--- a/app/workers/activitypub/update_distribution_worker.rb
+++ b/app/workers/activitypub/update_distribution_worker.rb
@@ -1,7 +1,7 @@
 # frozen_string_literal: true
 
 class ActivityPub::UpdateDistributionWorker < ActivityPub::RawDistributionWorker
-  sidekiq_options queue: 'push', lock: :until_executed
+  sidekiq_options queue: 'push', lock: :until_executed, lock_ttl: 1.day.to_i
 
   # Distribute an profile update to servers that might have a copy
   # of the account in question
diff --git a/app/workers/admin/account_deletion_worker.rb b/app/workers/admin/account_deletion_worker.rb
index 6e0eb331be..5dfdfb6e73 100644
--- a/app/workers/admin/account_deletion_worker.rb
+++ b/app/workers/admin/account_deletion_worker.rb
@@ -3,7 +3,7 @@
 class Admin::AccountDeletionWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.week.to_i
 
   def perform(account_id)
     DeleteAccountService.new.call(Account.find(account_id), reserve_username: true, reserve_email: true)
diff --git a/app/workers/admin/domain_purge_worker.rb b/app/workers/admin/domain_purge_worker.rb
index 095232a6d7..6c5250b660 100644
--- a/app/workers/admin/domain_purge_worker.rb
+++ b/app/workers/admin/domain_purge_worker.rb
@@ -3,7 +3,7 @@
 class Admin::DomainPurgeWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.week.to_i
 
   def perform(domain)
     PurgeDomainService.new.call(domain)
diff --git a/app/workers/import/row_worker.rb b/app/workers/import/row_worker.rb
index 09dd6ce736..c86900e6ad 100644
--- a/app/workers/import/row_worker.rb
+++ b/app/workers/import/row_worker.rb
@@ -8,7 +8,7 @@ class Import::RowWorker
   sidekiq_retries_exhausted do |msg, _exception|
     ActiveRecord::Base.connection_pool.with_connection do
       # Increment the total number of processed items, and bump the state of the import if needed
-      bulk_import_id = BulkImportRow.where(id: msg['args'][0]).pick(:id)
+      bulk_import_id = BulkImportRow.where(id: msg['args'][0]).pick(:bulk_import_id)
       BulkImport.progress!(bulk_import_id) unless bulk_import_id.nil?
     end
   end
diff --git a/app/workers/publish_scheduled_status_worker.rb b/app/workers/publish_scheduled_status_worker.rb
index ce42f7be7c..aa5c4a834a 100644
--- a/app/workers/publish_scheduled_status_worker.rb
+++ b/app/workers/publish_scheduled_status_worker.rb
@@ -3,7 +3,7 @@
 class PublishScheduledStatusWorker
   include Sidekiq::Worker
 
-  sidekiq_options lock: :until_executed
+  sidekiq_options lock: :until_executed, lock_ttl: 1.hour.to_i
 
   def perform(scheduled_status_id)
     scheduled_status = ScheduledStatus.find(scheduled_status_id)
diff --git a/app/workers/resolve_account_worker.rb b/app/workers/resolve_account_worker.rb
index 2b5be6d1b2..4ae2442af5 100644
--- a/app/workers/resolve_account_worker.rb
+++ b/app/workers/resolve_account_worker.rb
@@ -3,7 +3,7 @@
 class ResolveAccountWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', lock: :until_executed
+  sidekiq_options queue: 'pull', lock: :until_executed, lock_ttl: 1.day.to_i
 
   def perform(uri)
     ResolveAccountService.new.call(uri)
diff --git a/app/workers/scheduler/indexing_scheduler.rb b/app/workers/scheduler/indexing_scheduler.rb
index ff1b744442..5c985e25a0 100644
--- a/app/workers/scheduler/indexing_scheduler.rb
+++ b/app/workers/scheduler/indexing_scheduler.rb
@@ -5,7 +5,7 @@ class Scheduler::IndexingScheduler
   include Redisable
   include DatabaseHelper
 
-  sidekiq_options retry: 0, lock: :until_executed, lock_ttl: 1.day.to_i
+  sidekiq_options retry: 0, lock: :until_executed, lock_ttl: 30.minutes.to_i
 
   IMPORT_BATCH_SIZE = 1000
   SCAN_BATCH_SIZE = 10 * IMPORT_BATCH_SIZE
diff --git a/app/workers/scheduler/scheduled_statuses_scheduler.rb b/app/workers/scheduler/scheduled_statuses_scheduler.rb
index b5801248f2..fe60d5524e 100644
--- a/app/workers/scheduler/scheduled_statuses_scheduler.rb
+++ b/app/workers/scheduler/scheduled_statuses_scheduler.rb
@@ -3,7 +3,7 @@
 class Scheduler::ScheduledStatusesScheduler
   include Sidekiq::Worker
 
-  sidekiq_options retry: 0, lock: :until_executed, lock_ttl: 1.day.to_i
+  sidekiq_options retry: 0, lock: :until_executed, lock_ttl: 1.hour.to_i
 
   def perform
     publish_scheduled_statuses!
diff --git a/app/workers/scheduler/trends/refresh_scheduler.rb b/app/workers/scheduler/trends/refresh_scheduler.rb
index b559ba46b4..85c000deea 100644
--- a/app/workers/scheduler/trends/refresh_scheduler.rb
+++ b/app/workers/scheduler/trends/refresh_scheduler.rb
@@ -3,7 +3,7 @@
 class Scheduler::Trends::RefreshScheduler
   include Sidekiq::Worker
 
-  sidekiq_options retry: 0
+  sidekiq_options retry: 0, lock: :until_executed, lock_ttl: 30.minutes.to_i
 
   def perform
     Trends.refresh!
diff --git a/app/workers/verify_account_links_worker.rb b/app/workers/verify_account_links_worker.rb
index f606e6c26f..ad27f450b7 100644
--- a/app/workers/verify_account_links_worker.rb
+++ b/app/workers/verify_account_links_worker.rb
@@ -3,7 +3,7 @@
 class VerifyAccountLinksWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'default', retry: false, lock: :until_executed
+  sidekiq_options queue: 'default', retry: false, lock: :until_executed, lock_ttl: 1.hour.to_i
 
   def perform(account_id)
     account = Account.find(account_id)
diff --git a/config/application.rb b/config/application.rb
index 2a62c37e8b..d98e332339 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -5,15 +5,15 @@ require_relative 'boot'
 require 'rails'
 
 require 'active_record/railtie'
-#require 'active_storage/engine'
+# require 'active_storage/engine'
 require 'action_controller/railtie'
 require 'action_view/railtie'
 require 'action_mailer/railtie'
 require 'active_job/railtie'
-#require 'action_cable/engine'
-#require 'action_mailbox/engine'
-#require 'action_text/engine'
-#require 'rails/test_unit/railtie'
+# require 'action_cable/engine'
+# require 'action_mailbox/engine'
+# require 'action_text/engine'
+# require 'rails/test_unit/railtie'
 require 'sprockets/railtie'
 
 # Used to be implicitly required in action_mailbox/engine
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 7ee5c898e2..54fbe2c13f 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -44,7 +44,7 @@ Rails.application.configure do
   config.force_ssl = true
   config.ssl_options = {
     redirect: {
-      exclude: -> request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
+      exclude: ->request { request.path.start_with?('/health') || request.headers["Host"].end_with?('.onion') || request.headers["Host"].end_with?('.i2p') }
     }
   }
 
@@ -148,12 +148,12 @@ Rails.application.configure do
   config.action_mailer.delivery_method = ENV.fetch('SMTP_DELIVERY_METHOD', 'smtp').to_sym
 
   config.action_dispatch.default_headers = {
-    'Server'                 => 'Mastodon',
-    'X-Frame-Options'        => 'DENY',
+    'Server' => 'Mastodon',
+    'X-Frame-Options' => 'DENY',
     'X-Content-Type-Options' => 'nosniff',
-    'X-XSS-Protection'       => '0',
-    'X-Clacks-Overhead'      => 'GNU Natalie Nguyen',
-    'Referrer-Policy'        => 'same-origin',
+    'X-XSS-Protection' => '0',
+    'X-Clacks-Overhead' => 'GNU Natalie Nguyen',
+    'Referrer-Policy' => 'same-origin',
   }
 
   config.x.otp_secret = ENV.fetch('OTP_SECRET')
diff --git a/config/initializers/3_omniauth.rb b/config/initializers/3_omniauth.rb
index 7520f09e5e..566e7362a5 100644
--- a/config/initializers/3_omniauth.rb
+++ b/config/initializers/3_omniauth.rb
@@ -76,35 +76,35 @@ Devise.setup do |config|
   # OpenID Connect Strategy
   if ENV['OIDC_ENABLED'] == 'true'
     oidc_options = {}
-    oidc_options[:display_name] = ENV['OIDC_DISPLAY_NAME'] #OPTIONAL
-    oidc_options[:issuer] = ENV['OIDC_ISSUER'] if ENV['OIDC_ISSUER'] #NEED
-    oidc_options[:discovery] = ENV['OIDC_DISCOVERY'] == 'true' if ENV['OIDC_DISCOVERY'] #OPTIONAL (default: false)
-    oidc_options[:client_auth_method] = ENV['OIDC_CLIENT_AUTH_METHOD'] if ENV['OIDC_CLIENT_AUTH_METHOD'] #OPTIONAL (default: basic)
-    scope_string = ENV['OIDC_SCOPE'] if ENV['OIDC_SCOPE'] #NEED
+    oidc_options[:display_name] = ENV['OIDC_DISPLAY_NAME'] # OPTIONAL
+    oidc_options[:issuer] = ENV['OIDC_ISSUER'] if ENV['OIDC_ISSUER'] # NEED
+    oidc_options[:discovery] = ENV['OIDC_DISCOVERY'] == 'true' if ENV['OIDC_DISCOVERY'] # OPTIONAL (default: false)
+    oidc_options[:client_auth_method] = ENV['OIDC_CLIENT_AUTH_METHOD'] if ENV['OIDC_CLIENT_AUTH_METHOD'] # OPTIONAL (default: basic)
+    scope_string = ENV['OIDC_SCOPE'] if ENV['OIDC_SCOPE'] # NEED
     scopes = scope_string.split(',')
     oidc_options[:scope] = scopes.map { |x| x.to_sym }
-    oidc_options[:response_type] = ENV['OIDC_RESPONSE_TYPE'] if ENV['OIDC_RESPONSE_TYPE'] #OPTIONAL (default: code)
-    oidc_options[:response_mode] = ENV['OIDC_RESPONSE_MODE'] if ENV['OIDC_RESPONSE_MODE'] #OPTIONAL (default: query)
-    oidc_options[:display] = ENV['OIDC_DISPLAY'] if ENV['OIDC_DISPLAY'] #OPTIONAL (default: page)
-    oidc_options[:prompt] = ENV['OIDC_PROMPT'] if ENV['OIDC_PROMPT'] #OPTIONAL
-    oidc_options[:send_nonce] = ENV['OIDC_SEND_NONCE'] == 'true' if ENV['OIDC_SEND_NONCE'] #OPTIONAL (default: true)
-    oidc_options[:send_scope_to_token_endpoint] = ENV['OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT'] == 'true' if ENV['OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT'] #OPTIONAL (default: true)
-    oidc_options[:post_logout_redirect_uri] = ENV['OIDC_IDP_LOGOUT_REDIRECT_URI'] if ENV['OIDC_IDP_LOGOUT_REDIRECT_URI'] #OPTIONAL
-    oidc_options[:uid_field] = ENV['OIDC_UID_FIELD'] if ENV['OIDC_UID_FIELD'] #NEED
+    oidc_options[:response_type] = ENV['OIDC_RESPONSE_TYPE'] if ENV['OIDC_RESPONSE_TYPE'] # OPTIONAL (default: code)
+    oidc_options[:response_mode] = ENV['OIDC_RESPONSE_MODE'] if ENV['OIDC_RESPONSE_MODE'] # OPTIONAL (default: query)
+    oidc_options[:display] = ENV['OIDC_DISPLAY'] if ENV['OIDC_DISPLAY'] # OPTIONAL (default: page)
+    oidc_options[:prompt] = ENV['OIDC_PROMPT'] if ENV['OIDC_PROMPT'] # OPTIONAL
+    oidc_options[:send_nonce] = ENV['OIDC_SEND_NONCE'] == 'true' if ENV['OIDC_SEND_NONCE'] # OPTIONAL (default: true)
+    oidc_options[:send_scope_to_token_endpoint] = ENV['OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT'] == 'true' if ENV['OIDC_SEND_SCOPE_TO_TOKEN_ENDPOINT'] # OPTIONAL (default: true)
+    oidc_options[:post_logout_redirect_uri] = ENV['OIDC_IDP_LOGOUT_REDIRECT_URI'] if ENV['OIDC_IDP_LOGOUT_REDIRECT_URI'] # OPTIONAL
+    oidc_options[:uid_field] = ENV['OIDC_UID_FIELD'] if ENV['OIDC_UID_FIELD'] # NEED
     oidc_options[:client_options] = {}
-    oidc_options[:client_options][:identifier] = ENV['OIDC_CLIENT_ID'] if ENV['OIDC_CLIENT_ID'] #NEED
-    oidc_options[:client_options][:secret] = ENV['OIDC_CLIENT_SECRET'] if ENV['OIDC_CLIENT_SECRET'] #NEED
-    oidc_options[:client_options][:redirect_uri] = ENV['OIDC_REDIRECT_URI'] if ENV['OIDC_REDIRECT_URI'] #NEED
-    oidc_options[:client_options][:scheme] = ENV['OIDC_HTTP_SCHEME'] if ENV['OIDC_HTTP_SCHEME'] #OPTIONAL (default: https)
-    oidc_options[:client_options][:host] = ENV['OIDC_HOST'] if ENV['OIDC_HOST'] #OPTIONAL
-    oidc_options[:client_options][:port] = ENV['OIDC_PORT'] if ENV['OIDC_PORT'] #OPTIONAL
-    oidc_options[:client_options][:authorization_endpoint] = ENV['OIDC_AUTH_ENDPOINT'] if ENV['OIDC_AUTH_ENDPOINT'] #NEED when discovery != true
-    oidc_options[:client_options][:token_endpoint] = ENV['OIDC_TOKEN_ENDPOINT'] if ENV['OIDC_TOKEN_ENDPOINT'] #NEED when discovery != true
-    oidc_options[:client_options][:userinfo_endpoint] = ENV['OIDC_USER_INFO_ENDPOINT'] if ENV['OIDC_USER_INFO_ENDPOINT'] #NEED when discovery != true
-    oidc_options[:client_options][:jwks_uri] = ENV['OIDC_JWKS_URI'] if ENV['OIDC_JWKS_URI'] #NEED when discovery != true
-    oidc_options[:client_options][:end_session_endpoint] = ENV['OIDC_END_SESSION_ENDPOINT'] if ENV['OIDC_END_SESSION_ENDPOINT'] #OPTIONAL
+    oidc_options[:client_options][:identifier] = ENV['OIDC_CLIENT_ID'] if ENV['OIDC_CLIENT_ID'] # NEED
+    oidc_options[:client_options][:secret] = ENV['OIDC_CLIENT_SECRET'] if ENV['OIDC_CLIENT_SECRET'] # NEED
+    oidc_options[:client_options][:redirect_uri] = ENV['OIDC_REDIRECT_URI'] if ENV['OIDC_REDIRECT_URI'] # NEED
+    oidc_options[:client_options][:scheme] = ENV['OIDC_HTTP_SCHEME'] if ENV['OIDC_HTTP_SCHEME'] # OPTIONAL (default: https)
+    oidc_options[:client_options][:host] = ENV['OIDC_HOST'] if ENV['OIDC_HOST'] # OPTIONAL
+    oidc_options[:client_options][:port] = ENV['OIDC_PORT'] if ENV['OIDC_PORT'] # OPTIONAL
+    oidc_options[:client_options][:authorization_endpoint] = ENV['OIDC_AUTH_ENDPOINT'] if ENV['OIDC_AUTH_ENDPOINT'] # NEED when discovery != true
+    oidc_options[:client_options][:token_endpoint] = ENV['OIDC_TOKEN_ENDPOINT'] if ENV['OIDC_TOKEN_ENDPOINT'] # NEED when discovery != true
+    oidc_options[:client_options][:userinfo_endpoint] = ENV['OIDC_USER_INFO_ENDPOINT'] if ENV['OIDC_USER_INFO_ENDPOINT'] # NEED when discovery != true
+    oidc_options[:client_options][:jwks_uri] = ENV['OIDC_JWKS_URI'] if ENV['OIDC_JWKS_URI'] # NEED when discovery != true
+    oidc_options[:client_options][:end_session_endpoint] = ENV['OIDC_END_SESSION_ENDPOINT'] if ENV['OIDC_END_SESSION_ENDPOINT'] # OPTIONAL
     oidc_options[:security] = {}
-    oidc_options[:security][:assume_email_is_verified] = ENV['OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED'] == 'true' #OPTIONAL
+    oidc_options[:security][:assume_email_is_verified] = ENV['OIDC_SECURITY_ASSUME_EMAIL_IS_VERIFIED'] == 'true' # OPTIONAL
     config.omniauth :openid_connect, oidc_options
   end
 end
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 4a0dabb6a9..99c6ec023b 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -75,7 +75,7 @@ end
 # https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
 # Rails.application.config.content_security_policy_report_only = true
 
-Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
+Rails.application.config.content_security_policy_nonce_generator = ->request { SecureRandom.base64(16) }
 
 Rails.application.config.content_security_policy_nonce_directives = %w(style-src)
 
diff --git a/config/initializers/cors.rb b/config/initializers/cors.rb
index b416332707..3d94e38e8e 100644
--- a/config/initializers/cors.rb
+++ b/config/initializers/cors.rb
@@ -11,30 +11,16 @@ Rails.application.config.middleware.insert_before 0, Rack::Cors do
   allow do
     origins '*'
 
-    resource '/.well-known/*',
-      headers: :any,
-      methods: [:get],
-      credentials: false
-    resource '/@:username',
-      headers: :any,
-      methods: [:get],
-      credentials: false
-    resource '/users/:username',
-      headers: :any,
-      methods: [:get],
-      credentials: false
-    resource '/api/*',
-      headers: :any,
-      methods: [:post, :put, :delete, :get, :patch, :options],
-      credentials: false,
-      expose: ['Link', 'X-RateLimit-Reset', 'X-RateLimit-Limit', 'X-RateLimit-Remaining', 'X-Request-Id']
-    resource '/oauth/token',
-      headers: :any,
-      methods: [:post],
-      credentials: false
-    resource '/assets/*', headers: :any, methods: [:get, :head, :options]
-    resource '/stylesheets/*', headers: :any, methods: [:get, :head, :options]
-    resource '/javascripts/*', headers: :any, methods: [:get, :head, :options]
-    resource '/packs/*', headers: :any, methods: [:get, :head, :options]
+    with_options headers: :any, credentials: false do
+      with_options methods: [:get] do
+        resource '/.well-known/*'
+        resource '/@:username'
+        resource '/users/:username'
+      end
+      resource '/api/*',
+               expose: %w(Link X-RateLimit-Reset X-RateLimit-Limit X-RateLimit-Remaining X-Request-Id),
+               methods: %i(post put delete get patch options)
+      resource '/oauth/token', methods: [:post]
+    end
   end
 end
diff --git a/config/initializers/rack_attack.rb b/config/initializers/rack_attack.rb
index d0af0fe940..429dbd3248 100644
--- a/config/initializers/rack_attack.rb
+++ b/config/initializers/rack_attack.rb
@@ -142,10 +142,10 @@ class Rack::Attack
     match_data = request.env['rack.attack.match_data']
 
     headers = {
-      'Content-Type'          => 'application/json',
-      'X-RateLimit-Limit'     => match_data[:limit].to_s,
+      'Content-Type' => 'application/json',
+      'X-RateLimit-Limit' => match_data[:limit].to_s,
       'X-RateLimit-Remaining' => '0',
-      'X-RateLimit-Reset'     => (now + (match_data[:period] - (now.to_i % match_data[:period]))).iso8601(6),
+      'X-RateLimit-Reset' => (now + (match_data[:period] - (now.to_i % match_data[:period]))).iso8601(6),
     }
 
     [429, headers, [{ error: I18n.t('errors.429') }.to_json]]
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index b29e0a8159..eac23a79b9 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -2,7 +2,10 @@
 
 # Be sure to restart your server when you modify this file.
 
-Rails.application.config.session_store :cookie_store,
-  key: '_mastodon_session',
-  secure: false, # All cookies have their secure flag set by the force_ssl option in production
-  same_site: :lax
+Rails
+  .application
+  .config
+  .session_store :cookie_store,
+                 key: '_mastodon_session',
+                 secure: false, # All cookies have their secure flag set by the force_ssl option in production
+                 same_site: :lax
diff --git a/config/locales/activerecord.hr.yml b/config/locales/activerecord.hr.yml
index 98ca8155fd..b095244dd6 100644
--- a/config/locales/activerecord.hr.yml
+++ b/config/locales/activerecord.hr.yml
@@ -5,3 +5,16 @@ hr:
       poll:
         expires_at: Krajnji rok
         options: Opcije
+      user:
+        email: E-mail adresa
+        password: Lozinka
+      user/account:
+        username: Korisničko ime
+      user/invite_request:
+        text: Razlog
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: mora sadržavati samo slova, brojeve i _
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 69151b2e70..d72b0a608f 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1069,7 +1069,7 @@ de:
       cas: CAS
       saml: SAML
     register: Registrieren
-    registration_closed: "%{instance} akzeptiert keine neuen Mitglieder*innen"
+    registration_closed: "%{instance} akzeptiert keine neuen Mitglieder"
     resend_confirmation: Bestätigungslink erneut zusenden
     reset_password: Passwort zurücksetzen
     rules:
diff --git a/config/locales/devise.en-GB.yml b/config/locales/devise.en-GB.yml
index 9a51d07576..e7ab9462dc 100644
--- a/config/locales/devise.en-GB.yml
+++ b/config/locales/devise.en-GB.yml
@@ -6,22 +6,22 @@ en-GB:
       send_instructions: You will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
       send_paranoid_instructions: If your email address exists in our database, you will receive an email with instructions for how to confirm your email address in a few minutes. Please check your spam folder if you didn't receive this email.
     failure:
-      already_authenticated: You are already signed in.
+      already_authenticated: You are already logged in.
       inactive: Your account is not activated yet.
       invalid: Invalid %{authentication_keys} or password.
       last_attempt: You have one more attempt before your account is locked.
       locked: Your account is locked.
       not_found_in_database: Invalid %{authentication_keys} or password.
       pending: Your account is still under review.
-      timeout: Your session expired. Please sign in again to continue.
-      unauthenticated: You need to sign in or sign up before continuing.
+      timeout: Your session expired. Please log in again to continue.
+      unauthenticated: You need to log in or sign up before continuing.
       unconfirmed: You have to confirm your email address before continuing.
     mailer:
       confirmation_instructions:
         action: Verify email address
         action_with_app: Confirm and return to %{app}
         explanation: You have created an account on %{host} with this email address. You are one click away from activating it. If this wasn't you, please ignore this email.
-        explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can login to change your details or delete your account, but you cannot access most of the functions until your account is approved. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email.
+        explanation_when_pending: You applied for an invite to %{host} with this email address. Once you confirm your e-mail address, we will review your application. You can log in to change your details or delete your account, but you cannot access most of the functions until your account is approved. If your application is rejected, your data will be removed, so no further action will be required from you. If this wasn't you, please ignore this email.
         extra_html: Please also check out <a href="%{terms_path}">the rules of the server</a> and <a href="%{policy_path}">our terms of service</a>.
         subject: 'Mastodon: Confirmation instructions for %{instance}'
         title: Verify email address
@@ -84,28 +84,28 @@ en-GB:
       no_token: You can't access this page without coming from a password reset email. If you do come from a password reset email, please make sure you used the full URL provided.
       send_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
       send_paranoid_instructions: If your email address exists in our database, you will receive a password recovery link at your email address in a few minutes. Please check your spam folder if you didn't receive this email.
-      updated: Your password has been changed successfully. You are now signed in.
+      updated: Your password has been changed successfully. You are now logged in.
       updated_not_active: Your password has been changed successfully.
     registrations:
       destroyed: Bye! Your account has been successfully cancelled. We hope to see you again soon.
       signed_up: Welcome! You have signed up successfully.
-      signed_up_but_inactive: You have signed up successfully. However, we could not sign you in because your account is not yet activated.
-      signed_up_but_locked: You have signed up successfully. However, we could not sign you in because your account is locked.
+      signed_up_but_inactive: You have signed up successfully. However, we could not log you in because your account is not yet activated.
+      signed_up_but_locked: You have signed up successfully. However, we could not log you in because your account is locked.
       signed_up_but_pending: A message with a confirmation link has been sent to your email address. After you click the link, we will review your application. You will be notified if it is approved.
       signed_up_but_unconfirmed: A message with a confirmation link has been sent to your email address. Please follow the link to activate your account. Please check your spam folder if you didn't receive this email.
       update_needs_confirmation: You updated your account successfully, but we need to verify your new email address. Please check your email and follow the confirm link to confirm your new email address. Please check your spam folder if you didn't receive this email.
       updated: Your account has been updated successfully.
     sessions:
-      already_signed_out: Signed out successfully.
-      signed_in: Signed in successfully.
-      signed_out: Signed out successfully.
+      already_signed_out: Logged out successfully.
+      signed_in: Logged in successfully.
+      signed_out: Logged out successfully.
     unlocks:
       send_instructions: You will receive an email with instructions for how to unlock your account in a few minutes. Please check your spam folder if you didn't receive this email.
       send_paranoid_instructions: If your account exists, you will receive an email with instructions for how to unlock it in a few minutes. Please check your spam folder if you didn't receive this email.
-      unlocked: Your account has been unlocked successfully. Please sign in to continue.
+      unlocked: Your account has been unlocked successfully. Please log in to continue.
   errors:
     messages:
-      already_confirmed: was already confirmed, please try signing in
+      already_confirmed: was already confirmed, please try logging in
       confirmation_period_expired: needs to be confirmed within %{period}, please request a new one
       expired: has expired, please request a new one
       not_found: not found
diff --git a/config/locales/devise.fi.yml b/config/locales/devise.fi.yml
index eecbb3897a..8bbcb071e3 100644
--- a/config/locales/devise.fi.yml
+++ b/config/locales/devise.fi.yml
@@ -27,12 +27,12 @@ fi:
         title: Vahvista sähköpostiosoite
       email_changed:
         explanation: 'Tilin sähköpostiosoitteeksi vaihdetaan:'
-        extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä. Jos et pääse kirjautumaan tilillesi, ota yhteyttä instanssin ylläpitäjään.
+        extra: Jos et vaihtanut sähköpostiosoitettasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
         subject: 'Mastodon: Sähköpostiosoite vaihdettu'
         title: Uusi sähköpostiosoite
       password_change:
         explanation: Tilisi salasana on vaihdettu.
-        extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä. Jos et pääse kirjautumaan tilillesi, ota yhteyttä instanssin ylläpitäjään.
+        extra: Jos et vaihtanut salasanaasi, joku muu on todennäköisesti päässyt käyttämään tiliäsi. Vaihda salasanasi viipymättä, tai ota yhteyttä palvelimen ylläpitäjään, jos et pääse kirjautumaan tilillesi.
         subject: 'Mastodon: salasana vaihdettu'
         title: Salasana vaihdettu
       reconfirmation_instructions:
@@ -47,11 +47,11 @@ fi:
         subject: 'Mastodon: ohjeet salasanan vaihtoon'
         title: Salasanan vaihto
       two_factor_disabled:
-        explanation: Kaksivaiheinen todennus tilillesi poistettiin käytöstä. Kirjautuminen onnistuu nyt käyttäen pelkkää sähköpostiosoitetta ja salasanaa.
+        explanation: Tilisi kaksivaiheinen todennus poistettiin käytöstä. Kirjautuminen onnistuu nyt pelkällä sähköpostiosoitella ja salasanalla.
         subject: 'Mastodon: kaksivaiheinen todennus poistettu käytöstä'
         title: 2-vaiheinen todennus pois käytöstä
       two_factor_enabled:
-        explanation: Kaksivaiheinen tunnistus on otettu käyttöön tilillesi. Kaksivaiheisen tunnistuksen sovelluksesta saatu koodi tarvitaan kirjautumiseen.
+        explanation: Kaksivaiheinen todennus on otettu käyttöön tilillesi. Kirjautumiseen tarvitaan kaksivaiheisen todennuksen sovelluksesta saatu koodi.
         subject: 'Mastodon: kaksivaiheinen todennus otettu käyttöön'
         title: 2-vaiheinen todennus käytössä
       two_factor_recovery_codes_changed:
@@ -70,11 +70,11 @@ fi:
           subject: 'Mastodon: suojausavain poistettu'
           title: Yksi suojausavaimistasi on poistettu
       webauthn_disabled:
-        explanation: Suojausavaimilla todennus on poistettu käytöstä tililtäsi. Kirjautuminen on nyt mahdollista käyttämällä vain paritetun TOTP-sovelluksen luomaa tokenia.
-        subject: 'Mastodon: Todennus suoja-avaimilla poistettu käytöstä'
+        explanation: Suojausavaimilla todennus on poistettu käytöstä tililtäsi. Kirjautuminen on nyt mahdollista vain paritetun TOTP-sovelluksen luomaa koodia käyttämällä.
+        subject: 'Mastodon: Todennus suojausavaimilla poistettu käytöstä'
         title: Suojausavaimet poistettu käytöstä
       webauthn_enabled:
-        explanation: Todennus suojausavaimella on otettu käyttöön tililläsi. Suojausavaintasi voidaan nyt käyttää kirjautumiseen.
+        explanation: Todennus suojausavaimella on otettu käyttöön tilillesi. Suojausavaintasi voidaan nyt käyttää kirjautumiseen.
         subject: 'Mastodon: Todennus suojausavaimella on otettu käyttöön'
         title: Suojausavaimet käytössä
     omniauth_callbacks:
diff --git a/config/locales/devise.si.yml b/config/locales/devise.si.yml
index a20057cef9..c866bed0e9 100644
--- a/config/locales/devise.si.yml
+++ b/config/locales/devise.si.yml
@@ -23,7 +23,6 @@ si:
         explanation: ඔබ මෙම ඊමේල් ලිපිනය සමඟ %{host} හි ගිණුමක් සාදා ඇත. ඔබ එය සක්‍රිය කිරීමට එක ක්ලික් කිරීමක් ඇත. මේ ඔබ නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න.
         explanation_when_pending: ඔබ මෙම විද්‍යුත් තැපැල් ලිපිනය සමඟ %{host} වෙත ආරාධනාවක් සඳහා ඉල්ලුම් කළා. ඔබ ඔබගේ විද්‍යුත් තැපැල් ලිපිනය තහවුරු කළ පසු, අපි ඔබගේ අයදුම්පත සමාලෝචනය කරන්නෙමු. ඔබගේ විස්තර වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට ඔබට පුරනය විය හැක, නමුත් ඔබගේ ගිණුම අනුමත වන තුරු ඔබට බොහෝ කාර්යයන් වෙත ප්‍රවේශ විය නොහැක. ඔබගේ අයදුම්පත ප්‍රතික්ෂේප කළහොත්, ඔබගේ දත්ත ඉවත් කරනු ඇත, එබැවින් ඔබෙන් වැඩිදුර ක්‍රියාමාර්ග අවශ්‍ය නොවනු ඇත. මේ ඔබ නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න.
         extra_html: කරුණාකර <a href="%{terms_path}">සේවාදායකයේ නීති</a> සහ <a href="%{policy_path}">අපගේ සේවා කොන්දේසි</a>ද පරීක්ෂා කරන්න.
-        subject: 'Mastodon: %{instance}සඳහා තහවුරු කිරීමේ උපදෙස්'
         title: වි. තැපෑල තහවුරු කරන්න
       email_changed:
         explanation: 'ඔබගේ ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් වෙමින් පවතී:'
@@ -33,30 +32,26 @@ si:
       password_change:
         explanation: ඔබගේ ගිණුම සඳහා මුරපදය වෙනස් කර ඇත.
         extra: ඔබ ඔබගේ මුරපදය වෙනස් නොකළේ නම්, යමෙකු ඔබගේ ගිණුමට ප්‍රවේශය ලබා ගෙන ඇති බව පෙනෙන්නට තිබේ. ඔබගේ ගිණුමෙන් අගුලු දමා ඇත්නම් කරුණාකර ඔබගේ මුරපදය වහාම වෙනස් කරන්න හෝ සේවාදායක පරිපාලක අමතන්න.
-        subject: 'Mastodon: මුරපදය වෙනස් විය'
+        subject: 'මාස්ටඩන්: මුරපදය වෙනස් විය'
         title: මුරපදය වෙනස් විය
       reconfirmation_instructions:
         explanation: ඔබගේ ඊමේල් වෙනස් කිරීමට නව ලිපිනය තහවුරු කරන්න.
-        extra: මෙම වෙනස ඔබ විසින් ආරම්භ කරන ලද්දක් නොවේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වන තෙක් Mastodon ගිණුම සඳහා ඊමේල් ලිපිනය වෙනස් නොවේ.
-        subject: 'Mastodon: %{instance}සඳහා විද්‍යුත් තැපෑල තහවුරු කරන්න'
         title: වි-තැපෑල තහවුරු කරන්න
       reset_password_instructions:
         action: මුරපදය වෙනස් කරන්න
         explanation: ඔබ ඔබගේ ගිණුම සඳහා නව මුරපදයක් ඉල්ලා ඇත.
         extra: ඔබ මෙය ඉල්ලා නොසිටියේ නම්, කරුණාකර මෙම විද්‍යුත් තැපෑල නොසලකා හරින්න. ඔබ ඉහත සබැඳියට ප්‍රවේශ වී අලුත් එකක් සාදන තෙක් ඔබේ මුරපදය වෙනස් නොවනු ඇත.
-        subject: 'Mastodon: මුරපද උපදෙස් යළි පිහිටුවන්න'
+        subject: 'මාස්ටඩන්: මුරපදය යළි සැකසීමේ උපදෙස්'
         title: මුරපදය යළි සැකසීම
       two_factor_disabled:
         explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්‍යාපනය අබල කර ඇත. විද්‍යුත් තැපැල් ලිපිනය සහ මුරපදය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක.
-        subject: 'Mastodon: ද්වි සාධක සත්‍යාපනය අක්‍රීය කර ඇත'
         title: ද්විපියවර අබලයි
       two_factor_enabled:
         explanation: ඔබගේ ගිණුම සඳහා ද්වි-සාධක සත්‍යාපනය සක්‍රීය කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනයක් පුරනය වීමට අවශ්‍ය වනු ඇත.
-        subject: 'Mastodon: ද්වි සාධක සත්‍යාපනය සක්‍රීය කර ඇත'
         title: ද්විපියවර සබලයි
       two_factor_recovery_codes_changed:
         explanation: පෙර ප්‍රතිසාධන කේත අවලංගු කර නව ඒවා උත්පාදනය කර ඇත.
-        subject: 'Mastodon: ද්වි-සාධක ප්‍රතිසාධන කේත නැවත උත්පාදනය කරන ලදී'
+        subject: 'මාස්ටඩන්: ද්වි-සාධක ප්‍රතිසාධන කේත නැවත උත්පාදනය කෙරිණි'
         title: ද්විපියවර ප්‍රතිසාධන කේත වෙනස් විය
       unlock_instructions:
         subject: 'මාස්ටඩන්: අගුළු හැරීමේ උපදේශ'
@@ -67,15 +62,13 @@ si:
           title: ආරක්‍ෂණ යතුරක් එකතු කර ඇත
         deleted:
           explanation: පහත ආරක්ෂක යතුර ඔබගේ ගිණුමෙන් මකා ඇත
-          subject: 'Mastodon: ආරක්ෂක යතුර මකා ඇත'
+          subject: 'මාස්ටඩන්: ආරක්‍ෂණ යතුර මකා ඇත'
           title: ඔබගේ ආරක්ෂක යතුරු වලින් එකක් මකා ඇත
       webauthn_disabled:
         explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සමඟ සත්‍යාපනය අබල කර ඇත. යුගල කළ TOTP යෙදුම මගින් ජනනය කරන ලද ටෝකනය පමණක් භාවිතයෙන් දැන් පුරනය විය හැක.
-        subject: 'Mastodon: ආරක්ෂක යතුරු සමඟ සත්‍යාපනය අක්‍රිය කර ඇත'
         title: ආරක්‍ෂණ යතුරු අබල කර ඇත
       webauthn_enabled:
         explanation: ඔබගේ ගිණුම සඳහා ආරක්ෂක යතුරු සත්‍යාපනය සක්‍රීය කර ඇත. ඔබගේ ආරක්ෂක යතුර දැන් පුරනය වීම සඳහා භාවිතා කළ හැක.
-        subject: 'Mastodon: ආරක්ෂක යතුරු සත්‍යාපනය සක්‍රීය කර ඇත'
         title: ආරක්‍ෂණ යතුරු සබල කර ඇත
     omniauth_callbacks:
       failure: '"%{reason}" නිසා %{kind} සිට ඔබව සත්‍යාපනය කළ නොහැක.'
@@ -108,8 +101,7 @@ si:
       already_confirmed: දැනටමත් තහවුරු කර ඇත, කරුණාකර පුරනය වීමට උත්සාහ කරන්න
       confirmation_period_expired: "%{period}තුළ තහවුරු කළ යුතුය, කරුණාකර අලුත් එකක් ඉල්ලන්න"
       expired: කල් ඉකුත් වී ඇත, කරුණාකර අලුත් එකක් ඉල්ලන්න
-      not_found: හමු වුණේ නැහැ
-      not_locked: අගුලු දමා නොතිබුණි
+      not_found: හමු නොවිණි
       not_saved:
         one: '1 දෝෂයක් මෙම %{resource} සුරැකීම තහනම් කර ඇත:'
         other: 'දෝෂ %{count} කින් මෙම %{resource} සුරැකීම තහනම් කර ඇත:'
diff --git a/config/locales/doorkeeper.fa.yml b/config/locales/doorkeeper.fa.yml
index 085507f8bf..c56e76e346 100644
--- a/config/locales/doorkeeper.fa.yml
+++ b/config/locales/doorkeeper.fa.yml
@@ -149,6 +149,7 @@ fa:
     scopes:
       admin:read: خواندن تمام داده‌ها روی کارساز
       admin:read:accounts: خواندن اطّلاعات حساس از همهٔ حساب‌ها
+      admin:read:canonical_email_blocks: خواندن اطّلاعات حسّاس از همهٔ انسدادهای رایانامهٔ متعارف
       admin:read:domain_allows: خواندن اطّلاعات حساس از همهٔ دامنه ها اجازه داده شد
       admin:read:domain_blocks: خواندن اطّلاعات حساس از همهٔ دامنه های مسدودشده
       admin:read:email_domain_blocks: خواندن اطّلاعات حساس از همهٔ دامنه های رایانامه های مسدودشده
@@ -156,6 +157,7 @@ fa:
       admin:read:reports: خواندن اطّلاعات حساس از همهٔ گزارش‌ها و حساب‌های گزارش‌شده
       admin:write: تغییر تمام داده‌ها روی کارساز
       admin:write:accounts: انجام کنش مدیریتی روی حساب‌ها
+      admin:write:canonical_email_blocks: انجام کنش‌های نظارتی روی همهٔ انسدادهای رایانامهٔ متعارف
       admin:write:domain_allows: انجام کنش مدیریتی روی اجازه‌های دامنه
       admin:write:domain_blocks: انجام کنش مدیریتی روی انسدادهای دامنه
       admin:write:email_domain_blocks: انجام کنش مدیریتی روی انسدادهای دامنهٔ رایانامه
diff --git a/config/locales/doorkeeper.fi.yml b/config/locales/doorkeeper.fi.yml
index 71958c5b3d..0f263b00d5 100644
--- a/config/locales/doorkeeper.fi.yml
+++ b/config/locales/doorkeeper.fi.yml
@@ -6,7 +6,7 @@ fi:
         name: Sovelluksen nimi
         redirect_uri: Uudelleenohjauksen URI
         scopes: Oikeudet
-        website: Sovelluksen verkkosivu
+        website: Sovelluksen verkkosivusto
     errors:
       models:
         doorkeeper/application:
@@ -67,13 +67,13 @@ fi:
         title: Kopioi tämä valtuutuskoodi ja liitä se sovellukseen.
     authorized_applications:
       buttons:
-        revoke: Peru
+        revoke: Hylkää
       confirmations:
         revoke: Oletko varma?
       index:
         authorized_at: Valtuutettu %{date}
-        description_html: Nämä ovat sovelluksia, jotka voivat käyttää tiliäsi käyttäen API. Jos et tunnista sitä tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden.
-        last_used_at: Viimeksi käytetty %{date}
+        description_html: Nämä sovellukset voivat käyttää tiliäsi ohjelmointirajapinnan kautta. Jos tässä on sovelluksia, joita et tunnista, tai sovellus toimii väärin, voit peruuttaa sen käyttöoikeuden.
+        last_used_at: Käytetty viimeksi %{date}
         never_used: Ei käytetty
         scopes: Oikeudet
         superapp: Sisäinen
@@ -114,7 +114,7 @@ fi:
           notice: Sovellus poistettu.
     grouped_scopes:
       access:
-        read: Vain luku
+        read: Vain lukuoikeus
         read/write: Luku- ja kirjoitusoikeudet
         write: Vain kirjoitusoikeus
       title:
@@ -135,7 +135,7 @@ fi:
         media: Medialiitteet
         mutes: Mykistykset
         notifications: Ilmoitukset
-        push: Push-ilmoitukset
+        push: Puskuilmoitukset
         reports: Raportit
         search: Hae
         statuses: Viestit
@@ -147,49 +147,49 @@ fi:
       application:
         title: OAuth-valtuutus tarvitaan
     scopes:
-      admin:read: lukea kaikkia tietoja palvelimelta
-      admin:read:accounts: lue arkaluontoinen sisältö kaikilta tileiltä
-      admin:read:canonical_email_blocks: lue arkaluonteisia tietoja kaikista kanonisesti sallituista sähköpostiosoitteista
+      admin:read: lue kaikkia palvelimen tietoja
+      admin:read:accounts: lue arkaluonteisia tietoja kaikista tileistä
+      admin:read:canonical_email_blocks: lue arkaluonteisia tietoja kaikista estetyistä kanonisista sähköpostiosoitteista
       admin:read:domain_allows: lue arkaluonteisia tietoja kaikista sallituista verkkotunnuksista
       admin:read:domain_blocks: lue arkaluonteisia tietoja kaikista estetyistä verkkotunnuksista
       admin:read:email_domain_blocks: lue arkaluonteisia tietoja kaikista estetyistä sähköpostiverkkotunnuksista
       admin:read:ip_blocks: lue arkaluonteisia tietoja kaikista estetyistä IP-osoitteista
-      admin:read:reports: lue arkaluonteiset tiedot kaikista raporteista ja raportoiduista tileistä
-      admin:write: muokata kaikkia tietoja palvelimella
-      admin:write:accounts: suorita moderointitoiminnot tileillä
-      admin:write:canonical_email_blocks: toteuta moderointitoimenpiteitä kanonisille sähköpostiosoite-estoille
-      admin:write:domain_allows: toteuta moderointitoimenpiteitä sallituille verkkotunnuksille
-      admin:write:domain_blocks: toteuta moderointitoimenpiteitä estetyille verkkotunnuksille
-      admin:write:email_domain_blocks: toteuta moderointitoimenpiteitä estetyille sähköpostiverkkotunnuksille
-      admin:write:ip_blocks: toteuta moderointitoimenpiteitä estetyille IP-osoitteille
-      admin:write:reports: suorita moderointitoiminnot raporteissa
-      crypto: käytä päästä päähän salausta
-      follow: seurata, estää, perua eston ja lopettaa tilien seuraaminen
-      push: vastaanottaa push-ilmoituksesi
-      read: lukea tilin tietoja
-      read:accounts: nähdä tilin tiedot
-      read:blocks: katso lohkosi
-      read:bookmarks: katso kirjanmerkkisi
-      read:favourites: näytä suosikkisi
-      read:filters: katso suodattimesi
-      read:follows: katso ketä seuraat
-      read:lists: katso listasi
-      read:mutes: katso mykistyksesi
-      read:notifications: katso ilmoitukset
-      read:reports: katso raporttisi
-      read:search: haku sinun puolesta
-      read:statuses: katso kaikki viestit
-      write: julkaista puolestasi
-      write:accounts: muokata profiiliasi
-      write:blocks: estää tilit ja palvelimet
-      write:bookmarks: kirjanmerkki viestit
-      write:conversations: mykistä ja poistaa keskustelut
+      admin:read:reports: lue arkaluonteisia tietoja kaikista raporteista ja raportoiduista tileistä
+      admin:write: muokkaa kaikkia palvelimen tietoja
+      admin:write:accounts: suorita valvontatoimia tileille
+      admin:write:canonical_email_blocks: suorita valvontatoimia estetyille kanonisille sähköpostiosoitteille
+      admin:write:domain_allows: suorita valvontatoimia sallituille verkkotunnuksille
+      admin:write:domain_blocks: suorita valvontatoimia estetyille verkkotunnuksille
+      admin:write:email_domain_blocks: suorita valvontatoimia estetyille sähköpostiverkkotunnuksille
+      admin:write:ip_blocks: suorita valvontatoimia estetyille IP-osoitteille
+      admin:write:reports: suorita valvontatoimia raporteille
+      crypto: käytä päästä päähän -salausta
+      follow: muokkaa tilin suhteita
+      push: vastaanota puskuilmoituksiasi
+      read: lue kaikkia tilin tietoja
+      read:accounts: katso tilien tietoja
+      read:blocks: katso estojasi
+      read:bookmarks: katso kirjanmerkkejäsi
+      read:favourites: katso suosikkejasi
+      read:filters: katso suodattimiasi
+      read:follows: katso seurattujasi
+      read:lists: katso listojasi
+      read:mutes: katso mykistyksiäsi
+      read:notifications: katso ilmoituksiasi
+      read:reports: katso raporttejasi
+      read:search: hae puolestasi
+      read:statuses: katso kaikkia julkaisujasi
+      write: muokkaa kaikkia tilisi tietoja
+      write:accounts: muokkaa profiiliasi
+      write:blocks: estä tilejä ja verkkotunnuksia
+      write:bookmarks: lisää julkaisuja kirjanmerkkeihin
+      write:conversations: mykistä ja poista keskusteluja
       write:favourites: suosikkijulkaisut
-      write:filters: luoda suodattimia
-      write:follows: seurata ihmisiä
-      write:lists: luoda listoja
-      write:media: lähettää mediatiedostoja
-      write:mutes: mykistää ihmisiä ja keskusteluja
-      write:notifications: tyhjentää ilmoituksesi
-      write:reports: raportoi muille ihmisille
-      write:statuses: julkaise viestejä
+      write:filters: luo suodattimia
+      write:follows: seuraa käyttäjiä
+      write:lists: luo listoja
+      write:media: lähetä mediatiedostoja
+      write:mutes: mykistä käyttäjiä ja keskusteluja
+      write:notifications: tyhjennä ilmoituksesi
+      write:reports: raportoi muita käyttäjiä
+      write:statuses: julkaise julkaisuja
diff --git a/config/locales/doorkeeper.si.yml b/config/locales/doorkeeper.si.yml
index 2307f63c0a..d3550cf598 100644
--- a/config/locales/doorkeeper.si.yml
+++ b/config/locales/doorkeeper.si.yml
@@ -58,10 +58,10 @@ si:
         authorize: සත්‍යාපනය
         deny: ප්‍රතික්ෂේප කරන්න
       error:
-        title: දෝෂයක් සිදුවී ඇත
+        title: දෝෂයක් සිදු වී ඇත
       new:
         prompt_html: "%{client_name} ඔබගේ ගිණුමට ප්‍රවේශ වීමට අවසර ලබා ගැනීමට කැමති වේ. එය තෙවන පාර්ශවීය යෙදුමකි. <strong>ඔබ එය විශ්වාස නොකරන්නේ නම්, ඔබ එයට අවසර නොදිය යුතුය.</strong>"
-        review_permissions: අවසර සමාලෝචනය කරන්න
+        review_permissions: අවසර සමාලෝචනය
         title: බලය පැවරීමේ අවශ්ය
       show:
         title: මෙම අවසර කේතය පිටපත් කර එය යෙදුමට අලවන්න.
@@ -73,11 +73,11 @@ si:
       index:
         authorized_at: "%{date}මත අවසර දී ඇත"
         description_html: මේවා API භාවිතයෙන් ඔබගේ ගිණුමට ප්‍රවේශ විය හැකි යෙදුම් වේ. ඔබ මෙහි හඳුනා නොගත් යෙදුම් තිබේ නම්, හෝ යෙදුමක් වැරදි ලෙස හැසිරෙන්නේ නම්, ඔබට එහි ප්‍රවේශය අවලංගු කළ හැක.
-        last_used_at: අවසන් වරට භාවිතා කළේ %{date}
-        never_used: කවදාවත් පාවිච්චි කළේ නැහැ
+        last_used_at: අන්තිම භාවිතය %{date}
+        never_used: භාවිතා කර නැත
         scopes: අවසර
-        superapp: අභ්යන්තර
-        title: ඔබගේ බලයලත් අයදුම්පත්
+        superapp: අභ්‍යන්තර
+        title: ඔබගේ බලයලත් යෙදුම්
     errors:
       messages:
         access_denied: සම්පත් හිමිකරු හෝ අවසර සේවාදායකය ඉල්ලීම ප්‍රතික්ෂේප කළේය.
@@ -104,33 +104,34 @@ si:
     flash:
       applications:
         create:
-          notice: යෙදුම නිර්මාණය කරන ලදී.
+          notice: යෙදුම සෑදිණි.
         destroy:
-          notice: යෙදුම මකා ඇත.
+          notice: යෙදුම මැකිණි.
         update:
-          notice: යෙදුම යාවත්කාලීන කරන ලදී.
+          notice: යෙදුම යාවත්කාල විය.
       authorized_applications:
         destroy:
           notice: අයදුම්පත අවලංගු කරන ලදී.
     grouped_scopes:
       access:
-        read: කියවීමට පමණක් ප්‍රවේශය
-        read/write: කියවීමට සහ ලිවීමට ප්‍රවේශය
-        write: ලිවීමට පමණක් ප්‍රවේශය
+        read: ප්‍රවේශය කියවීමට පමණි
+        read/write: කියවීමට හා ලිවීමට ප්‍රවේශය
+        write: ප්‍රවේශය ලිවීමට පමණි
       title:
         accounts: ගිණුම්
-        admin/accounts: ගිණුම් පරිපාලනය
+        admin/accounts: ගිණුම් කළමනාකරණය
         admin/all: සියලුම පරිපාලන කාර්යයන්
         admin/reports: වාර්තා පරිපාලනය
+        all: ඔබගේ මාස්ටඩන් ගිණුමට පූර්ණ ප්‍රවේශය
         blocks: කුට්ටි
-        bookmarks: පිටු සලකුණු
+        bookmarks: පොත්යොමු
         conversations: සංවාද
         crypto: අන්ත සංකේතනය
+        favourites: ප්‍රියතමයන්
         filters: පෙරහන්
         follows: පහත සඳහන්
         lists: ලැයිස්තු
-        media: මාධ්ය ඇමුණුම්
-        mutes: නිහඬ කරයි
+        media: මාධ්‍ය ඇමුණුම්
         notifications: දැනුම්දීම්
         push: තල්ලු දැනුම්දීම්
         reports: වාර්තා
@@ -142,39 +143,40 @@ si:
           applications: යෙදුම්
           oauth2_provider: වි.සත්‍යා.2 (OAuth) සැපයුම්කරු
       application:
-        title: වි.සත්යා. (OAuth) තොරතුරු අවශ්‍යයි
+        title: වි.සත්‍යා. (OAuth) අනුමැතිය අවශ්‍යයයි
     scopes:
-      admin:read: සේවාදායකයේ ඇති සියලුම දත්ත කියවන්න
-      admin:read:accounts: සියලුම ගිණුම් වල සංවේදී තොරතුරු කියවන්න
-      admin:read:reports: සියලුම වාර්තා සහ වාර්තා කළ ගිණුම් වල සංවේදී තොරතුරු කියවන්න
-      admin:write: සේවාදායකයේ සියලුම දත්ත වෙනස් කරන්න
-      admin:write:accounts: ගිණුම් මත මධ්‍යස්ථ ක්‍රියා සිදු කරන්න
-      admin:write:reports: වාර්තා මත මධ්‍යස්ථ ක්‍රියා සිදු කරන්න
-      crypto: end-to-end encryption භාවිතා කරන්න
+      admin:read: සේවාදායකයේ ඇති සියලුම දත්ත කියවයි
+      admin:read:accounts: සියලුම ගිණුම් වල සංවේදී තොරතුරු කියවයි
+      admin:read:reports: සියලුම වාර්තා සහ වාර්තා කළ ගිණුම් වල සංවේදී තොරතුරු කියවයි
+      admin:write: සේවාදායකයේ සියලුම දත්ත සංශෝධනය කරයි
+      admin:write:accounts: ගිණුම් සඳහා මැදිහත්කරණ ක්‍රියාමාර්ග ගනියි
+      admin:write:reports: වාර්තා සඳහා මැදිහත්කරණ ක්‍රියාමාර්ග ගනියි
+      crypto: අන්ත සංකේතනය භාවිතා කරයි
       follow: ගිණුම් සබඳතා වෙනස් කරන්න
-      push: ඔබගේ තල්ලු දැනුම්දීම් ලබා ගන්න
-      read: ඔබගේ ගිණුමේ සියලුම දත්ත කියවන්න
-      read:accounts: ගිණුම් තොරතුරු බලන්න
+      push: ඔබගේ තල්ලු දැනුම්දීම් ලබන්න
+      read: ඔබගේ ගිණුමේ සියලුම දත්ත කියවයි
+      read:accounts: ගිණුම්වල තොරතුරු දකියි
       read:blocks: ඔබගේ වාරණ බලන්න
-      read:bookmarks: ඔබගේ පිටු සලකුණු බලන්න
+      read:bookmarks: ඔබගේ පොත්යොමු දකියි
+      read:favourites: ඔබගේ ප්‍රියතමයන් බලන්න
       read:filters: ඔබගේ පෙරහන් බලන්න
       read:follows: ඔබගේ පහත සඳහන් බලන්න
       read:lists: ඔබගේ ලැයිස්තු බලන්න
       read:mutes: ඔබේ ගොළු බලන්න
-      read:notifications: ඔබගේ දැනුම්දීම් බලන්න
+      read:notifications: ඔබගේ දැනුම්දීම් බලයි
       read:reports: ඔබගේ වාර්තා බලන්න
-      read:search: ඔබ වෙනුවෙන් සොයන්න
-      read:statuses: සියලුම පෝස්ට් බලන්න
+      read:search: ඔබ වෙනුවෙන් සොයයි
+      read:statuses: සියලු ලිපි බලයි
       write: ඔබගේ ගිණුමේ සියලුම දත්ත වෙනස් කරන්න
       write:accounts: ඔබගේ පැතිකඩ වෙනස් කරන්න
-      write:blocks: ගිණුම් සහ වසම් අවහිර කරන්න
-      write:bookmarks: පිටු සලකුණු සටහන්
+      write:blocks: ගිණුම් සහ වසම් අවහිර කරයි
+      write:bookmarks: ලිපි වලට පොත්යොමු තබයි
       write:conversations: සංවාද නිහඬ කිරීම සහ මකා දැමීම
-      write:filters: පෙරහන් කරන්න
+      write:favourites: ප්‍රියතම ලිපි
+      write:filters: පෙරහන් සාදයි
       write:follows: මිනිසුන් අනුගමනය කරන්න
       write:lists: ලැයිස්තු සාදන්න
-      write:media: මාධ්‍ය ගොනු උඩුගත කරන්න
-      write:mutes: මිනිසුන් සහ සංවාද කරන්න
-      write:notifications: ඔබගේ දැනුම්දීම් හිස්කරන්න
-      write:reports: වෙනත් පුද්ගලයින් වාර්තා කරන්න
-      write:statuses: පළ කිරීම් පළ කරන්න
+      write:media: මාධ්‍ය ගොනු උඩුගත කරයි
+      write:mutes: සංවාද හා පුද්ගලයින් නිහඬ කරයි
+      write:notifications: ඔබගේ දැනුම්දීම් හිස් කරයි
+      write:statuses: ලිපි පළ කරයි
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index ca61644632..98a40c45cf 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -1028,7 +1028,7 @@ en-GB:
   applications:
     created: Application successfully created
     destroyed: Application successfully deleted
-    logout: Logout
+    logout: Log out
     regenerate_token: Regenerate access token
     token_regenerated: Access token successfully regenerated
     warning: Be very careful with this data. Never share it with anyone!
@@ -1055,7 +1055,7 @@ en-GB:
     link_to_webauth: Use your security key device
     log_in_with: Log in with
     login: Log in
-    logout: Logout
+    logout: Log out
     migrate_account: Move to a different account
     migrate_account_html: If you wish to redirect this account to a different one, you can <a href="%{path}">configure it here</a>.
     or_log_in_with: Or log in with
@@ -1089,8 +1089,8 @@ en-GB:
       new_confirmation_instructions_sent: You will receive a new e-mail with the confirmation link in a few minutes!
       title: Check your inbox
     sign_in:
-      preamble_html: Sign in with your <strong>%{domain}</strong> credentials. If your account is hosted on a different server, you will not be able to log in here.
-      title: Sign in to %{domain}
+      preamble_html: Log in with your <strong>%{domain}</strong> credentials. If your account is hosted on a different server, you will not be able to log in here.
+      title: Log in to %{domain}
     sign_up:
       manual_review: Sign-ups on %{domain} go through manual review by our moderators. To help us process your registration, write a bit about yourself and why you want an account on %{domain}.
       preamble: With an account on this Mastodon server, you'll be able to follow any other person on the network, regardless of where their account is hosted.
@@ -1379,8 +1379,8 @@ en-GB:
       webauthn: security keys
     description_html: If you see activity that you don't recognise, consider changing your password and enabling two-factor authentication.
     empty: No authentication history available
-    failed_sign_in_html: Failed sign-in attempt with %{method} from %{ip} (%{browser})
-    successful_sign_in_html: Successful sign-in with %{method} from %{ip} (%{browser})
+    failed_sign_in_html: Failed login attempt with %{method} from %{ip} (%{browser})
+    successful_sign_in_html: Successful login with %{method} from %{ip} (%{browser})
     title: Authentication history
   mail_subscriptions:
     unsubscribe:
@@ -1773,11 +1773,11 @@ en-GB:
       title: Archive takeout
     suspicious_sign_in:
       change_password: change your password
-      details: 'Here are details of the sign-in:'
-      explanation: We've detected a sign-in to your account from a new IP address.
+      details: 'Here are details of the login:'
+      explanation: We've detected a login to your account from a new IP address.
       further_actions_html: If this wasn't you, we recommend that you %{action} immediately and enable two-factor authentication to keep your account secure.
       subject: Your account has been accessed from a new IP address
-      title: A new sign-in
+      title: A new login
     warning:
       appeal: Submit an appeal
       appeal_description: If you believe this is an error, you can submit an appeal to the staff of %{instance}.
@@ -1790,7 +1790,7 @@ en-GB:
         mark_statuses_as_sensitive: Some of your posts have been marked as sensitive by the moderators of %{instance}. This means that people will need to tap the media in the posts before a preview is displayed. You can mark media as sensitive yourself when posting in the future.
         sensitive: From now on, all your uploaded media files will be marked as sensitive and hidden behind a click-through warning.
         silence: You can still use your account but only people who are already following you will see your posts on this server, and you may be excluded from various discovery features. However, others may still manually follow you.
-        suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still login to request a backup of your data until the data is fully removed in about 30 days, but we will retain some basic data to prevent you from evading the suspension.
+        suspend: You can no longer use your account, and your profile and other data are no longer accessible. You can still log in to request a backup of your data until the data is fully removed in about 30 days, but we will retain some basic data to prevent you from evading the suspension.
       reason: 'Reason:'
       statuses: 'Posts cited:'
       subject:
@@ -1825,7 +1825,7 @@ en-GB:
     invalid_otp_token: Invalid two-factor code
     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:'
+    signed_in_as: 'Logged in as:'
   verification:
     extra_instructions_html: <strong>Tip:</strong> The link on your website can be invisible. The important part is <code>rel="me"</code> which prevents impersonation on websites with user-generated content. You can even use a <code>link</code> tag in the header of the page instead of <code>a</code>, but the HTML must be accessible without executing JavaScript.
     here_is_how: Here's how
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index 7ca7f63a5b..d21259ee77 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -785,6 +785,9 @@ eu:
       release_notes: Bertsio oharrak
       title: Eguneraketak eskuragarri
       type: Mota
+      types:
+        major: Argitalpen handia
+        minor: Argitalpen txikia
       version: Bertsioa
     statuses:
       account: Egilea
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 5403f22473..2043d327a1 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -1,7 +1,7 @@
 ---
 fi:
   about:
-    about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: Ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu! Pidä tietosi ominasi Mastodonilla!'
+    about_mastodon_html: 'Tulevaisuuden sosiaalinen verkosto: ei mainoksia, ei valvontaa, toteutettu avoimilla protokollilla ja hajautettu rakenne! Pidä tietosi ominasi Mastodonin avulla!'
     contact_missing: Ei asetettu
     contact_unavailable: Ei saatavilla
     hosted_on: Mastodon palvelimella %{domain}
@@ -12,24 +12,24 @@ fi:
       one: seuraaja
       other: seuraajaa
     following: seurattu(a)
-    instance_actor_flash: Tämä on virtuaalitili, jota käytetään edustamaan itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään yhdistämistarkoituksiin, eikä sitä tule jäädyttää.
+    instance_actor_flash: Tämä tili on virtuaalinen toimija, jota käytetään edustamaan itse palvelinta eikä yksittäistä käyttäjää. Sitä käytetään federointitarkoituksiin, eikä sitä tule jäädyttää.
     last_active: viimeksi aktiivinen
     link_verified_on: Tämän linkin omistus on tarkastettu %{date}
     nothing_here: Täällä ei ole mitään!
     pin_errors:
       following: Sinun täytyy seurata henkilöä jota haluat tukea
     posts:
-      one: viesti
+      one: Julkaisu
       other: viestiä
-    posts_tab_heading: Viestit
+    posts_tab_heading: Julkaisut
   admin:
     account_actions:
       action: Suorita toimenpide
-      title: Suorita moderointitoiminto %{acct}
+      title: Suorita valvontatoimi käyttäjälle %{acct}
     account_moderation_notes:
       create: Jätä muistiinpano
-      created_msg: Moderointimerkinnän luonti onnistui!
-      destroyed_msg: Moderointimerkinnän poisto onnistui!
+      created_msg: Valvontamerkinnän luonti onnistui!
+      destroyed_msg: Valvontamerkinnän poisto onnistui!
     accounts:
       add_email_domain_block: Estä sähköpostidomain
       approve: Hyväksy
@@ -48,7 +48,7 @@ fi:
         changed_msg: Rooli vaihdettu onnistuneesti!
         label: Vaihda roolia
         no_role: Ei roolia
-        title: Vaihda roolia käyttäjälle %{username}
+        title: Vaihda käyttäjän %{username} roolia
       confirm: Vahvista
       confirmed: Vahvistettu
       confirming: Vahvistetaan
@@ -61,7 +61,7 @@ fi:
       disable_sign_in_token_auth: Poista sähköpostitunnuksen todennus käytöstä
       disable_two_factor_authentication: Poista 2FA käytöstä
       disabled: Poistettu käytöstä
-      display_name: Nimimerkki
+      display_name: Näyttönimi
       domain: Verkkotunnus
       edit: Muokkaa
       email: Sähköposti
@@ -71,12 +71,12 @@ fi:
       enabled: Käytössä
       enabled_msg: Käyttäjän %{username} tili palautettu onnistuneesti käyttöön
       followers: Seuraajat
-      follows: Seuraa
+      follows: Seuratut
       header: Otsakekuva
       inbox_url: Saapuvan postilaatikon osoite
       invite_request_text: Syitä liittymiseen
       invited_by: Kutsuja
-      ip: IP
+      ip: IP-osoite
       joined: Liittynyt
       location:
         all: Kaikki
@@ -94,9 +94,9 @@ fi:
         disabled: Ei käytössä
         pending: Odottavat
         silenced: Rajoitettu
-        suspended: Jäähyllä
-        title: Moderointi
-      moderation_notes: Moderointimerkinnät
+        suspended: Jäädytetty
+        title: Valvonta
+      moderation_notes: Valvontamerkinnät
       most_recent_activity: Viimeisin toiminta
       most_recent_ip: Viimeisin IP
       no_account_selected: Yhtään tiliä ei muutettu, koska mitään ei valittu
@@ -104,7 +104,7 @@ fi:
       no_role_assigned: Roolia ei ole määritetty
       not_subscribed: Ei tilaaja
       pending: Odottaa tarkistusta
-      perform_full_suspension: Siirrä kokonaan jäähylle
+      perform_full_suspension: Jäädytä
       previous_strikes: Aiemmat varoitukset
       previous_strikes_description_html:
         one: Tällä tilillä on <strong>yksi</strong> varoitus.
@@ -118,7 +118,7 @@ fi:
       reject: Hylkää
       rejected_msg: Käyttäjän %{username} rekisteröitymishakemus hylättiin
       remote_suspension_irreversible: Tämän tilin tiedot on poistettu peruuttamattomasti.
-      remote_suspension_reversible_hint_html: Tili on jäädytetty heidän palvelimellaan, ja tilin kaikki tiedot poistetaan %{date}. Ennen tätä ajankohtaa on kyseessä olevan palvelimen ylläpidolla mahdollisuus palauttaa tili ongelmitta. Jos puolestaan haluat poistaa tilin tietoineen heti, onnistuu se alta.
+      remote_suspension_reversible_hint_html: Tili on jäädytetty heidän palvelimellaan, ja kaikki tiedot poistetaan %{date}. Sitä ennen etäpalvelin voi palauttaa tilin ongelmitta. Jos haluat poistaa kaikki tilin tiedot heti, onnistuu se alta.
       remove_avatar: Poista profiilikuva
       remove_header: Poista otsakekuva
       removed_avatar_msg: Käyttäjän %{username} avatar-kuva poistettu onnistuneesti
@@ -144,21 +144,21 @@ fi:
       show:
         created_reports: Tämän tilin luomat raportit
         targeted_reports: Tästä tilistä tehdyt raportit
-      silence: Hiljennä
-      silenced: Mykistetty
-      statuses: Viestit
+      silence: Rajoita
+      silenced: Rajoitettu
+      statuses: Julkaisut
       strikes: Aiemmat varoitukset
       subscribe: Tilaa
       suspend: Jäädytä
-      suspended: Jäähyllä
-      suspension_irreversible: Tämän tilin tiedot on poistettu peruuttamattomasti. Voit peruuttaa tilin jäädyttämisen, jolloin siitä tulee käyttökelpoinen, mutta toiminto ei palauta sillä aiemmin olleita tietoja.
-      suspension_reversible_hint_html: Tili on jäädytetty, ja tiedot poistetaan kokonaan %{date}. Siihen asti tili voidaan palauttaa ilman haitallisia vaikutuksia. Jos haluat poistaa kaikki tilin tiedot välittömästi, voit tehdä sen alla.
+      suspended: Jäädytetty
+      suspension_irreversible: Tämän tilin tiedot on poistettu peruuttamattomasti. Voit kumota tilin jäädytyksen, jolloin siitä tulee käyttökelpoinen, mutta toiminto ei palauta sillä aiemmin olleita tietoja.
+      suspension_reversible_hint_html: Tili on jäädytetty, ja tiedot poistetaan kokonaan %{date}. Siihen asti tili voidaan palauttaa ongelmitta. Jos haluat poistaa kaikki tilin tiedot heti, onnistuu se alta.
       title: Tilit
       unblock_email: Poista sähköpostiosoitteen esto
       unblocked_email_msg: Käyttäjän %{username} sähköpostiosoitteen esto kumottiin
       unconfirmed_email: Sähköpostia ei vahvistettu
       undo_sensitized: Kumoa pakotus arkaluonteiseksi tiliksi
-      undo_silenced: Peru hiljennys
+      undo_silenced: Kumoa rajoitus
       undo_suspension: Peru jäähy
       unsilenced_msg: Tilin %{username} rajoituksen kumoaminen onnistui
       unsubscribe: Lopeta tilaus
@@ -167,7 +167,7 @@ fi:
       view_domain: Näytä verkkotunnuksen yhteenveto
       warn: Varoita
       web: Verkko
-      whitelisted: Sallittu federaatioon
+      whitelisted: Sallittu federoimaan
     action_logs:
       action_types:
         approve_appeal: Hyväksy valitus
@@ -177,7 +177,7 @@ fi:
         change_role_user: Muuta käyttäjän roolia
         confirm_user: Vahvista käyttäjä
         create_account_warning: Luo varoitus
-        create_announcement: Luo ilmoitus
+        create_announcement: Luo tiedote
         create_canonical_email_block: Luo sähköpostin esto
         create_custom_emoji: Luo mukautettu emoji
         create_domain_allow: Luo verkkotunnuksen salliminen
@@ -187,7 +187,7 @@ fi:
         create_unavailable_domain: Luo ei-saatavilla oleva verkkotunnus
         create_user_role: Luo rooli
         demote_user: Alenna käyttäjä
-        destroy_announcement: Poista ilmoitus
+        destroy_announcement: Poista tiedote
         destroy_canonical_email_block: Poista sähköpostin esto
         destroy_custom_emoji: Poista mukautettu emoji
         destroy_domain_allow: Poista verkkotunnuksen salliminen
@@ -195,7 +195,7 @@ fi:
         destroy_email_domain_block: Poista sähköpostin verkkotunnuksen esto
         destroy_instance: Tyhjennä verkkotunnus
         destroy_ip_block: Poista IP-sääntö
-        destroy_status: Poista viesti
+        destroy_status: Poista julkaisu
         destroy_unavailable_domain: Poista ei-saatavilla oleva verkkotunnus
         destroy_user_role: Hävitä rooli
         disable_2fa_user: Poista kaksivaiheinen tunnistautuminen käytöstä
@@ -215,77 +215,77 @@ fi:
         reset_password_user: Nollaa salasana
         resolve_report: Selvitä raportti
         sensitive_account: Pakotus arkaluontoiseksi tiliksi
-        silence_account: Hiljennä tili
+        silence_account: Rajoita tiliä
         suspend_account: Jäädytä tili
         unassigned_report: Peruuta raportin määritys
         unblock_email_account: Poista sähköpostiosoitteen esto
         unsensitive_account: Kumoa pakotus arkaluontoiseksi tiliksi
-        unsilence_account: Peruuta tilin rajoitus
-        unsuspend_account: Peruuta tilin jäädytys
-        update_announcement: Päivitä ilmoitus
-        update_custom_emoji: Päivitä muokattu emoji
+        unsilence_account: Kumoa tilin rajoitus
+        unsuspend_account: Kumoa tilin jäädytys
+        update_announcement: Päivitä tiedote
+        update_custom_emoji: Päivitä mukautettu emoji
         update_domain_block: Päivitä verkkotunnuksen esto
         update_ip_block: Päivitä IP-sääntö
-        update_status: Päivitä viesti
+        update_status: Päivitä julkaisu
         update_user_role: Päivitä rooli
       actions:
-        approve_appeal_html: "%{name} hyväksyi moderointipäätöksen muutoksenhaun lähettäjältä %{target}"
+        approve_appeal_html: "%{name} hyväksyi valvontapäätöksen valituksen käyttäjältä %{target}"
         approve_user_html: "%{name} hyväksyi käyttäjän rekisteröitymisen kohteesta %{target}"
         assigned_to_self_report_html: "%{name} otti raportin %{target} tehtäväkseen"
         change_email_user_html: "%{name} vaihtoi käyttäjän %{target} sähköpostiosoitteen"
         change_role_user_html: "%{name} muutti käyttäjän %{target} roolia"
         confirm_user_html: "%{name} vahvisti käyttäjän %{target} sähköpostiosoitteen"
         create_account_warning_html: "%{name} lähetti varoituksen käyttäjälle %{target}"
-        create_announcement_html: "%{name} loi uuden ilmoituksen %{target}"
+        create_announcement_html: "%{name} loi uuden tiedotteen %{target}"
         create_canonical_email_block_html: "%{name} esti sähköpostin hashilla %{target}"
         create_custom_emoji_html: "%{name} lähetti uuden emojin %{target}"
-        create_domain_allow_html: "%{name} salli federaation verkkotunnuksella %{target}"
+        create_domain_allow_html: "%{name} salli federoinnin verkkotunnuksen %{target} kanssa"
         create_domain_block_html: "%{name} esti verkkotunnuksen %{target}"
         create_email_domain_block_html: "%{name} esti sähköpostin %{target}"
         create_ip_block_html: "%{name} loi IP-säännön %{target}"
         create_unavailable_domain_html: "%{name} pysäytti toimituksen verkkotunnukseen %{target}"
         create_user_role_html: "%{name} loi roolin %{target}"
         demote_user_html: "%{name} alensi käyttäjän %{target}"
-        destroy_announcement_html: "%{name} poisti ilmoituksen %{target}"
+        destroy_announcement_html: "%{name} poisti tiedotteen %{target}"
         destroy_canonical_email_block_html: "%{name} poisti sähköpostieston hashilla %{target}"
         destroy_custom_emoji_html: "%{name} poisti emojin %{target}"
-        destroy_domain_allow_html: "%{name} esti federaation verkkotunnuksella %{target}"
+        destroy_domain_allow_html: "%{name} kielsi federoinnin verkkotunnuksen %{target} kanssa"
         destroy_domain_block_html: "%{name} poisti verkkotunnuksen %{target} eston"
         destroy_email_domain_block_html: "%{name} poisti sähköpostin verkkotunnuksen %{target} eston"
         destroy_instance_html: "%{name} tyhjensi verkkotunnuksen %{target}"
         destroy_ip_block_html: "%{name} poisti IP-säännön %{target}"
-        destroy_status_html: "%{name} poisti käyttäjän %{target} viestin"
+        destroy_status_html: "%{name} poisti käyttäjän %{target} julkaisun"
         destroy_unavailable_domain_html: "%{name} jatkoi toimitusta verkkotunnukseen %{target}"
         destroy_user_role_html: "%{name} poisti roolin %{target}"
         disable_2fa_user_html: "%{name} poisti käyttäjältä %{target} vaatimuksen kaksivaiheisen todentamiseen"
         disable_custom_emoji_html: "%{name} poisti käytöstä emojin %{target}"
         disable_sign_in_token_auth_user_html: "%{name} poisti sähköpostitunnuksen %{target} todennuksen käytöstä"
         disable_user_html: "%{name} poisti kirjautumisen käyttäjältä %{target}"
-        enable_custom_emoji_html: "%{name} salli emojin %{target}"
-        enable_sign_in_token_auth_user_html: "%{name} aktivoi sähköpostitunnuksen käyttäjälle %{target}"
-        enable_user_html: "%{name} salli kirjautumisen käyttäjälle %{target}"
+        enable_custom_emoji_html: "%{name} otti käyttöön emojin %{target}"
+        enable_sign_in_token_auth_user_html: "%{name} otti todennuksen sähköpostivaltuutuksella käyttöön käyttäjälle %{target}"
+        enable_user_html: "%{name} otti kirjautumisen käyttöön käyttäjälle %{target}"
         memorialize_account_html: "%{name} muutti käyttäjän %{target} tilin muistosivuksi"
         promote_user_html: "%{name} ylensi käyttäjän %{target}"
-        reject_appeal_html: "%{name} hylkäsi moderointipäätöksen muutoksenhaun %{target}"
+        reject_appeal_html: "%{name} hylkäsi valvontapäätöksen valituksen käyttäjältä %{target}"
         reject_user_html: "%{name} hylkäsi käyttäjän rekisteröitymisen kohteesta %{target}"
         remove_avatar_user_html: "%{name} poisti käyttäjän %{target} profiilikuvan"
         reopen_report_html: "%{name} avasi uudelleen raportin %{target}"
-        resend_user_html: "%{name} lähetti vahvistusviestin sähköpostitse käyttäjälle %{target}"
+        resend_user_html: "%{name} lähetti vahvistussähköpostiviestin uudelleen käyttäjälle %{target}"
         reset_password_user_html: "%{name} palautti käyttäjän %{target} salasanan"
         resolve_report_html: "%{name} ratkaisi raportin %{target}"
         sensitive_account_html: "%{name} merkitsi käyttäjän %{target} median arkaluonteiseksi"
-        silence_account_html: "%{name} rajoitti käyttäjän %{target} tilin"
-        suspend_account_html: "%{name} siirsi käyttäjän %{target} jäähylle"
+        silence_account_html: "%{name} rajoitti käyttäjän %{target} tiliä"
+        suspend_account_html: "%{name} jäädytti käyttäjän %{target} tilin"
         unassigned_report_html: "%{name} peruutti raportin määrityksen %{target}"
         unblock_email_account_html: "%{name} poisti käyttäjän %{target} sähköpostiosoitteen eston"
         unsensitive_account_html: "%{name} poisti käyttäjän %{target} median arkaluonteisen merkinnän"
-        unsilence_account_html: "%{name} ei tehnyt rajoitusta %{target} tilille"
-        unsuspend_account_html: "%{name} perui käyttäjän %{target} jäähyn"
-        update_announcement_html: "%{name} päivitti ilmoituksen %{target}"
+        unsilence_account_html: "%{name} kumosi käyttäjän %{target} rajoituksen"
+        unsuspend_account_html: "%{name} kumosi käyttäjän %{target} tilin jäädytyksen"
+        update_announcement_html: "%{name} päivitti tiedotteen %{target}"
         update_custom_emoji_html: "%{name} päivitti emojin %{target}"
         update_domain_block_html: "%{name} päivitti verkkotunnuksen %{target} eston"
         update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}"
-        update_status_html: "%{name} päivitti viestin %{target}"
+        update_status_html: "%{name} päivitti käyttäjän %{target} julkaisun"
         update_user_role_html: "%{name} muutti roolia %{target}"
       deleted_account: poisti tilin
       empty: Lokeja ei löytynyt.
@@ -293,43 +293,43 @@ fi:
       filter_by_user: Suodata käyttäjän mukaan
       title: Auditointiloki
     announcements:
-      destroyed_msg: Ilmoitus poistettu onnistuneesti!
+      destroyed_msg: Tiedote poistettu onnistuneesti!
       edit:
-        title: Muokkaa ilmoitusta
-      empty: Yhtään ilmoitusta ei löytynyt.
-      live: Suora
+        title: Muokkaa tiedotetta
+      empty: Tiedotteita ei löytynyt.
+      live: Julki
       new:
-        create: Luo ilmoitus
-        title: Uusi ilmoitus
+        create: Luo tiedote
+        title: Uusi tiedote
       publish: Julkaise
-      published_msg: Ilmoitus julkaistu onnistuneesti!
-      scheduled_for: Ajastettu %{time}
-      scheduled_msg: Ilmoitus on ajastettu julkaisua varten!
-      title: Ilmoitukset
+      published_msg: Tiedote julkaistu onnistuneesti!
+      scheduled_for: Ajoitettu %{time}
+      scheduled_msg: Tiedotteen julkaisu ajoitettu!
+      title: Tiedotteet
       unpublish: Lopeta julkaisu
-      unpublished_msg: Ilmoituksen julkaisu lopetettu!
-      updated_msg: Ilmoitus päivitetty onnistuneesti!
+      unpublished_msg: Tiedotteen julkaisu lopetettu onnistuneesti!
+      updated_msg: Tiedote päivitetty onnistuneesti!
     critical_update_pending: Kriittinen päivitys odottaa
     custom_emojis:
-      assign_category: Aseta kategoria
+      assign_category: Aseta luokka
       by_domain: Verkkotunnus
       copied_msg: Emojin paikallisen kopion luonti onnistui
       copy: Kopioi
       copy_failed_msg: Emojista ei voitu tehdä paikallista kopiota
-      create_new_category: Luo uusi kategoria
-      created_msg: Emojin luotu!
+      create_new_category: Luo uusi luokka
+      created_msg: Emojin luonti onnistui!
       delete: Poista
-      destroyed_msg: Emojo poistettu!
+      destroyed_msg: Emojon poisto onnistui!
       disable: Poista käytöstä
       disabled: Ei käytössä
-      disabled_msg: Emojin poisto käytöstä onnistui
+      disabled_msg: Emojin käytöstäpoisto onnistui
       emoji: Emoji
       enable: Ota käyttöön
       enabled: Käytössä
       enabled_msg: Emojin käyttöönotto onnistui
       image_hint: PNG tai GIF, enintään %{size}
-      list: Listaa
-      listed: Listassa
+      list: Lisää listalle
+      listed: Listalla
       new:
         title: Lisää uusi mukautettu emoji
       no_emoji_selected: Emojeita ei muutettu, koska yhtään ei valittu
@@ -340,7 +340,7 @@ fi:
       title: Mukautetut emojit
       uncategorized: Luokittelemattomat
       unlist: Poista listalta
-      unlisted: Ei listassa
+      unlisted: Ei listalla
       update_failed_msg: Emojin päivitys epäonnistui
       updated_msg: Emojin päivitys onnistui!
       upload: Lähetä
@@ -349,26 +349,26 @@ fi:
       interactions: vuorovaikutukset
       media_storage: Median tallennustila
       new_users: uudet käyttäjät
-      opened_reports: raportit avattu
+      opened_reports: avatut raportit
       pending_appeals_html:
         one: "<strong>%{count}</strong> vireillä oleva valitus"
-        other: "<strong>%{count}</strong> vireillä olevat valitukset"
+        other: "<strong>%{count}</strong> vireillä olevaa valitusta"
       pending_reports_html:
         one: "<strong>%{count}</strong> odottava raportti"
-        other: "<strong>%{count}</strong> odottavat raportit"
+        other: "<strong>%{count}</strong> odottavaa raporttia"
       pending_tags_html:
-        one: "<strong>%{count}</strong> odottava hashtagi"
+        one: "<strong>%{count}</strong> odottava aihetunniste"
         other: "<strong>%{count}</strong> odottavaa aihetunnistetta"
       pending_users_html:
         one: "<strong>%{count}</strong> odottava käyttäjä"
-        other: "<strong>%{count}</strong> odottavat käyttäjät"
-      resolved_reports: raportit ratkaistu
+        other: "<strong>%{count}</strong> odottavaa käyttäjää"
+      resolved_reports: ratkaistut raportit
       software: Ohjelmisto
       sources: Rekisteröitymisen lähteet
       space: Tilankäyttö
       title: Hallintapaneeli
-      top_languages: Aktiiviset kielet
-      top_servers: Aktiiviset palvelimet
+      top_languages: Aktiivisimmat kielet
+      top_servers: Aktiivisimmat palvelimet
       website: Sivusto
     disputes:
       appeals:
@@ -376,8 +376,8 @@ fi:
         title: Valitukset
     domain_allows:
       add_new: Salli liitto verkkotunnuksella
-      created_msg: Verkkotunnus on onnistuneesti sallittu federaatiolle
-      destroyed_msg: Verkkotunnus on estetty federaatiossa
+      created_msg: Verkkotunnus on onnistuneesti sallittu federoinnille
+      destroyed_msg: Verkkotunnusta on kielletty federoimasta
       export: Vie
       import: Tuo
       undo: Estä liitto verkkotunnukselle
@@ -389,34 +389,34 @@ fi:
         permanent_action: Jäädytyksen kumoaminen ei palauta mitään tietoja tai suhteita.
         preamble_html: Olet jäädyttämässä verkkotunnuksen <strong>%{domain}</strong> ja sen aliverkkotunnukset.
         remove_all_data: Tämä toiminto poistaa palvelimeltasi kaiken sisällön, median ja profiilitiedot tämän palvelun tileiltä.
-        stop_communication: Palvelimesi lopettaa näiden palvelinten viestinnän.
+        stop_communication: Palvelimesi lopettaa viestinnän näiden palvelinten kanssa.
         title: Vahvista verkkotunnuksen %{domain} esto
         undo_relationships: Tämä kumoaa näiden palvelimien ja sinun tilien välisen seurannan.
       created_msg: Verkkotunnuksen estoa käsitellään
       destroyed_msg: Verkkotunnuksen esto on peruttu
       domain: Verkkotunnus
       edit: Muokkaa verkkotunnuksen estoa
-      existing_domain_block: Olet jo asettanut tiukemmat rajoitukset %{name}.
-      existing_domain_block_html: Olet jo asettanut %{name} tiukemmat rajat ja sinun täytyy <a href="%{unblock_url}">poistaa se</a> ensin.
+      existing_domain_block: Olet jo asettanut tiukemmat rajoitukset käyttäjälle %{name}.
+      existing_domain_block_html: Olet jo asettanut tiukemmat rajoitukset käyttäjälle %{name}, joten sinun täytyy <a href="%{unblock_url}">poistaa sen esto</a> ensin.
       export: Vie
       import: Tuo
       new:
         create: Luo esto
-        hint: Verkkotunnuksen esto ei estä tilien luomista ja lisäämistä tietokantaan, mutta se soveltaa näihin tileihin automaattisesti määrättyjä moderointitoimia tilin luomisen jälkeen.
+        hint: Verkkotunnuksen esto ei estä tilien lisäämistä tietokantaan, mutta se soveltaa näihin tileihin takautuvasti ja automaattisesti tiettyjä valvontatoimia.
         severity:
-          desc_html: "<strong>Rajoita</strong> -valinta piilottaa tämän verkkoalueen tilien julkaisut heiltä, jotka eivät seuraa kyseisiä tilejä. <strong>Lopeta</strong> poistaa kaiken sisällön, median ja profiilien tiedot tämän verkkotunnuksen tileiltä palvelimellasi. Käytä valintaa <strong>Ei mitään</strong>, jos haluat vain estää mediatiedostojen julkaisemisen."
+          desc_html: Valinta <strong>Rajoita</strong> piilottaa tässä verkkotunnuksessa sijaitsevien tilien julkaisut kaikilta, jotka eivät seuraa näitä tilejä. Valinta <strong>Jäädytä</strong> poistaa palvelimeltasi kaikkien tässä verkkotunnuksessa sijaitsevien tilien sisällön, median ja profiilitiedot. Käytä valintaa <strong>Ei mitään</strong>, jos haluat vain hylätä mediatiedostot.
           noop: Ei mitään
           silence: Rajoita
-          suspend: Jäähy
+          suspend: Jäädytä
         title: Uusi verkkotunnuksen esto
       no_domain_block_selected: Verkkoalue-estoihin ei tehty muutoksia, koska valintoja ei tehty
       not_permitted: Nykyiset käyttöoikeutesi eivät kata tätä toimintoa
       obfuscate: Peitä verkkotunnuksen nimi
-      obfuscate_hint: Peitä verkkotunnus osittain luettelossa, jos verkkotunnuksen rajoitusten luettelo on käytössä
+      obfuscate_hint: Peitä verkkotunnus osittain luettelossa, jos julkinen verkkotunnusten rajoitusluettelo on käytössä
       private_comment: Yksityinen kommentti
       private_comment_hint: Kommentoi tätä verkkotunnuksen rajoitusta, valvojien sisäiseen käyttöön.
       public_comment: Julkinen kommentti
-      public_comment_hint: Kommentoi tätä verkkotunnukselle koskevaa rajoitusta suurelle yleisölle, jos verkkotunnusten luettelon mainonta on käytössä.
+      public_comment_hint: Kommentoi tätä verkkotunnuksen rajoitusta suurelle yleisölle, jos julkinen verkkotunnusten rajoitusluettelo on käytössä.
       reject_media: Hylkää mediatiedostot
       reject_media_hint: Poistaa paikallisesti tallennetut mediatiedostot eikä lataa niitä enää jatkossa. Ei merkitystä jäähyn kohdalla
       reject_reports: Hylkää raportit
@@ -449,7 +449,7 @@ fi:
       no_file: Yhtäkään tiedostoa ei ole valittu
     export_domain_blocks:
       import:
-        description_html: Olet tuomassa järjestelmään luetteloa verkkoalue-estoista. Tarkista luettelo huolella – etenkin, ellet ole itse tehnyt listausta.
+        description_html: Olet tuomassa verkkotunnusten estoluetteloa. Tarkista luettelo huolella – etenkin, jos et ole laatinut sitä itse.
         existing_relationships_warning: Olemassa olevat seuraussuhteet
         private_comment_description_html: 'Tuodun estolistan alkuperän selvillä pitämiseksi, lisätään tietojen yhteyteen seuraava yksityinen kommentti: <q>%{comment}</q>'
         private_comment_template: Tuotu lähteestä %{source}, pvm %{date}
@@ -459,13 +459,13 @@ fi:
         title: Tuo luettelo verkkoalue-estoista
       no_file: Yhtäkään tiedostoa ei ole valittu
     follow_recommendations:
-      description_html: "<strong>Suositusten noudattaminen auttaa uusia käyttäjiä löytämään nopeasti mielenkiintoista sisältöä.</strong>. Jos käyttäjä ei ole ollut vuorovaikutuksessa tarpeeksi muiden kanssa luodakseen henkilökohtaisia seuraajia, näitä muita tilejä suositellaan sen sijaan. Ne lasketaan uudelleen päivittäin yhdistelmästä tilejä, joilla on korkein viimeaikainen käyttö ja korkein paikallinen seuraajien määrä tietyllä kielellä."
+      description_html: "<strong>Seuraamissuositukset auttavat uusia käyttäjiä löytämään nopeasti kiinnostavaa sisältöä</strong>. Kun käyttäjä ei ole ollut tarpeeksi vuorovaikutuksessa muiden kanssa, jotta hänelle olisi muodostunut henkilökohtaisia seuraamissuosituksia, suositellaan niiden sijaan näitä tilejä. Ne lasketaan päivittäin uudelleen yhdistelmästä tilejä, jotka ovat viime aikoina olleet aktiivisimmin sitoutuneita ja joilla on suurimmat paikalliset seuraajamäärät tietyllä kielellä."
       language: Kielelle
       status: Tila
-      suppress: Peitä noudata suosituksia
-      suppressed: Rajoitettu
-      title: Noudata suosituksia
-      unsuppress: Palauta seuraa suositus
+      suppress: Hylkää seuraamissuositus
+      suppressed: Hylätty
+      title: Seuraamissuositukset
+      unsuppress: Palauta seuraamissuositus
     instances:
       availability:
         description_html:
@@ -490,7 +490,7 @@ fi:
         policies:
           reject_media: Hylkää media
           reject_reports: Hylkää raportit
-          silence: Rajoitus
+          silence: Rajoita
           suspend: Jäädytä
         policy: Käytännöt
         reason: Julkinen syy
@@ -503,7 +503,7 @@ fi:
         instance_languages_dimension: Suosituimmat kielet
         instance_media_attachments_measure: tallennetut median liitteet
         instance_reports_measure: niitä koskevat raportit
-        instance_statuses_measure: tallennetut viestit
+        instance_statuses_measure: tallennetut julkaisut
       delivery:
         all: Kaikki
         clear: Tyhjennä toimitusvirheet
@@ -522,12 +522,12 @@ fi:
       moderation:
         all: Kaikki
         limited: Rajoitettu
-        title: Moderointi
+        title: Valvonta
       private_comment: Yksityinen kommentti
       public_comment: Julkinen kommentti
       purge: Tyhjennä
-      purge_description_html: Jos uskot tämän verkkotunnuksen olevan offline-tilassa, voit poistaa kaikki tilitietueet ja niihin liittyvät tiedot sinun tallennustilasta. Tämä voi kestää jonkin aikaa.
-      title: Tiedossa olevat instanssit
+      purge_description_html: Jos uskot, että tämä verkkotunnus on offline-tilassa tarkoituksella, voit poistaa kaikki verkkotunnuksen tilitietueet ja niihin liittyvät tiedot tallennustilastasi. Tämä voi kestää jonkin aikaa.
+      title: Federointi
       total_blocked_by_us: Estetty meidän toimesta
       total_followed_by_them: Heidän seuraama
       total_followed_by_us: Meidän seuraama
@@ -562,11 +562,11 @@ fi:
     relays:
       add_new: Lisää uusi välittäjä
       delete: Poista
-      description_html: "<strong>federaatiovälittäjä</strong> on välityspalvelin, joka siirtää siihen liittyneiden palvelimien välillä suuria julksia viestimääriä. <strong>Tämä voi auttaa pieniä ja keskikokoisia palvelimia löytämään fediversen sisältöä</strong>, joka muutoin vaatisi paikallisia käyttäjiä seuraamaan etäpalvelimien käyttäjiä manuaalisesti."
+      description_html: "<strong>Federointivälittäjä</strong> on välityspalvelin, joka siirtää suuria määriä julkisia julkaisuja siihen liittyneiden palvelinten välillä. <strong>Se voi auttaa pieniä ja keskisuuria palvelimia löytämään fediversumin sisältöä</strong>, mikä muutoin vaatisi paikallisia käyttäjiä seuraamaan etäpalvalinten käyttäjiä manuaalisesti."
       disable: Poista käytöstä
-      disabled: Ei käytössä
+      disabled: Poissa käytöstä
       enable: Ota käyttöön
-      enable_hint: Kun tämä on otettu käyttöön, palvelimesi liittyy välittäjään ja vastaanottaa jatkossa kaikki sen jakelemat julkiset julkaisut sekä välittää omat julkiset julkaisunsa sille.
+      enable_hint: Kun tämä on otettu käyttöön, palvelimesi tilaa välittäjältä kaikki sen välittämät julkiset julkaisut ja alkaa lähettää omansa sille.
       enabled: Käytössä
       inbox_url: Välittäjän URL
       pending: Odotetaan välittäjän hyväksyntää
@@ -584,15 +584,15 @@ fi:
           one: "%{count} ilmoitus"
           other: "%{count} ilmoitusta"
       action_log: Tarkastusloki
-      action_taken_by: Toimenpiteen tekijä
+      action_taken_by: Toimen tehnyt
       actions:
-        delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista.
-        mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit kärjistää saman tilin tulevia rikkomuksia.
-        other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi.
-        resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan.
-        silence_description_html: Tili näkyy vain niille, jotka jo seuraavat sitä tai estävät sen manuaalisesti, mikä rajoittaa merkittävästi sen kattavuutta. Se voidaan aina palauttaa. Sulkee kaikki raportit tätä tiliä vastaan.
-        suspend_description_html: Tili ja kaikki sen sisältö eivät ole käytettävissä ja vuorovaikutus sen kanssa on mahdotonta, sekä lopulta poistetaan. Palautettava 30 päivän kuluessa. Sulkee kaikki raportit tätä tiliä vastaan.
-      actions_description_html: Päätä, mihin toimiin ryhdyt tämän ilmoituksen ratkaisemiseksi. Jos ryhdyt rangaistustoimeen ilmoitettua tiliä vastaan, heille lähetetään sähköposti-ilmoitus, paitsi jos <strong>Roskaposti</strong> luokka on valittuna.
+        delete_description_html: Raportoidut julkaisut poistetaan ja kirjataan varoitus, joka auttaa suhtautumaan vakavammin saman tilin tuleviin rikkomuksiin.
+        mark_as_sensitive_description_html: Raportoitujen julkaisujen media merkitään arkaluonteiseksi ja kirjataan varoitus, joka auttaa suhtautumaan vakavammin saman tilin tuleviin rikkomuksiin.
+        other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja raportoidulle tilille kohdistuvan viestinnän mukauttamiseksi.
+        resolve_description_html: Ilmoitettua tiliä kohtaan ei ryhdytä toimiin, varoitusta ei kirjata ja raportti suljetaan.
+        silence_description_html: Tili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi sen tavoitettavuutta. Voidaan perua milloin vain. Sulkee kaikki tilin vastaiset raportit.
+        suspend_description_html: Tili ja mikään sen sisältö eivät ole käytettävissä, ja lopulta ne poistetaan, ja vuorovaikutus tilin kanssa on mahdotonta. Peruttavissa 30 päivän ajan. Sulkee kaikki tämän tilin vastaiset raportit.
+      actions_description_html: Päätä, mihin toimiin ryhdyt tämän raportin ratkaisemiseksi. Jos ryhdyt rangaistustoimeen ilmoitettua tiliä kohtaan, hänelle lähetetään sähköposti-ilmoitus, paitsi jos <strong>Roskaposti</strong>-luokka on valittuna.
       actions_description_remote_html: Päätä, mihin toimiin ryhdyt tämän raportin ratkaisemiseksi. Tämä vaikuttaa vain siihen, miten <strong>palvelimesi</strong> kommunikoi tämän etätilin kanssa ja käsittelee sen sisältöä.
       add_to_report: Lisää raporttiin
       are_you_sure: Oletko varma?
@@ -600,15 +600,15 @@ fi:
       assigned: Määritetty valvoja
       by_target_domain: Ilmoitetun tilin verkkotunnus
       cancel: Peruuta
-      category: Kategoria
-      category_description_html: Syy, miksi tämä tili ja/tai sisältö ilmoitettiin, mainitaan yhteydenotossa ilmoitettuun tiliin
+      category: Luokka
+      category_description_html: Syy siihen, miksi tämä tili ja/tai sisältö raportoitiin, mainitaan ilmoitetun tilin kanssa viestiessä
       comment:
         none: Ei mitään
       comment_description_html: 'Antaakseen lisätietoja %{name} kirjoitti:'
       confirm: Vahvista
-      confirm_action: Vahvista moderointitoiminto käyttäjää @%{acct} kohtaan
+      confirm_action: Vahvista valvontatoimi käyttäjää @%{acct} kohtaan
       created_at: Raportoitu
-      delete_and_resolve: Poista viestejä
+      delete_and_resolve: Poista julkaisut
       forwarded: Välitetty
       forwarded_to: Välitetty %{domain}
       mark_as_resolved: Merkitse ratkaistuksi
@@ -638,22 +638,22 @@ fi:
       statuses_description_html: Loukkaava sisältö mainitaan ilmoitetun tilin yhteydessä
       summary:
         action_preambles:
-          delete_html: 'Olet aikeissa <strong>poistaa</strong> joitain käyttäjän <strong>@%{acct}</strong> viestejä. Tästä seuraa:'
-          mark_as_sensitive_html: 'Olet aikeissa <strong>merkitä</strong> joitain käyttäjän <strong>@%{acct}</strong> viestejä <strong>arkaluonteisiksi</strong>. Tästä seuraa:'
+          delete_html: 'Olet aikeissa <strong>poistaa</strong> käyttäjän <strong>@%{acct}</strong> julkaisuja. Tästä seuraa:'
+          mark_as_sensitive_html: 'Olet aikeissa <strong>merkitä</strong> käyttäjän <strong>@%{acct}</strong> julkaisuja <strong>arkaluonteisiksi</strong>. Tästä seuraa:'
           silence_html: 'Olet aikeissa <strong>rajoittaa</strong> käyttäjän <strong>@%{acct}</strong> tiliä. Tästä seuraa:'
-          suspend_html: 'Olet aikeissa <strong>rajoittaa</strong> käyttäjän <strong>@%{acct}</strong> tiliä. Tästä seuraa:'
+          suspend_html: 'Olet aikeissa <strong>jäädyttää</strong> käyttäjän <strong>@%{acct}</strong> tilin. Tästä seuraa:'
         actions:
-          delete_html: Loukkaavat viestit poistetaan
-          mark_as_sensitive_html: Loukkaavien viestien media merkitään arkaluonteiseksi
-          silence_html: Vakavasti rajoittaa käyttäjän <strong>@%{acct}</strong> tavoitettavuutta tekemällä profiilista ja sen sisällöstä näkyviä vain jo häntä seuraaville tai niille, jotka etsivät profiilia manuaalisesti
-          suspend_html: Rajoita <strong>@%{acct}</strong>, jolloin heidän profiilinsa ja sisällönsä ei ole käytettävissä ja on mahdotonta olla vuorovaikutuksessa
+          delete_html: Poista loukkaavat julkaisut
+          mark_as_sensitive_html: Merkitse loukkaavien julkaisujen media arkaluonteiseksi
+          silence_html: Rajoita merkittävästi käyttäjän <strong>@%{acct}</strong> tavoitettavuutta tekemällä profiilista ja sen sisällöstä näkyviä vain niille, jotka jo seuraavat tiliä tai etsivät sen manuaalisesti
+          suspend_html: Jäädytä <strong>@%{acct}</strong>, jolloin hänen profiilinsa ja sisältönsä ei ole käytettävissä ja hänen kanssaan on mahdotonta olla vuorovaikutuksessa
         close_report: 'Merkitse raportti #%{id} selvitetyksi'
         close_reports_html: Merkitse <strong>kaikki</strong> käyttäjään <strong>@%{acct}</strong> kohdistuvat raportit ratkaistuiksi
-        delete_data_html: Poista <strong>@%{acct}</strong>profiili ja sisältö 30 päivän kuluttua, ellei jäädytystä tällä välin peruuteta
+        delete_data_html: Poista käyttäjän <strong>@%{acct}</strong> profiili ja sen sisältö 30 päivän kuluttua, ellei jäädytystä sillä välin kumota
         preview_preamble_html: "<strong>@%{acct}</strong> saa varoituksen, jonka sisältö on seuraava:"
         record_strike_html: Tallenna varoitus <strong>@%{acct}</strong> vastaan, joka auttaa sinua selvittämään tulevia rikkomuksia tältä tililtä
         send_email_html: Lähetä käyttäjälle <strong>@%{acct}</strong> varoitus sähköpostitse
-        warning_placeholder: Valinnaiset lisäperustelut moderointitoimenpiteelle.
+        warning_placeholder: Valinnaiset lisäperustelut valvontatoimelle.
       target_origin: Raportoidun tilin alkuperä
       title: Raportit
       unassign: Määrittämätön
@@ -670,10 +670,10 @@ fi:
         administration: Ylläpito
         devops: DevOps
         invites: Kutsut
-        moderation: Moderointi
+        moderation: Valvonta
         special: Erikois
       delete: Poista
-      description_html: Käyttäjän <strong>roolit</strong>, voit muokata toimintoja ja alueita mitä sinun Mastodon käyttäjät voivat käyttää.
+      description_html: "<strong>Käyttäjärooleilla</strong> voit muokata, mihin toimintoihin ja alueisiin käyttäjäsi pääsevät käsiksi."
       edit: Muokkaa "%{name}" roolia
       everyone: Oletus käyttöoikeudet
       everyone_full_description_html: Tämä on <strong>perusrooli</strong> joka vaikuttaa <strong>kaikkiin käyttäjiin</strong>, jopa ilman määrättyä roolia. Kaikki muut roolit perivät sen käyttöoikeudet.
@@ -687,34 +687,34 @@ fi:
         delete_user_data_description: Salli käyttäjien poistaa muiden käyttäjien tiedot viipymättä
         invite_users: Kutsu käyttäjiä
         invite_users_description: Sallii käyttäjien kutsua uusia ihmisiä palvelimelle
-        manage_announcements: Hallitse Ilmoituksia
-        manage_announcements_description: Salli käyttäjien hallita ilmoituksia palvelimella
+        manage_announcements: Hallitse tiedotteita
+        manage_announcements_description: Sallii käyttäjien hallita tiedotteita palvelimella
         manage_appeals: Hallitse valituksia
-        manage_appeals_description: Antaa käyttäjien tarkastella valvontatoimia koskevia valituksia
-        manage_blocks: Hallitse lohkoja
-        manage_blocks_description: Sallii käyttäjien estää sähköpostipalvelujen ja IP-osoitteiden käytön
-        manage_custom_emojis: Hallita mukautettuja hymiöitä
-        manage_custom_emojis_description: Salli käyttäjien hallita mukautettuja hymiöitä palvelimella
-        manage_federation: Hallita liitoksia
-        manage_federation_description: Sallii käyttäjien estää tai sallia liitoksen muiden verkkotunnusten kanssa ja hallita toimitusta
-        manage_invites: Hallita kutsuja
+        manage_appeals_description: Sallii käyttäjien tarkistaa valvontatoimia koskevia valituksia
+        manage_blocks: Hallitse estoja
+        manage_blocks_description: Sallii käyttäjien estää sähköpostipalveluntarjoajia ja IP-osoitteita
+        manage_custom_emojis: Hallitse mukautettuja emojeita
+        manage_custom_emojis_description: Sallii käyttäjien hallita mukautettuja emojeita palvelimella
+        manage_federation: Hallitse federointia
+        manage_federation_description: Sallii käyttäjien estää tai sallia federointi muiden verkkotunnusten kanssa ja hallita toimitusta
+        manage_invites: Hallitse kutsuja
         manage_invites_description: Sallii käyttäjien selata ja poistaa kutsulinkkejä käytöstä
-        manage_reports: Hallita raportteja
-        manage_reports_description: Sallii käyttäjien tarkastella raportteja ja suorittaa valvontatoimia niitä vastaan
-        manage_roles: Hallita rooleja
+        manage_reports: Hallitse raportteja
+        manage_reports_description: Sallii käyttäjien tarkistaa raportteja ja suorittaa valvontatoimia niitä vastaan
+        manage_roles: Hallitse rooleja
         manage_roles_description: Sallii käyttäjien hallita ja määrittää rooleja heidän alapuolellaan
-        manage_rules: Hallita sääntöjä
-        manage_rules_description: Sallii käyttäjien vaihtaa palvelinsääntöjä
-        manage_settings: Hallita asetuksia
-        manage_settings_description: Salli käyttäjien muuttaa sivuston asetuksia
-        manage_taxonomies: Hallita luokittelua
+        manage_rules: Hallitse sääntöjä
+        manage_rules_description: Sallii käyttäjien muuttaa palvelimen sääntöjä
+        manage_settings: Hallitse asetuksia
+        manage_settings_description: Sallii käyttäjien muuttaa sivuston asetuksia
+        manage_taxonomies: Hallitse luokittelua
         manage_taxonomies_description: Sallii käyttäjien tarkistaa nousussa olevan sisällön ja päivittää aihetunnisteiden asetuksia
-        manage_user_access: Hallita käyttäjän oikeuksia
-        manage_user_access_description: Sallii käyttäjien poistaa käytöstä muiden käyttäjien kaksivaiheisen todennuksen, muuttaa heidän sähköpostiosoitettaan ja nollata heidän salasanansa
-        manage_users: Hallita käyttäjiä
-        manage_users_description: Sallii käyttäjien tarkastella muiden käyttäjien tietoja ja suorittaa valvontatoimia heitä vastaan
-        manage_webhooks: Hallita Webhookit
-        manage_webhooks_description: Sallii käyttäjien luoda webhookit hallinnollisiin tapahtumiin
+        manage_user_access: Hallitse käyttäjäoikeuksia
+        manage_user_access_description: Sallii käyttäjien poistaa muiden käyttäjien kaksivaiheinen todennus käytöstä, vaihtaa heidän sähköpostiosoitteensa ja nollata heidän salasanansa
+        manage_users: Hallitse käyttäjiä
+        manage_users_description: Sallii käyttäjien tarkastella muiden käyttäjien tietoja ja suorittaa valvontatoimia heitä kohtaan
+        manage_webhooks: Hallitse webhookeja
+        manage_webhooks_description: Sallii käyttäjien luoda webhookeja hallinnollisiin tapahtumiin
         view_audit_log: Katsoa valvontalokia
         view_audit_log_description: Sallii käyttäjien nähdä palvelimen hallinnollisten toimien historian
         view_dashboard: Näytä koontinäyttö
@@ -725,21 +725,21 @@ fi:
     rules:
       add_new: Lisää sääntö
       delete: Poista
-      description_html: Vaikka useimmat väittävät, että ovat lukenut ja hyväksyneet käyttöehdot niin yleensä ihmiset eivät lue niitä läpi ennen kuin ongelma syntyy. <strong>Tee helpoksi nähdä palvelimen säännöt yhdellä silmäyksellä tarjoamalla ne tiiviissä luettelossa.</strong> Yritä pitää säännöt lyhyinä ja yksinkertaisina, mutta yritä olla jakamatta niitä moniin erillisiin kohteisiin.
+      description_html: Vaikka useimmat väittävät, että ovat lukeneet ja hyväksyneet käyttöehdot, niin yleensä ihmiset eivät lue niitä läpi ennen kuin ilmenee ongelma. <strong>Helpota palvelimen sääntöjen näkemistä yhdellä silmäyksellä tarjoamalla ne tiiviissä luettelossa.</strong> Yritä pitää säännöt lyhyinä ja yksinkertaisina, mutta yritä olla jakamatta niitä useisiin erillisiin kohtiin.
       edit: Muokkaa sääntöä
       empty: Palvelimen sääntöjä ei ole vielä määritelty.
       title: Palvelimen säännöt
     settings:
       about:
-        manage_rules: Hallinnoi palvelimen sääntöjä
+        manage_rules: Hallitse palvelimen sääntöjä
         preamble: Anna perusteellista tietoa siitä, miten palvelinta käytetään, valvotaan, rahoitetaan.
         rules_hint: On olemassa erityinen alue sääntöjä, joita käyttäjien odotetaan noudattavan.
         title: Tietoja
       appearance:
-        preamble: Muokkaa Mastodonin web-käyttöliittymää.
+        preamble: Mukauta Mastodonin verkkokäyttöliittymää.
         title: Ulkoasu
       branding:
-        preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voidaan näyttää useissa eri ympäristöissä, kuten Mastodonin käyttöliittymässä, sovelluksissa, linkkien esikatselu muilla sivustoilla ja viestisovelluksien sisällä ja niin edelleen. Tästä syystä on parasta pitää nämä tiedot selkeinä, lyhyinä ja ytimekkäinä.
+        preamble: Palvelimesi brändäys erottaa sen muista verkon palvelimista. Nämä tiedot voivat näkyä monissa eri ympäristöissä, kuten Mastodonin verkkokäyttöliittymässä, natiivisovelluksissa, linkkien esikatseluissa muilla sivustoilla, viestintäsovelluksissa ja niin edelleen. Siksi nämä tiedot kannattaa pitää selkeinä, lyhyinä ja ytimekkäinä.
         title: Brändäys
       captcha_enabled:
         desc_html: Tämä perustuu ulkoisiin skripteihin hCaptchasta, mikä voi olla turvallisuus- ja yksityisyysongelma. Lisäksi <strong>tämä voi tehdä rekisteröinnin ihmisille huomattavasti (erityisesti vammaisten) helpommaksi</strong>. Harkitse vaihtoehtoisia toimenpiteitä, kuten hyväksymisperusteista tai kutsupohjaista rekisteröintiä.
@@ -751,7 +751,7 @@ fi:
         desc_html: Vaikuttaa kaikkiin käyttäjiin, jotka eivät ole muuttaneet tätä asetusta itse
         title: Jätä käyttäjät oletusarvoisesti hakukoneindeksoinnin ulkopuolelle
       discovery:
-        follow_recommendations: Noudata suosituksia
+        follow_recommendations: Seuraamissuositukset
         preamble: Mielenkiintoisen sisällön esille tuominen auttaa saamaan uusia käyttäjiä, jotka eivät ehkä tunne ketään Mastodonista. Määrittele, kuinka erilaiset etsintäominaisuudet toimivat palvelimellasi.
         profile_directory: Profiilihakemisto
         public_timelines: Julkiset aikajanat
@@ -773,7 +773,7 @@ fi:
           open: Kaikki voivat rekisteröityä
       security:
         authorized_fetch: Vaadi todennus yhdistetyiltä palvelimilta
-        authorized_fetch_hint: Todennuksen vaatiminen yhdistetyiltä palvelimilta mahdollistaa sekä käyttäjätason että palvelintason alueiden tiukemmat estot. Tämä tapahtuu kuitenkin suorituskyvyn kustannuksella, vähentää vastauksien ulottuvuutta ja voi luoda yhteensopivuusongelmia joidenkin yhdistettyjen palveluiden kanssa. Lisäksi, tämä ei myöskään estä muita toimijoita hakemasta julkisia viestejäsi ja tilejäsi.
+        authorized_fetch_hint: Todennuksen vaatiminen federoiduilta palvelimilta mahdollistaa sekä käyttäjä- että palvelintason estojen tiukemman valvonnan. Tämä tapahtuu kuitenkin suorituskyvyn kustannuksella, vähentää vastauksiesi tavoittavuutta ja voi aiheuttaa yhteensopivuusongelmia joidenkin federoitujen palvelujen kanssa. Tämä ei myöskään estä omistautuneita toimijoita hakemasta julkisia julkaisujasi ja tilejäsi.
         authorized_fetch_overridden_hint: Et voi tällä hetkellä muuttaa tätä asetusta, koska se on ohitettu ympäristömuuttujalla.
         federation_authentication: Yhdistettyjen palvelinten todentamisen täytäntöönpano
       title: Palvelimen asetukset
@@ -808,23 +808,23 @@ fi:
       media:
         title: Media
       metadata: Metadata
-      no_status_selected: Viestejä ei muutettu, koska yhtään ei ole valittuna
-      open: Avaa viesti
-      original_status: Alkuperäinen viesti
+      no_status_selected: Julkaisuja ei muutettu, koska yhtään ei ole valittuna
+      open: Avaa julkaisu
+      original_status: Alkuperäinen julkaisu
       reblogs: Edelleen jako
-      status_changed: Viesti muutettu
+      status_changed: Julkaisua muutettu
       title: Tilin tilat
       trending: Nousussa
       visibility: Näkyvyys
       with_media: Sisältää mediaa
     strikes:
       actions:
-        delete_statuses: "%{name} poisti käyttäjän %{target} viestit"
+        delete_statuses: "%{name} poisti käyttäjän %{target} julkaisut"
         disable: "%{name} jäädytti %{target} tilin"
-        mark_statuses_as_sensitive: "%{name} merkitsi käyttäjän %{target} viestit arkaluonteisiksi"
+        mark_statuses_as_sensitive: "%{name} merkitsi käyttäjän %{target} julkaisut arkaluonteisiksi"
         none: "%{name} lähetti varoituksen henkilölle %{target}"
         sensitive: "%{name} merkitsi käyttäjän %{target} tilin arkaluonteiseksi"
-        silence: "%{name} rajoitti käyttäjän %{target} tilin"
+        silence: "%{name} rajoitti käyttäjän %{target} tiliä"
         suspend: "%{name} jäädytti käyttäjän %{target} tilin"
       appeal_approved: Valitti
       appeal_pending: Valitus vireillä
@@ -852,8 +852,8 @@ fi:
         message_html: 'Yhteensopimaton Elasticsearch versio: %{value}'
         version_comparison: Elasticsearch %{running_version} on käynnissä, kun %{required_version} vaaditaan
       rules_check:
-        action: Hallinnoi palvelimen sääntöjä
-        message_html: Et ole määrittänyt mitään palvelimen sääntöä.
+        action: Hallitse palvelimen sääntöjä
+        message_html: Et ole määrittänyt lainkaan palvelimen sääntöjä.
       sidekiq_process_check:
         message_html: Ei ole Sidekiq-prosessia käynnissä jonossa %{value}. Tarkista Sidekiq-asetukset
       software_version_critical_check:
@@ -864,7 +864,7 @@ fi:
         message_html: Mastodonin virhekorjauspäivitys on saatavilla.
       upload_check_privacy_error:
         action: Katso täältä lisätietoja
-        message_html: "<strong>Verkkopalvelimesi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa.</strong>"
+        message_html: "<strong>Verkkopalvelimesi on määritetty väärin. Käyttäjiesi yksityisyys on vaarassa.</strong>"
       upload_check_privacy_error_object_storage:
         action: Katso täältä lisätietoja
         message_html: "<strong>Objektivarastosi on määritetty virheellisesti, ja käyttäjiesi yksityisyys on vaarassa.</strong>"
@@ -900,17 +900,17 @@ fi:
         title: Julkaisijat
       rejected: Hylätty
       statuses:
-        allow: Salli viesti
+        allow: Salli julkaisu
         allow_account: Salli tekijä
-        description_html: Nämä ovat viestejä, jotka palvelimesi tietää tällä hetkellä jaetuksi ja suosituksi. Tämä voi auttaa uusia ja palaavia ihmisiä löytämään lisää ihmisiä, joita seurata seurata. Julkaisuja ei näytetä julkisesti ennen kuin hyväksyt tekijän ja kirjoittaja sallii tilinsä ehdottamisen muille. Voit myös sallia tai hylätä yksittäiset viestit.
-        disallow: Estä viesti
+        description_html: Nämä ovat julkaisuja, joita palvelimesi tietää jaettavan ja lisättävän suosikkeihin paljon tällä hetkellä. Listaus voi auttaa uusia ja palaavia käyttäjiäsi löytämään lisää seurattavia. Julkaisut eivät näy julkisesti ennen kuin hyväksyt niiden julkaisijan ja julkaisija sallii tilinsä ehdottamisen. Voit myös sallia tai hylätä yksittäisiä julkaisuja.
+        disallow: Kiellä julkaisu
         disallow_account: Estä tekijä
-        no_status_selected: Suosittuja viestejä ei muutettu, koska yhtään ei valittu
+        no_status_selected: Suosittuja julkaisuja ei muutettu, koska yhtään ei ole valittuna
         not_discoverable: Tekijä ei ole ilmoittanut olevansa löydettävissä
         shared_by:
-          one: Jaettu tai merkitty suosikiksi kerran
+          one: Jaettu tai lisätty suosikkeihin kerran
           other: Jaettu tai merkitty suosikiksi %{friendly_count} kertaa
-        title: Suositut viestit
+        title: Suositut julkaisut
       tags:
         current_score: Nykyinen tulos %{score}
         dashboard:
@@ -941,15 +941,15 @@ fi:
       delete: Poista
       edit_preset: Muokkaa varoituksen esiasetusta
       empty: Et ole vielä määrittänyt yhtäkään varoitusten esiasetusta.
-      title: Hallinnoi varoitusten esiasetuksia
+      title: Hallitse varoitusten esiasetuksia
     webhooks:
       add_new: Lisää päätepiste
       delete: Poista
-      description_html: "<strong>Webhook</strong> mahdollistaa Mastodonin työntää <strong>reaaliaikaisia ilmoituksia</strong> valituista tapahtumista omaan sovellukseesi, joten sovelluksesi voi <strong>laukaista automaattisesti reaktioita</strong>."
+      description_html: "<strong>Webhookin</strong> avulla Mastodon voi puskea sovellukseesi <strong>reaaliaikaisia ilmoituksia</strong> valituista tapahtumista, jotta sovelluksesi voi <strong>laukaista reaktioita automaattisesti</strong>."
       disable: Poista käytöstä
-      disabled: Ei käytössä
+      disabled: Pois käytöstä
       edit: Muokkaa päätepistettä
-      empty: Sinulla ei ole vielä määritetty webhook-päätepisteitä.
+      empty: Et ole vielä määrittänyt webhook-päätepisteitä.
       enable: Ota käyttöön
       enabled: Aktiivinen
       enabled_events:
@@ -965,16 +965,16 @@ fi:
   admin_mailer:
     new_appeal:
       actions:
-        delete_statuses: poistaa heidän viestit
+        delete_statuses: poistaa hänen julkaisunsa
         disable: jäädyttää heidän tilinsä
-        mark_statuses_as_sensitive: merkitä heidän viestinsä arkaluonteisiksi
+        mark_statuses_as_sensitive: merkitä hänen julkaisunsa arkaluonteisiksi
         none: varoitus
         sensitive: merkitä heidän tilinsä arkaluonteiseksi
-        silence: rajoittaa heidän tilinsä
-        suspend: jäädyttää heidän tilinsä
-      body: "%{target} on valittanut valvojan päätöksestä %{action_taken_by} aika %{date}, joka oli %{type}. He kirjoittivat:"
-      next_steps: Voit hyväksyä vetoomuksen ja kumota päätöksen tai jättää sen huomiotta.
-      subject: "%{username} valittaa valvojan päätöksestä, joka koskee instanssia %{instance}"
+        silence: rajoittaa hänen tiliään
+        suspend: jäädyttää hänen tilinsä
+      body: "%{target} valittaa valvojan %{action_taken_by} päätöksestä %{date}, joka oli %{type}. Hän kirjoitti:"
+      next_steps: Voit hyväksyä valituksen, jolloin valvontapäätös kumoutuu, tai sivuuttaa sen.
+      subject: "%{username} valittaa valvontapäätöksestä, joka koskee instanssia %{instance}"
     new_critical_software_updates:
       body: Mastodonin uusia kriittisen tärkeitä versioita on julkaistu, joten saatat haluta päivittää niin pian kuin mahdollista!
       subject: Kriittisiä Mastodon-päivityksiä on saatavilla instanssille %{instance}!
@@ -983,7 +983,7 @@ fi:
       subject: Uusi tili tarkastettavana instanssissa %{instance} (%{username})
     new_report:
       body: "%{reporter} on raportoinut kohteen %{target}"
-      body_remote: Joku osoitteesta %{domain} on raportoinut kohteen %{target}
+      body_remote: Joku palvelimelta %{domain} raportoi käyttäjän %{target}
       subject: Uusi raportti instanssista %{instance} (nro %{id})
     new_software_updates:
       body: Uusia Mastodon-versioita on julkaistu, joten saatat haluta päivittää!
@@ -993,7 +993,7 @@ fi:
       new_trending_links:
         title: Suositut linkit
       new_trending_statuses:
-        title: Suositut viestit
+        title: Suositut julkaisut
       new_trending_tags:
         no_approved_tags: Tällä hetkellä ei ole hyväksyttyjä trendikkäitä aihetunnisteita.
         requirements: 'Mikä tahansa näistä ehdokkaista voisi ylittää #%{rank} hyväksytyn trendikkään aihetunnisteen, joka on tällä hetkellä #%{lowest_tag_name} arvosanalla %{lowest_tag_score}.'
@@ -1004,14 +1004,14 @@ fi:
     created_msg: Uusi alias luotiin onnistuneesti. Voit nyt aloittaa siirron vanhasta tilistä.
     deleted_msg: Alias poistettiin onnistuneesti. Siirtyminen tuolta tililtä tähän ei ole enää mahdollista.
     empty: Sinulla ei ole aliaksia.
-    hint_html: Jos haluat siirtyä toisesta tilistä tähän tiliin, voit luoda aliasin, joka on pakollinen, ennen kuin voit siirtää seuraajia vanhasta tilistä tähän tiliin. Tämä toiminto on itsessään <strong>vaaraton ja palautuva</strong>. <strong>Tilin siirtyminen aloitetaan vanhalta tililtä</strong>.
+    hint_html: Jos haluat muuttaa toiselta tililtä tälle tilille, voit luoda tässä aliaksen, mitä vaaditaan ennen kuin voit edetä siirtämään seuraajat vanhalta tililtä tälle tilille. Tänä toiminto on itsessään <strong>vaaraton ja kumottavissa</strong>. <strong>Tilin muuttaminen aloitetaan vanhalta tililtä</strong>.
     remove: Poista aliaksen linkitys
   appearance:
     advanced_web_interface: Edistynyt selainkäyttöliittymä
-    advanced_web_interface_hint: 'Jos haluat käyttää koko näytön leveyttä, edistyneen web-käyttöliittymän avulla voit määrittää useita eri sarakkeita näyttämään niin paljon tietoa samanaikaisesti kuin haluat: Koti, ilmoitukset, yhdistetty aikajana, mikä tahansa määrä luetteloita ja aihetunnisteita.'
+    advanced_web_interface_hint: 'Jos haluat hyödyntää näytön koko leveyttä, edistyneen webkäyttöliittymän avulla voit määrittää useita erilaisia sarakkeita, niin näet kerralla niin paljon tietoa kuin haluat: kotisyöte, ilmoitukset, yleinen aikajana, mikä tahansa määrä listoja ja aihetunnisteita.'
     animations_and_accessibility: Animaatiot ja saavutettavuus
     confirmation_dialogs: Vahvistusvalinnat
-    discovery: Löydöt
+    discovery: Löytäminen
     localization:
       body: Mastodonin ovat kääntäneet vapaaehtoiset.
       guide_link: https://crowdin.com/project/mastodon
@@ -1042,7 +1042,7 @@ fi:
     confirmations:
       wrong_email_hint: Jos sähköpostiosoite ei ole oikein, voit muuttaa sen tilin asetuksista.
     delete_account: Poista tili
-    delete_account_html: Jos haluat poistaa tilisi, <a href="%{path}">paina tästä</a>. Poisto on vahvistettava.
+    delete_account_html: Jos haluat poistaa tilisi, voit <a href="%{path}">edetä tästä</a>. Sinua pyydetään vahvistamaan poisto.
     description:
       prefix_invited_by_user: "@%{name} kutsuu sinut liittymään tälle Mastodonin palvelimelle!"
       prefix_sign_up: Liity Mastodoniin tänään!
@@ -1051,13 +1051,13 @@ fi:
     dont_have_your_security_key: Eikö sinulla ole suojausavainta?
     forgot_password: Unohditko salasanasi?
     invalid_reset_password_token: Salasanan palautustunnus on virheellinen tai vanhentunut. Pyydä uusi.
-    link_to_otp: Syötä puhelimesi kaksivaiheinen koodi tai palautuskoodi
+    link_to_otp: Syötä puhelimesi kaksivaiheisen todennuksen koodi tai palautuskoodi
     link_to_webauth: Käytä suojausavaintasi
     log_in_with: Kirjaudu käyttäen
     login: Kirjaudu sisään
     logout: Kirjaudu ulos
     migrate_account: Muuta toiseen tiliin
-    migrate_account_html: Jos haluat ohjata tämän tilin toiseen tiliin, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
+    migrate_account_html: Jos haluat ohjata tämän tilin toiseen, voit <a href="%{path}">asettaa toisen tilin tästä</a>.
     or_log_in_with: Tai käytä kirjautumiseen
     privacy_policy_agreement_html: Olen lukenut ja hyväksynyt <a href="%{privacy_policy_path}" target="_blank">tietosuojakäytännön</a>
     progress:
@@ -1076,8 +1076,8 @@ fi:
       accept: Hyväksy
       back: Takaisin
       invited_by: 'Seuraavalta käyttäjältä vastaanottamasi kutsun ansiosta voit liittyä palvelimelle %{domain}:'
-      preamble: "%{domain} valvojat määrittävät ja valvovat sääntöjä."
-      preamble_invited: Ennen kuin jatkat, huomioi palvelimen %{domain} valvojien asettamat perussäännöt.
+      preamble: Palvelimen %{domain} valvojat määrittävät ja valvovat sääntöjä.
+      preamble_invited: Ennen kuin jatkat, ota huomioon palvelimen %{domain} valvojien asettamat perussäännöt.
       title: Joitakin perussääntöjä.
       title_invited: Sinut on kutsuttu.
     security: Tunnukset
@@ -1086,21 +1086,21 @@ fi:
       email_below_hint_html: Tarkista roskapostikansiosi tai pyydä uusi viesti. Voit korjata sähköpostiosoitteesi, jos se oli väärin.
       email_settings_hint_html: Napsauta lähettämäämme linkkiä vahvistaaksesi osoitteen %{email}. Odotamme täällä.
       link_not_received: Etkö saanut linkkiä?
-      new_confirmation_instructions_sent: Saat uuden vahvistuslinkin sisältävän sähköpostiviestin muutaman minuutin sisällä!
-      title: Tarkista saamasi viestit
+      new_confirmation_instructions_sent: Saat uuden vahvistuslinkin sisältävän sähköpostiviestin muutamassa minuutissa!
+      title: Tarkista sähköpostilaatikkosi
     sign_in:
       preamble_html: Kirjaudu <strong>%{domain}</strong>-tunnuksellasi. Jos tilisi sijaitsee eri palvelimella, et voi kirjautua täällä.
       title: Kirjaudu palvelimelle %{domain}
     sign_up:
-      manual_review: Palvelimen %{domain} ylläpito tarkastaa rekisteröitymiset käsin. Helpottaaksesi rekisteröitymisesi käsittelyä, kerro hieman itsestäsi ja miksi haluat luoda käyttäjätilin palvelimelle %{domain}.
+      manual_review: Palvelimen %{domain} valvojat tarkistavat rekisteröitymiset käsin. Helpottaaksesi rekisteröitymisesi käsittelyä kerro hieman itsestäsi ja miksi haluat luoda käyttäjätilin palvelimelle %{domain}.
       preamble: Kun sinulla on tili tällä Mastodon-palvelimella, voit seurata kaikkia muita verkossa olevia henkilöitä riippumatta siitä, missä heidän tilinsä on.
       title: Otetaan sinulle käyttöön %{domain}.
     status:
       account_status: Tilin tila
       confirming: Odotetaan sähköpostivahvistuksen valmistumista.
       functional: Tilisi on täysin toiminnassa.
-      pending: Hakemuksesi odottaa henkilökuntamme tarkastusta. Tämä voi kestää jonkin aikaa. Saat sähköpostiviestin, jos hakemuksesi on hyväksytty.
-      redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä kohteeseen %{acct}.
+      pending: Hakemuksesi odottaa henkilökuntamme tarkastusta. Tämä voi kestää jonkin aikaa. Saat sähköpostiviestin, jos hakemuksesi hyväksytään.
+      redirecting_to: Tilisi ei ole aktiivinen, koska se ohjaa tällä hetkellä tilille %{acct}.
       view_strikes: Näytä tiliäsi koskevia aiempia varoituksia
     too_fast: Lomake lähetettiin liian nopeasti, yritä uudelleen.
     use_security_key: Käytä suojausavainta
@@ -1138,9 +1138,9 @@ fi:
     proceed: Poista tili
     success_msg: Tilin poisto onnistui
     warning:
-      before: 'Ennen kuin jatkat, lue nämä huomautukset huolellisesti:'
+      before: 'Ennen kuin etenet, lue nämä huomautukset huolellisesti:'
       caches: Muiden palvelimien välimuistiin tallentamaa sisältöä voi vielä löytyä
-      data_removal: Viestit ja muut tiedot poistetaan pysyvästi
+      data_removal: Julkaisusi ja muut tietosi poistetaan pysyvästi
       email_change_html: Voit <a href="%{path}">muuttaa sähköpostiosoitettasi</a> poistamatta tiliäsi
       email_contact_html: Jos ei saavu perille, voit pyytää apua sähköpostilla <a href="mailto:%{email}">%{email}</a>
       email_reconfirmation_html: Jos et saa vahvistuksen sähköpostia, niin voit <a href="%{path}">pyytää sitä uudelleen</a>
@@ -1150,7 +1150,7 @@ fi:
       username_unavailable: Käyttäjänimesi ei tule saataville enää uudestaan
   disputes:
     strikes:
-      action_taken: Toteutetut toimet
+      action_taken: Tehty toimi
       appeal: Vetoomus
       appeal_approved: Tähän valitukseen on haettu muutosta, eikä se ole enää voimassa
       appeal_rejected: Valitus on hylätty
@@ -1164,17 +1164,17 @@ fi:
       description_html: Nämä ovat tiliäsi koskevia toimia ja varoituksia, jotka instanssin %{instance} henkilökunta on lähettänyt sinulle.
       recipient: Osoitettu
       reject_appeal: Hylkää valitus
-      status: 'Viesti #%{id}'
-      status_removed: Viesti on jo poistettu järjestelmästä
+      status: 'Julkaisu #%{id}'
+      status_removed: Julkaisu on jo poistettu järjestelmästä
       title: "%{action} alkaen %{date}"
       title_actions:
-        delete_statuses: Viestin poisto
+        delete_statuses: Julkaisun poisto
         disable: Tilin jäädyttäminen
-        mark_statuses_as_sensitive: Viestien merkitseminen arkaluonteisiksi
+        mark_statuses_as_sensitive: Julkaisujen merkitseminen arkaluonteisiksi
         none: Varoitus
         sensitive: Tilin merkitseminen arkaluonteiseksi
         silence: Tilin rajoittaminen
-        suspend: Tilin jäädyttäminen
+        suspend: Tilin jäädytys
       your_appeal_approved: Valituksesi on hyväksytty
       your_appeal_pending: Olet lähettänyt valituksen
       your_appeal_rejected: Valituksesi on hylätty
@@ -1182,8 +1182,8 @@ fi:
     invalid_domain: ei ole kelvollinen toimialueen nimi
   edit_profile:
     basic_information: Perustiedot
-    hint_html: "<strong>Mukauta mitä ihmiset näkevät julkisessa profiilissasi ja sinun julkaisujen vieressä.</strong> Ihmiset todennäköisesti seuraavat ja kirjoittavat sinulle, kun sinulla on täytetty profiili ja profiilikuva."
-    other: Muu
+    hint_html: "<strong>Mukauta, mitä ihmiset näkevät julkisessa profiilissasi ja julkaisujesi vieressä.</strong> Ihmiset seuraavat sinua takaisin ja ovat kanssasi vuorovaikutuksessa todennäköisemmin, kun sinulla on täytetty profiili ja profiilikuva."
+    other: Muut
   errors:
     '400': Lähettämäsi pyyntö oli virheellinen tai muotoiltu virheellisesti.
     '403': Sinulla ei ole lupaa nähdä tätä sivua.
@@ -1198,7 +1198,7 @@ fi:
       content: Valitettavasti jokin meni pieleen meidän päässämme.
       title: Sivu ei ole oikein
     '503': Sivua ei voitu näyttää palvelimen väliaikaisen vian vuoksi.
-    noscript_html: Käyttääksesi Mastodon-verkkopalvelua, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla myös jotakin juuri käyttämällesi alustalle kehitettyä Mastodon-<a href="%{apps_path}">sovellusta</a>.
+    noscript_html: Käyttääksesi Mastodonin verkkosovellusta, ota JavaScript käyttöön. Vaihtoehtoisesti voit kokeilla käyttämällesi alustalle kehitettyjä Mastodonin <a href="%{apps_path}">natiivisovelluksia</a>.
   existing_username_validator:
     not_found: paikallista käyttäjää ei löydy kyseisellä käyttäjänimellä
     not_found_multiple: "%{usernames} ei löytynyt"
@@ -1206,7 +1206,7 @@ fi:
     archive_takeout:
       date: Päiväys
       download: Lataa arkisto
-      hint_html: Voit pyytää arkistoa omista <strong>viesteistä ja mediasta</strong>. Viedyt tiedot ovat ActivityPub-muodossa, ja ne voi lukea millä tahansa yhteensopivalla ohjelmalla. Voit pyytää arkistoa viikon välein.
+      hint_html: Voit pyytää arkistoa omista <strong>julkaisuista ja mediasta</strong>. Viedyt tiedot ovat ActivityPub-muodossa, ja ne voi lukea millä tahansa yhteensopivalla ohjelmalla. Voit pyytää arkistoa 7 päivän välein.
       in_progress: Arkistoa kootaan...
       request: Pyydä arkisto
       size: Koko
@@ -1225,18 +1225,18 @@ fi:
   filters:
     contexts:
       account: Profiilit
-      home: Kotiaikajana
+      home: Kotisyöte ja listat
       notifications: Ilmoitukset
       public: Julkiset aikajanat
       thread: Keskustelut
     edit:
       add_keyword: Lisää avainsana
       keywords: Avainsanat
-      statuses: Yksittäiset viestit
-      statuses_hint_html: Tämä suodatin koskee yksittäisten viestien valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. <a href="%{path}">Tarkista tai poista viestit suodattimesta</a>.
+      statuses: Yksittäiset julkaisut
+      statuses_hint_html: Tämä suodatin koskee yksittäisten julkaisujen valintaa riippumatta siitä, vastaavatko ne alla olevia avainsanoja. <a href="%{path}">Tarkista tai poista julkaisut suodattimesta</a>.
       title: Muokkaa suodatinta
     errors:
-      deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai selainkäyttöliittymää.
+      deprecated_api_multiple_keywords: Näitä parametreja ei voi muuttaa tästä sovelluksesta, koska ne koskevat useampaa kuin yhtä suodattimen avainsanaa. Käytä uudempaa sovellusta tai verkkokäyttöliittymää.
       invalid_context: Ei sisältöä tai se on virheellinen
     index:
       contexts: Suodattimet %{contexts}
@@ -1248,11 +1248,11 @@ fi:
         one: "%{count} avainsana"
         other: "%{count} avainsanaa"
       statuses:
-        one: "%{count} viesti"
-        other: "%{count} viestiä"
+        one: "%{count} julkaisu"
+        other: "%{count} julkaisua"
       statuses_long:
-        one: "%{count} yksittäinen viesti piilotettu"
-        other: "%{count} yksittäistä viestiä piilotettu"
+        one: "%{count} yksittäinen julkaisu piilotettu"
+        other: "%{count} yksittäistä julkaisua piilotettu"
       title: Suodattimet
     new:
       save: Tallenna uusi suodatin
@@ -1262,8 +1262,8 @@ fi:
       batch:
         remove: Poista suodattimista
       index:
-        hint: Tämä suodatin koskee yksittäisten viestien valintaa muista kriteereistä riippumatta. Voit lisätä lisää viestejä tähän suodattimeen web-käyttöliittymästä.
-        title: Suodatetut viestit
+        hint: Tämä suodatin koskee yksittäisten julkaisujen valintaa muista kriteereistä riippumatta. Voit lisätä lisää julkaisuja tähän suodattimeen verkkokäyttöliittymästä.
+        title: Suodatetut julkaisut
   generic:
     all: Kaikki
     all_items_on_page_selected_html:
@@ -1279,7 +1279,7 @@ fi:
     delete: Poista
     deselect: Poista kaikki valinnat
     none: Ei mitään
-    order_by: Järjestä
+    order_by: Järjestys
     save_changes: Tallenna muutokset
     select_all_matching_items:
       one: Valitse %{count} kohde, joka vastaa hakuasi.
@@ -1291,7 +1291,7 @@ fi:
   imports:
     errors:
       empty: Tyhjä CSV-tiedosto
-      incompatible_type: Yhteensopimaton valitun tuontityypin kanssa
+      incompatible_type: Yhteensopimaton valitun tuontilajin kanssa
       invalid_csv_file: 'Epäkelpo CSV-tiedosto. Virhe: %{error}'
       over_rows_processing_limit: sisältää yli %{count} riviä
       too_large: Tiedosto on liian suuri
@@ -1304,20 +1304,20 @@ fi:
       overwrite: Korvaa
       overwrite_long: Korvaa nykyiset tietueet uusilla
     overwrite_preambles:
-      blocking_html: Olet aikeissa <strong>korvata estoluettelon</strong> kaikkiaan <strong>%{total_items} tilillä</strong> tiedostoon <strong>%{filename}</strong> perustuen.
-      bookmarks_html: Olet aikeissa <strong>korvata kirjanmerkit</strong> kaikkiaan <strong>%{total_items} julkaisulla</strong> tiedostosta <strong>%{filename}</strong>.
-      domain_blocking_html: Olet aikeissa <strong>korvata verkkotunnusestot</strong> kaikkiaan <strong>%{total_items} verkkotunnuksella</strong> tiedostoon <strong>%{filename}</strong> perustuen.
-      following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostoon <strong>%{filename}</strong> perustuen. Aiot lisäksi <strong>lopettaa kaikkien muiden seuraamisen</strong>.
-      lists_html: Olet <strong>korvaamassa listojasi</strong> tiedoston <strong>%{filename}</strong> sisällöllä. Uusiin listoihin lisätään kaikkiaan <strong>%{total_items} tiliä</strong>.
-      muting_html: Olet <strong>korvaamassa mykistettyjä tilejäsi</strong> kaikkiaan <strong>%{total_items} tilillä</strong> tiedostoon <strong>%{filename}</strong> perustuen.
+      blocking_html: Olet aikeissa <strong>korvata estoluettelosi</strong> kaikkiaan <strong>%{total_items} tilillä</strong> tiedostosta <strong>%{filename}</strong>.
+      bookmarks_html: Olet aikeissa <strong>korvata kirjanmerkkisi</strong> kaikkiaan <strong>%{total_items} julkaisulla</strong> tiedostosta <strong>%{filename}</strong>.
+      domain_blocking_html: Olet aikeissa <strong>korvata verkkotunnusten estoluettelosi</strong> kaikkiaan <strong>%{total_items} verkkotunnuksella</strong> tiedostosta <strong>%{filename}</strong>.
+      following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong> ja <strong>lopettaa kaikkien muiden seuraamisen</strong>.
+      lists_html: Olet aikeissa <strong>korvata listojasi</strong> tiedoston <strong>%{filename}</strong> sisällöllä. Uusiin listoihin lisätään kaikkiaan <strong>%{total_items} tiliä</strong>.
+      muting_html: Olet aikeissa <strong>korvata mykistettyjen tilien luettelosi</strong> kaikkiaan <strong>%{total_items} tilillä</strong> tiedostosta <strong>%{filename}</strong>.
     preambles:
-      blocking_html: Olet <strong>estämässä</strong> yhteensä <strong>%{total_items} tiliä</strong> tiedostoon <strong>%{filename}</strong> perustuen.
-      bookmarks_html: Olet lisäämässä <strong>%{total_items} julkaisua</strong> tiedostosta <strong>%{filename}</strong><strong>kirjanmerkkeihisi</strong>.
-      domain_blocking_html: Olet <strong>estämässä</strong> yhteensä <strong>%{total_items} verkkotunnusta</strong> tiedoston <strong>%{filename}</strong> nojalla.
-      following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostoon <strong>%{filename}</strong> perustuen.
-      lists_html: Olet lisäämässä <strong>listoihisi</strong> <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. Uudet listat luodaan, jos sopivaa kohdelistaa ei ole olemassa.
-      muting_html: Olet <strong>hiljentämässä</strong> yhteensä <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
-    preface: Voit tuoda toisesta instanssista viemiäsi tietoja, kuten esimerkiksi seuraamiesi tai estämiesi henkilöiden listan.
+      blocking_html: Olet aikeissa <strong>estää</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
+      bookmarks_html: Olet lisäämässä kaikkiaan <strong>%{total_items} julkaisua</strong> tiedostosta <strong>%{filename}</strong><strong>kirjanmerkkeihisi</strong>.
+      domain_blocking_html: Olet aikeissa <strong>estää</strong> kaikkiaan <strong>%{total_items} verkkotunnusta</strong> tiedostosta <strong>%{filename}</strong>.
+      following_html: Olet aikeissa <strong>seurata</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
+      lists_html: Olet lisäämässä <strong>listoihisi</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>. Uusia listoja luodaan, jos sopivaa kohdelistaa ei ole olemassa.
+      muting_html: Olet aikeissa <strong>mykistää</strong> kaikkiaan <strong>%{total_items} tiliä</strong> tiedostosta <strong>%{filename}</strong>.
+    preface: Voit tuoda toiselta palvelimelta viemiäsi tietoja, kuten seuraamiesi tai estämiesi henkilöiden luettelon.
     recent_imports: Viimeksi tuotu
     states:
       finished: Valmis
@@ -1337,14 +1337,14 @@ fi:
     type: Tuonnin tyyppi
     type_groups:
       constructive: Seuratut ja kirjanmerkit
-      destructive: Estot ja hiljennykset
+      destructive: Estot ja mykistykset
     types:
-      blocking: Estettyjen lista
+      blocking: Estoluettelo
       bookmarks: Kirjanmerkit
-      domain_blocking: Verkkoalueen estolista
-      following: Seurattujen lista
+      domain_blocking: Verkkotunnuksen estoluettelo
+      following: Seurattujen luettelo
       lists: Listat
-      muting: Mykistettyjen lista
+      muting: Mykistettyjen luettelo
     upload: Lähetä
   invites:
     delete: Poista käytöstä
@@ -1373,7 +1373,7 @@ fi:
       limit: Sinulla on enimmäismäärä listoja
   login_activities:
     authentication_methods:
-      otp: kaksivaiheinen todennussovellus
+      otp: kaksivaiheisen todennuksen sovellus
       password: salasana
       sign_in_token: sähköpostin turvakoodi
       webauthn: suojausavaimet
@@ -1386,16 +1386,16 @@ fi:
     unsubscribe:
       action: Kyllä, peru tilaus
       complete: Tilaus lopetettiin
-      confirmation_html: Olethan varma, että haluat lopettaa %{type} -aiheisten Mastodonin sähköposti-ilmoitusten vastaanoton palvelimelta %{domain} osoitteeseesi %{email}? Voit toki milloin tahansa ottaa jälleen käyttöön muun muassa nämä viestit <a href="%{settings_path}">sähköposti-ilmoitusasetusten</a> kautta.
+      confirmation_html: Haluatko varmasti lopettaa Mastodonin sähköposti-ilmoitusten vastaanottamisen aiheesta %{type} palvelimelta %{domain} osoitteeseesi %{email}? Voit tilata ilmoitusviestejä milloin tahansa uudelleen <a href="%{settings_path}">sähköposti-ilmoitusten asetuksista</a>.
       emails:
         notification_emails:
-          favourite: sähköpostit ilmoituksille
-          follow: seuraa sähköpostin ilmoituksia
-          follow_request: seuraa pyyntöjä sähköpostiin
-          mention: mainitse sähköpostin ilmoitukset
-          reblog: tehosta sähköpostien ilmoituksia
-      resubscribe_html: Jos olet perunut ilmoitusviestien vastaanottamisen suotta, pääset jälleentilaamaan ilmoitusviestejä <a href="%{settings_path}">sähköposti-ilmoitusasetusten</a> kautta.
-      success_html: Sinulle ei vastedes lähetetä %{type} -aihepiirin Mastodon-sähköposti-ilmoituksia palvelimelta %{domain} osoitteeseen %{email}.
+          favourite: sähköposti-ilmoituksia suosikkeihin lisäämisistä
+          follow: sähköposti-ilmoituksia seuraamisista
+          follow_request: sähköposti-ilmoituksia seuraamispyynnöistä
+          mention: sähköposti-ilmoituksia maininnoista
+          reblog: sähköposti-ilmoituksia tehostuksista
+      resubscribe_html: Jos olet perunut tilauksen erehdyksessä, voit tilata ilmoitusviestejä uudelleen <a href="%{settings_path}">sähköposti-ilmoitusten asetuksista</a>.
+      success_html: Sinulle ei enää lähetetä Mastodonin %{type} palvelimelta %{domain} osoitteeseen %{email}.
       title: Lopeta tilaus
   media_attachments:
     validations:
@@ -1415,7 +1415,7 @@ fi:
       on_cooldown: Sinä olet jäähyllä
     followers_count: Seuraajat muuton aikana
     incoming_migrations: Siirtyminen toiselta tililtä
-    incoming_migrations_html: Siirtääksesi toisesta tilistä tähän tiliin, sinun täytyy ensin <a href="%{path}">luoda tilin alias</a>.
+    incoming_migrations_html: Siirtyäksesi toisesta tilistä tähän, sinun täytyy ensin <a href="%{path}">luoda tilin alias</a>.
     moved_msg: Tilisi ohjaa nyt kohteeseen %{acct} ja seuraajiasi siirretään.
     not_redirecting: Tilisi ei ohjaa tällä hetkellä mihinkään muuhun tiliin.
     on_cooldown: Olet siirtänyt tilisi äskettäin. Tämä toiminto tulee saataville uudelleen %{count} päivän kuluttua.
@@ -1426,15 +1426,15 @@ fi:
     set_redirect: Aseta uudelleenohjaus
     warning:
       backreference_required: Uusi tili on ensin määritettävä viittaamaan tähän tiliin
-      before: 'Ennen jatkamista, lue nämä huomautukset huolellisesti:'
-      cooldown: Muuton jälkeen on odotusaika, jonka aikana et pysty enää liikkumaan
-      disabled_account: Nykyinen tilisi ei ole täysin käytettävissä jälkikäteen. Sinulla on kuitenkin pääsy tietojen vientiin ja uudelleenaktivointiin.
+      before: 'Ennen kuin etenet, lue nämä huomautukset huolellisesti:'
+      cooldown: Muuton jälkeen on odotusaika, jonka aikana et pysty enää muuttamaan
+      disabled_account: Nykyinen tilisi ei ole täysin käytettävissä tämän jälkeen. Sinulla on kuitenkin pääsy tietojen vientiin ja uudelleenaktivointiin.
       followers: Tämä toiminto siirtää kaikki seuraajat nykyisestä tilistä uudelle tilille
-      only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain uudelleenohjauksen profiiliisi</a>.
+      only_redirect_html: Vaihtoehtoisesti voit <a href="%{path}">asettaa vain ohjauksen profiiliisi</a>.
       other_data: Muita tietoja ei siirretä automaattisesti
-      redirect: Nykyinen tilisi profiili päivitetään, ohjataan uudelleen ja jätetään pois hausta
+      redirect: Nykyisen tilisi profiili päivitetään ohjaushuomautuksella ja suljetaan pois hauista
   moderation:
-    title: Moderointi
+    title: Valvonta
   move_handler:
     carry_blocks_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka olit estänyt.
     carry_mutes_over_text: Tämä käyttäjä siirtyi paikasta %{acct}, jonka mykistit.
@@ -1448,15 +1448,15 @@ fi:
       sign_up:
         subject: "%{name} rekisteröityi"
     favourite:
-      body: "%{name} tykkäsi tilastasi:"
-      subject: "%{name} tykkäsi tilastasi"
-      title: Uusi tykkäys
+      body: "%{name} lisäsi julkaisusi suosikkeihinsa:"
+      subject: "%{name} lisäsi julkaisusi suosikkeihinsa"
+      title: Uusi suosikkeihin lisäys
     follow:
       body: "%{name} seuraa nyt sinua!"
       subject: "%{name} seuraa nyt sinua"
       title: Uusi seuraaja
     follow_request:
-      action: Hallinnoi seuraamispyyntöjä
+      action: Hallitse seuraamispyyntöjä
       body: "%{name} haluaa seurata sinua"
       subject: 'Odottava seuraamispyyntö: %{name}'
       title: Uusi seuraamispyyntö
@@ -1468,13 +1468,13 @@ fi:
     poll:
       subject: Äänestys käyttäjältä %{name} on päättynyt
     reblog:
-      body: "%{name} tehosti viestiäsi:"
-      subject: "%{name} tehosti viestiäsi"
+      body: "%{name} tehosti julkaisuasi:"
+      subject: "%{name} tehosti julkaisuasi"
       title: Uusi tehostus
     status:
       subject: "%{name} julkaisi juuri"
     update:
-      subject: "%{name} muokkasi viestiä"
+      subject: "%{name} muokkasi julkaisua"
   notifications:
     administration_emails: Ylläpitäjän sähköposti-ilmoitukset
     email_events: Sähköposti-ilmoitusten tapahtumat
@@ -1492,7 +1492,7 @@ fi:
           trillion: B
   otp_authentication:
     code_hint: Anna todennussovelluksen luoma koodi vahvistaaksesi
-    description_html: Jos otat käyttöön <strong>kaksivaiheisen todentamisen</strong>, käyttämällä todennussovellusta, kirjautumiseen vaaditaan puhelin, jolla voidaan luoda kirjautumistunnuksia.
+    description_html: Jos otat <strong>kaksivaiheisen todennuksen</strong> käyttöön käyttämällä todennussovellusta, kirjautumiseen vaaditaan puhelin, jolla voidaan luoda kirjautumistunnuksia.
     enable: Ota käyttöön
     instructions_html: "<strong>Lue tämä QR-koodi puhelimen Google Authenticator- tai vastaavalla TOTP-sovelluksella</strong>. Sen jälkeen sovellus luo tunnuksia, joita tarvitset kun kirjaudut sisään."
     manual_instructions: 'Jos et voi lukea QR-koodia ja haluat syöttää sen käsin, tässä on salainen koodi tekstinä:'
@@ -1518,16 +1518,16 @@ fi:
       too_many_options: ei voi sisältää enempää kuin %{max} kohdetta
   preferences:
     other: Muut
-    posting_defaults: Viestien oletusasetukset
+    posting_defaults: Julkaisun oletusasetukset
     public_timelines: Julkiset aikajanat
   privacy:
-    hint_html: "<strong>Määritä, kuinka haluat profiilisi ja julkaisujesi löytyvän.</strong> Mastodonissa on monia ominaisuuksia, joiden käyttöönotto voi auttaa sinua saavuttamaan laajemman yleisön. Käytä hetki aikaa tarkistaaksesi, soveltuvatko nämä vaihtoehdot tarpeisiisi."
+    hint_html: "<strong>Määritä, kuinka haluat profiilisi ja julkaisujesi löytyvän.</strong> Mastodonissa on monia ominaisuuksia, joiden käyttöönotto voi auttaa sinua tavoittamaan laajemman yleisön. Käytä hetki tarkistaaksesi, sopivatko nämä asetukset käyttöösi."
     privacy: Yksityisyys
-    privacy_hint_html: Määritä miten paljon muita avustavia tietoja haluat paljastaa. Käyttäjät löytävät kiinnostavia profiileja sekä hienoja sovelluksia selaillen toisten seuraamia käyttäjiä, ja näkemällä, millä sovelluksilla nämä julkaisevat. Saatat kuitenkin haluta piilottaa nämä tiedot.
+    privacy_hint_html: Määritä, kuinka paljon muita avustavia tietoja haluat paljastaa. Käyttäjät löytävät kiinnostavia profiileja ja hienoja sovelluksia, kun he selaavat toisten seuraamia käyttäjiä ja kun he näkevät, millä sovelluksilla nämä julkaisevat. Saatat kuitenkin haluta piilottaa nämä tiedot.
     reach: Tavoittavuus
-    reach_hint_html: Päätä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko viestiesi näkyvän Selaa-sivulla? Haluatko käyttäjien näkevän sinut heidän seuraussuosituksissaan? Haluatko hyväksyä uudet seuraajat automaattisesti vai haluatko hyväksyä jokaisen erikseen?
+    reach_hint_html: Määritä, haluatko tulla uusien käyttäjien löytämäksi ja seuraamaksi. Haluatko julkaisujesi näkyvän Selaa-sivulla? Haluatko muiden käyttäjien näkevän sinut seuraamissuosituksissaan? Haluatko hyväksyä kaikki uudet seuraajat automaattisesti vai päättää jokaisesta erikseen?
     search: Haku
-    search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että ihmiset löytävät sinut julkisten julkaisujesi perusteella? Haluatko, että ihmiset Mastodonin ulkopuolella löytävät profiilisi tehdessään hakuja verkossa? Huomioithan, ettei täyttä poisjättäytymistä kaikista hakukoneista voida taata julkisille tiedoille.
+    search_hint_html: Määritä, kuinka haluat tulla löydetyksi. Haluatko, että ihmiset löytävät sinut julkisten julkaisujesi perusteella? Haluatko, että ihmiset Mastodonin ulkopuolella löytävät profiilisi tehdessään hakuja verkossa? Otathan huomioon, ettei julkisten tietojen täyttä kaikista hakukoneista poisjäämistä voi taata.
     title: Yksityisyys ja tavoittavuus
   privacy_policy:
     title: Tietosuojakäytäntö
@@ -1547,10 +1547,10 @@ fi:
     following: Seuratut
     invited: Kutsutut
     last_active: Viimeksi aktiivinen
-    most_recent: Viimeisin
-    moved: Muuttanut
+    most_recent: Viimeisimmät
+    moved: Muuttaneet
     mutual: Molemmat
-    primary: Ensisijainen
+    primary: Ensisijaiset
     relationship: Suhde
     remove_selected_domains: Poista kaikki seuraajat valituista verkkotunnuksista
     remove_selected_followers: Poista valitut seuraajat
@@ -1564,12 +1564,12 @@ fi:
   rss:
     content_warning: 'Sisältövaroitus:'
     descriptions:
-      account: Julkiset viestit lähettäjältä @%{acct}
-      tag: 'Julkiset viestit merkitty #%{hashtag}'
+      account: Julkiset julkaisut tililtä @%{acct}
+      tag: 'Julkiset julkaisut aihetunnisteella #%{hashtag}'
   scheduled_statuses:
-    over_daily_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan tälle päivälle
-    over_total_limit: Olet ylittänyt %{limit} ajoitetun viestin rajan
-    too_soon: Ajoitetun päivämäärän on oltava tulevaisuudessa
+    over_daily_limit: Olet ylittänyt %{limit} ajoitetun julkaisun rajan tälle päivälle
+    over_total_limit: Olet ylittänyt %{limit} ajoitetun julkaisun rajan
+    too_soon: Ajoitetun päiväyksen pitää olla tulevaisuudessa
   sessions:
     activity: Viimeisin toiminta
     browser: Selain
@@ -1595,7 +1595,7 @@ fi:
       weibo: Weibo
     current_session: Nykyinen istunto
     description: "%{browser} alustalla %{platform}"
-    explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneet Mastodon-tilillesi.
+    explanation: Nämä verkkoselaimet ovat tällä hetkellä kirjautuneena Mastodon-tilillesi.
     ip: IP-osoite
     platforms:
       adobe_air: Adobe AIR
@@ -1623,20 +1623,20 @@ fi:
     authorized_apps: Valtuutetut sovellukset
     back: Takaisin Mastodoniin
     delete: Tilin poisto
-    development: Kehittäminen
+    development: Kehitys
     edit_profile: Muokkaa profiilia
     export: Vie tietoja
-    featured_tags: Esitellyt aihetunnisteet
+    featured_tags: Esiteltävät aihetunnisteet
     import: Tuo
-    import_and_export: Tuo ja vie
+    import_and_export: Tuonti ja vienti
     migrate: Tilin muutto muualle
     notifications: Ilmoitukset
     preferences: Ominaisuudet
-    profile: Profiili
-    relationships: Seurattavat ja seuraajat
-    statuses_cleanup: Automaattinen viestin poisto
-    strikes: Valvojan varoitukset
-    two_factor_authentication: Kaksivaiheinen todentaminen
+    profile: Julkinen profiili
+    relationships: Seuratut ja seuraajat
+    statuses_cleanup: Autom. julkaisujen poisto
+    strikes: Valvontavaroitukset
+    two_factor_authentication: Kaksivaiheinen todennus
     webauthn_authentication: Suojausavaimet
   statuses:
     attached:
@@ -1650,21 +1650,21 @@ fi:
       video:
         one: "%{count} video"
         other: "%{count} videota"
-    boosted_from_html: Tehostus lähteestä %{acct_link}
+    boosted_from_html: Tehosti lähteestä %{acct_link}
     content_warning: 'Sisältövaroitus: %{warning}'
     default_language: Sama kuin käyttöliittymän kieli
     disallowed_hashtags:
-      one: 'sisälsi aihetunnisteen jota ei sallita: %{tags}'
-      other: 'sisälsi aihetunnisteet joita ei sallita: %{tags}'
+      one: 'sisälsi kielletyn aihetunnisteen: %{tags}'
+      other: 'sisälsi kiellettyjä aihetunnisteita: %{tags}'
     edited_at_html: Muokattu %{date}
     errors:
-      in_reply_not_found: Viesti, johon yrität vastata, ei näytä olevan olemassa.
+      in_reply_not_found: Julkaisua, johon yrität vastata, ei näytä olevan olemassa.
     open_in_web: Avaa selaimessa
     over_character_limit: merkkimäärän rajoitus %{max} ylitetty
     pin_errors:
-      direct: Viestejä, jotka ovat näkyvissä vain mainituille käyttäjille, ei voi kiinnittää
-      limit: Olet jo kiinnittänyt suurimman mahdollisen määrän viestejä
-      ownership: Muiden viestejä ei voi kiinnittää
+      direct: Vain mainituille käyttäjille näkyviä julkaisuja ei voi kiinnittää
+      limit: Olet jo kiinnittänyt enimmäismäärän julkaisuja
+      ownership: Muiden julkaisuja ei voi kiinnittää
       reblog: Tehostusta ei voi kiinnittää
     poll:
       total_people:
@@ -1681,33 +1681,33 @@ fi:
     title: "%{name}: ”%{quote}”"
     visibilities:
       direct: Suoraan
-      private: Vain seuraajille
+      private: Vain seuraajat
       private_long: Näytä vain seuraajille
       public: Julkinen
       public_long: Kaikki voivat nähdä
-      unlisted: Listaamaton julkinen
+      unlisted: Listaamaton
       unlisted_long: Kaikki voivat nähdä, mutta ei näytetä julkisilla aikajanoilla
   statuses_cleanup:
-    enabled: Poista vanhat viestit automaattisesti
-    enabled_hint: Poistaa viestit automaattisesti, kun ne saavuttavat tietyn ikärajan, elleivät ne täsmää yhtä alla olevista poikkeuksista
+    enabled: Poista vanhat julkaisut automaattisesti
+    enabled_hint: Poistaa julkaisusi automaattisesti, kun ne saavuttavat valitun ikärajan, ellei jokin alla olevista poikkeuksista tule kyseeseen
     exceptions: Poikkeukset
-    explanation: Koska viestien poistaminen on kallista toimintaa, sitä tehdään hitaasti ajan mittaan, kun palvelin ei ole muutoin kiireinen. Viestejäsi voidaankin siis poistaa myös viiveellä verrattuna niille määrittämääsi aikarajaan.
+    explanation: Koska julkaisujen poistaminen on raskas toimi, se tapahtuu hitaasti ajan mittaan, kun palvelin ei ole muutoin ruuhkainen. Siksi viestejäsi voi poistua vasta tovi sen jälkeen, kun ne ovat saavuttaneet ikärajan.
     ignore_favs: Ohita suosikit
     ignore_reblogs: Ohita tehostukset
-    interaction_exceptions: Poikkeukset, jotka perustuvat vuorovaikutukseen
-    interaction_exceptions_explanation: Huomaa, että ei ole takeita viestien poistamiselle, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen, kun ne on kerran ylitetty.
+    interaction_exceptions: Vuorovaikutuksiin perustuvat poikkeukset
+    interaction_exceptions_explanation: Huomaa, ettei julkaisujen poistumisesta ole varmuutta, jos ne alittavat suosikki- tai tehostusrajan sen jälkeen kun ne on kerran ylitetty.
     keep_direct: Säilytä yksityisviestit
-    keep_direct_hint: Ei poista mitään sinun suoria viestejä
-    keep_media: Säilytä viestit, joissa on liitetiedostoja
-    keep_media_hint: Ei poista viestejä, joissa on liitteitä
-    keep_pinned: Pidä kiinnitettyt viestit
-    keep_pinned_hint: Ei poista mitään kiinnitettyä viestiä
+    keep_direct_hint: Ei poista yksityisviestejäsi
+    keep_media: Säilytä julkaisut, joissa on medialiitteitä
+    keep_media_hint: Ei poista julkaisujasi, joissa on medialiitteitä
+    keep_pinned: Säilytä kiinnitetyt julkaisut
+    keep_pinned_hint: Ei poista kiinnitettyjä julkaisujasi
     keep_polls: Säilytä äänestykset
-    keep_polls_hint: Ei poista yhtäkään äänestystä
-    keep_self_bookmark: Säilytä kirjanmerkkeihin lisäämäsi viestit
-    keep_self_bookmark_hint: Ei poista viestejäsi, jos olet lisännyt ne kirjanmerkkeihin
-    keep_self_fav: Säilyttää viestit suosikeissa
-    keep_self_fav_hint: Ei poista omia viestejäsi, jos olet lisännyt ne suosikkeihin
+    keep_polls_hint: Ei poista äänestyksiäsi
+    keep_self_bookmark: Säilytä kirjanmerkkeihin lisäämäsi julkaisut
+    keep_self_bookmark_hint: Ei poista julkaisujasi, jos olet lisännyt ne kirjanmerkkeihin
+    keep_self_fav: Säilytä suosikkeihin lisäämäsi julkaisut
+    keep_self_fav_hint: Ei poista julkaisujasi, jos olet lisännyt ne suosikkeihin
     min_age:
       '1209600': 2 viikkoa
       '15778476': 6 kuukautta
@@ -1718,12 +1718,12 @@ fi:
       '63113904': 2 vuotta
       '7889238': 3 kuukautta
     min_age_label: Ikäraja
-    min_favs: Pidä viestit suosikeissa vähintään
-    min_favs_hint: Toiminto ei poista julkaisujasi, joista on tykätty vähintään tässä kohtaa määritellyn monesti. Jätä kenttä tyhjäksi, jos haluat poistaa julkaisut tykkäyksistä huolimatta
-    min_reblogs: Pidä viestit tehostettuna vähintään
-    min_reblogs_hint: Ei poista yhtään viestiäsi, jota on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi poistaaksesi viestejä riippumatta niiden tehosteiden määrästä
+    min_favs: Säilytä julkaisut, joilla on suosikiksi lisäyksiä vähintään
+    min_favs_hint: Ei poista julkaisujasi, joita on lisätty suosikeihin vähintään näin monta kertaa. Jätä tyhjäksi, jos haluat poistaa julkaisuja riippumatta suosikkeihin lisäysmääristä
+    min_reblogs: Säilytä julkaisut, joilla on tehostuksia vähintään
+    min_reblogs_hint: Ei poista julkaisujasi, joita on tehostettu vähintään näin monta kertaa. Jätä tyhjäksi, jos haluat poistaa julkaisuja riippumatta niiden tehostusten määrästä
   stream_entries:
-    sensitive_content: Arkaluontoista sisältöä
+    sensitive_content: Arkaluonteista sisältöä
   strikes:
     errors:
       too_late: On liian myöhäistä vedota tähän varoitukseen
@@ -1745,16 +1745,16 @@ fi:
       too_many_requests: Käännöspalvelulle on hiljattain esitetty liian monta pyyntöä.
   two_factor_authentication:
     add: Lisää
-    disable: Poista käytöstä
+    disable: Poista 2FA käytöstä
     disabled_success: Kaksivaiheinen todennus on poistettu käytöstä
     edit: Muokkaa
-    enabled: Kaksivaiheinen todentaminen käytössä
-    enabled_success: Kaksivaiheisen todentamisen käyttöönotto onnistui
+    enabled: Kaksivaiheinen todennus käytössä
+    enabled_success: Kaksivaiheisen todennuksen käyttöönotto onnistui
     generate_recovery_codes: Luo palautuskoodit
-    lost_recovery_codes: Palautuskoodien avulla voit käyttää tiliä, jos menetät puhelimesi. Jos olet hukannut palautuskoodit, voit luoda uudet tästä. Vanhat palautuskoodit poistetaan käytöstä.
-    methods: Kaksivaiheisen tunnistautumisen menetelmät
+    lost_recovery_codes: Palautuskoodien avulla voit käyttää tiliä, jos menetät puhelimesi. Jos olet hukannut palautuskoodisi, voit luoda uudet tästä. Vanhat palautuskoodit poistetaan käytöstä.
+    methods: Kaksivaiheisen todennuksen menetelmät
     otp: Todennussovellus
-    recovery_codes: Varapalautuskoodit
+    recovery_codes: Ota palautuskoodit talteen
     recovery_codes_regenerated: Uusien palautuskoodien luonti onnistui
     recovery_instructions_html: Jos menetät puhelimesi, voit kirjautua tilillesi jollakin alla olevista palautuskoodeista. <strong>Pidä palautuskoodit hyvässä tallessa</strong>. Voit esimerkiksi tulostaa ne ja säilyttää muiden tärkeiden papereiden joukossa.
     webauthn: Suojausavaimet
@@ -1776,7 +1776,7 @@ fi:
       change_password: vaihda salasanasi
       details: 'Tässä on tiedot kirjautumisesta:'
       explanation: Olemme havainneet kirjautumisen tilillesi uudesta IP-osoitteesta.
-      further_actions_html: Jos tämä et ollut sinä, suosittelemme että %{action} välittömästi ja ota kaksivaiheinen todennus käyttöön säilyttääksesi tilisi turvallisena.
+      further_actions_html: Jos tämä et ollut sinä, suosittelemme, että %{action} heti ja otat käyttöön kaksivaiheisen todennuksen pitääksesi tilisi turvassa.
       subject: Tiliäsi on käytetty uudesta IP-osoitteesta
       title: Uusi kirjautuminen
     warning:
@@ -1786,38 +1786,38 @@ fi:
         spam: Roskaposti
         violation: Sisältö rikkoo seuraavia yhteisön sääntöjä
       explanation:
-        delete_statuses: Joitakin viesteistäsi on havaittu rikkovan yhtä tai useampaa yhteisön sääntöä ja instanssin %{instance} valvojat ovat poistaneet ne.
+        delete_statuses: Joidenkin julkaisuistasi on havaittu rikkovan ainakin yhtä yhteisön sääntöä, ja instanssin %{instance} valvojat ovat poistaneet ne.
         disable: Et voi enää käyttää tiliäsi, mutta profiilisi ja muut tiedot pysyvät muuttumattomina. Voit pyytää varmuuskopiota tiedoistasi, vaihtaa tilin asetuksia tai poistaa tilisi.
-        mark_statuses_as_sensitive: Instanssin %{instance} valvojat ovat merkinneet osan julkaisuistasi arkaluonteisiksi. Tämä tarkoittaa sitä, että ihmisten täytyy napauttaa viestiä ennen kuin esikatselu näytetään. Voit merkitä median itse arkaluonteiseksi kun julkaiset tulevaisuudessa.
+        mark_statuses_as_sensitive: Palvelimen %{instance} valvojat ovat merkinneet osan julkaisuistasi arkaluonteisiksi. Tämä tarkoittaa sitä, että ihmisten täytyy napauttaa mediaa ennen kuin sen esikatselu näytetään. Voit merkitä median itse arkaluonteiseksi, kun julkaiset tulevaisuudessa.
         sensitive: Tästä lähtien kaikki ladatut mediatiedostot merkitään arkaluonteisiksi ja piilotetaan napsautusvaroituksen taakse.
-        silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat ihmiset näkevät viestisi tällä palvelimella ja sinut voidaan sulkea pois erilaisista hakuominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti.
-        suspend: Et voi enää käyttää tiliäsi ja profiilisi ja muut tiedot eivät ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi varmuuskopiota tiedoistasi, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme joitakin perustietoja, jotka estävät sinua kiertämästä keskeyttämistä.
+        silence: Voit edelleen käyttää tiliäsi, mutta vain sinua jo seuraavat käyttäjät näkevät julkaisusi tällä palvelimella ja sinut voidaan sulkea pois eri löytämisominaisuuksista. Toiset voivat kuitenkin edelleen seurata sinua manuaalisesti.
+        suspend: Et voi enää käyttää tiliäsi, eivätkä profiilisi ja muut tiedot ole enää käytettävissä. Voit silti kirjautua sisään pyytääksesi tietojesi varmuuskopiota, kunnes tiedot on poistettu kokonaan noin 30 päivän kuluttua. Säilytämme kuitenkin joitain perustietoja, jotka estävät sinua kiertämästä jäädytystä.
       reason: 'Syy:'
-      statuses: 'Viestejä lainattu:'
+      statuses: 'Julkaisuja lainattu:'
       subject:
-        delete_statuses: Viestisi %{acct} on poistettu
+        delete_statuses: Julkaisusi tilillä %{acct} on poistettu
         disable: Tilisi %{acct} on jäädytetty
-        mark_statuses_as_sensitive: Viestisi %{acct} on merkitty arkaluonteisiksi
+        mark_statuses_as_sensitive: Julkaisusi tilillä %{acct} on merkitty arkaluonteisiksi
         none: Varoitus %{acct}
-        sensitive: Sinun viestisi %{acct} merkitään arkaluonteisiksi tästä lähtien
-        silence: Tilisi %{acct} on rajoitettu
+        sensitive: Julkaisusi tilillä %{acct} merkitään arkaluonteisiksi tästä lähtien
+        silence: Tiliäsi %{acct} on rajoitettu
         suspend: Tilisi %{acct} on jäädytetty
       title:
-        delete_statuses: Viestit poistettu
+        delete_statuses: Julkaisut poistettu
         disable: Tili jäädytetty
-        mark_statuses_as_sensitive: Viestit on merkitty arkaluonteisiksi
+        mark_statuses_as_sensitive: Julkaisut merkitty arkaluonteisiksi
         none: Varoitus
         sensitive: Tili on merkitty arkaluonteiseksi
-        silence: Rajoitettu tili
-        suspend: Tilin käyttäminen jäädytetty
+        silence: Tiliä rajoitettu
+        suspend: Tili jäädytetty
     welcome:
       edit_profile_action: Määritä profiili
-      edit_profile_step: Voit mukauttaa profiiliasi mm. profiilikuvalla ja uudella näyttönimellä. Voit myös valita haluatko tarkastaa ja hyväksyä uudet seuraajat itse.
+      edit_profile_step: Voit mukauttaa profiiliasi muun muassa profiilikuvalla ja uudella näyttönimellä. Voit myös valita, haluatko tarkastaa ja hyväksyä uudet seuraajat itse.
       explanation: Näillä vinkeillä pääset alkuun
       final_action: Ala julkaista
-      final_step: 'Aloita julkaiseminen! Vaikkei sinulla ole seuraajia, voivat muut nähdä julkiset julkaisusi esimerkiksi paikallisella aikajanalla ja aihetunnisteilla. Kannattaa myös esittäytyä käyttämällä aihetunnistetta #introductions.'
+      final_step: 'Ala julkaista! Vaikkei sinulla olisi seuraajia, voivat muut nähdä julkisia julkaisujasi esimerkiksi paikallisella aikajanalla tai aihetunnisteissa. Kannattaa myös esitellä itsensä aihetunnisteella #esittely.'
       full_handle: Koko käyttäjätunnuksesi
-      full_handle_hint: Kerro tämä kavereillesi, niin he voivat lähettää sinulle viestejä tai löytää sinut muiden palvelimien kautta.
+      full_handle_hint: Kerro tämä kavereillesi, niin he voivat lähettää sinulle viestejä tai seurata sinua toiselta palvelimelta.
       subject: Tervetuloa Mastodoniin
       title: Tervetuloa mukaan, %{name}!
   users:
@@ -1828,26 +1828,26 @@ fi:
     seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
     signed_in_as: 'Kirjautunut tilillä:'
   verification:
-    extra_instructions_html: <strong>Vinkki:</strong> Tämä linkitys verkkosivustollasi voidaan toteuttaa myös näkymättömänä. Tärkeä osuus on <code>rel="me"</code> -määre, jolla ehkäistään valeprofiilikäyttötarkoituksia sivustoilla, joiden sisältö perustuu käyttäjiensä julkaisuihin. Voit siis käyttää linkkiviittauselementtiä <code>link</code> HTML-lähdekoodin otsakeosassa (head) sen sijaan, että käyttäisit näkyvää hyperlinkkielementtiä <code>a</code>. HTML-lähdekoodin tulee tuolta osin kuitenkin olla JavaScriptistä riippumatonta.
+    extra_instructions_html: <strong>Vinkki:</strong> Verkkosivustollasi oleva linkki voi olla myös näkymätön. Olennainen osuus on <code>rel="me"</code>, joka estää toiseksi henkilöksi tekeytymisen verkkosivustoilla, joilla on käyttäjien luomaa sisältöä. Voit käyttää jopa <code>link</code>-elementtiä sivun <code>head</code>-osassa elementin <code>a</code> sijaan, mutta HTML:n pitää olla käytettävissä ilman JavaScript-koodin suorittamista.
     here_is_how: Näin voit tehdä sen
-    hint_html: "<strong>Mastodonissa henkilöllisyyden vahventaminen on jokaisen käyttäjän ulottuvilla.</strong> Tämä perustuu avoimiin standardeihin, maksuttomasti nyt ja aina. Kaikki mitä tarvitset on henkilökohtainen verkkosivusto, jonka avulla sinut voidaan tunnistaa. Kun Mastodon-profiilistasi on linkki kyseiselle verkkosivustollesi, ja sieltä löytyy vastaviittaus tai -linkitys profiiliisi, näkyy profiilissasi vahvistustunniste."
-    instructions_html: Kopioi ja liitä alla oleva koodi verkkosivusi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin ylimääräisistä kentistä profiiliasetuksissa, "Muokkaa profiilia" -välilehdestä, ja tallenna muutokset.
+    hint_html: "<strong>Henkilöllisyyden vahvistaminen on Mastodonissa jokaisen käyttäjän ulottuvilla.</strong> Se perustuu avoimiin standardeihin ja on maksutonta nyt ja aina. Tarvitset vain henkilökohtaisen verkkosivuston, jonka perusteella sinut voidaan tunnistaa. Kun teet linkin tuolle verkkosivulle profiilistasi, tarkistamme, että verkkosivustolla on linkki takaisin profiiliisi, ja näytämme profiilissasi visuaalisen ilmaisimen."
+    instructions_html: Kopioi ja liitä alla oleva koodi verkkosivustosi HTML-lähdekoodiin. Lisää sitten verkkosivustosi osoite johonkin profiilisi lisäkentistä ”Muokkaa profiilia” -välilehdellä ja tallenna muutokset.
     verification: Vahvistus
     verified_links: Vahvistetut linkkisi
   webauthn_credentials:
     add: Lisää uusi suojausavain
     create:
-      error: Suojausavaimen lisäämisessä tapahtui ongelma. Yritä uudelleen.
-      success: Sinun suojausavaimen lisääminen onnistui.
+      error: Suojausavaimen lisäämisessä oli ongelma. Yritä uudelleen.
+      success: Suojausavaimesi lisääminen onnistui.
     delete: Poista
     delete_confirmation: Haluatko varmasti poistaa tämän suojausavaimen?
     description_html: Jos otat <strong>suojausavaimen todennuksen</strong> käyttöön, kirjautuminen edellyttää jonkin suojausavaimen käyttämistä.
     destroy:
-      error: Suojausavaimen poistamisessa tapahtui ongelma. Yritä uudelleen.
-      success: Sinun suojausavaimen poistaminen onnistui.
+      error: Suojausavaimen poistamisessa oli ongelma. Yritä uudelleen.
+      success: Suojausavaimesi poistaminen onnistui.
     invalid_credential: Virheellinen suojausavain
-    nickname_hint: Anna nimimerkki uudelle suojausavaimelle
-    not_enabled: Et ole vielä ottanut käyttöön WebAuthn-ohjelmaa
+    nickname_hint: Anna uuden suojausaivaimesi lempinimi
+    not_enabled: Et ole vielä ottanut WebAuthn-ohjelmaa käyttöön
     not_supported: Tämä selain ei tue suojausavaimia
-    otp_required: Jos haluat käyttää suojausavaimia, ota ensin käyttöön kaksivaiheinen todennus.
+    otp_required: Jos haluat käyttää suojausavaimia, ota ensin kaksivaiheinen todennus käyttöön.
     registered_on: Rekisteröity %{date}
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index d1e6728d42..aa7ee760ba 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -27,12 +27,17 @@ hr:
         new_email: Nova e-pošta
         submit: Promijeni e-poštu
         title: Promjena e-pošte za %{username}
+      change_role:
+        changed_msg: Uloga uspješno dodijeljena!
+        label: Promjeni ulogu
       confirm: Potvrdi
       confirmed: Potvrđeno
       confirming: Potvrđivanje
       custom: Prilagođeno
       delete: Izbriši podatke
       deleted: Izbrisano
+      disable: Zamrzni
+      disable_two_factor_authentication: Onemogući 2FA
       display_name: Prikazano ime
       domain: Domena
       edit: Uredi
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index f32fe33ab7..f3a6392ff0 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -463,20 +463,40 @@ hy:
     regenerate_token: Ստեղծել նոր հասանելիութեան կտրոն
     your_token: Քո մուտքի բանալին
   auth:
+    apply_for_account: Ուղարկել
     delete_account: Ջնջել հաշիվը
     description:
       prefix_sign_up: Գրանցուի՛ր Մաստոդոնում հենց այսօր
+    didnt_get_confirmation: Չե՞ս ստացել հաստատման յղում
     dont_have_your_security_key: Չունե՞ս անվտանգութեան բանալի։
     forgot_password: Մոռացե՞լ ես գաղտնաբառդ
     login: Մտնել
     logout: Դուրս գալ
     migrate_account: Տեղափոխուել այլ հաշիւ
     or_log_in_with: Կամ մուտք գործել օգտագործելով՝
+    privacy_policy_agreement_html: Ես կարդացել եւ ընդունել եմ <a href="%{privacy_policy_path}" target="_blank">գաղնիութեան քաղաքականութիւնը</a>
+    progress:
+      confirm: Փոստի հաստատում
+      details: Ձեր տուեալները
+      review: Վաւերացում
+      rules: Ընդունել կանոները
     register: Գրանցվել
     registration_closed: "%{instance}ը չի ընդունում նոր անդամներ"
     reset_password: Վերականգնել գաղտանաբառը
+    rules:
+      accept: Հաստատել
+      back: Վերադառնալ
+      preamble: Կանոնները սահմանում եւ կիրառում են %{domain}-ի մոդերատորները։
+      title: Մի քանի հիմանական կանոններ։
     security: Անվտանգություն
     set_new_password: Սահմանել նոր գաղտնաբառ
+    sign_in:
+      preamble_html: Մուտքագրէք <strong>%{domain}</strong>-ի ձեր տուեալները։ Եթե ձեր հաշիւը ուրիշ սպասարկիչի վրայ է, այտեղ մտնել չի ստացուի։
+      title: Մտնել %{domain}
+    sign_up:
+      manual_review: Գրանցումները %{domain}-ում վաւերացնում են մոդերատորնրը։ Մեզ օգնելու համար մի փոքր պատմէք ձեր մասին եւ թե ինչու էք ուզում գրանցուել։
+      preamble: Այս հանգոյցում հաշիւ ունենալով դուք կարող էք հերտեւել դաշնեզերքի ցանկացած օգտատիրոջ, անկախ նրանից թե որտեղ է նրա հաշիւը տեղակայուած։
+      title: Ստեղծի՜ր հաշիւ %{domain}-ում
     status:
       account_status: Հաշուի կարգավիճակ
       pending: Դիմումը պէտք է քննուի մեր անձնակազմի կողմից, ինչը կարող է մի փոքր ժամանակ խլել։ Դիմումի հաստատուելու դէպքում, կտեղեկացնենք նամակով։
@@ -685,6 +705,8 @@ hy:
     other: Այլ
     posting_defaults: Կանխադիր կարգաւորումներ
     public_timelines: Հանրային հոսք
+  privacy:
+    search: Որոնել
   privacy_policy:
     title: Գաղտնիութեան քաղաքականութիւն
   reactions:
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index b18405fb65..6a72c1ca14 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -770,12 +770,12 @@ ja:
       critical_update: "※緊急 (速やかに適用してください)"
       description: Mastodonサーバーはいつでも最新の状態を保ち、新しい機能や修正を利用できるようにしておくことをおすすめします。またセキュリティの問題が発生した場合は、速やかにMastodonをアップデートすることが大切です。Mastodonは30分おきにアップデートを確認し、通知設定に応じて新しいアップデートをメールで通知します。
       documentation_link: もっと見る
-      release_notes: 更新情報
+      release_notes: リリースノート
       title: 利用可能なアップデート
       type: アップデートの種別
       types:
         major: メジャーリリース
-        minor: リリース
+        minor: マイナーリリース
         patch: パッチ (バグ修正のみ)
       version: バージョン
     statuses:
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index da6d8596e0..ff337cc6ca 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -47,7 +47,7 @@ ko:
         label: 역할 변경
         no_role: 역할 없음
         title: "%{username}의 역할 변경"
-      confirm: 확정
+      confirm: 신원 확인
       confirmed: 확인됨
       confirming: 확인 중
       custom: 사용자 지정
@@ -269,7 +269,7 @@ ko:
         reopen_report_html: "%{name} 님이 신고 %{target}을 다시 열었습니다"
         resend_user_html: "%{name} 님이 %{target} 님에 대한 확인 메일을 다시 보냈습니다"
         reset_password_user_html: "%{name} 님이 사용자 %{target}의 암호를 초기화했습니다"
-        resolve_report_html: "%{name} 중재자가 %{target}번 신고를 해결로 변경하였습니다"
+        resolve_report_html: "%{name} 님이 %{target}번 신고를 해결로 변경하였습니다"
         sensitive_account_html: "%{name} 님이 %{target}의 미디어를 민감함으로 표시했습니다"
         silence_account_html: "%{name} 님이 %{target}의 계정을 제한시켰습니다"
         suspend_account_html: "%{name} 님이 %{target}의 계정을 정지시켰습니다"
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 02a34fd856..28a1a33dcb 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -460,7 +460,7 @@ lv:
         description_html: Tu gatavojies importēt domēna bloku sarakstu. Lūdzu, ļoti rūpīgi pārskati šo sarakstu, it īpaši, ja tu pats neesi to veidojis.
         existing_relationships_warning: Esošās sekošanas attiecības
         private_comment_description_html: 'Lai palīdzētu tev izsekot, no kurienes nāk importētie bloki, tiks izveidoti importētie bloki ar šādu privātu komentāru: <q>%{comment}</q>'
-        private_comment_template: Importēts no %{source} %{date}
+        private_comment_template: Importēt no %{source} %{date}
         title: Importēt bloķētos domēnus
       invalid_domain_block: 'Viens vai vairāki domēna bloķi tika izlaisti šādas kļūdas(-u) dēļ: %{error}'
       new:
@@ -1107,7 +1107,7 @@ lv:
       new_confirmation_instructions_sent: Pēc dažām minūtēm saņemsi jaunu e-pastu ar apstiprinājuma saiti!
       title: Pārbaudi savu iesūtni
     sign_in:
-      preamble_html: Pierakstieties ar saviem <strong>%{domain}</strong> akreditācijas datiem. Ja jūsu konts ir mitināts citā serverī, jūs nevarēsit pieteikties šeit.
+      preamble_html: Piesakies ar saviem <strong>%{domain}</strong> akreditācijas datiem. Ja tavs konts ir mitināts citā serverī, tu nevarēsi pieteikties šeit.
       title: Pierakstīties %{domain}
     sign_up:
       manual_review: Reģistrācijas domēnā %{domain} manuāli pārbauda mūsu moderatori. Lai palīdzētu mums apstrādāt tavu reģistrāciju, uzraksti mazliet par sevi un to, kāpēc vēlies kontu %{domain}.
diff --git a/config/locales/si.yml b/config/locales/si.yml
index 45be8b76f2..51e1b838f3 100644
--- a/config/locales/si.yml
+++ b/config/locales/si.yml
@@ -1,10 +1,11 @@
 ---
 si:
   about:
-    about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, ආයතනික නිරීක්ෂණ නැත, සදාචාරාත්මක සැලසුම් සහ විමධ්‍යගත කිරීම! Mastodon සමඟ ඔබේ දත්ත අයිති කරගන්න!'
-    contact_missing: සකස් කර නැත
+    about_mastodon_html: 'අනාගත සමාජ ජාලය: දැන්වීම් නැත, සංස්ථානික අවේක්‍ෂණ නැත, යහපතට නිර්මිතයි සහ විමධ්‍යගතයි! මාස්ටඩන් සමඟ ඔබගේ දත්ත අයිතිව තබාගන්න!'
+    contact_missing: සකසා නැත
     contact_unavailable: අ/නොවේ
-    hosted_on: Mastodon %{domain}හි සත්කාරකත්වය දරයි
+    hosted_on: "%{domain} හරහා සත්කාරකත්‍වය ලබයි"
+    title: පිළිබඳව
   accounts:
     follow: අනුගමනය
     followers:
@@ -14,63 +15,59 @@ si:
     instance_actor_flash: මෙම ගිණුම සේවාදායකයම නියෝජනය කිරීමට භාවිතා කරන අතථ්‍ය නළුවෙකු වන අතර කිසිදු තනි පරිශීලකයෙකු නොවේ. එය ෆෙඩරේෂන් අරමුණු සඳහා භාවිතා කරන අතර අත්හිටුවිය යුතු නොවේ.
     last_active: අවසාන ක්රියාකාරී
     link_verified_on: මෙම සබැඳියේ හිමිකාරිත්වය %{date}හි පරීක්ෂා කරන ලදී
-    nothing_here: මෙහි කිසිත් නැත!
-    pin_errors:
-      following: ඔබට අනුමත කිරීමට අවශ්‍ය පුද්ගලයා ඔබ දැනටමත් අනුගමනය කරමින් සිටිය යුතුය
+    nothing_here: මෙහි කිසිවක් නැත!
     posts:
       one: ලිපිය
       other: ලිපි
     posts_tab_heading: ලිපි
   admin:
     account_actions:
-      action: ක්‍රියාව සිදු කරන්න
-      title: "%{acct}මත මධ්‍යස්ථ ක්‍රියාව සිදු කරන්න"
+      action: ක්‍රියාමාර්ගයක් ගන්න
     account_moderation_notes:
-      create: සටහන හැරයන්න
-      created_msg: මධ්‍යස්ථ සටහන සාර්ථකව සාදන ලදී!
-      destroyed_msg: මධ්‍යස්ථ සටහන සාර්ථකව විනාශ විය!
+      create: සටහනක් තබන්න
     accounts:
       add_email_domain_block: වි-තැපැල් වසම අවහිර කරන්න
-      approve: අනුමත කරන්න
+      approve: අනුමැතිය
       approved_msg: "%{username}හි ලියාපදිංචි වීමේ යෙදුම සාර්ථකව අනුමත කරන ලදී"
       are_you_sure: ඔබට විශ්වාසද?
-      avatar: අවතාරය
+      avatar: ප්‍රතිරූපය
       by_domain: වසම
       change_email:
+        changed_msg: වි-තැපෑල සාර්ථකව වෙනස් විය!
         current_email: වත්මන් වි-තැපෑල
         label: වි-තැපෑල වෙනස් කරන්න
         new_email: නව විද්‍යුත් තැපෑල
         submit: වි-තැපෑල වෙනස් කරන්න
         title: "%{username} සඳහා වි-තැපෑල වෙනස් කරන්න"
+      change_role:
+        changed_msg: භූමිකාව සාර්ථකව වෙනස් විය!
+        label: භූමිකාව වෙනස් කරන්න
+        no_role: නව භූමිකාව
+        title: "%{username} සඳහා භූමිකාව වෙනස් කරන්න"
       confirm: සනාථ කරන්න
-      confirmed: තහවුරු කර ඇත
+      confirmed: සනාථ කර ඇත
       confirming: සනාථ කරමින්
       custom: අභිරුචි
       delete: දත්ත මකන්න
-      deleted: මකා දමන ලදී
-      demote: පහත් කරන්න
+      deleted: මකා ඇත
       destroyed_msg: "%{username}හි දත්ත ඉක්මනින් මකා දැමීමට පෝලිම් කර ඇත"
-      disable: කැටි කරන්න
       disable_sign_in_token_auth: ඊමේල් ටෝකන් සත්‍යාපනය අක්‍රීය කරන්න
       disable_two_factor_authentication: 2FA අබල කරන්න
-      disabled: ශීත කළ
       display_name: ප්රදර්ශන නාමය
       domain: වසම
       edit: සංස්කරණය
       email: විද්‍යුත් තැපෑල
       email_status: වි-තැපෑලෙහි තත්වය
-      enable: කැටි කිරීම ඉවත් කරන්න
       enable_sign_in_token_auth: විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සබල කරන්න
       enabled: සබල කර ඇත
       enabled_msg: "%{username}ගේ ගිණුම සාර්ථකව අත්හිටුවා ඇත"
       followers: අනුගාමිකයින්
-      follows: පහත සඳහන්
       header: ශීර්ෂය
       inbox_url: එන ලිපි URL
-      invite_request_text: එක්වීම සඳහා
+      invite_request_text: එක්වීමට හේතුව
       invited_by: විසින් ආරාධනා කරන ලදී
       ip: අ.ජා. කෙ. (IP)
-      joined: එක් වී ඇත
+      joined: එක් වූ දිනය
       location:
         all: සියල්ල
         local: ස්ථානීය
@@ -84,12 +81,13 @@ si:
       moderation:
         active: සක්‍රීයයි
         all: සියල්ල
-        pending: පොරොත්තුවෙන්
+        disabled: අබලයි
+        pending: පොරොත්තු
         suspended: අත්හිටුවන ලදි
-        title: මධ්යස්ථභාවය
-      moderation_notes: මධ්‍යස්ථ සටහන්
+        title: මැදිහත්කරණය
+      moderation_notes: මැදිහත්කරණ සටහන්
       most_recent_activity: වඩාත්ම මෑත ක්රියාකාරිත්වය
-      most_recent_ip: ඊට වඩා අ.ජා.කේ.(IP)
+      most_recent_ip: මෑත අ.ජා.කෙ. (IP)
       no_account_selected: කිසිවක් තෝරා නොගත් බැවින් ගිණුම් කිසිවක් වෙනස් කර නැත
       no_limits_imposed: සීමාවන් පනවා නැත
       not_subscribed: දායක වී නැත
@@ -99,37 +97,36 @@ si:
       previous_strikes_description_html:
         one: මෙම ගිණුමට <strong>එක</strong> වර්ජනයක් ඇත.
         other: මෙම ගිණුමේ වර්ජන <strong>%{count}</strong> ඇත.
-      promote: ප්රවර්ධනය කරන්න
       protocol: කෙටුම්පත
-      public: ප්රසිද්ධ
+      public: ප්‍රසිද්ධ
       push_subscription_expires: පුෂ් දායකත්වය කල් ඉකුත් වේ
-      redownload: පැතිකඩ නැවුම්කරන්න
+      redownload: පැතිකඩ නැවුම් කරන්න
       redownloaded_msg: මූලාරම්භයේ සිට %{username}හි පැතිකඩ සාර්ථකව නැවුම් කරන ලදී
       reject: ප්‍රතික්ෂේප
       rejected_msg: "%{username}හි ලියාපදිංචි වීමේ අයදුම්පත සාර්ථකව ප්‍රතික්ෂේප විය"
-      remove_avatar: අවතාරය ඉවත් කරන්න
+      remove_avatar: ප්‍රතිරූපය ඉවත් කරන්න
       remove_header: ශීර්ෂය ඉවත්කරන්න
       removed_avatar_msg: "%{username}ගේ අවතාර රූපය සාර්ථකව ඉවත් කරන ලදී"
       removed_header_msg: "%{username}හි ශීර්ෂ රූපය සාර්ථකව ඉවත් කරන ලදී"
       resend_confirmation:
         already_confirmed: මෙම පරිශීලකයා දැනටමත් තහවුරු කර ඇත
       reset: නැවත සකසන්න
-      reset_password: මුරපදය නැවතසකසන්න
+      reset_password: මුරපදය යළි සකසන්න
       resubscribe: නැවත දායක වන්න
+      role: භූමිකාව
       search: සොයන්න
       search_same_email_domain: එකම විද්‍යුත් තැපැල් වසම සහිත වෙනත් පරිශීලකයන්
       search_same_ip: එකම IP සහිත වෙනත් පරිශීලකයන්
+      security: ආරක්‍ෂාව
       security_measures:
         only_password: මුරපදය පමණි
         password_and_2fa: මුරපදය සහ 2FA
-      sensitive: සංවේදී
-      sensitized: සංවේදී ලෙස සලකුණු කර ඇත
+      sensitized: සංවේදී බව සලකුණු කර ඇත
       shared_inbox_url: බෙදාගත් එන ලිපි URL
       show:
         created_reports: වාර්තා හැදුවා
         targeted_reports: වෙනත් අය විසින් වාර්තා කරන ලදී
-      silence: සීමාව
-      silenced: සීමාසහිත
+      silenced: සීමා සහිතයි
       statuses: ලිපි
       strikes: පෙර වැඩ වර්ජන
       subscribe: දායක වන්න
@@ -147,26 +144,25 @@ si:
       unsilenced_msg: "%{username}ගිණුමේ සීමාව සාර්ථකව ඉවත් කරන ලදී"
       unsubscribe: දායක නොවන්න
       unsuspended_msg: "%{username}ගිණුම සාර්ථකව අත්හිටුවන ලදී"
-      username: පරිශීලක නාමය
+      username: පරිශ්‍රීලක නාමය
       view_domain: වසම සඳහා සාරාංශය බලන්න
       warn: අවවාද
       web: වියමන
-      whitelisted: ෆෙඩරේෂන් සඳහා අවසර ඇත
+      whitelisted: ඒකාබද්ධයට ඉඩ දී ඇත
     action_logs:
       action_types:
         approve_appeal: අභියාචනය අනුමත කරන්න
         approve_user: පරිශීලක අනුමත කරන්න
         assigned_to_self_report: වාර්තාව පැවරීම
-        change_email_user: පරිශීලකයින්ට වි-තැපෑල වෙනස් කරන්න
         confirm_user: පරිශීලක තහවුරු කරන්න
         create_account_warning: අවවාදයක් සාදන්න
         create_announcement: නිවේදනය සාදන්න
         create_custom_emoji: අභිරුචි ඉමොජි සාදන්න
-        create_domain_allow: වසම් ඉඩදීමක් සාදන්න
-        create_domain_block: වසම් අවහිරයක් සාදන්න
+        create_domain_allow: වසමකට ඉඩදීම සාදන්න
         create_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එකක් සාදන්න
         create_ip_block: අ.ජා. කෙ. (IP) නීතියක් සාදන්න
         create_unavailable_domain: ලබා ගත නොහැකි වසම සාදන්න
+        create_user_role: භූමිකාව සාදන්න
         demote_user: පරිශීලකයා පහත් කරන්න
         destroy_announcement: නිවේදනය මකන්න
         destroy_custom_emoji: අභිරුචි ඉමොජි මකන්න
@@ -175,26 +171,24 @@ si:
         destroy_email_domain_block: ඊමේල් ඩොමේන් බ්ලොක් එක මකන්න
         destroy_instance: වසම පිරිසිදු කරන්න
         destroy_ip_block: IP රීතිය මකන්න
-        destroy_status: පළ කිරීම මකන්න
+        destroy_status: ලිපිය මකන්න
         destroy_unavailable_domain: ලබා ගත නොහැකි වසම මකන්න
         disable_2fa_user: 2FA අබල කරන්න
-        disable_custom_emoji: අභිරුචි ඉමොජි අබල කරන්න
+        disable_custom_emoji: අභිරුචි ඉමෝජි අබල කරන්න
         disable_sign_in_token_auth_user: පරිශීලකයා සඳහා ඊමේල් ටෝකන් සත්‍යාපනය අක්‍රීය කරන්න
-        disable_user: පරිශීලනය කරන්න
-        enable_custom_emoji: අභිරුචි ඉමොජි සබල කරන්න
+        enable_custom_emoji: අභිරුචි ඉමෝජි සබල කරන්න
         enable_sign_in_token_auth_user: පරිශීලකයා සඳහා විද්‍යුත් තැපෑල ටෝකන් සත්‍යාපනය සක්‍රීය කරන්න
         enable_user: පරිශීලක සබල කරන්න
         memorialize_account: ගිණුම අනුස්මරණ කරන්න
-        promote_user: පරිශීලක ප්රවර්ධනය කරන්න
         reject_appeal: අභියාචනය ප්‍රතික්ෂේප කරන්න
         reject_user: පරිශීලක ප්‍රතික්ෂේප කරන්න
-        remove_avatar_user: Avatar ඉවත් කරන්න
-        reopen_report: වාර්තාව නැවත විවෘත කරන්න
-        reset_password_user: මුරපදය නැවතසකසන්න
+        remove_avatar_user: ප්‍රතිරූපය ඉවත් කරන්න
+        reopen_report: වාර්තාව නැවත අරින්න
+        reset_password_user: මුරපදය යළි සකසන්න
         resolve_report: වාර්තාව විසඳන්න
         sensitive_account: බල සංවේදී ගිණුම
         silence_account: ගිණුම සීමා කරන්න
-        suspend_account: සැලකිය යුතු
+        suspend_account: ගිණුම අත්හිටුවන්න
         unassigned_report: වාර්තාව පැවරීම ඉවත් කරන්න
         unblock_email_account: ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන්න
         unsensitive_account: බල සංවේදී ගිණුම අහෝසි කරන්න
@@ -203,9 +197,8 @@ si:
         update_announcement: නිවේදනය යාවත්කාල කරන්න
         update_custom_emoji: අභිරුචි ඉමොජි යාවත්කාලීන කරන්න
         update_domain_block: ඩොමේන් බ්ලොක් යාවත්කාලීන කරන්න
-        update_status: පළ කිරීම යාවත්කාලීන කරන්න
+        update_status: ලිපිය යාවත්කාල කරන්න
       actions:
-        approve_appeal_html: "%{name} අනුමත මධ්‍යස්ථ තීරණ අභියාචනය %{target}සිට"
         approve_user_html: "%{name} අනුමත ලියාපදිංචිය %{target}සිට"
         assigned_to_self_report_html: "%{name} වාර්තාව %{target} තමන්ටම පවරා ඇත"
         change_email_user_html: "%{name} පරිශීලක %{target}ගේ ඊමේල් ලිපිනය වෙනස් කළේය"
@@ -225,7 +218,6 @@ si:
         destroy_email_domain_block_html: "%{name} අවහිර නොකළ විද්‍යුත් තැපැල් වසම %{target}"
         destroy_instance_html: "%{name} පිරිසිදු කරන ලද වසම %{target}"
         destroy_ip_block_html: IP %{target}සඳහා %{name} මකා දැමූ රීතිය
-        destroy_status_html: "%{name} පෝස්ට් %{target}විසින් ඉවත් කරන ලදී"
         destroy_unavailable_domain_html: "%{name} වසම %{target}වෙත බෙදා හැරීම නැවත ආරම්භ විය"
         disable_2fa_user_html: "%{name} පරිශීලක %{target}සඳහා සාධක දෙකක අවශ්‍යතාවය අක්‍රීය කර ඇත"
         disable_custom_emoji_html: "%{name} ආබාධිත ඉමොජි %{target}"
@@ -236,27 +228,25 @@ si:
         enable_user_html: පරිශීලක %{target}සඳහා %{name} සක්‍රීය පුරනය වීම
         memorialize_account_html: "%{name} %{target}ගේ ගිණුම සිහිවටන පිටුවක් බවට පත් කළේය"
         promote_user_html: "%{name} උසස් පරිශීලක %{target}"
-        reject_appeal_html: "%{name} %{target}සිට මධ්‍යස්ථ තීරණ අභියාචනය ප්‍රතික්ෂේප කරන ලදී"
         reject_user_html: "%{name} %{target}සිට ලියාපදිංචි වීම ප්‍රතික්ෂේප විය"
         remove_avatar_user_html: "%{name} %{target}ගේ අවතාරය ඉවත් කරන ලදී"
         reopen_report_html: "%{name} නැවත විවෘත කළ වාර්තාව %{target}"
         reset_password_user_html: "%{name} පරිශීලක %{target}හි මුරපදය යළි පිහිටුවන්න"
         resolve_report_html: "%{name} විසඳන ලද වාර්තාව %{target}"
-        sensitive_account_html: "%{name} %{target}හි මාධ්‍ය සංවේදී ලෙස සලකුණු කර ඇත"
+        sensitive_account_html: "%{target}ගේ මාධ්‍ය සංවේදී බව %{name} සලකුණු කර ඇත"
         silence_account_html: "%{name} සීමිත %{target}ගිණුමක්"
         suspend_account_html: "%{name} %{target}ගේ ගිණුම අත්හිටුවා ඇත"
         unassigned_report_html: "%{name} පවරා නොදුන් වාර්තාව %{target}"
         unblock_email_account_html: "%{name} %{target}ගේ ඊමේල් ලිපිනය අවහිර කිරීම ඉවත් කරන ලදී"
-        unsensitive_account_html: "%{name} සලකුණු නොකළ %{target}ගේ මාධ්‍ය සංවේදී ලෙස"
+        unsensitive_account_html: "%{target}ගේ මාධ්‍ය සංවේදී බව %{name} ඉවත් කර ඇත"
         unsilence_account_html: "%{target}ගිණුමේ %{name} undid සීමාව"
         unsuspend_account_html: "%{name} අත්හිටුවන ලද %{target}ගිණුම"
         update_announcement_html: "%{name} යාවත්කාලීන නිවේදනය %{target}"
         update_custom_emoji_html: "%{name} යාවත්කාලීන කළ ඉමොජි %{target}"
         update_domain_block_html: "%{target}සඳහා %{name} යාවත්කාලීන කරන ලද වසම් වාරණ"
-        update_status_html: "%{name} %{target}යාවත්කාලීන කරන ලද පළ කිරීම"
       empty: ලඝු-සටහන් හමු නොවිණි.
-      filter_by_action: ක්‍රියාව අනුව පෙරන්න
-      filter_by_user: පරිශීලක අනුව පෙරන්න
+      filter_by_action: ක්‍රියාමාර්ගය අනුව පෙරන්න
+      filter_by_user: පරිශ්‍රීලකයා අනුව පෙරන්න
       title: විගණන සටහන
     announcements:
       destroyed_msg: නිවේදනය සාර්ථකව මකා ඇත!
@@ -279,22 +269,22 @@ si:
       assign_category: කාණ්ඩය පැවරීම
       by_domain: වසම
       copied_msg: ඉමොජි වල දේශීය පිටපත සාර්ථකව සාදන ලදී
-      copy: පිටපත්
+      copy: පිටපතක්
       copy_failed_msg: එම ඉමොජියේ දේශීය පිටපතක් සෑදීමට නොහැකි විය
       create_new_category: නව ප්‍රවර්ගයක් සාදන්න
       created_msg: ඉමොජි සාර්ථකව නිර්මාණය කළා!
       delete: මකන්න
       destroyed_msg: Emojo සාර්ථකව විනාශ විය!
       disable: අබල කරන්න
-      disabled: අබල කර ඇත
+      disabled: අබලයි
       disabled_msg: එම ඉමොජිය සාර්ථකව අබල කරන ලදී
-      emoji: ඉමොජි
+      emoji: ඉමෝජි
       enable: සබල කරන්න
-      enabled: සබල කර ඇත
+      enabled: සබලයි
       enabled_msg: එම ඉමොජි සාර්ථකව සබල කරන ලදී
       image_hint: PNG හෝ GIF %{size}දක්වා
       list: ලැයිස්තුව
-      listed: ලැයිස්තුගත කර ඇත
+      listed: ලැයිස්තුගත
       new:
         title: නව අභිරුචි ඉමොජි එක් කරන්න
       not_permitted: මෙම ක්‍රියාව සිදු කිරීමට ඔබට අවසර නැත
@@ -311,9 +301,9 @@ si:
     dashboard:
       active_users: ක්රියාකාරී පරිශීලකයන්
       interactions: අන්තර්ක්රියා
-      media_storage: මාධ්ය ගබඩාව
-      new_users: නව පරිශීලකයන්
-      opened_reports: වාර්තා විවෘත විය
+      media_storage: මාධ්‍ය ආචයනය
+      new_users: නව පරිශ්‍රීලකයින්
+      opened_reports: විවෘත වාර්තා
       pending_appeals_html:
         one: "<strong>%{count}</strong> අභියාචනයක් බලාපොරොත්තු වේ"
         other: "<strong>%{count}</strong> අභියාචනා පොරොත්තු"
@@ -329,11 +319,11 @@ si:
       resolved_reports: වාර්තා විසඳා ඇත
       software: මෘදුකාංගය
       sources: ලියාපදිංචි මූලාශ්‍ර
-      space: අවකාශය භාවිතය
+      space: ඉඩ භාවිතය
       title: උපකරණ පුවරුව
       top_languages: ඉහළම ක්රියාකාරී භාෂා
       top_servers: ඉහළම ක්රියාකාරී සේවාදායකයන්
-      website: වෙබ් අඩවිය
+      website: අඩවිය
     disputes:
       appeals:
         empty: අභියාචනා හමු නොවීය.
@@ -353,7 +343,6 @@ si:
       existing_domain_block_html: ඔබ දැනටමත් %{name}මත දැඩි සීමාවන් පනවා ඇත, ඔබට <a href="%{unblock_url}">එය අවහිර කිරීම ඉවත් කිරීමට අවශ්‍යයි</a>.
       new:
         create: බ්ලොක් එකක් සාදන්න
-        hint: ඩොමේන් බ්ලොක් එක දත්ත සමුදාය තුල ගිණුම් ඇතුලත් කිරීම් නිර්මාණය වීම වලක්වන්නේ නැත, නමුත් එම ගිණුම් වලට ප්‍රතික්‍රියාශීලීව සහ ස්වයංක්‍රීයව විශේෂිත මධ්‍යස්ථ ක්‍රම යොදනු ඇත.
         severity:
           noop: කිසිවක් නැත
           suspend: අත්හිටුවන්න
@@ -361,7 +350,6 @@ si:
       obfuscate: අපැහැදිලි වසම් නාමය
       obfuscate_hint: වසම් සීමාවන් ලැයිස්තුව ප්‍රචාරණය කිරීම සබල කර ඇත්නම් ලැයිස්තුවේ වසම් නාමය අර්ධ වශයෙන් අපැහැදිලි කරන්න
       private_comment: පුද්ගලික අදහස
-      private_comment_hint: පරිපාලකයින් විසින් අභ්‍යන්තර භාවිතය සඳහා මෙම වසම් සීමාව ගැන අදහස් දක්වන්න.
       public_comment: ප්‍රසිද්ධ අදහස
       public_comment_hint: වසම් සීමාවන් ලැයිස්තුව ප්‍රචාරණය කිරීම සබල කර ඇත්නම්, සාමාන්‍ය ජනතාව සඳහා මෙම වසම් සීමාව ගැන අදහස් දක්වන්න.
       reject_media: මාධ්‍ය ගොනු ප්‍රතික්ෂේප කරන්න
@@ -415,16 +403,16 @@ si:
       by_domain: වසම
       confirm_purge: ඔබට මෙම වසමෙන් දත්ත ස්ථිරවම මැකීමට අවශ්‍ය බව විශ්වාසද?
       content_policies:
-        comment: අභ්යන්තර සටහන
+        comment: අභ්‍යන්තර සටහන
         description_html: ඔබට මෙම වසම සහ එහි ඕනෑම උප වසමකින් සියලුම ගිණුම් වලට අදාළ වන අන්තර්ගත ප්‍රතිපත්ති නිර්වචනය කළ හැක.
         policies:
           reject_media: මාධ්‍ය ප්‍රතික්ෂේප කරන්න
           reject_reports: වාර්තා ප්‍රතික්ෂේප කරන්න
           silence: සීමාව
           suspend: අත්හිටුවන්න
-        policy: ප්රතිපත්ති
+        policy: ප්‍රතිපත්තිය
         reason: පොදු හේතුව
-        title: අන්තර්ගත ප්රතිපත්ති
+        title: අන්තර්ගත ප්‍රතිපත්ති
       dashboard:
         instance_accounts_dimension: වැඩිපුරම අනුගමනය කරන ගිණුම්
         instance_accounts_measure: ගබඩා කර ඇති ගිණුම්
@@ -443,7 +431,7 @@ si:
         unavailable: ලබා ගත නොහැක
       delivery_available: බෙදා හැරීම ලබා ගත හැකිය
       delivery_error_days: බෙදා හැරීමේ දෝෂ සහිත දින
-      delivery_error_hint: දින %{count} ක් සඳහා බෙදා හැරීම කළ නොහැකි නම්, එය ස්වයංක්‍රීයව බෙදා හැරිය නොහැකි ලෙස ලකුණු කරනු ලැබේ.
+      delivery_error_hint: දවස් %{count} කින් බාරදීමට නොහැකි වුවහොත්, බාරදීමට නොහැකි බව ස්වයංක්‍රීයව සලකුණු වේ.
       destroyed_msg: "%{domain} සිට දත්ත දැන් ආසන්න මකාදැමීම සඳහා පෝලිම් කර ඇත."
       empty: වසම් කිසිවක් හමු නොවීය.
       known_accounts:
@@ -452,7 +440,7 @@ si:
       moderation:
         all: සියල්ල
         limited: සීමා සහිතයි
-        title: මධ්යස්ථභාවය
+        title: මැදිහත්කරණය
       private_comment: පුද්ගලික අදහස
       public_comment: ප්‍රසිද්ධ අදහස
       purge: පිරිසිදු කරන්න
@@ -462,13 +450,12 @@ si:
       total_followed_by_them: ඔවුන් විසින් අනුගමනය කරන ලදී
       total_followed_by_us: අප විසින් අනුගමනය කරන ලදී
       total_reported: ඔවුන් ගැන වාර්තා
-      total_storage: මාධ්ය ඇමුණුම්
+      total_storage: මාධ්‍ය ඇමුණුම්
       totals_time_period_hint_html: පහත දැක්වෙන එකතුවෙහි සියලු කාලය සඳහා දත්ත ඇතුළත් වේ.
     invites:
       deactivate_all: සියල්ල අක්‍රිය කරන්න
       filter:
         all: සියල්ල
-        available: පවතින
         expired: ඉකුත් වී ඇත
         title: පෙරහන
       title: ඇරයුම්
@@ -492,15 +479,13 @@ si:
     relays:
       add_new: නව රිලේ එක් කරන්න
       delete: මකන්න
-      description_html: "<strong>ෆෙඩරේෂන් රිලේ</strong> යනු එයට දායක වී ප්‍රකාශයට පත් කරන සේවාදායකයන් අතර විශාල ප්‍රසිද්ධ පළ කිරීම් හුවමාරු කරන අතරමැදි සේවාදායකයකි. <strong>එය කුඩා සහ මධ්‍යම සේවාදායකයන්ට fediverse</strong>වෙතින් අන්තර්ගතය සොයා ගැනීමට උදවු කළ හැකි අතර, එසේ නොමැති නම් දේශීය පරිශීලකයින්ට දුරස්ථ සේවාදායකයන් මත වෙනත් පුද්ගලයින් හස්තීයව අනුගමනය කිරීම අවශ්‍ය වේ."
       disable: අබල කරන්න
-      disabled: අබල කර ඇත
+      disabled: අබලයි
       enable: සබල කරන්න
-      enable_hint: සක්‍රිය කළ පසු, ඔබේ සේවාදායකය මෙම රිලේ වෙතින් සියලුම පොදු පළ කිරීම් සඳහා දායක වන අතර, මෙම සේවාදායකයේ පොදු පළ කිරීම් එයට යැවීම ආරම්භ කරනු ඇත.
       enabled: සබල කර ඇත
       inbox_url: රිලේ URL
       pending: රිලේ අනුමැතිය සඳහා රැඳී සිටිමින්
-      save_and_enable: සුරකින්න සහ සක්රිය කරන්න
+      save_and_enable: සුරකින්න හා සබල කරන්න
       setup: රිලේ සම්බන්ධතාවයක් සකසන්න
       signatures_not_enabled: ආරක්ෂිත මාදිලිය හෝ සීමිත ෆෙඩරේෂන් මාදිලිය සබල කර ඇති අතර රිලේ නිවැරදිව ක්‍රියා නොකරනු ඇත
       status: තත්වය
@@ -516,40 +501,37 @@ si:
       action_log: විගණන සටහන
       action_taken_by: විසින් ගන්නා ලද පියවර
       actions:
-        delete_description_html: වාර්තා කරන ලද පළ කිරීම් මකා දැමෙනු ඇති අතර එම ගිණුමේම අනාගත උල්ලංඝනයන් තීව්‍ර කිරීමට ඔබට උදවු කිරීමට වර්ජනයක් වාර්තා කරනු ඇත.
-        mark_as_sensitive_description_html: වාර්තා කරන ලද පළ කිරීම් වල මාධ්‍ය සංවේදී ලෙස සලකුණු කරනු ලබන අතර එම ගිණුම මගින් අනාගත උල්ලංඝනයන් උත්සන්න කිරීමට ඔබට උපකාර කිරීමට වර්ජනයක් වාර්තා කරනු ඇත.
         other_description_html: ගිණුමේ හැසිරීම පාලනය කිරීම සහ වාර්තා කළ ගිණුමට සන්නිවේදනය අභිරුචිකරණය කිරීම සඳහා තවත් විකල්ප බලන්න.
         resolve_description_html: වාර්තා කරන ලද ගිණුමට එරෙහිව කිසිදු ක්‍රියාමාර්ගයක් නොගනු ඇත, වැඩ වර්ජනයක් වාර්තා නොකෙරේ, වාර්තාව වසා දමනු ඇත.
       actions_description_html: මෙම වාර්තාව විසඳීමට ගත යුතු ක්‍රියාමාර්ගය තීරණය කරන්න. ඔබ වාර්තා කරන ලද ගිණුමට එරෙහිව දණ්ඩනීය ක්‍රියාමාර්ගයක් ගන්නේ නම්, <strong>Spam</strong> කාණ්ඩය තෝරාගත් විට හැර, ඔවුන්ට විද්‍යුත් තැපෑලෙන් දැනුම්දීමක් යවනු ලැබේ.
       add_to_report: වාර්තා කිරීමට තවත් එක් කරන්න
       are_you_sure: ඔබට විශ්වාසද?
       assign_to_self: මට පවරන්න
-      assigned: පවරා ඇති උපපරිපාලක
       by_target_domain: වාර්තා කළ ගිණුමෙහි වසම
-      category: වර්ගය
+      cancel: අවලංගු
+      category: ප්‍රවර්ගය
       category_description_html: මෙම ගිණුම සහ/හෝ අන්තර්ගතය වාර්තා කළ හේතුව වාර්තා කළ ගිණුම සමඟ සන්නිවේදනයේ සඳහන් කරනු ඇත
       comment:
         none: කිසිවක් නැත
       comment_description_html: 'වැඩි විස්තර සැපයීම සඳහා, %{name} ලිවීය:'
       created_at: වාර්තා කර ඇත
-      delete_and_resolve: පළ කිරීම් මකන්න
-      forwarded: යොමු කළා
-      forwarded_to: "%{domain}වෙත යොමු කරන ලදී"
-      mark_as_resolved: විසඳා ඇති ලෙස ලකුණු කරන්න
-      mark_as_sensitive: සංවේදී ලෙස ලකුණු කරන්න
-      mark_as_unresolved: නොවිසඳුනු ලෙස ලකුණු කරන්න
-      no_one_assigned: කිසි කෙනෙක නැහැ
+      delete_and_resolve: ලිපි මකන්න
+      forwarded: හරවා යවා ඇත
+      forwarded_to: "%{domain} වෙත හරවා යැවිණි"
+      mark_as_resolved: විසඳූ බව යොදන්න
+      mark_as_sensitive: සංවේදී බව යොදන්න
+      mark_as_unresolved: නොවිසඳූ බව යොදන්න
+      no_one_assigned: කිසිවෙක් නැත
       notes:
         create: සටහන එකතු කරන්න
-        create_and_resolve: සටහන සමඟ විසඳන්න
-        create_and_unresolve: සටහනක් සමඟ නැවත විවෘත කරන්න
+        create_and_resolve: සටහනක් සමඟ විසඳන්න
+        create_and_unresolve: සටහනක් සමඟ නැවත අරින්න
         delete: මකන්න
         placeholder: ගෙන ඇති ක්‍රියාමාර්ග, හෝ වෙනත් අදාළ යාවත්කාලීන විස්තර කරන්න...
         title: සටහන්
-      notes_description_html: අනෙකුත් උපපරිපාලකයින්ට සහ ඔබේ අනාගතයට සටහන් බලන්න සහ තබන්න
       quick_actions_description_html: 'වාර්තා කළ අන්තර්ගතය බැලීමට ඉක්මන් ක්‍රියාමාර්ගයක් ගන්න හෝ පහළට අනුචලනය කරන්න:'
       remote_user_placeholder: "%{instance}සිට දුරස්ථ පරිශීලකයා"
-      reopen: වාර්තාව නැවත විවෘත කරන්න
+      reopen: වාර්තාව නැවත අරින්න
       report: "@%{id} වාර්තා කරන්න"
       reported_account: වාර්තා කළ ගිණුම
       reported_by: විසින් වාර්තා
@@ -562,17 +544,52 @@ si:
       target_origin: වාර්තා කළ ගිණුමේ ආරම්භය
       title: වාර්තා
       unassign: පැවරීම ඉවත් කරන්න
+      unknown_action_msg: 'නොදන්නා ක්‍රියාමාර්ගයකි: %{action}'
       unresolved: නොවිසඳී ඇත
       updated_at: යාවත්කාලීන කරන ලදී
       view_profile: පැතිකඩ බලන්න
+    roles:
+      categories:
+        administration: පරිපාලනය
+        devops: DevOps
+        invites: ඇරයුම්
+        moderation: මැදිහත්කරණය
+        special: විශේෂ
+      delete: මකන්න
+      permissions_count:
+        one: අවසර %{count}
+        other: අවසර %{count}
+      privileges:
+        administrator: පරිපාලක
+        delete_user_data: පරිශ්‍රීලක දත්ත මකන්න
+        invite_users: ආරාධනා කරන්න
+        manage_announcements: නිවේදනය කළමනාකරණය
+        manage_federation: ඒකාබද්ධ කළමනාකරණය
+        manage_invites: ආරාධනා කළමනාකරණය
+        manage_reports: වාර්තා කළමනාකරණය
+        manage_roles: භූමිකා කළමනාකරණය
+        manage_rules: නීති කළමනාකරණය
+        manage_settings: සැකසුම් කළමනාකරණය
+        manage_user_access: ප්‍රවේශය කළමනාකරණය
+        manage_users: පරිශ්‍රීලකයින් කළමනාකරණය
+        view_dashboard: උපකරණ පුවරුව බලන්න
+        view_devops: DevOps
+      title: භූමිකා
     rules:
-      add_new: නීතිය එකතු කරන්න
       delete: මකන්න
       description_html: බොහෝ දෙනා සේවා කොන්දේසි කියවා එකඟ වූ බව ප්‍රකාශ කරන අතර, සාමාන්‍යයෙන් මිනිසුන් ගැටලුවක් පැනනඟින තුරු කියවා නොගනිති. <strong>පැතලි බුලට් පොයින්ට් ලිස්ට් එකකින් ඒවා ලබා දීමෙන් බැලූ බැල්මට ඔබේ සේවාදායකයේ නීති බැලීම පහසු කරන්න.</strong> තනි නීති කෙටි හා සරලව තබා ගැනීමට උත්සාහ කරන්න, නමුත් ඒවා විවිධ අයිතම වලට බෙදීමට උත්සාහ නොකරන්න.
-      edit: නීතිය සංස්කරණය කරන්න
+      edit: නීතිය සංස්කරණය
       empty: තවමත් සේවාදායක රීති නිර්වචනය කර නොමැත.
       title: සේවාදායකයේ නීති
     settings:
+      about:
+        manage_rules: සේවාදායකයේ නීති කළමනාකරණය
+        title: පිළිබඳව
+      appearance:
+        title: පෙනුම
+      discovery:
+        profile_directory: පැතිකඩ නාමාවලිය
+        public_timelines: ප්‍රසිද්ධ කාලරේඛා
       domain_blocks:
         all: හැමෝටම
         disabled: කාටවත් නෑ
@@ -582,28 +599,45 @@ si:
           approved: ලියාපදිංචි වීමට අනුමැතිය අවශ්‍යයි
           none: කිසිවෙකුට ලියාපදිංචි විය නොහැක
           open: ඕනෑම කෙනෙකුට ලියාපදිංචි විය හැක
+      title: සේවාදායකයේ සැකසුම්
     site_uploads:
       delete: උඩුගත කළ ගොනුව මකන්න
       destroyed_msg: අඩවිය උඩුගත කිරීම සාර්ථකව මකා ඇත!
+    software_updates:
+      documentation_link: තව දැනගන්න
+      release_notes: නිකුතු සටහන්
+      title: තිබෙන යාවත්කාල
+      type: වර්ගය
+      version: අනුවාදය
     statuses:
-      back_to_account: ගිණුම් පිටුවට ආපසු යන්න
-      back_to_report: වාර්තා පිටුවට ආපසු යන්න
+      account: කර්තෘ
+      application: යෙදුම
+      back_to_account: ගිණුමේ පිටුවට ආපසු
+      back_to_report: වාර්තා පිටුවට ආපසු
       batch:
         remove_from_report: වාර්තාවෙන් ඉවත් කරන්න
         report: වාර්තාව
-      deleted: මකා දමන ලදී
+      deleted: මකා ඇත
+      favourites: ප්‍රියතමයන්
+      history: අනුවාද ඉතිහාසය
+      language: භාෂාව
       media:
         title: මාධ්‍යය
-      no_status_selected: කිසිවක් තෝරා නොගත් බැවින් තනතුරු කිසිවක් වෙනස් කර නැත
-      title: ගිණුම් තනතුරු
-      with_media: මාධ්‍ය දායකත්වය
+      metadata: පාරදත්ත
+      no_status_selected: කිසිවක් නොතේරූ බැවින් ලිපි කිසිවක් වෙනස් කර නැත
+      open: ලිපිය අරින්න
+      original_status: මුල් ලිපිය
+      status_changed: ලිපිය සංශෝධිතයි
+      title: ගිණුමේ ලිපි
+      trending: නැගී එන
+      with_media: මාධ්‍ය සමඟ
     strikes:
       actions:
-        delete_statuses: "%{target}ගේ පළ කිරීම් %{name} මකා දමන ලදී"
+        delete_statuses: "%{target}ගේ ලිපි %{name} මකා ඇත"
         disable: "%{name} %{target}ගේ ගිණුම නිශ්චල කළේය"
-        mark_statuses_as_sensitive: "%{name} %{target}ගේ පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත"
+        mark_statuses_as_sensitive: "%{target}ගේ ලිපි සංවේදී බව %{name} සලකුණු කර ඇත"
         none: "%{name} %{target}අනතුරු ඇඟවීමක් යවා ඇත"
-        sensitive: "%{name} %{target}ගේ ගිණුම සංවේදී ලෙස ලකුණු කර ඇත"
+        sensitive: "%{target}ගේ ගිණුම සංවේදී බව %{name} සලකුණු කර ඇත"
         silence: "%{name} සීමිත %{target}ගිණුමක්"
         suspend: "%{name} %{target}ගේ ගිණුම අත්හිටුවා ඇත"
       appeal_approved: අභියාචනා කළා
@@ -611,28 +645,35 @@ si:
     system_checks:
       database_schema_check:
         message_html: පොරොත්තු දත්ත සමුදා සංක්‍රමණයන් ඇත. යෙදුම අපේක්ෂිත පරිදි ක්‍රියා කරන බව සහතික කිරීමට කරුණාකර ඒවා ධාවනය කරන්න
+      elasticsearch_preset:
+        action: ප්‍රලේඛනය බලන්න
+      elasticsearch_preset_single_node:
+        action: ප්‍රලේඛනය බලන්න
       elasticsearch_running_check:
         message_html: Elasticsearch වෙත සම්බන්ධ වීමට නොහැකි විය. කරුණාකර එය ක්‍රියාත්මක වන බව පරීක්ෂා කරන්න, නැතහොත් සම්පූර්ණ පෙළ සෙවීම අක්‍රීය කරන්න
       elasticsearch_version_check:
         message_html: 'නොගැලපෙන ඉලාස්ටික් සෙවුම් අනුවාදය: %{value}'
         version_comparison: Elasticsearch %{running_version} ක්‍රියාත්මක වන අතර %{required_version} අවශ්‍ය වේ
       rules_check:
-        action: සේවාදායක නීති කළමනාකරණය කරන්න
+        action: සේවාදායකයේ නීති කළමනාකරණය
         message_html: ඔබ සේවාදායක රීති කිසිවක් නිර්වචනය කර නැත.
       sidekiq_process_check:
         message_html: "%{value} පෝලිම්(ය) සඳහා Sidekiq ක්‍රියාවලියක් ක්‍රියාත්මක නොවේ. කරුණාකර ඔබේ Sidekiq වින්‍යාසය සමාලෝචනය කරන්න"
+      software_version_critical_check:
+        action: තිබෙන යාවත්කාල බලන්න
+      software_version_patch_check:
+        action: තිබෙන යාවත්කාල බලන්න
     tags:
       review: තත්‍වය සමාලෝචනය
       updated_msg: Hashtag සැකසුම් සාර්ථකව යාවත්කාලීන කරන ලදී
     title: පරිපාලනය
     trends:
-      allow: ඉඩ දෙන්න
-      approved: අනුමත කළා
+      allow: ඉඩදෙන්න
+      approved: අනුමතයි
       disallow: අවසර නොදෙන්න
       links:
-        allow: සබැඳියට ඉඩ දෙන්න
+        allow: සබැඳියට ඉඩදෙන්න
         allow_provider: ප්‍රකාශකයාට ඉඩ දෙන්න
-        description_html: මේවා ඔබගේ සේවාදායකය විසින් පළ කිරීම් දකින ගිණුම් මගින් දැනට බොහෝ සෙයින් බෙදා ගන්නා සබැඳි වේ. එය ඔබගේ පරිශීලකයින්ට ලෝකයේ සිදුවෙමින් පවතින දේ සොයා ගැනීමට උදවු කළ හැක. ඔබ ප්‍රකාශකයා අනුමත කරන තුරු සබැඳි කිසිවක් ප්‍රසිද්ධියේ ප්‍රදර්ශනය නොවේ. ඔබට තනි සබැඳිවලට ඉඩ දීමට හෝ ප්‍රතික්ෂේප කිරීමටද හැකිය.
         disallow: සබැඳියට ඉඩ නොදෙන්න
         disallow_provider: ප්‍රකාශකයාට ඉඩ නොදෙන්න
         shared_by_over_week:
@@ -640,7 +681,6 @@ si:
           other: පසුගිය සතිය පුරා පුද්ගලයින් %{count} දෙනෙකු විසින් බෙදා ගන්නා ලදී
         title: නැඟී එන සබැඳි
         usage_comparison: ඊයේ %{yesterday} හා සසඳන විට අද %{today} වරක් බෙදා ගන්නා ලදී
-      only_allowed: අවසර දී ඇත
       pending_review: පොරොත්තු සමාලෝචනය
       preview_card_providers:
         allowed: මෙම ප්‍රකාශකයාගේ සබැඳි නැඹුරු විය හැක
@@ -649,16 +689,15 @@ si:
         title: ප්‍රකාශකයන්
       rejected: ප්‍රතික්ෂේප කළා
       statuses:
-        allow: පළ කිරීමට ඉඩ දෙන්න
+        allow: පළ කිරීමට ඉඩදෙන්න
         allow_account: කතුවරයාට ඉඩ දෙන්න
-        description_html: මේ වන විට ඔබේ සේවාදායකය දන්නා පෝස්ට් මේ වන විට බොහෝ බෙදාහරින සහ මේ මොහොතේ වැඩි කැමැත්තක් දක්වයි. එය ඔබගේ නව සහ නැවත පැමිණෙන පරිශීලකයින්ට අනුගමනය කිරීමට තවත් පුද්ගලයින් සොයා ගැනීමට උදවු කළ හැක. ඔබ කර්තෘ අනුමත කරන තෙක් පළ කිරීම් කිසිවක් ප්‍රසිද්ධියේ නොපෙන්වන අතර, කර්තෘ තම ගිණුම අන් අයට යෝජනා කිරීමට ඉඩ දෙයි. ඔබට තනි පළ කිරීම්වලට ඉඩ දීමට හෝ ප්‍රතික්ෂේප කිරීමටද හැකිය.
-        disallow: පළ කිරීමට ඉඩ නොදෙන්න
+        disallow: ප්‍රකාශනයට ඉඩ නොදෙන්න
         disallow_account: කතුවරයාට ඉඩ නොදෙන්න
         not_discoverable: කර්තෘ සොයා ගත හැකි බව තෝරාගෙන නැත
         shared_by:
           one: එක් වරක් බෙදාගත් හෝ ප්‍රිය කරන ලදී
           other: "%{friendly_count} වරක් බෙදාගෙන ප්‍රිය කරන ලදී"
-        title: ප්‍රවණතා පළ කිරීම්
+        title: නැගී එන ලිපි
       tags:
         current_score: වත්මන් ලකුණු %{score}
         dashboard:
@@ -667,9 +706,8 @@ si:
           tag_servers_dimension: ඉහළම සේවාදායකයන්
           tag_servers_measure: විවිධ සේවාදායකයන්
           tag_uses_measure: සම්පූර්ණ භාවිතය
-        description_html: මේවා දැනට ඔබගේ සේවාදායකය දකින බොහෝ පළ කිරීම් වල දිස්වන හැෂ් ටැග් වේ. මේ මොහොතේ මිනිසුන් වැඩිපුරම කතා කරන්නේ කුමක් දැයි සොයා ගැනීමට එය ඔබගේ පරිශීලකයින්ට උදවු කළ හැක. ඔබ ඒවා අනුමත කරන තුරු හෑෂ් ටැග් ප්‍රසිද්ධියේ නොපෙන්වයි.
-        listable: යෝජනා කළ හැක
-        not_listable: යෝජනා නොකරනු ඇත
+        listable: යෝජනා කළ හැකිය
+        not_listable: යෝජනා නොවනු ඇත
         not_trendable: ප්‍රවණතා යටතේ දිස් නොවනු ඇත
         not_usable: භාවිතා කළ නොහැක
         peaked_on_and_decaying: "%{date}හි උච්චතම, දැන් දිරාපත් වෙමින් පවතී"
@@ -692,16 +730,15 @@ si:
     webhooks:
       add_new: අන්ත ලක්ෂ්‍යය එක් කරන්න
       delete: මකන්න
-      description_html: A <strong>webhook</strong> Mastodon හට තෝරාගත් සිදුවීම් පිළිබඳ තත්‍ය කාලීන දැනුම්දීම් <strong>ක්</strong> ඔබේම යෙදුමට තල්ලු කිරීමට හැකියාව ලබා දෙයි, එම නිසා ඔබේ යෙදුමට <strong>ස්වයංක්‍රීයව ප්‍රතික්‍රියා අවුලුවාලීමට හැකිය</strong>.
-      disable: අක්රිය කරන්න
-      disabled: ආබාධිතයි
+      disable: අබල කරන්න
+      disabled: අබලයි
       edit: අන්ත ලක්ෂ්‍යය සංස්කරණය කරන්න
       empty: ඔබට තවම වින්‍යාස කර ඇති කිසිදු webhook අන්ත ලක්ෂ්‍යයක් නොමැත.
       enable: සබල කරන්න
-      enabled: ක්රියාකාරී
+      enabled: ක්‍රියාත්මකයි
       enabled_events:
-        one: 1 සබල කළ සිදුවීමක්
-        other: "%{count} සබල කළ සිදුවීම්"
+        one: සබල සිදුවීම් 1
+        other: සබල සිදුවීම් %{count}
       events: සිදුවීම්
       new: නව webhook
       rotate_secret: රහස කරකවන්න
@@ -713,14 +750,10 @@ si:
       actions:
         delete_statuses: ඔවුන්ගේ පළ කිරීම් මකා දැමීමට
         disable: ඔවුන්ගේ ගිණුම කැටි කිරීමට
-        mark_statuses_as_sensitive: ඔවුන්ගේ තනතුරු සංවේදී ලෙස සලකුණු කිරීමට
         none: අනතුරු ඇඟවීමක්
         sensitive: ඔවුන්ගේ ගිණුම සංවේදී ලෙස සලකුණු කිරීමට
         silence: ඔවුන්ගේ ගිණුම සීමා කිරීමට
         suspend: ඔවුන්ගේ ගිණුම අත්හිටුවීමට
-      body: "%{target} යනු %{type}ක් වූ %{date}සිට %{action_taken_by} කින් මධ්‍යස්ථ තීරණයක් අභියාචනා කරයි. ඔවුන් මෙසේ ලිවීය."
-      next_steps: ඔබට මධ්‍යස්ථ තීරණය අවලංගු කිරීමට අභියාචනය අනුමත කළ හැකිය, නැතහොත් එය නොසලකා හරින්න.
-      subject: "%{username} යනු %{instance}හි මධ්‍යස්ථ තීරණයකට අභියාචනා කරයි"
     new_pending_account:
       body: නව ගිණුමේ විස්තර පහතින්. ඔබට මෙම යෙදුම අනුමත කිරීමට හෝ ප්‍රතික්ෂේප කිරීමට හැකිය.
       subject: නව ගිණුම සමාලෝචනය සඳහා %{instance} (%{username})
@@ -733,7 +766,7 @@ si:
       new_trending_links:
         title: නැඟී එන සබැඳි
       new_trending_statuses:
-        title: ප්‍රවණතා පළ කිරීම්
+        title: නැගී එන ලිපි
       new_trending_tags:
         no_approved_tags: දැනට අනුමත ප්‍රවණතා හැෂ් ටැග් නොමැත.
         requirements: 'මෙම ඕනෑම අපේක්ෂකයෙකුට #%{rank} අනුමත ප්‍රවණතා හැෂ් ටැගය අභිබවා යා හැකිය, එය දැනට ලකුණු %{lowest_tag_score}ක් සමඟ #%{lowest_tag_name} වේ.'
@@ -747,37 +780,38 @@ si:
     hint_html: ඔබට වෙනත් ගිණුමකින් මෙය වෙත මාරු වීමට අවශ්‍ය නම්, මෙහිදී ඔබට අන්වර්ථ නාමයක් සෑදිය හැක, එය පැරණි ගිණුමෙන් අනුගාමිකයින් මෙම ගිණුමට ගෙන යාමට පෙර අවශ්‍ය වේ. මෙම ක්‍රියාවම <strong>හානිකර නොවන සහ ආපසු හැරවිය හැකි</strong>වේ. <strong>ගිණුම් සංක්‍රමණය පැරණි ගිණුමෙන් ආරම්භ වේ</strong>.
     remove: අන්වර්ථය විසන්ධි කරන්න
   appearance:
-    advanced_web_interface: උසස් වියමන අතුරුමුහුණත
+    advanced_web_interface: සංකීර්ණ අතුරු මුහුණත
     advanced_web_interface_hint: 'ඔබට ඔබේ සම්පූර්ණ තිරයේ පළල භාවිතා කිරීමට අවශ්‍ය නම්, උසස් වෙබ් අතුරු මුහුණත ඔබට අවශ්‍ය පරිදි එකම වේලාවක බොහෝ තොරතුරු බැලීමට විවිධ තීරු වින්‍යාස කිරීමට ඉඩ දෙයි: නිවස, දැනුම්දීම්, ෆෙඩරේටඩ් කාලරාමුව, ඕනෑම ලැයිස්තු සහ හැෂ් ටැග්.'
     animations_and_accessibility: සජීවිකරණ සහ ප්‍රවේශ්‍යතාව
     confirmation_dialogs: තහවුරු කිරීමේ සංවාද
     discovery: සොයාගැනීම
     localization:
-      body: Mastodon ස්වේච්ඡා සේවකයන් විසින් පරිවර්තනය කර ඇත.
+      body: මාස්ටඩන් ස්වේච්ඡාවෙන් පරිවර්තනය කර ඇත.
       guide_link: https://crowdin.com/project/mastodon
       guide_link_text: සෑම කෙනෙකුටම දායක විය හැකිය.
-    sensitive_content: සංවේදී අන්තර්ගතය
+    sensitive_content: සංවේදී අන්තර්ගත
   application_mailer:
     notification_preferences: ඊමේල් මනාප වෙනස් කරන්න
     salutation: "%{name},"
     settings: 'ඊමේල් මනාප වෙනස් කරන්න: %{link}'
     view: 'දැක්ම:'
     view_profile: පැතිකඩ බලන්න
-    view_status: පළ කිරීම බලන්න
+    view_status: ලිපිය බලන්න
   applications:
-    created: යෙදුම සාර්ථකව නිර්මාණය කරන ලදී
+    created: යෙදුම සාර්ථකව සෑදිණි
     destroyed: යෙදුම සාර්ථකව මකා ඇත
+    logout: නික්මෙන්න
     regenerate_token: ප්‍රවේශ ටෝකනය නැවත උත්පාදනය කරන්න
     token_regenerated: ප්‍රවේශ ටෝකනය සාර්ථකව ප්‍රතිජනනය කරන ලදී
     warning: මෙම දත්ත සමඟ ඉතා ප්රවේශම් වන්න. එය කිසි විටෙක කිසිවෙකු සමඟ බෙදා නොගන්න!
     your_token: ඔබේ ප්‍රවේශ ටෝකනය
   auth:
+    apply_for_account: ගිණුමක් ඉල්ලන්න
     delete_account: ගිණුම මකන්න
     delete_account_html: ඔබට ඔබගේ ගිණුම මකා දැමීමට අවශ්‍ය නම්, ඔබට <a href="%{path}">මෙතැනින් ඉදිරියට යා හැක</a>. තහවුරු කිරීම සඳහා ඔබෙන් අසනු ඇත.
     description:
-      prefix_invited_by_user: "@%{name} ඔබට Mastodon හි මෙම සේවාදායකයට සම්බන්ධ වීමට ආරාධනා කරයි!"
+      prefix_invited_by_user: "@%{name} මෙම මාස්ටඩන් සේවාදායකයට ආරාධනා කර ඇත!"
       prefix_sign_up: අදම මාස්ටඩන් හි ලියාපදිංචි වන්න!
-      suffix: ගිණුමක් සමඟ, ඔබට ඕනෑම Mastodon සේවාදායකයකින් සහ තවත් බොහෝ දේ භාවිතා කරන්නන් සමඟ පුද්ගලයින් අනුගමනය කිරීමට, යාවත්කාලීන කිරීම් පළ කිරීමට සහ පණිවිඩ හුවමාරු කර ගැනීමට හැකි වනු ඇත!
     dont_have_your_security_key: ඔබගේ ආරක්ෂක යතුර නොමැතිද?
     forgot_password: මුරපදය අමතක වුනාද?
     invalid_reset_password_token: මුරපද යළි පිහිටුවීමේ ටෝකනය අවලංගු හෝ කල් ඉකුත් වී ඇත. කරුණාකර අලුත් එකක් ඉල්ලන්න.
@@ -788,12 +822,25 @@ si:
     logout: නික්මෙන්න
     migrate_account: වෙනත් ගිණුමකට යන්න
     migrate_account_html: ඔබට මෙම ගිණුම වෙනත් එකකට හරවා යැවීමට අවශ්‍ය නම්, ඔබට එය <a href="%{path}">මෙහි වින්‍යාසගත කළ හැක</a>.
-    or_log_in_with: හෝ සමඟින් පිවිසෙන්න
+    progress:
+      details: ඔබගේ විස්තර
+      rules: නීති පිළිගන්න
+    providers:
+      cas: CAS
+      saml: SAML
     register: ලියාපදිංචිය
     registration_closed: "%{instance} නව සාමාජිකයින් පිළිගන්නේ නැත"
-    reset_password: මුරපදය නැවත සකසන්න
-    security: ආරක්ෂාව
+    reset_password: මුරපදය යළි සකසන්න
+    rules:
+      accept: පිළිගන්න
+      back: ආපසු
+      title_invited: ඔබට ආරාධනා කර ඇත.
+    security: ආරක්‍ෂාව
     set_new_password: නව මුරපදය සකසන්න
+    setup:
+      title: ඔබගේ එනලිපි බලන්න
+    sign_in:
+      title: "%{domain} වෙත පිවිසෙන්න"
     status:
       account_status: ගිණුමේ තත්වය
       confirming: විද්‍යුත් තැපෑල තහවුරු කිරීම සම්පූර්ණ කිරීම සඳහා රැඳී සිටිමින්.
@@ -802,11 +849,11 @@ si:
       redirecting_to: එය දැනට %{acct}වෙත හරවා යවන බැවින් ඔබගේ ගිණුම අක්‍රියයි.
       view_strikes: ඔබගේ ගිණුමට එරෙහිව පසුගිය වර්ජන බලන්න
     too_fast: පෝරමය ඉතා වේගයෙන් ඉදිරිපත් කර ඇත, නැවත උත්සාහ කරන්න.
-    use_security_key: ආරක්ෂක යතුර භාවිතා කරන්න
+    use_security_key: ආරක්‍ෂණ යතුර භාවිතා කරන්න
   challenge:
     confirm: ඉදිරියට
     hint_html: "<strong>ඉඟිය:</strong> අපි ඉදිරි පැය සඳහා නැවත ඔබගේ මුරපදය ඔබෙන් නොඉල්ලමු."
-    invalid_password: නොවන මුරපදයකි
+    invalid_password: මුරපදය වැරදිය
     prompt: ඉදිරියට යාමට මුරපදය තහවුරු කරන්න
   crypto:
     errors:
@@ -814,20 +861,24 @@ si:
       invalid_signature: වලංගු Ed25519 අත්සනක් නොවේ
   date:
     formats:
-      default: "%b %d, %Y"
-      with_month_name: "%B %d, %Y"
+      default: "%Y %b %d"
+      with_month_name: "%Y %B %d"
   datetime:
     distance_in_words:
       about_x_hours: පැය %{count}
       about_x_months: මාස %{count}
+      about_x_years: ව.%{count}
+      almost_x_years: ව.%{count}
       half_a_minute: මේ දැන්
-      less_than_x_minutes: මීටර් %{count}
+      less_than_x_minutes: විනාඩි %{count}
       less_than_x_seconds: මේ දැන්
-      x_minutes: මීටර් %{count}
+      over_x_years: ව.%{count}
+      x_days: ද.%{count}
+      x_minutes: විනාඩි %{count}
       x_months: මාස %{count}
-      x_seconds: "%{count}තත්"
+      x_seconds: තත්. %{count}
   deletes:
-    challenge_not_passed: ඔබ ඇතුළත් කළ තොරතුරු නිවැරදි නැත
+    challenge_not_passed: ඔබ ඇතුල් කරන ලද තොරතුරු වැරදියි
     confirm_password: ඔබගේ අනන්‍යතාවය තහවුරු කිරීමට ඔබගේ වත්මන් මුරපදය ඇතුලත් කරන්න
     confirm_username: ක්රියා පටිපාටිය තහවුරු කිරීමට ඔබගේ පරිශීලක නාමය ඇතුලත් කරන්න
     proceed: ගිණුම මකන්න
@@ -835,7 +886,7 @@ si:
     warning:
       before: 'ඉදිරියට යාමට පෙර, කරුණාකර මෙම සටහන් හොඳින් කියවන්න:'
       caches: වෙනත් සේවාදායකයන් විසින් හැඹිලිගත කර ඇති අන්තර්ගතය දිගටම පැවතිය හැක
-      data_removal: ඔබගේ පළ කිරීම් සහ අනෙකුත් දත්ත ස්ථිරවම ඉවත් කරනු ලැබේ
+      data_removal: ඔබගේ ලිපි සහ අනෙකුත් දත්ත සදහටම ඉවත් කෙරෙනු ඇත
       email_change_html: ඔබට ඔබගේ ගිණුම මකා</a> <a href="%{path}">කළ හැක
       email_contact_html: එය තවමත් නොපැමිණියේ නම්, ඔබට උදව් සඳහා <a href="mailto:%{email}">%{email}</a> විද්‍යුත් තැපෑලෙන් යැවිය හැක
       email_reconfirmation_html: ඔබට තහවුරු කිරීමේ විද්‍යුත් තැපෑල නොලැබුනේ නම්, ඔබට එය <a href="%{path}">නැවත ඉල්ලා සිටිය හැක</a>
@@ -859,13 +910,12 @@ si:
       description_html: මේවා ඔබගේ ගිණුමට එරෙහිව ගන්නා ලද ක්‍රියා සහ %{instance}හි කාර්ය මණ්ඩලය විසින් ඔබට එවා ඇති අනතුරු ඇඟවීම් වේ.
       recipient: වෙත යොමු කරන ලදී
       reject_appeal: අභියාචනය ප්‍රතික්ෂේප කරන්න
-      status: 'පළ කිරීම #%{id}'
-      status_removed: පළ කිරීම දැනටමත් පද්ධතියෙන් ඉවත් කර ඇත
+      status: "#%{id} ලිපිය"
+      status_removed: ලිපිය දැනටමත් පද්ධතියෙන් ඉවත් කර ඇත
       title: "%{action} සිට %{date}"
       title_actions:
-        delete_statuses: පසු ඉවත් කිරීම
+        delete_statuses: ලිපි ඉවත් කිරීම
         disable: ගිණුම කැටි කිරීම
-        mark_statuses_as_sensitive: තනතුරු සංවේදී ලෙස සලකුණු කිරීම
         none: අවවාදයයි
         sensitive: ගිණුම සංවේදී ලෙස සලකුණු කිරීම
         silence: ගිණුම සීමා කිරීම
@@ -875,6 +925,9 @@ si:
       your_appeal_rejected: ඔබගේ අභියාචනය ප්‍රතික්ෂේප කර ඇත
   domain_validator:
     invalid_domain: වලංගු ඩොමේන් නාමයක් නොවේ
+  edit_profile:
+    basic_information: මූලික තොරතුරු
+    other: වෙනත්
   errors:
     '400': ඔබ ඉදිරිපත් කළ ඉල්ලීම අවලංගු හෝ විකෘති විය.
     '403': ඔබට මෙම පිටුව බැලීමට අවසර නැත.
@@ -884,42 +937,43 @@ si:
     '422':
       content: ආරක්ෂක සත්‍යාපනය අසාර්ථක විය. ඔබ කුකීස් අවහිර කරනවාද?
       title: ආරක්ෂක සත්‍යාපනය අසාර්ථක විය
-    '429': ඉල්ලීම් වැඩියි
+    '429': ඉල්ලීම් බොහෝය
     '500':
       content: අපට කණගාටුයි, නමුත් අපගේ පැත්තෙන් යමක් වැරදී ඇත.
-      title: මෙම පිටුව නිවැරදි නොවේ
+      title: මෙම පිටුව වැරදියි
     '503': තාවකාලික සේවාදායකයේ අසාර්ථක වීමක් හේතුවෙන් පිටුව සේවය කිරීමට නොහැකි විය.
-    noscript_html: Mastodon වෙබ් යෙදුම භාවිතා කිරීමට, කරුණාකර JavaScript සක්‍රීය කරන්න. විකල්පයක් ලෙස, ඔබේ වේදිකාව සඳහා</a> <a href="%{apps_path}">එකක් උත්සාහ කරන්න.
+    noscript_html: මාස්ටඩන් වියමන යෙදුම භාවිතා කිරීමට ජාවාස්ක්‍රිප්ට් සබල කරන්න. ඊට අමතරව, ඔබගේ වේදිකාව සඳහා වන <a href="%{apps_path}">නිසග යෙදුමක්</a> අත්හදා බලන්න.
   existing_username_validator:
     not_found: එම පරිශීලක නාමය සහිත දේශීය පරිශීලකයෙකු සොයා ගැනීමට නොහැකි විය
     not_found_multiple: "%{usernames}සොයා ගැනීමට නොහැකි විය"
   exports:
     archive_takeout:
       date: දිනය
-      download: ඔබගේ සුරක්ෂිතභාවය බාගන්න
-      hint_html: ඔබට ඔබගේ පළ කිරීම් <strong>සහ උඩුගත කළ මාධ්‍ය</strong>හි සංරක්ෂිතයක් ඉල්ලා සිටිය හැක. නිර්යාත කළ දත්ත ActivityPub ආකෘතියෙන්, ඕනෑම අනුකූල මෘදුකාංගයකට කියවිය හැකිය. ඔබට දින 7කට වරක් ලේඛනාගාරයක් ඉල්ලා සිටිය හැක.
+      download: ඔබගේ සංරක්‍ෂිතය බාගන්න
+      hint_html: ඔබට <strong>ලිපි සහ උඩුගත කළ මාධ්‍යවල</strong> සංරක්‍ෂණයක් ඉල්ලීමට හැකිය. නිර්යාත කළ දත්ත ActivityPub ආකෘතියට ගැළපෙන ඕනෑම මෘදුකාංගයකින් කියවීමට හැකිය. ඔබට දවස් 7 කට වරක් සංරක්‍ෂණයක් ඉල්ලීමට හැකිය.
       in_progress: ඔබගේ සංරක්ෂිතය සම්පාදනය කරමින්...
       request: ඔබගේ සංරක්ෂිතය ඉල්ලන්න
       size: ප්‍රමාණය
     blocks: ඔබ අවහිර කරන්න
-    bookmarks: පොත් යොමු කරන්න
+    bookmarks: පොත්යොමු
+    csv: CSV
     domain_blocks: වසම් අවහිර කිරීම්
-    lists: ලැයිස්තුව
+    lists: ලැයිස්තු
     mutes: ඔබ නිහඬ කරන්න
-    storage: මාධ්‍ය ගබඩාව
+    storage: මාධ්‍ය ආචයනය
   featured_tags:
     add_new: අලුතින් එකතු කරන්න
-    hint_html: "<strong>විශේෂාංගගත හැෂ් ටැග් මොනවාද?</strong> ඒවා ඔබේ පොදු පැතිකඩෙහි ප්‍රමුඛව ප්‍රදර්ශනය වන අතර එම හැෂ් ටැග් යටතේ ඔබේ පොදු පළ කිරීම් බ්‍රවුස් කිරීමට මිනිසුන්ට ඉඩ සලසයි. නිර්මාණාත්මක කෘති හෝ දිගු කාලීන ව්යාපෘති පිළිබඳ වාර්තාවක් තබා ගැනීම සඳහා ඔවුන් විශිෂ්ට මෙවලමක් වේ."
   filters:
     contexts:
       account: පැතිකඩයන්
-      home: නිවස සහ ලැයිස්තු
+      home: මුල සහ ලැයිස්තු
       notifications: දැනුම්දීම්
-      public: පොදු කාලරේඛා
+      public: ප්‍රසිද්ධ කාලරේඛා
       thread: සංවාද
     edit:
       add_keyword: මූල පදය එක් කරන්න
       keywords: මූල පද
+      statuses: තනි ලිපි
       title: පෙරහන සංස්කරණය
     errors:
       deprecated_api_multiple_keywords: මෙම පරාමිති පෙරහන් මූල පද එකකට වඩා අදාළ වන බැවින් මෙම යෙදුමෙන් වෙනස් කළ නොහැක. වඩාත් මෑත යෙදුමක් හෝ වෙබ් අතුරු මුහුණතක් භාවිතා කරන්න.
@@ -927,21 +981,32 @@ si:
     index:
       contexts: "%{contexts}හි පෙරහන්"
       delete: මකන්න
-      empty: ඔබට පෙරහන් නොමැත.
-      expires_in: "%{distance}කින් කල් ඉකුත් වේ"
-      expires_on: "%{date}දින කල් ඉකුත් වේ"
+      empty: ඔබ සතුව පෙරහන් නැත.
+      expires_in: "%{distance} කින් ඉකුත් වේ"
+      expires_on: "%{date} දී ඉකුත් වේ"
       keywords:
-        one: "%{count} මූල පදය"
-        other: "%{count} මූල පද"
+        one: මූල පද %{count}
+        other: මූල පද %{count}
+      statuses:
+        one: ලිපි %{count}
+        other: ලිපි %{count}
       title: පෙරහන්
     new:
       save: නව පෙරහන සුරකින්න
       title: නව පෙරහනක් එකතු කරන්න
+    statuses:
+      back_to_filter: පෙරහනට ආපසු
+      batch:
+        remove: පෙරහනෙන් ඉවතලන්න
+      index:
+        title: පෙරූ ලිපි
   generic:
     all: සියල්ල
-    changes_saved_msg: වෙනස්කම් සාර්ථකව සුරකින ලදී!
+    cancel: අවලංගු
+    changes_saved_msg: වෙනස්කම් සාර්ථකව සුරැකිණි!
     copy: පිටපතක්
     delete: මකන්න
+    deselect: සියල්ල නොතෝරන්න
     none: කිසිවක් නැත
     order_by: විසින් ඇණවුම් කරන්න
     save_changes: වෙනස්කම් සුරකින්න
@@ -951,24 +1016,33 @@ si:
       other: යමක් තවමත් හරි නැත! කරුණාකර පහත දෝෂ %{count} ක් සමාලෝචනය කරන්න
   imports:
     errors:
+      empty: හිස් CSV ගොනුවකි
       over_rows_processing_limit: පේළි %{count} කට වඩා අඩංගු වේ
+      too_large: ගොනුව ඉතා විශාලයි
+    imported: ආයාත විය
     modes:
-      merge: ඒකාබද්ධ කරන්න
+      merge: ඒකාබද්ධ
       merge_long: පවතින වාර්තා තබා නව ඒවා එකතු කරන්න
       overwrite: උඩින් ලියන්න
       overwrite_long: වත්මන් වාර්තා නව ඒවා සමඟ ප්‍රතිස්ථාපනය කරන්න
     preface: ඔබ අනුගමන කරන හෝ අවහිර කරන පුද්ගලයින්ගේ ලැයිස්තුවක් වැනි වෙනත් සේවාදායකයකින් ඔබ නිර්යාත කර ඇති දත්ත ඔබට ආයාත කළ හැක.
+    status: තත්‍වය
     success: ඔබගේ දත්ත සාර්ථකව උඩුගත කර ඇති අතර නියමිත වේලාවට සැකසෙනු ඇත
+    titles:
+      lists: ලැයිස්තු ආයාත වෙමින්
+    type_groups:
+      constructive: අනුගමන හා පොත්යොමු
     types:
-      blocking: අවහිර කිරීමේ ලැයිස්තුව
-      bookmarks: පොත් යොමු
-      domain_blocking: වසම් අවහිර කිරීමේ ලැයිස්තුව
-      following: පහත ලැයිස්තුව
+      blocking: අවහිර ලැයිස්තුව
+      bookmarks: පොත්යොමු
+      domain_blocking: වසම් අවහිර ලැයිස්තුව
+      following: අනුගමන ලැයිස්තුව
+      lists: ලැයිස්තු
       muting: නිහඬ කිරීමේ ලැයිස්තුව
     upload: උඩුගත කරන්න
   invites:
-    delete: අක්රිය කරන්න
-    expired: කල් ඉකුත් වී ඇත
+    delete: අක්‍රිය කරන්න
+    expired: ඉකුත් වී ඇත
     expires_in:
       '1800': විනාඩි 30
       '21600': පැය 6
@@ -987,7 +1061,7 @@ si:
     table:
       expires_at: කල් ඉකුත් වේ
       uses: භාවිතා කරයි
-    title: මිනිසුන්ට ආරාධනා කරන්න
+    title: ආරාධනා කරන්න
   login_activities:
     authentication_methods:
       otp: ද්වි-සාධක සත්‍යාපන යෙදුම
@@ -1001,7 +1075,7 @@ si:
     title: සත්‍යාපන ඉතිහාසය
   media_attachments:
     validations:
-      images_and_video: දැනටමත් පින්තූර අඩංගු පළ කිරීමකට වීඩියෝවක් ඇමිණිය නොහැක
+      images_and_video: දැනටමත් රූප අඩංගු ලිපියකට දෘශ්‍යකයක් ඇමිණීමට නොහැකිය
       not_ready: සැකසීම අවසන් නොකළ ගොනු ඇමිණිය නොහැක. මොහොතකින් නැවත උත්සාහ කරන්න!
       too_many: ගොනු 4කට වඩා ඇමිණිය නොහැක
   migrations:
@@ -1036,7 +1110,7 @@ si:
       other_data: වෙනත් දත්ත කිසිවක් ස්වයංක්‍රීයව ගෙන නොයනු ඇත
       redirect: ඔබගේ ජංගම ගිණුමේ පැතිකඩ යළි-යොමු කිරීමේ දැන්වීමක් සමඟ යාවත්කාලීන කෙරෙන අතර සෙවුම් වලින් බැහැර කරනු ලැබේ
   moderation:
-    title: මධ්යස්ථභාවය
+    title: මැදිහත්කරණය
   move_handler:
     carry_blocks_over_text: මෙම පරිශීලකයා ඔබ අවහිර කර තිබූ %{acct}සිට මාරු විය.
     carry_mutes_over_text: මෙම පරිශීලකයා ඔබ නිශ්ශබ්ද කර තිබූ %{acct}වෙතින් මාරු විය.
@@ -1044,37 +1118,31 @@ si:
   notification_mailer:
     admin:
       report:
-        subject: "%{name} වාර්තාවක් ඉදිරිපත් කළේය"
+        subject: "%{name} වාර්තාවක් යොමු කර ඇත"
       sign_up:
         subject: "%{name} අත්සන් කර ඇත"
     favourite:
-      body: 'ඔබේ පළ කිරීම %{name}විසින් ප්‍රිය කරන ලදී:'
-      subject: "%{name} ඔබගේ පළ කිරීම ප්‍රිය කරන ලදී"
-      title: නව ප්රියතම
+      body: "%{name} ඔබගේ ලිපියට ප්‍රිය කළා:"
+      subject: "%{name} ඔබගේ ලිපියට ප්‍රිය කළා"
+      title: නව ප්‍රියතමය
     follow:
       body: "%{name} දැන් ඔබව අනුගමනය කරයි!"
       subject: "%{name} දැන් ඔබව අනුගමනය කරයි"
       title: නව අනුගාමිකයෙක්
     follow_request:
-      action: අනුගමනය කරන ඉල්ලීම් කළමනාකරණය කරන්න
+      action: අනුගමන ඉල්ලීම් කළමනාකරණය
       body: "%{name} ඔබව අනුගමනය කිරීමට ඉල්ලා ඇත"
       subject: 'පොරොත්තු අනුගාමිකයා: %{name}'
-      title: නව අනුගමනය ඉල්ලීම
+      title: නව අනුගමන ඉල්ලීම
     mention:
       action: පිළිතුර
-      body: 'ඔබව මෙහි %{name} කින් සඳහන් කර ඇත:'
-      subject: ඔබව %{name}මගින් සඳහන් කර ඇත
+      body: "%{name} ඔබව මෙහි සඳහන් කර ඇත:"
+      subject: "%{name} ඔබව සඳහන් කර ඇත"
       title: නව සඳැහුම
-    poll:
-      subject: "%{name} න් මත විමසුමක් අවසන් විය"
-    reblog:
-      body: 'ඔබේ පළ කිරීම %{name}කින් වැඩි කරන ලදී:'
-      subject: "%{name} ඔබේ පළ කිරීම ඉහළ නැංවීය"
-      title: නව තල්ලුවක්
     status:
       subject: "%{name} දැන් පළ කළා"
     update:
-      subject: "%{name} පළ කිරීමක් සංස්කරණය කළා"
+      subject: "%{name} ලිපිය සංශෝධනය කළා"
   notifications:
     email_events: ඊමේල් දැනුම්දීම් සඳහා සිදුවීම්
     email_events_hint: 'ඔබට දැනුම්දීම් ලැබීමට අවශ්‍ය සිදුවීම් තෝරන්න:'
@@ -1084,11 +1152,8 @@ si:
       decimal_units:
         format: "%n%u"
         units:
-          billion: බී
           million: ද.ල.
-          quadrillion: ප්‍රශ්නය
           thousand: ද.
-          trillion: ටී
   otp_authentication:
     code_hint: තහවුරු කිරීමට ඔබගේ සත්‍යාපන යෙදුම මගින් ජනනය කරන ලද කේතය ඇතුළු කරන්න
     description_html: ඔබ සත්‍යාපන යෙදුමක් භාවිතයෙන් <strong>ද්වි-සාධක සත්‍යාපනය</strong> සක්‍රීය කරන්නේ නම්, ලොගින් වීමේදී ඔබට ඔබගේ දුරකථනය සන්තකයේ තබා ගැනීමට අවශ්‍ය වනු ඇත, එය ඔබට ඇතුළු වීමට ටෝකන ජනනය කරයි.
@@ -1105,19 +1170,21 @@ si:
     truncate: "&hellip;"
   polls:
     errors:
-      already_voted: ඔබ දැනටමත් මෙම මත විමසුමට ඡන්දය දී ඇත
-      duplicate_options: අනුපිටපත් අයිතම අඩංගු වේ
+      already_voted: ඔබ මෙම මත විමසුමට ඡන්දය දී ඇත
       duration_too_long: අනාගතයට බොහෝ දුරයි
-      duration_too_short: ඉතා ඉක්මනින් වේ
-      expired: මත විමසුම දැනටමත් අවසන් වී ඇත
+      expired: මත විමසුම දැනටමත් නිමා වී ඇත
       invalid_choice: තෝරාගත් ඡන්ද විකල්පය නොපවතී
-      over_character_limit: එක් එක් අක්ෂර %{max} ට වඩා දිගු විය නොහැක
-      too_few_options: එක් අයිතමයකට වඩා තිබිය යුතුය
-      too_many_options: අයිතම %{max} කට වඩා අඩංගු විය නොහැක
+      self_vote: ඔබගේ මත විමසුමට ජන්දය දීමට නොහැකිය
+      too_few_options: එක් අථකයකට වඩා තිබිය යුතුය
+      too_many_options: අථක %{max} කට වඩා අඩංගු නොවිය යුතුය
   preferences:
     other: වෙනත්
-    posting_defaults: පෙරනිමි පළ කිරීම
-    public_timelines: පොදු කාලරේඛා
+    posting_defaults: සැමවිට පළ කරන ආකාරය
+    public_timelines: ප්‍රසිද්ධ කාලරේඛා
+  privacy:
+    search: සොයන්න
+  privacy_policy:
+    title: රහස්‍යතා ප්‍රතිපත්තිය
   reactions:
     errors:
       limit_reached: විවිධ ප්‍රතික්‍රියා වල සීමාව ළඟා විය
@@ -1133,7 +1200,7 @@ si:
     most_recent: මෑතකාලීන
     moved: මාරු කළා
     mutual: අන්යෝන්ය
-    primary: ප්රාථමික
+    primary: ප්‍රාථමික
     relationship: සම්බන්ධතාවය
     remove_selected_domains: තෝරාගත් වසම් වලින් සියලුම අනුගාමිකයින් ඉවත් කරන්න
     remove_selected_followers: තෝරාගත් අනුගාමිකයින් ඉවත් කරන්න
@@ -1147,56 +1214,62 @@ si:
   rss:
     content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම:'
     descriptions:
-      account: "@%{acct}සිට පොදු පළ කිරීම්"
-      tag: "#%{hashtag}ටැග් කර ඇති පොදු පළ කිරීම්"
+      account: "@%{acct} වෙතින් ප්‍රසිද්ධ ලිපි"
   scheduled_statuses:
-    over_daily_limit: ඔබ අද දිනට නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත
-    over_total_limit: ඔබ නියමිත පළ කිරීම් %{limit} සීමාව ඉක්මවා ඇත
     too_soon: නියමිත දිනය අනාගතයේ විය යුතුය
   sessions:
     activity: අවසාන ක්‍රියාකාරකම
     browser: අතිරික්සුව
     browsers:
       alipay: අලිපේ
+      blackberry: බ්ලැක්බෙරි
       chrome: ක්‍රෝම්
       edge: මයික්‍රොසොෆ්ට් එඩ්ගේ
       electron: ඉලෙක්ට්‍රෝන්
       firefox: ෆයර්ෆොක්ස්
       generic: නොදන්නා අතිරික්සුවකි
+      huawei_browser: හුආවේ අතිරික්සුව
       ie: ඉන්ටර්නෙට් එක්ස්ප්ලෝරර්
       micro_messenger: මයික්‍රොමැසෙන්ජර්
-      nokia: Nokia S40 Ovi බ්‍රව්සරය
+      nokia: නොකියා S40 Ovi අතිරික්සුව
       opera: ඔපෙරා
       otter: ඔටර්
+      phantom_js: PhantomJS
       qq: කියුකියු අතිරික්සුව
       safari: සෆාරි
+      uc_browser: UC අතිරික්සුව
+      unknown_browser: නොදන්නා අතිරික්සුවකි
       weibo: වෙයිබො
-    current_session: වත්මන් සැසිය
-    description: "%{browser} මත %{platform}"
-    explanation: මේවා දැනට ඔබගේ Mastodon ගිණුමට ලොග් වී ඇති වෙබ් බ්‍රව්සර් වේ.
+    current_session: වත්මන් වාරය
+    description: "%{platform} හි %{browser}"
+    explanation: ඔබගේ මාස්ටඩන් ගිණුමට පිවිසීම සඳහා භාවිතා කර තිබෙන අතිරික්සු.
     ip: අ.ජා. කෙ. (IP)
     platforms:
       adobe_air: ඇඩෝබි එයාර්
       android: ඇන්ඩ්‍රොයිඩ්
+      blackberry: බ්ලැක්බෙරි
+      chrome_os: ChromeOS
       firefox_os: ෆයර්ෆොක්ස් ඕඑස්
       ios: අයිඕඑස්
+      kai_os: KaiOS
       linux: ලිනක්ස්
       mac: මැක්ඕඑස්
+      unknown_platform: නොදන්නා වේදිකාවකි
       windows: වින්ඩෝස්
       windows_mobile: වින්ඩෝස් මොබයිල්
       windows_phone: වින්ඩෝස් පෝන්
     revoke: අවලංගු කරන්න
-    revoke_success: සැසිය සාර්ථකව අවලංගු කරන ලදී
-    title: සැසිවාර
+    revoke_success: වාරය සාර්ථකව අවලංගු කෙරිණි
+    title: වාර
     view_authentication_history: ඔබගේ ගිණුමේ සත්‍යාපන ඉතිහාසය බලන්න
   settings:
     account: ගිණුම
     account_settings: ගිණුමේ සැකසුම්
     aliases: ගිණුම් අන්වර්ථ නාමයන්
     appearance: පෙනුම
-    authorized_apps: අවසර ලත් යෙදුම්
-    back: Mastodon වෙත නැවත යන්න
-    delete: ගිණුම මකා දැමීම
+    authorized_apps: බලයලත් යෙදුම්
+    back: මාස්ටඩන් වෙත ආපසු
+    delete: ගිණුම මැකීම
     development: සංවර්ධනය
     edit_profile: පැතිකඩ සංස්කරණය
     export: දත්ත නිර්යාතය
@@ -1205,13 +1278,12 @@ si:
     import_and_export: ආයාත හා නිර්යාත
     migrate: ගිණුම් සංක්‍රමණය
     notifications: දැනුම්දීම්
-    preferences: මනාප
-    profile: පැතිකඩ
+    preferences: අභිප්‍රේත
+    profile: ප්‍රසිද්ධ පැතිකඩ
     relationships: අනුගාමිකයින් සහ අනුගාමිකයින්
-    statuses_cleanup: ස්වයංක්‍රීය පළ කිරීම් මකාදැමීම
-    strikes: මධ්‍යස්ථ වැඩ වර්ජන
+    statuses_cleanup: ස්වයංක්‍රීය ලිපි මැකීම
     two_factor_authentication: ද්වි සාධක Aut
-    webauthn_authentication: ආරක්ෂක යතුරු
+    webauthn_authentication: ආරක්‍ෂණ යතුරු
   statuses:
     attached:
       audio:
@@ -1219,35 +1291,33 @@ si:
         other: "%{count} ශ්රව්ය"
       description: 'අමුණා ඇත: %{attached}'
       image:
-        one: "%{count} රූපය"
-        other: පින්තූර %{count}
+        one: රූප %{count}
+        other: රූප %{count}
       video:
-        one: "%{count} වීඩියෝ"
-        other: වීඩියෝ %{count}
-    boosted_from_html: "%{acct_link}සිට වැඩි කරන ලදී"
+        one: දෘශ්‍යක %{count}
+        other: දෘශ්‍යක %{count}
     content_warning: 'අන්තර්ගත අනතුරු ඇඟවීම: %{warning}'
-    default_language: අතුරු මුහුණත් භාෂාවට සමානයි
+    default_language: අතුරු මුහුණතේ භාෂාවම
     disallowed_hashtags:
       one: 'අනුමත නොකළ හැෂ් ටැගයක් අඩංගු විය: %{tags}'
       other: 'අනුමත නොකළ හැෂ් ටැග් අඩංගු විය: %{tags}'
     edited_at_html: සංස්කරණය %{date}
     errors:
-      in_reply_not_found: ඔබ පිළිතුරු දීමට උත්සාහ කරන පළ කිරීම පවතින බවක් නොපෙනේ.
+      in_reply_not_found: ඔබ පිළිතුරු දීමට තැත් කරන ලිපිය නොපවතින බව පෙනෙයි.
     open_in_web: වෙබයේ විවෘත කරන්න
     over_character_limit: අක්ෂර සීමාව %{max} ඉක්මවා ඇත
     pin_errors:
-      direct: සඳහන් කළ පරිශීලකයින්ට පමණක් පෙනෙන පළ කිරීම් ඇමිණිය නොහැක
-      limit: ඔබ දැනටමත් උපරිම පළ කිරීම් සංඛ්‍යාව අමුණා ඇත
-      ownership: වෙනත් කෙනෙකුගේ පළ කිරීමක් ඇමිණිය නොහැක
-      reblog: බූස්ට් එකක් ඇලවිය නොහැක
+      direct: සඳහන් කළ අයට පමණක් පෙනෙන ලිපි ඇමිණීමට නොහැකිය
+      limit: දැනටමත් මුදුනට ඇමිණිමට හැකි ලිපි සීමාවට ළඟා වී ඇත
+      ownership: වෙනත් අයගේ ලිපි ඇමිණීමට නොහැකිය
     poll:
       total_people:
-        one: "%{count} පුද්ගලයෙක්"
-        other: පුද්ගලයන් %{count}
+        one: පුද්ගලයින් %{count}
+        other: පුද්ගලයින් %{count}
       total_votes:
-        one: "%{count} ඡන්ද"
+        one: ඡන්ද %{count} යි
         other: ඡන්ද %{count} යි
-      vote: ඡන්දය දෙන්න
+      vote: ඡන්දය
     show_more: තව පෙන්වන්න
     show_newer: අලුත්ම පෙන්වන්න
     show_older: පැරණි පෙන්වන්න
@@ -1262,39 +1332,32 @@ si:
       unlisted: ලැයිස්තුගත නොකළ
       unlisted_long: සෑම කෙනෙකුටම දැකිය හැක, නමුත් පොදු කාලරාමුවෙහි ලැයිස්තුගත කර නොමැත
   statuses_cleanup:
-    enabled: පැරණි පළ කිරීම් ස්වයංක්‍රීයව මකන්න
-    enabled_hint: ඔබේ පළ කිරීම් පහත ව්‍යතිරේකවලින් එකකට ගැලපෙන්නේ නම් මිස, ඒවා නිශ්චිත වයස් සීමාවකට ළඟා වූ පසු ස්වයංක්‍රීයව මකයි
-    exceptions: ව්යතිරේක
-    explanation: පළ කිරීම් මකා දැමීම මිල අධික මෙහෙයුමක් වන බැවින්, සේවාදායකය වෙනත් ආකාරයකින් කාර්යබහුල නොවන විට කාලයත් සමඟ මෙය සෙමින් සිදු කෙරේ. මෙම හේතුව නිසා, ඔබේ පළ කිරීම් වයස් සීමාවට ළඟා වූ පසු ටික වේලාවකට පසුව මකා දැමිය හැක.
-    ignore_favs: ප්‍රියතමයන් නොසලකා හරින්න
-    ignore_reblogs: වැඩි කිරීම් නොසලකා හරින්න
+    enabled: පරණ ලිපි ස්වයංක්‍රීයව මකන්න
+    exceptions: හැර දැමීම්
+    ignore_favs: ප්‍රියතමයන් නොසලකන්න
     interaction_exceptions: අන්තර්ක්‍රියා මත පදනම් වූ ව්‍යතිරේක
-    interaction_exceptions_explanation: පළ කිරීම් වරක් ඒවා ඉක්මවා ගිය පසු ප්‍රියතම හෝ බූස්ට් සීමාවට පහළින් ගියහොත් ඒවා මැකීමට සහතිකයක් නොමැති බව සලකන්න.
-    keep_direct: සෘජු පණිවිඩ තබා ගන්න
-    keep_direct_hint: ඔබගේ සෘජු පණිවිඩ කිසිවක් මකන්නේ නැත
-    keep_media: මාධ්‍ය ඇමුණුම් සමඟ පළ කිරීම් තබා ගන්න
-    keep_media_hint: මාධ්‍ය ඇමුණුම් ඇති ඔබේ පළ කිරීම් කිසිවක් මකන්නේ නැත
+    keep_direct: සෘජු පණිවිඩ තබාගන්න
+    keep_direct_hint: ඔබගේ සෘජු පණිවිඩ කිසිවක් මැකෙන්නේ නැත
+    keep_media: මාධ්‍ය ඇමුණුම් සහිත ලිපි තබාගන්න
+    keep_media_hint: මාධ්‍ය ඇමුණුම් සහිත ඔබගේ ලිපි කිසිවක් මැකෙන්නේ නැත
     keep_pinned: ඇමිණූ ලිපි තබාගන්න
     keep_pinned_hint: ඔබ ඇමිණූ ලිපි කිසිවක් නොමැකෙයි
-    keep_polls: ඡන්ද තබා ගන්න
-    keep_polls_hint: ඔබගේ ඡන්ද විමසීම් කිසිවක් මකන්නේ නැත
-    keep_self_bookmark: ඔබ පිටු සලකුණු කළ පළ කිරීම් තබා ගන්න
-    keep_self_bookmark_hint: ඔබ ඔබේම පළ කිරීම් පිටු සලකුණු කර ඇත්නම් ඒවා මකා නොදමන්න
-    keep_self_fav: ඔබ කැමති පළ කිරීම් තබා ගන්න
-    keep_self_fav_hint: ඔබ ඒවාට කැමති නම් ඔබේම පළ කිරීම් මකා නොදමන්න
+    keep_polls_hint: ඔබගේ මත විමසුම් මැකෙන්නේ නැත
+    keep_self_bookmark: ඔබ පොත්යොමු තැබූ ලිපි තබාගන්න
+    keep_self_bookmark_hint: ඔබගේම ලිපි වලට පොත්යොමු තබා ඇත්නම් ඒවා මකා නොදැමෙයි
+    keep_self_fav: ඔබ ප්‍රිය කළ ලිපි තබාගන්න
+    keep_self_fav_hint: ඔබගේම ලිපි වලට ප්‍රිය කර ඇත්නම් ඒවා මකා නොදැමෙයි
     min_age:
-      '1209600': සති 2 යි
-      '15778476': මාස 6 යි
-      '2629746': මාස 1 යි
-      '31556952': වසර 1 යි
-      '5259492': මාස 2 ක්
-      '604800': 1 සතිය
-      '63113904': අවුරුදු 2 ක්
-      '7889238': මාස 3 යි
+      '1209600': සති 2
+      '15778476': මාස 6
+      '2629746': මාස 1
+      '31556952': අවුරුදු 1
+      '5259492': මාස 2
+      '604800': සති 1
+      '63113904': අවුරුදු 2
+      '7889238': මාස 3
     min_age_label: වයස් සීමාව
-    min_favs: අඩුම තරමින් පෝස්ට් ප්‍රිය කරන ලෙස තබා ගන්න
-    min_reblogs: අඩුම තරමේ පෝස්ට් බූස්ට් කරගෙන තියාගන්න
-    min_reblogs_hint: අඩුම තරමින් මෙම වාර ගණන වැඩි කර ඇති ඔබගේ පළ කිරීම් කිසිවක් මකා නොදමන්න. බූස්ට් ගණන නොතකා පළ කිරීම් මැකීමට හිස්ව තබන්න
+    min_favs: අවම වශයෙන් ප්‍රිය කළ ලිපි තබාගන්න
   stream_entries:
     sensitive_content: සංවේදී අන්තර්ගතයකි
   strikes:
@@ -1303,22 +1366,26 @@ si:
   tags:
     does_not_match_previous_name: පෙර නමට නොගැලපේ
   themes:
-    contrast: Mastodon (ඉහළ වෙනස)
-    default: මැස්ටෝඩන් (අඳුරු)
-    mastodon-light: මැස්ටෝඩන් (ආලෝකය)
+    default: මාස්ටඩන් (අඳුරු)
+    mastodon-light: මාස්ටඩන් (දීප්ත)
+  time:
+    formats:
+      default: "%Y %b %d, %H:%M"
+      month: "%Y %b"
+      with_time_zone: "%Y %b %d, %H:%M %Z"
   two_factor_authentication:
-    add: එකතු කරන්න
+    add: එකතු
     disable: 2FA අබල කරන්න
     disabled_success: ද්වි-සාධක සත්‍යාපනය සාර්ථකව අබල කර ඇත
     edit: සංස්කරණය
     enabled: ද්වි-සාධක සත්‍යාපනය සක්‍රීය කර ඇත
     enabled_success: ද්වි-සාධක සත්‍යාපනය සාර්ථකව සබල කර ඇත
-    generate_recovery_codes: ප්‍රතිසාධන කේත ජනනය කරන්න
+    generate_recovery_codes: ප්‍රතිසාධන කේත උත්පාදනය කරන්න
     lost_recovery_codes: ඔබගේ දුරකථනය නැති වුවහොත් ඔබගේ ගිණුමට ප්‍රවේශය නැවත ලබා ගැනීමට ප්‍රතිසාධන කේත ඔබට ඉඩ සලසයි. ඔබට ඔබේ ප්‍රතිසාධන කේත නැති වී ඇත්නම්, ඔබට ඒවා මෙහි නැවත උත්පාදනය කළ හැක. ඔබගේ පැරණි ප්‍රතිසාධන කේත අවලංගු වනු ඇත.
-    methods: ද්වි සාධක ක්රම
+    methods: ද්වි සාධක ක්‍රම
     otp: Authenticator යෙදුම
-    recovery_codes: උපස්ථ ප්‍රතිසාධන කේත
-    recovery_codes_regenerated: ප්‍රතිසාධන කේත සාර්ථකව ප්‍රතිජනනය කරන ලදී
+    recovery_codes: ප්‍රතිසාධන කේත උපස්ථය
+    recovery_codes_regenerated: ප්‍රතිසාධන කේත නැවත උත්පාදනය කෙරිණි
     recovery_instructions_html: ඔබට කවදා හෝ ඔබගේ දුරකථනයට ප්‍රවේශය අහිමි වුවහොත්, ඔබගේ ගිණුමට ප්‍රවේශය නැවත ලබා ගැනීමට පහත ප්‍රතිසාධන කේත වලින් එකක් භාවිතා කළ හැක. <strong>ප්‍රතිසාධන කේත ආරක්ෂිතව තබා ගන්න</strong>. උදාහරණයක් ලෙස, ඔබට ඒවා මුද්‍රණය කර වෙනත් වැදගත් ලේඛන සමඟ ගබඩා කළ හැකිය.
     webauthn: ආරක්‍ෂණ යතුරු
   user_mailer:
@@ -1332,11 +1399,11 @@ si:
       subject: "%{date} සිට ඔබගේ අභියාචනය ප්‍රතික්ෂේප කර ඇත"
       title: අභියාචනය ප්‍රතික්ෂේප විය
     backup_ready:
-      explanation: ඔබ ඔබේ Mastodon ගිණුමේ සම්පූර්ණ උපස්ථයක් ඉල්ලා ඇත. එය දැන් බාගත කිරීම සඳහා සූදානම්!
+      explanation: ඔබගේ මාස්ටඩන් ගිණුමේ පූර්ණ උපස්ථයක් ඉල්ලා ඇත. එය දැන් බාගැනීමට හැකිය!
       subject: ඔබගේ සංරක්ෂිතය බාගැනීමට සූදානම්ය
       title: සංරක්ෂිත රැගෙන යාම
     suspicious_sign_in:
-      change_password: ඔබගේ මුරපදය වෙනස් කරන්න
+      change_password: මුරපදය වෙනස් කරන්න
       details: 'පුරනය වීමේ විස්තර මෙන්න:'
       explanation: අපි නව IP ලිපිනයකින් ඔබගේ ගිණුමට පුරනය වීමක් අනාවරණය කරගෙන ඇත.
       further_actions_html: මෙය ඔබ නොවේ නම්, අපි ඔබට වහාම %{action} ලෙස නිර්දේශ කර ඔබගේ ගිණුම සුරක්ෂිතව තබා ගැනීමට සාධක දෙකක සත්‍යාපනය සබල කරන්න.
@@ -1346,40 +1413,36 @@ si:
       appeal: අභියාචනයක් ඉදිරිපත් කරන්න
       appeal_description: මෙය දෝෂයක් බව ඔබ විශ්වාස කරන්නේ නම්, ඔබට %{instance}හි කාර්ය මණ්ඩලයට අභියාචනයක් ඉදිරිපත් කළ හැක.
       categories:
-        spam: ආයාචිත තැපැල්
+        spam: ආයාචිත
         violation: අන්තර්ගතය පහත ප්‍රජා මාර්ගෝපදේශ උල්ලංඝනය කරයි
       explanation:
-        delete_statuses: ඔබගේ සමහර පළ කිරීම් ප්‍රජා මාර්ගෝපදේශ එකක් හෝ කිහිපයක් උල්ලංඝනය කරන බව සොයා ගෙන ඇති අතර පසුව %{instance}හි උපපරිපාලකයින් විසින් ඉවත් කර ඇත.
         disable: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැක, නමුත් ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත නොවෙනස්ව පවතී. ඔබට ඔබගේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට, ගිණුම් සැකසීම් වෙනස් කිරීමට හෝ ඔබගේ ගිණුම මකා දැමීමට හැකිය.
-        mark_statuses_as_sensitive: ඔබගේ සමහර පළ කිරීම් %{instance}හි පරිපාලකයින් විසින් සංවේදී ලෙස සලකුණු කර ඇත. මෙයින් අදහස් කරන්නේ පෙරදසුනක් දර්ශනය වීමට පෙර පුද්ගලයින්ට පළ කිරීම් වල මාධ්‍ය තට්ටු කිරීමට අවශ්‍ය වනු ඇති බවයි. අනාගතයේදී පළ කිරීමේදී ඔබට මාධ්‍ය සංවේදී ලෙස සලකුණු කළ හැක.
-        sensitive: මෙතැන් සිට, ඔබගේ උඩුගත කරන ලද සියලුම මාධ්‍ය ගොනු සංවේදී ලෙස සලකුණු කර ක්ලික්-හරහා අනතුරු ඇඟවීමක් පිටුපස සඟවනු ඇත.
-        silence: ඔබට තවමත් ඔබගේ ගිණුම භාවිතා කළ හැකි නමුත් දැනටමත් ඔබව අනුගමනය කරන පුද්ගලයින් පමණක් මෙම සේවාදායකයේ ඔබගේ පළ කිරීම් දකිනු ඇති අතර, විවිධ සොයාගැනීම් විශේෂාංග වලින් ඔබව බැහැර කරනු ලැබිය හැක. කෙසේ වෙතත්, අනෙක් අය තවමත් ඔබව අතින් අනුගමනය කළ හැක.
+        sensitive: මේ මොහොත් සිට ඔබ උඩුගත කරන සියලුම මාධ්‍ය ගොනු සංවේදී ලෙස සලකා අවවාදයක් පිටුපස සඟවනු ඇත.
         suspend: ඔබට තවදුරටත් ඔබගේ ගිණුම භාවිතා කළ නොහැකි අතර, ඔබගේ පැතිකඩ සහ අනෙකුත් දත්ත තවදුරටත් ප්‍රවේශ විය නොහැක. දින 30කින් පමණ දත්ත සම්පූර්ණයෙන් ඉවත් කරන තෙක් ඔබට තවමත් ඔබේ දත්තවල උපස්ථයක් ඉල්ලා සිටීමට පුරනය විය හැක, නමුත් ඔබව අත්හිටුවීම මගහැර යාම වැළැක්වීමට අපි මූලික දත්ත කිහිපයක් රඳවා ගන්නෙමු.
       reason: 'හේතුව:'
-      statuses: 'උපුටා දක්වන ලද පළ කිරීම්:'
       subject:
-        delete_statuses: "%{acct} හි ඔබගේ පළ කිරීම් ඉවත් කර ඇත"
+        delete_statuses: "%{acct} හි ඔබගේ ලිපිය ඉවත් කර ඇත"
         disable: ඔබගේ ගිණුම %{acct} කර ඇත
-        mark_statuses_as_sensitive: "%{acct} හි ඔබගේ පළ කිරීම් සංවේදී ලෙස සලකුණු කර ඇත"
-        none: "%{acct}සඳහා අනතුරු ඇඟවීම"
-        sensitive: "%{acct} හි ඔබගේ පළ කිරීම් මෙතැන් සිට සංවේදී ලෙස සලකුණු කෙරේ"
+        mark_statuses_as_sensitive: ඔබගේ %{acct} ලිපි සංවේදී බව සලකුණු කර ඇත
+        none: "%{acct} සඳහා අවවාදය"
+        sensitive: ඔබගේ %{acct} ලිපිය මේ මොහොතේ සිට සංවේදී ලෙස සලකයි
         silence: ඔබගේ ගිණුම %{acct} සීමා කර ඇත
         suspend: ඔබගේ ගිණුම %{acct} අත්හිටුවා ඇත
       title:
-        delete_statuses: පළ කිරීම් ඉවත් කරන ලදී
+        delete_statuses: ලිපි ඉවත් කර ඇත
         disable: ගිණුම නිශ්චල කර ඇත
-        mark_statuses_as_sensitive: පළ කිරීම් සංවේදී ලෙස ලකුණු කර ඇත
+        mark_statuses_as_sensitive: ලිපි සංවේදී බව සලකුණු කර ඇත
         none: අවවාදයයි
-        sensitive: ගිණුම සංවේදී ලෙස ලකුණු කර ඇත
-        silence: ගිණුම සීමා සහිතයි
+        sensitive: ගිණුම සංවේදී බව යොදා ඇත
+        silence: ගිණුම සීමා කර ඇත
         suspend: ගිණුම අත්හිටුවා ඇත
     welcome:
-      edit_profile_action: සැකසුම් පැතිකඩ
+      edit_profile_action: පැතිකඩ පිහිටුවන්න
       explanation: ඔබ ආරම්භ කිරීමට උපදෙස් කිහිපයක් මෙන්න
-      final_action: පළ කිරීම ආරම්භ කරන්න
+      final_action: ලිපි පළ කරන්න
       full_handle: ඔබේ සම්පූර්ණ හසුරුව
       full_handle_hint: මෙය ඔබ ඔබේ මිතුරන්ට පවසනු ඇත, එවිට ඔවුන්ට වෙනත් සේවාදායකයකින් ඔබට පණිවිඩ යැවීමට හෝ අනුගමනය කිරීමට හැකිය.
-      subject: Mastodon වෙත සාදරයෙන් පිළිගනිමු
+      subject: මාස්ටඩන් වෙත පිළිගනිමු
       title: නැවට සාදරයෙන් පිළිගනිමු, %{name}!
   users:
     follow_limit_reached: ඔබට පුද්ගලයින් %{limit} කට වඩා අනුගමනය කළ නොහැක
@@ -1388,9 +1451,10 @@ si:
     seamless_external_login: ඔබ බාහිර සේවාවක් හරහා ලොග් වී ඇත, එබැවින් මුරපදය සහ ඊමේල් සැකසුම් නොමැත.
     signed_in_as: 'මෙසේ පුරනය වී ඇත:'
   verification:
-    verification: සත්යාපනය
+    here_is_how: කෙසේදැයි මෙන්න
+    verification: සත්‍යාපනය
   webauthn_credentials:
-    add: නව ආරක්ෂක යතුර එක් කරන්න
+    add: නව ආරක්‍ෂණ යතුර එක් කරන්න
     create:
       error: ඔබගේ ආරක්ෂක යතුර එක් කිරීමේ ගැටලුවක් ඇති විය. කරුණාකර නැවත උත්සාහ කරන්න.
       success: ඔබගේ ආරක්ෂක යතුර සාර්ථකව එක් කරන ලදී.
@@ -1400,9 +1464,9 @@ si:
     destroy:
       error: ඔබගේ ආරක්ෂක යතුර මැකීමේ ගැටලුවක් ඇති විය. කරුණාකර නැවත උත්සාහ කරන්න.
       success: ඔබගේ ආරක්ෂක යතුර සාර්ථකව මකා ඇත.
-    invalid_credential: වලංගු නොවන ආරක්ෂක යතුර
+    invalid_credential: ආරක්‍ෂණ යතුර වලංගු නොවේ
     nickname_hint: ඔබගේ නව ආරක්ෂක යතුරේ අන්වර්ථ නාමය ඇතුළත් කරන්න
     not_enabled: ඔබ තවමත් WebAuthn සබල කර නැත
     not_supported: මෙම බ්‍රවුසරය ආරක්ෂක යතුරු සඳහා සහය නොදක්වයි
     otp_required: ආරක්ෂක යතුරු භාවිතා කිරීමට කරුණාකර පළමුව ද්වි-සාධක සත්‍යාපනය සක්‍රීය කරන්න.
-    registered_on: "%{date}හි ලියාපදිංචි වී ඇත"
+    registered_on: "%{date} දී ලියාපදිංචි වී ඇත"
diff --git a/config/locales/simple_form.cy.yml b/config/locales/simple_form.cy.yml
index 70194a1e0c..ddc1b1b935 100644
--- a/config/locales/simple_form.cy.yml
+++ b/config/locales/simple_form.cy.yml
@@ -292,7 +292,11 @@ cy:
         reblog: Mae rhywun wedi hybu eich postiad
         report: Cyflwynwyd adroddiad newydd
         software_updates:
+          all: Rhoi gwybod am bob ddiweddariad
+          critical: Rhoi gwybod am ddiweddariadau critigol yn unig
           label: Mae fersiwn Mastodon newydd ar gael
+          none: Byth rhoi gwybod am ddiweddariadau (nid argymhellir)
+          patch: Rhoi gwybod am ddiweddariadau trwsio byg
         trending_tag: Mae pwnc llosg newydd angen adolygiad
       rule:
         text: Rheol
@@ -319,6 +323,7 @@ cy:
         url: URL diweddbwynt
     'no': Na
     not_recommended: Heb ei argymell
+    overridden: Wedi'i gwrth-wneud
     recommended: Argymhellwyd
     required:
       mark: "*"
diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml
index 12af55af62..f0c18d1128 100644
--- a/config/locales/simple_form.en-GB.yml
+++ b/config/locales/simple_form.en-GB.yml
@@ -330,5 +330,5 @@ en-GB:
       text: required
     title:
       sessions:
-        webauthn: Use one of your security keys to sign in
+        webauthn: Use one of your security keys to log in
     'yes': 'Yes'
diff --git a/config/locales/simple_form.fi.yml b/config/locales/simple_form.fi.yml
index cc2f1141d9..1925ba77f3 100644
--- a/config/locales/simple_form.fi.yml
+++ b/config/locales/simple_form.fi.yml
@@ -3,22 +3,22 @@ fi:
   simple_form:
     hints:
       account:
-        discoverable: Julkisia viestejäsi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla, ja profiiliasi voidaan myös ehdottaa suoraan toisille käyttäjille.
+        discoverable: Julkisia julkaisujasi ja profiiliasi voidaan pitää esillä tai suositella Mastodonin eri alueilla ja profiiliasi voidaan ehdottaa toisille käyttäjille.
         display_name: Koko nimesi tai lempinimesi.
-        fields: Kotisivusi, pronominit, ikä, mitä ikinä haluatkin.
-        indexable: Julkiset viestit voivat näkyä hakutuloksissa Mastodonissa. Ihmiset, jotka ovat olleet vuorovaikutuksessa viestiesi kanssa, voivat etsiä niitä siitä riippumatta.
+        fields: Kotisivusi, pronominit, ikä, mitä ikinä haluat.
+        indexable: Julkiset julkaisusi voivat näkyä hakutuloksissa Mastodonissa. Ihmiset, jotka ovat olleet vuorovaikutuksessa julkaisujesi kanssa, voivat etsiä niitä asetuksesta riippumatta.
         note: 'Voit @mainita muita käyttäjiä tai #aihetunnisteita.'
-        show_collections: Käyttäjät eivät näe ketä seuraat ja ketkä seuraavat sinua. Käyttäjät, joita sinä seuraat, näkevät kuitenkin sinun seuraavan heitä.
-        unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntää. Poista valinta, jos haluat tarkistaa ja hyväksyä tai hylätä vastaanottamasi seurantapyynnöt.
+        show_collections: Käyttäjät voivat selata seurattujasi ja seuraajiasi. Käyttäjät, joita seuraat, näkevät joka tapauksessa, että seuraat heitä.
+        unlocked: Käyttäjät voivat seurata sinua pyytämättä hyväksyntää. Poista valinta, jos haluat tarkistaa ja hyväksyä tai hylätä vastaanottamasi seuraamispyynnöt.
       account_alias:
-        acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, josta haluat siirtyä
+        acct: Määrittele sen tilin käyttäjänimi@verkkotunnus, josta haluat siirtyä
       account_migration:
-        acct: Määrittele käyttäjän käyttäjänimi@verkkotunnus, johon haluat siirtyä
+        acct: Määrittele sen tilin käyttäjänimi@verkkotunnus, johon haluat siirtyä
       account_warning_preset:
         text: Voit käyttää julkaisun syntaksia, kuten URL-osoitteita, aihetunnisteita ja mainintoja
         title: Valinnainen. Ei näy vastaanottajalle
       admin_account_action:
-        include_statuses: Käyttäjä näkee mitkä viestit johtivat toimenpiteeseen tai varoitukseen
+        include_statuses: Käyttäjä näkee, mitkä julkaisut johtivat valvontatoimeen tai varoitukseen
         send_email_notification: Käyttäjä saa selvityksen siitä, mitä hänen tililleen tapahtui
         text_html: Valinnainen. Voit käyttää julkaisun syntaksia. Voit <a href="%{path}">lisätä varoitusasetuksia</a> säästääksesi aikaa
         type_html: Valitse mitä teet käyttäjälle <strong>%{acct}</strong>
@@ -31,17 +31,17 @@ fi:
         warning_preset_id: Valinnainen. Voit silti lisätä mukautetun tekstin esiasetuksen loppuun
       announcement:
         all_day: Kun valittu, vain valittu aikaväli näytetään
-        ends_at: Valinnainen. Ilmoitus tullaan poistamaan automaattisesti tällä hetkellä
-        scheduled_at: Jätä tyhjäksi julkaistaksesi ilmoituksen välittömästi
-        starts_at: Valinnainen. Jos ilmoituksesi on sidottu tiettyyn aikaväliin
-        text: Voit käyttää julkaisun syntaksia. Muista, kuinka paljon tilaa ilmoitus vie käyttäjän näytöltä
+        ends_at: Valinnainen. Tiedote poistetaan automaattisesti tällä hetkellä
+        scheduled_at: Jätä tyhjäksi julkaistaksesi tiedotteen heti
+        starts_at: Valinnainen. Jos tiedotteesi on sidottu tiettyyn aikaväliin
+        text: Voit käyttää julkaisun syntaksia. Ota huomioon, kuinka paljon tilaa tiedote vie käyttäjän näytöltä
       appeal:
         text: Voit valittaa varoituksesta vain kerran
       defaults:
         autofollow: Henkilöt, jotka rekisteröityvät kutsun kautta, seuraavat sinua automaattisesti
         avatar: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
         bot: Tämä tili suorittaa enimmäkseen automaattisia toimintoja eikä sitä ehkä valvota
-        context: Yksi tai useampi asiayhteys, jossa suodattimen pitäisi olla käytössä
+        context: Ainakin yksi konteksti, jossa suodattimen pitäisi olla voimassa
         current_password: Turvallisuussyistä kirjoita nykyisen tilin salasana
         current_username: Vahvista kirjoittamalla nykyisen tilin käyttäjätunnus
         digest: Lähetetään vain pitkän poissaolon jälkeen ja vain, jos olet saanut suoria viestejä poissaolosi aikana
@@ -49,20 +49,20 @@ fi:
         header: PNG, GIF tai JPG. Enintään %{size}. Skaalataan kokoon %{dimensions} px
         inbox_url: Kopioi URL-osoite haluamasi välittäjän etusivulta
         irreversible: Suodatetut julkaisut katoavat lopullisesti, vaikka suodatin poistettaisiin myöhemmin
-        locale: Käyttöliittymän, sähköpostien ja ilmoitusten kieli
+        locale: Käyttöliittymän, sähköpostien ja puskuilmoitusten kieli
         password: Käytä vähintään 8 merkkiä
-        phrase: Täytetään riippumatta julkaisun kirjainkoon tai sisällön varoituksesta
+        phrase: Täsmää riippumatta tekstin aakkoslajista tai julkaisun sisältövaroituksesta
         scopes: Mihin sovellusliittymiin sovellus pääsee käsiksi. Jos valitset ylätason laajuuden, sinun ei tarvitse valita yksittäisiä.
-        setting_aggregate_reblogs: Älä näytä uusia tehosteita viesteille, joita on äskettäin tehostettu (koskee vain äskettäin saatuja tehosteita)
-        setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät aktiivisesti Mastodonia
-        setting_default_sensitive: Arkaluontoinen media on oletuksena piilotettu ja se voidaan näyttää yhdellä napsautuksella
+        setting_aggregate_reblogs: Älä näytä uusia tehostuksia julkaisuille, joita on äskettäin tehostettu (koskee vain juuri vastaanotettuja tehostuksia)
+        setting_always_send_emails: Yleensä sähköposti-ilmoituksia ei lähetetä, kun käytät Mastodonia aktiivisesti
+        setting_default_sensitive: Arkaluonteinen media on oletuksena piilotettu, ja se voidaan näyttää yhdellä napsautuksella
         setting_display_media_default: Piilota arkaluonteiseksi merkitty media
-        setting_display_media_hide_all: Piilota aina kaikki media
-        setting_display_media_show_all: Näytä aina arkaluonteiseksi merkitty media
+        setting_display_media_hide_all: Piilota media aina
+        setting_display_media_show_all: Näytä media aina
         setting_use_blurhash: Liukuvärit perustuvat piilotettujen kuvien väreihin, mutta sumentavat yksityiskohdat
         setting_use_pending_items: Piilota aikajanan päivitykset napsautuksen taakse syötteen automaattisen vierityksen sijaan
         username: Voit käyttää kirjaimia, numeroita ja alaviivoja
-        whole_word: Kun avainsana tai lause on vain aakkosnumeerinen, se otetaan käyttöön, jos se vastaa koko sanaa
+        whole_word: Kun avainsana tai -fraasi on kokonaan aakkosnumeerinen, se on voimassa vain, jos se vastaa koko sanaa
       domain_allow:
         domain: Tämä verkkotunnus voi noutaa tietoja tältä palvelimelta ja sieltä saapuvat tiedot käsitellään ja tallennetaan
       email_domain_block:
@@ -71,10 +71,10 @@ fi:
       featured_tag:
         name: 'Tässä muutamia hiljattain käyttämiäsi aihetunnisteita:'
       filters:
-        action: Valitse, mikä toiminto suoritetaan, kun viesti vastaa suodatinta
+        action: Valitse, mikä toiminto suoritetaan, kun julkaisu vastaa suodatinta
         actions:
           hide: Piilota suodatettu sisältö kokonaan ja käyttäydy ikään kuin sitä ei olisi olemassa
-          warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen otsikko
+          warn: Piilota suodatettu sisältö varoituksen taakse, jossa mainitaan suodattimen nimi
       form_admin_settings:
         activity_api_enabled: Paikallisesti julkaistujen julkaisujen, aktiivisten käyttäjien ja rekisteröitymisten viikoittainen määrä
         backups_retention_period: Säilytä luodut arkistot määritetyn määrän päiviä.
@@ -84,7 +84,7 @@ fi:
         custom_css: Voit käyttää mukautettuja tyylejä Mastodonin verkkoversiossa.
         mascot: Ohittaa kuvituksen edistyneessä käyttöliittymässä.
         media_cache_retention_period: Ladatut mediatiedostot poistetaan määritetyn määrän päiviä jälkeen, kun arvo on positiivinen ja ladataan uudelleen pyynnöstä.
-        peers_api_enabled: Lista verkkotunnuksista, joita tämä palvelin on kohdannut fediversessä. Täällä ei ole tietoja siitä, oletko liitossa tiettyjen palvelinten kanssa, vaan ainoastaan luettelo niistä verkkotunnuksista, joista palvelimesi on ylipäätään tietoinen. Tätä tietoa käytetään palveluissa, jotka keräävät liittotilastoja laajassa merkityksessä.
+        peers_api_enabled: Luettelo verkkotunnuksista, jotka tämä palvelin on kohdannut fediversumissa. Se ei kerro, oletko liitossa tietyn palvelimen kanssa, vaan että palvelimesi on ylipäätään tietoinen siitä. Tätä tietoa käytetään palveluissa, jotka keräävät tilastoja liittoutumisesta yleisellä tasolla.
         profile_directory: Profiilihakemisto lueteloi kaikki käyttäjät, jotka ovat ilmoittaneet olevansa löydettävissä.
         require_invite_text: Kun kirjautuminen vaatii manuaalisen hyväksynnän, tee ”Miksi haluat liittyä?” teksti syötetään pakolliseksi eikä vapaaehtoiseksi
         site_contact_email: Kuinka ihmiset voivat tavoittaa sinut oikeudellisissa tai tukikysymyksissä.
@@ -103,7 +103,7 @@ fi:
       form_challenge:
         current_password: Olet menossa suojatulle alueelle
       imports:
-        data: Toisesta Mastodon-instanssista tuotu CSV-tiedosto
+        data: Toiselta Mastodon-palvelimelta tuotu CSV-tiedosto
       invite_request:
         text: Tämä auttaa meitä arvioimaan hakemustasi
       ip_block:
@@ -122,11 +122,11 @@ fi:
         webauthn: Jos kyseessä on USB-avain, muista laittaa se paikalleen ja tarvittaessa napauttaa sitä.
       settings:
         indexable: Profiilisi voi näkyä Googlen, Bingin ja muiden hakukoneiden hakutuloksissa.
-        show_application: Voit siitä huolimatta aina nähdä, millä sovelluksella julkaisusi laadittiin.
+        show_application: Voit silti aina nähdä, mistä sovelluksesta julkaisusi lähetettiin.
       tag:
         name: Voit muuttaa esimerkiksi kirjaimia paremmin luettavaksi
       user:
-        chosen_languages: Kun valittu, vain valituilla kielillä julkaistut viestit näkyvät julkisilla aikajanoilla
+        chosen_languages: Kun valittu, vain valituilla kielillä kirjoitetut julkaisut näkyvät julkisilla aikajanoilla
         role: Rooli määrää, mitkä käyttöoikeudet käyttäjällä on
       user_role:
         color: Väri, jota käytetään roolin koko käyttöliittymässä, RGB heksamuodossa
@@ -136,42 +136,42 @@ fi:
         position: Korkeampi rooli ratkaisee konfliktit tietyissä tilanteissa. Tiettyjä toimintoja voidaan suorittaa vain rooleille, joiden prioriteetti on pienempi
       webhook:
         events: Valitse lähetettävät tapahtumat
-        template: Luo oma JSON-hyötykuorma käyttäen muuttujainterpolointia. Jättäessäsi kentän tyhjäksi, käytetään vakio-JSON-kuormaa.
+        template: Luo oma JSON-hyötykuorma käyttäen muuttujien interpolointia. Jätä kenttä tyhjäksi käyttääksesi vakio-JSON-kuormaa.
         url: Mihin tapahtumat lähetetään
     labels:
       account:
-        discoverable: Sisällytä profiili ja julkaisut etsintäalgoritmeihin
+        discoverable: Nosta profiili ja julkaisut esille löytämisalgoritmeissa
         fields:
           name: Nimike
           value: Sisältö
-        indexable: Sisällytä julkiset viestit hakutuloksiin
+        indexable: Sisällytä julkiset julkaisut hakutuloksiin
         show_collections: Näytä seuratut ja seuraajat profiilissa
         unlocked: Hyväksy uudet seuraajat automaattisesti
       account_alias:
-        acct: Vanhan tilin käsittely
+        acct: Vanhan tilin käyttäjätunnus
       account_migration:
-        acct: Uuden tilin käsittely
+        acct: Uuden tilin käyttäjätunnus
       account_warning_preset:
         text: Esiasetettu teksti
-        title: Otsikko
+        title: Nimi
       admin_account_action:
         include_statuses: Sisällytä raportoidut viestit sähköpostiin
         send_email_notification: Ilmoita käyttäjälle sähköpostitse
         text: Mukautettu varoitus
-        type: Toimenpide
+        type: Toimi
         types:
           disable: Poista kirjautuminen käytöstä
           none: Älä tee mitään
-          sensitive: Arkaluontoinen
+          sensitive: Arkaluonteinen
           silence: Hiljennä
           suspend: Poista käytöstä ja tuhoa käyttäjätunnuksen tiedot peruuttamattomasti
         warning_preset_id: Käytä varoitusmallia
       announcement:
         all_day: Koko päivän kestävä tapahtuma
         ends_at: Tapahtuman loppu
-        scheduled_at: Ajasta julkaisu
+        scheduled_at: Ajoita julkaisu
         starts_at: Tapahtuman alku
-        text: Ilmoitus
+        text: Tiedote
       appeal:
         text: Perustele, miksi tämä päätös olisi kumottava
       defaults:
@@ -181,51 +181,51 @@ fi:
         chosen_languages: Suodata kieliä
         confirm_new_password: Vahvista uusi salasana
         confirm_password: Vahvista salasana
-        context: Suodata konteksteista
+        context: Suodattimen kontekstit
         current_password: Nykyinen salasana
         data: Tiedot
-        display_name: Nimimerkki
+        display_name: Näyttönimi
         email: Sähköpostiosoite
         expires_in: Vanhenee
-        fields: Profiilin metadata
-        header: Otsakekuva
+        fields: Lisäkentät
+        header: Otsikkokuva
         honeypot: "%{label} (älä täytä)"
         inbox_url: Välittäjän postilaatikon URL-osoite
         irreversible: Pudota piilottamisen sijaan
         locale: Kieli
         max_uses: Käyttökertoja enintään
         new_password: Uusi salasana
-        note: Kuvaus
+        note: Elämäkerta
         otp_attempt: Kaksivaiheisen tunnistuksen koodi
         password: Salasana
-        phrase: Avainsana tai lause
-        setting_advanced_layout: Ota käyttöön edistynyt selainkäyttöliittymä
-        setting_aggregate_reblogs: Ryhmitä tehostukset aikajanalla
-        setting_always_send_emails: Lähetä aina sähköposti-ilmoituksia
+        phrase: Avainsana tai -fraasi
+        setting_advanced_layout: Ota edistynyt selainkäyttöliittymä käyttöön
+        setting_aggregate_reblogs: Ryhmitä tehostukset aikajanoilla
+        setting_always_send_emails: Lähetä sähköposti-ilmoitukset aina
         setting_auto_play_gif: Toista GIF-animaatiot automaattisesti
-        setting_boost_modal: Kysy vahvistus ennen tehostusta
-        setting_default_language: Viestien kieli
-        setting_default_privacy: Viestin näkyvyys
-        setting_default_sensitive: Merkitse media aina arkaluontoiseksi
-        setting_delete_modal: Kysy vahvistusta ennen viestin poistamista
+        setting_boost_modal: Kysy vahvistusta ennen tehostusta
+        setting_default_language: Julkaisun kieli
+        setting_default_privacy: Julkaisun näkyvyys
+        setting_default_sensitive: Merkitse media aina arkaluonteiseksi
+        setting_delete_modal: Kysy vahvistusta ennen julkaisun poistamista
         setting_disable_swiping: Poista pyyhkäisyt käytöstä
         setting_display_media: Median näyttäminen
         setting_display_media_default: Oletus
         setting_display_media_hide_all: Piilota kaikki
         setting_display_media_show_all: Näytä kaikki
-        setting_expand_spoilers: Laajenna aina sisältövaroituksilla merkityt viestit
+        setting_expand_spoilers: Laajenna aina sisältövaroituksilla merkityt julkaisut
         setting_hide_network: Piilota verkkosi
         setting_reduce_motion: Vähennä animaatioiden liikettä
         setting_system_font_ui: Käytä järjestelmän oletusfonttia
         setting_theme: Sivuston teema
         setting_trends: Näytä päivän trendit
-        setting_unfollow_modal: Kysy vahvistusta, ennen kuin lopetat seuraamisen
+        setting_unfollow_modal: Kysy vahvistusta ennen seuraamisen lopettamista
         setting_use_blurhash: Näytä värikkäät liukuvärit piilotetulle medialle
-        setting_use_pending_items: Hidastila
+        setting_use_pending_items: Hidas tila
         severity: Vakavuus
         sign_in_token_attempt: Turvakoodi
-        title: Otsikko
-        type: Tietojen laji
+        title: Nimi
+        type: Tuontilaji
         username: Käyttäjänimi
         username_or_email: Käyttäjänimi tai sähköposti
         whole_word: Koko sana
@@ -236,7 +236,7 @@ fi:
       filters:
         actions:
           hide: Piilota kokonaan
-          warn: Piilota varoituksella
+          warn: Piilota ja näytä varoitus
       form_admin_settings:
         activity_api_enabled: Julkaise yhteenlasketut tilastot käyttäjätoiminnasta rajapinnassa
         backups_retention_period: Käyttäjän arkiston säilytysaika
@@ -268,14 +268,14 @@ fi:
       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
-        must_be_following_dm: Estä suorat viestit käyttäjiltä, joita et seuraa
+        must_be_following_dm: Estä yksityisviestit käyttäjiltä, joita et seuraa
       invite:
         comment: Kommentoi
       invite_request:
         text: Miksi haluat liittyä?
       ip_block:
         comment: Kommentti
-        ip: IP
+        ip: IP-osoite
         severities:
           no_access: Estä pääsy
           sign_up_block: Estä kirjautumiset
@@ -284,12 +284,12 @@ fi:
       notification_emails:
         appeal: Joku valittaa valvojan päätöksestä
         digest: Lähetä koosteviestejä sähköpostitse
-        favourite: Lähetä sähköposti, kun joku tykkää tilastasi
-        follow: Lähetä sähköposti, kun joku seuraa sinua
-        follow_request: Lähetä sähköposti, kun joku pyytää seurata sinua
-        mention: Lähetä sähköposti, kun sinut mainitaan
-        pending_account: Uusi tili tarvitsee tarkastusta
-        reblog: Lähetä sähköposti, kun joku tehosti viestiäsi
+        favourite: Joku lisäsi julkaisusi suosikkeihinsa
+        follow: Joku seurasi sinua
+        follow_request: Joku pyysi saada seurata sinua
+        mention: Joku mainitsi sinut
+        pending_account: Uusi tili tarvitsee tarkistusta
+        reblog: Joku tehosti julkaisuasi
         report: Uusi raportti on lähetetty
         software_updates:
           all: Ilmoita kaikista päivityksistä
@@ -297,12 +297,12 @@ fi:
           label: Uusi Mastodon-versio on saatavilla
           none: Älä koskaan ilmoita päivityksistä (ei suositeltu)
           patch: Ilmoita virhekorjauspäivityksistä
-        trending_tag: Uusi trendi vaatii tarkastelua
+        trending_tag: Uusi trendi vaatii tarkistusta
       rule:
         text: Sääntö
       settings:
         indexable: Sisällytä profiilisivu hakukoneisiin
-        show_application: Näytä, mistä sovelluksesta lähetit viestin
+        show_application: Näytä, mistä sovelluksesta lähetit julkaisun
       tag:
         listable: Salli tämän aihetunnisteen näkyä hauissa ja ehdotuksissa
         name: Aihetunniste
diff --git a/config/locales/simple_form.hy.yml b/config/locales/simple_form.hy.yml
index d2fab9e048..56aa1d66b1 100644
--- a/config/locales/simple_form.hy.yml
+++ b/config/locales/simple_form.hy.yml
@@ -44,6 +44,7 @@ hy:
         setting_display_media_show_all: Մեդիա միշտ ցոյց տալ
         setting_use_blurhash: Կտորները հիմնուում են թաքցուած վիզուալի վրայ՝ խամրեցնելով դետալները
         setting_use_pending_items: Թաքցնել հոսքի թարմացումները կտտոի ետեւում՝ աւտօմատ թարմացուող հոսքի փոխարէն
+        username: Միայն լատինատառեր, թուեր եւ տակի գծիկ
         whole_word: Եթէ բանալի բառը կամ արտայայտութիւնը պարունակում է միայն այբբենական նիշեր եւ թուեր, ապա այն կիրառուելու է ամբողջ բառի հետ համընկնելու դէպքում միայն
       domain_allow:
         domain: Այս տիրոյթը կարող է ստանալ տուեալներ այս սպասարկչից եւ ստացուող տուեալները կարող են օգտագործուել եւ պահուել
diff --git a/config/locales/simple_form.si.yml b/config/locales/simple_form.si.yml
index 23e63ef42c..7e529c0eee 100644
--- a/config/locales/simple_form.si.yml
+++ b/config/locales/simple_form.si.yml
@@ -7,12 +7,10 @@ si:
       account_migration:
         acct: ඔබට යාමට අවශ්‍ය ගිණුමේ username@domain සඳහන් කරන්න
       account_warning_preset:
-        text: ඔබට URL, හෑෂ් ටැග් සහ සඳහන් කිරීම් වැනි පෝස්ට් සින්ටැක්ස් භාවිතා කළ හැක
+        text: ඔබට ඒ.ස.නි., පූරක අනන්‍යන සහ සැඳහුම් වැනි ලිපි පද ගැළපුම් භාවිතා කිරීමට හැකිය
         title: විකල්ප. ලබන්නාට නොපෙනේ
       admin_account_action:
-        include_statuses: මධ්‍යස්ථ ක්‍රියාව හෝ අනතුරු ඇඟවීමට හේතු වී ඇත්තේ කුමන පළ කිරීම්දැයි පරිශීලකයා දකිනු ඇත
         send_email_notification: පරිශීලකයාට ඔවුන්ගේ ගිණුම සමඟ සිදු වූ දේ පිළිබඳ පැහැදිලි කිරීමක් ලැබෙනු ඇත
-        text_html: විකල්ප. ඔබට post syntax භාවිතා කළ හැක. කාලය ඉතිරි කර ගැනීම සඳහා ඔබට අනතුරු ඇඟවීමේ</a> <a href="%{path}">කළ හැක
         type_html: "<strong>%{acct}</strong>සමඟ කළ යුතු දේ තෝරන්න"
         types:
           disable: පරිශීලකයාගේ ගිණුම භාවිතා කිරීමෙන් වළක්වන්න, නමුත් ඔවුන්ගේ අන්තර්ගතය මකා දැමීම හෝ සඟවන්න එපා.
@@ -24,7 +22,7 @@ si:
         ends_at: විකල්ප. මෙම අවස්ථාවේදී නිවේදනය ස්වයංක්‍රීයව ප්‍රකාශනය කිරීමෙන් ඉවත් වනු ඇත
         scheduled_at: නිවේදනය වහාම ප්‍රකාශයට පත් කිරීමට හිස්ව තබන්න
         starts_at: විකල්ප. ඔබගේ නිවේදනය නිශ්චිත කාල පරාසයකට බැඳී ඇත්නම්
-        text: ඔබට post syntax භාවිතා කළ හැක. කරුණාකර පරිශීලකයාගේ තිරය මත නිවේදනය ලබා ගන්නා ඉඩ ගැන සැලකිලිමත් වන්න
+        text: ඔබට ලිපි පද ගැළපුම් භාවිතා කිරීමට හැකිය. කරුණාකර නිවේදනයෙන් පරිශ්‍රීලකයින්ගේ තිරයේ ඉඩ කෙතරම් ඇහිරෙනවා ද පිළිබඳව සැලකිලිමත් වන්න
       appeal:
         text: ඔබට වර්ජනයකට අභියාචනා කළ හැක්කේ එක් වරක් පමණි
       defaults:
@@ -38,17 +36,16 @@ si:
         email: ඔබට තහවුරු කිරීමේ විද්‍යුත් තැපෑලක් එවනු ලැබේ
         header: PNG, GIF හෝ JPG. වැඩිම %{size}. %{dimensions}px දක්වා අඩු කරනු ඇත
         inbox_url: ඔබට භාවිතා කිරීමට අවශ්‍ය රිලේ හි මුල් පිටුවෙන් URL එක පිටපත් කරන්න
-        irreversible: පෙරහන පසුව ඉවත් කළද, පෙරූ පළ කිරීම් ආපසු හැරවිය නොහැකි ලෙස අතුරුදහන් වනු ඇත
-        locale: පරිශීලක අතුරුමුහුණතේ භාෂාව, ඊමේල් සහ තල්ලු දැනුම්දීම්
+        irreversible: පෙරහන පසුව ඉවත් කළ ද, පෙරූ ලිපි අප්‍රතිවර්ත්‍යව අතුරුදහන් වනු ඇත
+        locale: වි-තැපැල්, තල්ලු දැනුම්දීම් සහ පරිශ්‍රීලක අතුරුමුහුණතේ භාෂාව
         password: අවම වශයෙන් අක්ෂර 8 ක් භාවිතා කරන්න
-        phrase: පළ කිරීමක පෙළ හෝ අන්තර්ගත අනතුරු ඇඟවීම නොසලකා ගැලපේ
+        phrase: ලිපිවල පෙළ හෝ අන්තර්ගත අවවාද නොසලකා ගැළපෙනු ඇත
         scopes: යෙදුමට ප්‍රවේශ වීමට ඉඩ දෙන්නේ කුමන API වලටද. ඔබ ඉහළ මට්ටමේ විෂය පථයක් තෝරා ගන්නේ නම්, ඔබට තනි ඒවා තෝරා ගැනීමට අවශ්‍ය නොවේ.
-        setting_aggregate_reblogs: මෑතකදී බූස්ට් කරන ලද පළ කිරීම් සඳහා නව බූස්ට් පෙන්වන්න එපා (අලුතින් ලැබුණු බූස්ට් වලට පමණක් බලපායි)
-        setting_always_send_emails: සාමාන්‍යයෙන් ඔබ Mastodon සක්‍රියව භාවිතා කරන විට විද්‍යුත් තැපැල් දැනුම්දීම් නොයවනු ඇත
+        setting_always_send_emails: ඔබ නිතර මාස්ටඩන් භාවිතා කරන විට වි-තැපැල් දැනුම්දීම් නොලැබෙයි
         setting_default_sensitive: සංවේදී මාධ්‍ය පෙරනිමියෙන් සඟවා ඇති අතර ක්ලික් කිරීමකින් හෙළිදරව් කළ හැක
-        setting_display_media_default: සංවේදී ලෙස සලකුණු කළ මාධ්‍ය සඟවන්න
-        setting_display_media_hide_all: සෑම විටම මාධ්‍ය සඟවන්න
-        setting_display_media_show_all: සෑම විටම මාධ්‍ය පෙන්වන්න
+        setting_display_media_default: සංවේදී බව සලකුණු කළ මාධ්‍ය සඟවන්න
+        setting_display_media_hide_all: සැමවිට මාධ්‍ය සඟවන්න
+        setting_display_media_show_all: සැමවිට මාධ්‍ය පෙන්වන්න
         setting_use_blurhash: අනුක්‍රමණ සැඟවුණු දෘශ්‍යවල වර්ණ මත පදනම් වන නමුත් ඕනෑම විස්තරයක් අපැහැදිලි කරයි
         setting_use_pending_items: සංග්‍රහය ස්වයංක්‍රීයව අනුචලනය කරනවා වෙනුවට ක්ලික් කිරීමක් පිටුපස කාලරේඛා යාවත්කාලීන සඟවන්න
         whole_word: මූල පදය හෝ වාක්‍ය ඛණ්ඩය අක්ෂරාංක පමණක් වන විට, එය යෙදෙන්නේ එය සම්පූර්ණ වචනයට ගැලපේ නම් පමණි
@@ -58,14 +55,14 @@ si:
         domain: මෙය විද්‍යුත් තැපැල් ලිපිනයේ හෝ එය භාවිතා කරන MX වාර්තාවේ පෙන්වන ඩොමේන් නාමය විය හැක. ලියාපදිංචි වූ පසු ඒවා පරීක්ෂා කරනු ලැබේ.
         with_dns_records: ලබා දී ඇති වසමේ DNS වාර්තා විසඳීමට උත්සාහ කරන අතර ප්‍රතිඵල ද අවහිර කරනු ලැබේ
       filters:
-        action: පළ කිරීමක් පෙරහනට ගැළපෙන විට සිදු කළ යුතු ක්‍රියාව තෝරන්න
+        action: ලිපියක් පෙරහනට ගැළපෙන විට ඉටු විය යුතු ක්‍රියාමාර්ගය තෝරන්න
         actions:
           hide: පෙරහන් කළ අන්තර්ගතය සම්පූර්ණයෙන්ම සඟවන්න, එය නොපවතින ලෙස හැසිරෙන්න
           warn: පෙරහන මාතෘකාව සඳහන් කරන අනතුරු ඇඟවීමක් පිටුපස පෙරූ අන්තර්ගතය සඟවන්න
       form_challenge:
         current_password: ඔබ ආරක්ෂිත ප්‍රදේශයකට ඇතුල් වේ
       imports:
-        data: CSV ගොනුව වෙනත් Mastodon සේවාදායකයකින් අපනයනය කරන ලදී
+        data: CSV ගොනුව වෙනත් මාස්ටඩන් සේවාදායකයකින් නිර්යාත කර ඇත
       invite_request:
         text: මෙය ඔබගේ අයදුම්පත සමාලෝචනය කිරීමට අපට උපකාරී වනු ඇත
       ip_block:
@@ -84,7 +81,7 @@ si:
       tag:
         name: ඔබට අකුරු වල ආවරණය පමණක් වෙනස් කළ හැකිය, උදාහරණයක් ලෙස, එය වඩාත් කියවිය හැකි කිරීමට
       user:
-        chosen_languages: පරීක්ෂා කළ විට, තෝරාගත් භාෂාවලින් පළ කිරීම් පමණක් පොදු කාලරේඛා තුළ සංදර්ශන කෙරේ
+        chosen_languages: සබල නම්, තෝරාගත් භාෂාවල ලිපි පමණක් ප්‍රසිද්ධ කාල රේඛාවේ දිස්වේ
       webhook:
         events: යැවීමට සිදුවීම් තෝරන්න
         url: සිදුවීම් යවනු ලබන ස්ථානය
@@ -99,16 +96,16 @@ si:
         acct: නව ගිණුමේ හැසිරවීම
       account_warning_preset:
         text: පෙර සැකසූ පෙළ
-        title: ශීර්ෂය
+        title: සිරැසිය
       admin_account_action:
-        include_statuses: විද්‍යුත් තැපෑලෙහි වාර්තා කරන ලද පළ කිරීම් ඇතුළත් කරන්න
+        include_statuses: වි-තැපෑලට වාර්තා කරන ලද ලිපි ද ඇතුළත් කරන්න
         send_email_notification: විද්‍යුත් තැපෑලෙන් පරිශීලකයාට දැනුම් දෙන්න
         text: අභිරුචි අනතුරු ඇඟවීම
         type: ක්‍රියාමාර්ගය
         types:
           disable: කැටි කරන්න
           none: අනතුරු ඇඟවීමක් යවන්න
-          sensitive: පවතී
+          sensitive: සංවේදීතාව
           silence: සීමාව
           suspend: අත්හිටුවන්න
         warning_preset_id: අනතුරු ඇඟවීමේ පෙරසිටුවක් භාවිතා කරන්න
@@ -122,13 +119,12 @@ si:
         text: මෙම තීරණය ආපසු හැරවිය යුත්තේ මන්දැයි පැහැදිලි කරන්න
       defaults:
         autofollow: ඔබගේ ගිණුම අනුගමනය කිරීමට ආරාධනා කරන්න
-        avatar: අවතාරය
-        bot: මෙය ස්වයං ක්‍රමලේඛගත ගිණුමකි
-        chosen_languages: භාෂා පෙරහන් කරන්න
-        confirm_new_password: නව මුර පදය තහවුරු කරන්න
-        confirm_password: මුරපදය තහවුරු කර ඇත
-        context: සන්දර්භ පෙරහන් කරන්න
-        current_password: වත්මන් මුර පදය
+        avatar: පැතිකඩ ඡායාරූපය
+        chosen_languages: භාෂා පෙරන්න
+        confirm_new_password: නව මුරපදය තහවුරු කරන්න
+        confirm_password: මුරපදය තහවුරු කරන්න
+        context: සන්දර්භ පෙරන්න
+        current_password: වත්මන් මුරපදය
         data: දත්ත
         display_name: ප්රදර්ශන නාමය
         email: වි-තැපැල් ලිපිනය
@@ -138,39 +134,35 @@ si:
         honeypot: "%{label} (පුරවන්න එපා)"
         inbox_url: රිලේ එන ලිපි URL
         irreversible: සැඟවීම වෙනුවට අතහරින්න
-        locale: අතුරු මුහුණත භාෂාව
+        locale: අතුරු මුහුණතේ භාෂාව
         max_uses: උපරිම භාවිත ගණන
         new_password: නව මුරපදය
-        note: ජෛව
         otp_attempt: ද්වි සාධක කේතය
         password: මුරපදය
         phrase: මූල පදය හෝ වාක්‍ය ඛණ්ඩය
         setting_advanced_layout: උසස් වෙබ් අතුරු මුහුණත සබල කරන්න
-        setting_aggregate_reblogs: කණ්ඩායම් කාලරේඛාව වැඩි කරයි
         setting_always_send_emails: සෑම විටම විද්‍යුත් තැපැල් දැනුම්දීම් යවන්න
         setting_auto_play_gif: සජීවිකරණ GIF ස්වයංක්‍රීයව ධාවනය කරන්න
-        setting_boost_modal: වැඩි කිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න
-        setting_default_language: පළ කිරීමේ භාෂාව
-        setting_default_privacy: පුද්ගලිකත්වය පළ කිරීම
-        setting_default_sensitive: සෑම විටම මාධ්‍ය සංවේදී ලෙස සලකුණු කරන්න
-        setting_delete_modal: පළ කිරීමක් මැකීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න
-        setting_disable_swiping: ස්වයිප් චලන අක්‍රීය කරන්න
+        setting_default_language: ලිපිවල භාෂාව
+        setting_default_privacy: ලිපියේ රහස්‍යතාව
+        setting_default_sensitive: සෑමවිට මාධ්‍ය සංවේදී බව සලකුණු කරන්න
+        setting_delete_modal: ලිපියක් මැකීමට පෙර ඒ ගැන විමසන්න
         setting_display_media: මාධ්ය සංදර්ශකය
-        setting_display_media_default: පෙරනිමිය
+        setting_display_media_default: පෙරනිමි
         setting_display_media_hide_all: සියල්ල සඟවන්න
         setting_display_media_show_all: සියල්ල පෙන්වන්න
-        setting_expand_spoilers: අන්තර්ගත අනතුරු ඇඟවීම් සමඟ සලකුණු කර ඇති පළ කිරීම් සැමවිටම පුළුල් කරන්න
+        setting_expand_spoilers: අන්තර්ගත අවවාද සහිත ලිපි සැමවිට දිගහරින්න
         setting_hide_network: ඔබගේ ජාලය සඟවන්න
         setting_reduce_motion: සජීවිකරණවල චලනය අඩු කරන්න
-        setting_system_font_ui: පද්ධතියේ පෙරනිමි අකුරු භාවිතා කරන්න
+        setting_system_font_ui: පද්ධතියේ පෙරනිමි රුවකුරු භාවිතා කරන්න
         setting_theme: අඩවියේ තේමාව
         setting_trends: අද ප්‍රවණතා පෙන්වන්න
         setting_unfollow_modal: යමෙකු අනුගමනය නොකිරීමට පෙර තහවුරු කිරීමේ සංවාදය පෙන්වන්න
         setting_use_blurhash: සැඟවුණු මාධ්‍ය සඳහා වර්ණවත් අනුක්‍රමික පෙන්වන්න
-        setting_use_pending_items: මන්දගාමී මාදිලිය
+        setting_use_pending_items: මන්දගාමී ප්‍රකාරය
         severity: බරපතලකම
         sign_in_token_attempt: ආරක්‍ෂණ කේතය
-        title: ශීර්ෂය
+        title: සිරැසිය
         type: ආයාත වර්ගය
         username: පරිශීලක නාමය
         username_or_email: පරි. නාමය හෝ වි-තැපෑල
@@ -181,12 +173,16 @@ si:
         name: හෑෂ් ටැගය
       filters:
         actions:
-          hide: සම්පූර්ණයෙන්ම සඟවන්න
-          warn: අනතුරු ඇඟවීමක් සමඟ සඟවන්න
+          hide: මුළුමනින්ම සඟවන්න
+          warn: අවවාදයක් සහිතව සඟවන්න
+      form_admin_settings:
+        custom_css: අභිරුචි CSS
+        profile_directory: පැතිකඩ නාමාවලිය සබල කරන්න
+        site_terms: රහස්‍යතා ප්‍රතිපත්තිය
+        site_title: සේවාදායකයේ නම
+        theme: පෙරනිමි තේමාව
       interactions:
-        must_be_follower: අනුගාමිකයින් නොවන අයගේ දැනුම්දීම් අවහිර කරන්න
-        must_be_following: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගේ දැනුම්දීම් අවහිර කරන්න
-        must_be_following_dm: ඔබ අනුගමනය නොකරන පුද්ගලයින්ගෙන් සෘජු පණිවිඩ අවහිර කරන්න
+        must_be_following_dm: ඔබ නොදන්නා අයගෙන් සෘජු පණිවිඩ ලැබීම අවහිර කරන්න
       invite:
         comment: අදහස
       invite_request:
@@ -195,31 +191,34 @@ si:
         comment: අදහස
         ip: අ.ජා. කෙ. (IP)
         severities:
-          no_access: ප්රවේශය අවහිර කරන්න
+          no_access: ප්‍රවේශය අවහිර කරන්න
           sign_up_requires_approval: ලියාපදිංචි වීම සීමා කරන්න
         severity: නීතිය
       notification_emails:
-        appeal: යමෙක් උපපරිපාලක තීරණයකට අභියාචනා කරයි
         digest: digest ඊමේල් යවන්න
-        favourite: කවුරුහරි ඔබේ පළ කිරීම ප්‍රිය කළා
-        follow: කවුරුහරි ඔබව අනුගමනය කළා
-        follow_request: කවුරුහරි ඔබව අනුගමනය කරන ලෙස ඉල්ලා සිටියේය
-        mention: කවුරුහරි ඔබව සඳහන් කළා
-        pending_account: නව ගිණුම සමාලෝචනය අවශ්‍යයි
-        reblog: කවුරුහරි ඔබේ පළ කිරීම වැඩි කළා
-        report: නව වාර්තාවක් ඉදිරිපත් කෙරේ
-        trending_tag: නව ප්‍රවණතාවයට සමාලෝචනයක් අවශ්‍ය වේ
+        favourite: යමෙක් ඔබගේ ලිපියට ප්‍රිය කළා
+        follow: යමෙක් ඔබව අනුගමනය කළා
+        mention: යමෙක් ඔබව සඳහන් කළා
+        report: නව වාර්තාවක් යොමු කර ඇත
       rule:
         text: නීතිය
       tag:
         listable: මෙම හැෂ් ටැගය සෙවීම් සහ යෝජනා වල දිස් වීමට ඉඩ දෙන්න
         name: හෑෂ් ටැගය
         trendable: මෙම හැෂ් ටැගය ප්‍රවණතා යටතේ දිස් වීමට ඉඩ දෙන්න
-        usable: මෙම හැෂ් ටැගය භාවිතා කිරීමට පළ කිරීම් වලට ඉඩ දෙන්න
+        usable: ලිපි සඳහා මෙම පූරක අනන්‍යනය භාවිතයට ඉඩදෙන්න
+      user:
+        role: භූමිකාව
+        time_zone: වේලා කලාපය
+      user_role:
+        color: චිහ්නයේ පාට
+        name: නම
+        permissions_as_keys: අවසර
+        position: ප්‍රමුඛත්‍වය
       webhook:
         events: සබල කළ සිදුවීම්
         url: අන්ත ලක්ෂ්‍ය URL
-    'no': නැත
+    'no': නැහැ
     recommended: නිර්දේශිත
     required:
       mark: "*"
diff --git a/config/routes.rb b/config/routes.rb
index 36f5967782..8c16d3c720 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -85,10 +85,10 @@ Rails.application.routes.draw do
 
   devise_for :users, path: 'auth', format: false, controllers: {
     omniauth_callbacks: 'auth/omniauth_callbacks',
-    sessions:           'auth/sessions',
-    registrations:      'auth/registrations',
-    passwords:          'auth/passwords',
-    confirmations:      'auth/confirmations',
+    sessions: 'auth/sessions',
+    registrations: 'auth/registrations',
+    passwords: 'auth/passwords',
+    confirmations: 'auth/confirmations',
   }
 
   get '/users/:username', to: redirect('/@%{username}'), constraints: lambda { |req| req.format.nil? || req.format.html? }
diff --git a/lib/mastodon/cli/upgrade.rb b/lib/mastodon/cli/upgrade.rb
index 52b5540c40..cf83986844 100644
--- a/lib/mastodon/cli/upgrade.rb
+++ b/lib/mastodon/cli/upgrade.rb
@@ -125,27 +125,12 @@ module Mastodon::CLI
         progress.log("Moving #{previous_path} to #{upgraded_path}") if options[:verbose]
 
         begin
-          unless dry_run?
-            FileUtils.mkdir_p(File.dirname(upgraded_path))
-            FileUtils.mv(previous_path, upgraded_path)
-
-            begin
-              FileUtils.rmdir(File.dirname(previous_path), parents: true)
-            rescue Errno::ENOTEMPTY
-              # OK
-            end
-          end
+          move_previous_to_upgraded
         rescue => e
           progress.log(pastel.red("Error processing #{previous_path}: #{e}"))
           success = false
 
-          unless dry_run?
-            begin
-              FileUtils.rmdir(File.dirname(upgraded_path), parents: true)
-            rescue Errno::ENOTEMPTY
-              # OK
-            end
-          end
+          remove_directory
         end
       end
 
@@ -155,5 +140,28 @@ module Mastodon::CLI
       attachment.instance_write(:storage_schema_version, previous_storage_schema_version)
       success
     end
+
+    def move_previous_to_upgraded(previous_path, upgraded_path)
+      return if dry_run?
+
+      FileUtils.mkdir_p(File.dirname(upgraded_path))
+      FileUtils.mv(previous_path, upgraded_path)
+
+      begin
+        FileUtils.rmdir(File.dirname(previous_path), parents: true)
+      rescue Errno::ENOTEMPTY
+        # OK
+      end
+    end
+
+    def remove_directory(path)
+      return if dry_run?
+
+      begin
+        FileUtils.rmdir(File.dirname(path), parents: true)
+      rescue Errno::ENOTEMPTY
+        # OK
+      end
+    end
   end
 end
diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb
index c382b5fbd5..a92a8767ce 100644
--- a/lib/mastodon/migration_helpers.rb
+++ b/lib/mastodon/migration_helpers.rb
@@ -37,7 +37,6 @@
 
 # This is bad form, but there are enough differences that it's impractical to do
 # otherwise:
-# rubocop:disable all
 
 module Mastodon
   module MigrationHelpers
@@ -989,5 +988,3 @@ into similar problems in the future (e.g. when new tables are created).
     end
   end
 end
-
-# rubocop:enable all
diff --git a/lib/mastodon/version.rb b/lib/mastodon/version.rb
index 0a11420756..b55873a3c9 100644
--- a/lib/mastodon/version.rb
+++ b/lib/mastodon/version.rb
@@ -9,7 +9,7 @@ module Mastodon
     end
 
     def minor
-      2
+      3
     end
 
     def patch
@@ -17,7 +17,7 @@ module Mastodon
     end
 
     def default_prerelease
-      ''
+      'alpha.0'
     end
 
     def prerelease
diff --git a/package.json b/package.json
index 2b26f97a2f..0d46cc25a9 100644
--- a/package.json
+++ b/package.json
@@ -175,7 +175,7 @@
     "@types/react-dom": "^18.2.4",
     "@types/react-helmet": "^6.1.6",
     "@types/react-immutable-proptypes": "^2.1.0",
-    "@types/react-motion": "^0.0.34",
+    "@types/react-motion": "^0.0.35",
     "@types/react-overlays": "^3.1.0",
     "@types/react-router-dom": "^5.3.3",
     "@types/react-select": "^5.0.1",
diff --git a/spec/helpers/languages_helper_spec.rb b/spec/helpers/languages_helper_spec.rb
index 98c8064a33..99461b293b 100644
--- a/spec/helpers/languages_helper_spec.rb
+++ b/spec/helpers/languages_helper_spec.rb
@@ -60,4 +60,30 @@ describe LanguagesHelper do
       end
     end
   end
+
+  describe 'sorted_locales' do
+    context 'when sorting with native name' do
+      it 'returns Suomi after Gàidhlig' do
+        expect(described_class.sorted_locale_keys(%w(fi gd))).to eq(%w(gd fi))
+      end
+    end
+
+    context 'when sorting with diacritics' do
+      it 'returns Íslensk before Suomi' do
+        expect(described_class.sorted_locale_keys(%w(fi is))).to eq(%w(is fi))
+      end
+    end
+
+    context 'when sorting with non-Latin' do
+      it 'returns Suomi before Amharic' do
+        expect(described_class.sorted_locale_keys(%w(am fi))).to eq(%w(fi am))
+      end
+    end
+
+    context 'when sorting with local variants' do
+      it 'returns variant in-line' do
+        expect(described_class.sorted_locale_keys(%w(en eo en-GB))).to eq(%w(en en-GB eo))
+      end
+    end
+  end
 end
diff --git a/spec/models/account_statuses_filter_spec.rb b/spec/lib/account_statuses_filter_spec.rb
similarity index 91%
rename from spec/models/account_statuses_filter_spec.rb
rename to spec/lib/account_statuses_filter_spec.rb
index 0cf6453fe3..c821eb4bac 100644
--- a/spec/models/account_statuses_filter_spec.rb
+++ b/spec/lib/account_statuses_filter_spec.rb
@@ -202,7 +202,7 @@ RSpec.describe AccountStatusesFilter do
       context 'when blocking a reblogged domain' do
         let(:other_account) { Fabricate(:account, domain: 'example.com') }
         let(:reblogging_status) { Fabricate(:status, account: other_account) }
-        let(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
+        let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
 
         before do
           current_account.block_domain!(other_account.domain)
@@ -213,6 +213,20 @@ RSpec.describe AccountStatusesFilter do
         end
       end
 
+      context 'when blocking an unrelated domain' do
+        let(:other_account) { Fabricate(:account, domain: nil) }
+        let(:reblogging_status) { Fabricate(:status, account: other_account, visibility: 'public') }
+        let!(:reblog) { Fabricate(:status, account: account, visibility: 'public', reblog: reblogging_status) }
+
+        before do
+          current_account.block_domain!('example.com')
+        end
+
+        it 'returns the reblog from the non-blocked domain' do
+          expect(subject.results.pluck(:id)).to include(reblog.id)
+        end
+      end
+
       context 'when muting a reblogged account' do
         let(:reblog) { status_with_reblog!('public') }
 
diff --git a/spec/lib/cache_buster_spec.rb b/spec/lib/cache_buster_spec.rb
index 84085608e8..3dc62a8154 100644
--- a/spec/lib/cache_buster_spec.rb
+++ b/spec/lib/cache_buster_spec.rb
@@ -28,6 +28,14 @@ describe CacheBuster do
     end
 
     context 'when using default options' do
+      around do |example|
+        # Disables the CacheBuster.new deprecation warning about default arguments.
+        # Remove this `silence` block when default arg support is removed from CacheBuster
+        ActiveSupport::Deprecation.silence do
+          example.run
+        end
+      end
+
       include_examples 'makes_request'
     end
 
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index cf593349a7..fc7a43110b 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -700,7 +700,7 @@ RSpec.describe Account do
       expect(subject.match('Check this out https://medium.com/@alice/some-article#.abcdef123')).to be_nil
     end
 
-    xit 'does not match URL query string' do
+    it 'does not match URL query string' do
       expect(subject.match('https://example.com/?x=@alice')).to be_nil
     end
   end
diff --git a/spec/models/relationship_filter_spec.rb b/spec/models/relationship_filter_spec.rb
index ac31885774..fccd42aaad 100644
--- a/spec/models/relationship_filter_spec.rb
+++ b/spec/models/relationship_filter_spec.rb
@@ -6,32 +6,60 @@ describe RelationshipFilter do
   let(:account) { Fabricate(:account) }
 
   describe '#results' do
-    context 'when default params are used' do
-      subject do
-        described_class.new(account, 'order' => 'active').results
+    let(:account_of_7_months) { Fabricate(:account_stat, statuses_count: 1, last_status_at: 7.months.ago).account }
+    let(:account_of_1_day)    { Fabricate(:account_stat, statuses_count: 1, last_status_at: 1.day.ago).account }
+    let(:account_of_3_days)   { Fabricate(:account_stat, statuses_count: 1, last_status_at: 3.days.ago).account }
+    let(:silent_account)      { Fabricate(:account_stat, statuses_count: 0, last_status_at: nil).account }
+
+    before do
+      account.follow!(account_of_7_months)
+      account.follow!(account_of_1_day)
+      account.follow!(account_of_3_days)
+      account.follow!(silent_account)
+    end
+
+    context 'when ordering by last activity' do
+      context 'when not filtering' do
+        subject do
+          described_class.new(account, 'order' => 'active').results
+        end
+
+        it 'returns followings ordered by last activity' do
+          expect(subject).to eq [account_of_1_day, account_of_3_days, account_of_7_months, silent_account]
+        end
       end
 
-      before do
-        add_following_account_with(last_status_at: 7.days.ago)
-        add_following_account_with(last_status_at: 1.day.ago)
-        add_following_account_with(last_status_at: 3.days.ago)
+      context 'when filtering for dormant accounts' do
+        subject do
+          described_class.new(account, 'order' => 'active', 'activity' => 'dormant').results
+        end
+
+        it 'returns dormant followings ordered by last activity' do
+          expect(subject).to eq [account_of_7_months, silent_account]
+        end
+      end
+    end
+
+    context 'when ordering by account creation' do
+      context 'when not filtering' do
+        subject do
+          described_class.new(account, 'order' => 'recent').results
+        end
+
+        it 'returns followings ordered by last account creation' do
+          expect(subject).to eq [silent_account, account_of_3_days, account_of_1_day, account_of_7_months]
+        end
       end
 
-      it 'returns followings ordered by last activity' do
-        expected_result = account.following.eager_load(:account_stat).reorder(nil).by_recent_status
+      context 'when filtering for dormant accounts' do
+        subject do
+          described_class.new(account, 'order' => 'recent', 'activity' => 'dormant').results
+        end
 
-        expect(subject).to eq expected_result
+        it 'returns dormant followings ordered by last activity' do
+          expect(subject).to eq [silent_account, account_of_7_months]
+        end
       end
     end
   end
-
-  def add_following_account_with(last_status_at:)
-    following_account = Fabricate(:account)
-    Fabricate(:account_stat, account: following_account,
-                             last_status_at: last_status_at,
-                             statuses_count: 1,
-                             following_count: 0,
-                             followers_count: 0)
-    Fabricate(:follow, account: account, target_account: following_account).account
-  end
 end
diff --git a/spec/requests/cache_spec.rb b/spec/requests/cache_spec.rb
index 178d19ed0d..c391c8b3da 100644
--- a/spec/requests/cache_spec.rb
+++ b/spec/requests/cache_spec.rb
@@ -30,6 +30,7 @@ module TestEndpoints
     /directory
     /@alice
     /@alice/110224538612341312
+    /deck/home
   ).freeze
 
   # Endpoints that should be cachable when accessed anonymously but have a Vary
diff --git a/spec/serializers/activitypub/note_serializer_spec.rb b/spec/serializers/activitypub/note_serializer_spec.rb
index 4b2b8ec875..31ee31f132 100644
--- a/spec/serializers/activitypub/note_serializer_spec.rb
+++ b/spec/serializers/activitypub/note_serializer_spec.rb
@@ -7,7 +7,7 @@ describe ActivityPub::NoteSerializer do
 
   let!(:account) { Fabricate(:account) }
   let!(:other) { Fabricate(:account) }
-  let!(:parent) { Fabricate(:status, account: account, visibility: :public) }
+  let!(:parent) { Fabricate(:status, account: account, visibility: :public, language: 'zh-TW') }
   let!(:reply_by_account_first) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
   let!(:reply_by_account_next) { Fabricate(:status, account: account, thread: parent, visibility: :public) }
   let!(:reply_by_other_first) { Fabricate(:status, account: other, thread: parent, visibility: :public) }
@@ -18,8 +18,15 @@ describe ActivityPub::NoteSerializer do
     @serialization = ActiveModelSerializers::SerializableResource.new(parent, serializer: described_class, adapter: ActivityPub::Adapter)
   end
 
-  it 'has a Note type' do
-    expect(subject['type']).to eql('Note')
+  it 'has the expected shape' do
+    expect(subject).to include({
+      '@context' => include('https://www.w3.org/ns/activitystreams'),
+      'type' => 'Note',
+      'attributedTo' => ActivityPub::TagManager.instance.uri_for(account),
+      'contentMap' => include({
+        'zh-TW' => a_kind_of(String),
+      }),
+    })
   end
 
   it 'has a replies collection' do
diff --git a/streaming/index.js b/streaming/index.js
index 254eed38d7..04e54fe61b 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -1407,19 +1407,21 @@ const startServer = async () => {
   };
 
   wss.on('connection', (ws, req) => {
-    const location = url.parse(req.url, true);
+    // Note: url.parse could throw, which would terminate the connection, so we
+    // increment the connected clients metric straight away when we establish
+    // the connection, without waiting:
+    connectedClients.labels({ type: 'websocket' }).inc();
 
+    // Setup request properties:
     req.requestId = uuid.v4();
     req.remoteAddress = ws._socket.remoteAddress;
 
+    // Setup connection keep-alive state:
     ws.isAlive = true;
-
     ws.on('pong', () => {
       ws.isAlive = true;
     });
 
-    connectedClients.labels({ type: 'websocket' }).inc();
-
     /**
      * @type {WebSocketSession}
      */
@@ -1429,27 +1431,31 @@ const startServer = async () => {
       subscriptions: {},
     };
 
-    const onEnd = () => {
+    ws.on('close', function onWebsocketClose() {
       const subscriptions = Object.keys(session.subscriptions);
 
       subscriptions.forEach(channelIds => {
         removeSubscription(session.subscriptions, channelIds.split(';'), req)
       });
 
+      // Decrement the metrics for connected clients:
+      connectedClients.labels({ type: 'websocket' }).dec();
+
       // ensure garbage collection:
       session.socket = null;
       session.request = null;
       session.subscriptions = {};
+    });
 
-      connectedClients.labels({ type: 'websocket' }).dec();
-    };
-
-    ws.on('close', onEnd);
-    ws.on('error', onEnd);
+    // Note: immediately after the `error` event is emitted, the `close` event
+    // is emitted. As such, all we need to do is log the error here.
+    ws.on('error', (err) => {
+      log.error('websocket', err.toString());
+    });
 
     ws.on('message', (data, isBinary) => {
       if (isBinary) {
-        log.warn('socket', 'Received binary data, closing connection');
+        log.warn('websocket', 'Received binary data, closing connection');
         ws.close(1003, 'The mastodon streaming server does not support binary messages');
         return;
       }
@@ -1472,7 +1478,10 @@ const startServer = async () => {
 
     subscribeWebsocketToSystemChannel(session);
 
-    if (location.query.stream) {
+    // Parse the URL for the connection arguments (if supplied), url.parse can throw:
+    const location = req.url && url.parse(req.url, true);
+
+    if (location && location.query.stream) {
       subscribeWebsocketToChannel(session, firstParam(location.query.stream), location.query);
     }
   });
diff --git a/yarn.lock b/yarn.lock
index e112c1901e..f3c22be095 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1096,13 +1096,20 @@
   dependencies:
     regenerator-runtime "^0.12.0"
 
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.20.13", "@babel/runtime@^7.20.7", "@babel/runtime@^7.22.3", "@babel/runtime@^7.3.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
   version "7.22.15"
   resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8"
   integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==
   dependencies:
     regenerator-runtime "^0.14.0"
 
+"@babel/runtime@^7.12.1", "@babel/runtime@^7.9.2":
+  version "7.23.1"
+  resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.1.tgz#72741dc4d413338a91dcb044a86f3c0bc402646d"
+  integrity sha512-hC2v6p8ZSI/W0HUzh3V8C5g+NwSKzKPtJwSpTjwl0o297GP9+ZLQSkdvHz46CM3LqyoXxq+5G9komY+eSqSO0g==
+  dependencies:
+    regenerator-runtime "^0.14.0"
+
 "@babel/template@^7.22.15", "@babel/template@^7.22.5":
   version "7.22.15"
   resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.22.15.tgz#09576efc3830f0430f4548ef971dde1350ef2f38"
@@ -1298,7 +1305,12 @@
   dependencies:
     eslint-visitor-keys "^3.3.0"
 
-"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
+"@eslint-community/regexpp@^4.5.1":
+  version "4.9.0"
+  resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.0.tgz#7ccb5f58703fa61ffdcbf39e2c604a109e781162"
+  integrity sha512-zJmuCWj2VLBt4c25CfBIbMZLGLyhkvs7LznyVX5HfpzeocThgIj5XQK4L+g3U36mMcx8bPMhGyPpwCATamC4jQ==
+
+"@eslint-community/regexpp@^4.6.1":
   version "4.8.1"
   resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.8.1.tgz#8c4bb756cc2aa7eaf13cfa5e69c83afb3260c20c"
   integrity sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==
@@ -1739,9 +1751,9 @@
     "@jridgewell/sourcemap-codec" "^1.4.14"
 
 "@material-design-icons/svg@^0.14.10":
-  version "0.14.12"
-  resolved "https://registry.yarnpkg.com/@material-design-icons/svg/-/svg-0.14.12.tgz#b3dd27b4c2a93e0310f51acfb311846b0212f987"
-  integrity sha512-hVEMICFvG26SKDXatPmz+vY5BAqLPCDiyXnw+KN46FXOtY4PcpeAfzFZvwt6D9ywNnVJd4EvmLdlWgLmtOWxbA==
+  version "0.14.13"
+  resolved "https://registry.yarnpkg.com/@material-design-icons/svg/-/svg-0.14.13.tgz#de5a79038cf8b281f4b47d79c07399b2b92fcfb7"
+  integrity sha512-nCExGZOtoLoFeeqShEOM4XA9DkkLzLlQdk/ZxHxps0//dz6e1Lw3fvQbZ2X/+0Dz2O+udiEukfZ4Nd4KpHg8aA==
 
 "@nodelib/fs.scandir@2.1.5":
   version "2.1.5"
@@ -1813,9 +1825,9 @@
   integrity sha512-tOQQBVH8LsUpGXqDnk+kaOGVsgZ8maHAhEiw3Git3p88q+c0Slgu47HuDnL6sVxeCfz24zbq7dOjsVYDiTpDIA==
 
 "@reduxjs/toolkit@^1.9.5":
-  version "1.9.6"
-  resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.6.tgz#fc968b45fe5b17ff90932c4556960d9c1078365a"
-  integrity sha512-Gc4ikl90ORF4viIdAkY06JNUnODjKfGxZRwATM30EdHq8hLSVoSrwXne5dd739yenP5bJxAX7tLuOWK5RPGtrw==
+  version "1.9.7"
+  resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.9.7.tgz#7fc07c0b0ebec52043f8cb43510cf346405f78a6"
+  integrity sha512-t7v8ZPxhhKgOKtU+uyJT13lu4vL7az5aFi4IdoDs/eS548edn2M8Ik9h8fxgvMjGoAUVFSt6ZC1P5cWmQ014QQ==
   dependencies:
     immer "^9.0.21"
     redux "^4.2.1"
@@ -2305,9 +2317,9 @@
   integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==
 
 "@types/node@*":
-  version "20.6.5"
-  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.6.5.tgz#4c6a79adf59a8e8193ac87a0e522605b16587258"
-  integrity sha512-2qGq5LAOTh9izcc0+F+dToFigBWiK1phKPt7rNhOqJSr35y8rlIBjDwGtFSgAI6MGIhjwOVNSQZVdJsZJ2uR1w==
+  version "20.7.1"
+  resolved "https://registry.yarnpkg.com/@types/node/-/node-20.7.1.tgz#06d732ead0bd5ad978ef0ea9cbdeb24dc8717514"
+  integrity sha512-LT+OIXpp2kj4E2S/p91BMe+VgGX2+lfO+XTpfXhh+bCk2LkQtHZSub8ewFBMGP5ClysPjTDFa4sMI8Q3n4T0wg==
 
 "@types/node@14 || 16 || 17":
   version "17.0.45"
@@ -2349,9 +2361,9 @@
   integrity sha512-O397rnSS9iQI4OirieAtsDqvCj4+3eY1J+EPdNTKuHuRWIfUoGyzX294o8C4KJYaLqgSrd2o60c5EqCU8Zv02g==
 
 "@types/prop-types@*", "@types/prop-types@^15.7.5":
-  version "15.7.7"
-  resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.7.tgz#f9361f7b87fd5d8188b2c998db0a1f47e9fb391a"
-  integrity sha512-FbtmBWCcSa2J4zL781Zf1p5YUBXQomPEcep9QZCfRfQgTxz3pJWiDFLebohZ9fFntX5ibzOkSsrJ0TEew8cAog==
+  version "15.7.8"
+  resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.8.tgz#805eae6e8f41bd19e88917d2ea200dc992f405d3"
+  integrity sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==
 
 "@types/punycode@^2.1.0":
   version "2.1.0"
@@ -2369,36 +2381,36 @@
   integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg==
 
 "@types/range-parser@*":
-  version "1.2.4"
-  resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
-  integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498"
+  integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA==
 
 "@types/react-dom@^18.0.0", "@types/react-dom@^18.2.4":
-  version "18.2.7"
-  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.7.tgz#67222a08c0a6ae0a0da33c3532348277c70abb63"
-  integrity sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==
+  version "18.2.8"
+  resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-18.2.8.tgz#338f1b0a646c9f10e0a97208c1d26b9f473dffd6"
+  integrity sha512-bAIvO5lN/U8sPGvs1Xm61rlRHHaq5rp5N3kp9C+NJ/Q41P8iqjkXSu0+/qu8POsjH9pNWb0OYabFez7taP7omw==
   dependencies:
     "@types/react" "*"
 
 "@types/react-helmet@^6.1.6":
-  version "6.1.6"
-  resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.6.tgz#7d1afd8cbf099616894e8240e9ef70e3c6d7506d"
-  integrity sha512-ZKcoOdW/Tg+kiUbkFCBtvDw0k3nD4HJ/h/B9yWxN4uDO8OkRksWTO+EL+z/Qu3aHTeTll3Ro0Cc/8UhwBCMG5A==
+  version "6.1.7"
+  resolved "https://registry.yarnpkg.com/@types/react-helmet/-/react-helmet-6.1.7.tgz#4cecc03165084727408d29d92d8fdd4a7e267403"
+  integrity sha512-mUFOrdR3AIvHE8BEaqzfPEnR62xq5PHQJehhgNtj78x0d5NOxUCQ0j+r9OZ4RvB+prNZx9wvQnVW8ApFBX+fig==
   dependencies:
     "@types/react" "*"
 
 "@types/react-immutable-proptypes@^2.1.0":
-  version "2.1.0"
-  resolved "https://registry.yarnpkg.com/@types/react-immutable-proptypes/-/react-immutable-proptypes-2.1.0.tgz#c045fb48ba28c34c9d759abc3a51a04b5321b77a"
-  integrity sha512-NRH4W4mgymzyM2gnAG+i2VoOdWIBOQlJlSyAgnFiBTdJ0l8IVeyCtdWP8g6Lra59sUBj2XUO/+DkfmrRAxj6UA==
+  version "2.1.1"
+  resolved "https://registry.yarnpkg.com/@types/react-immutable-proptypes/-/react-immutable-proptypes-2.1.1.tgz#9327e09b07ea61c95a8c99869a5e9f0fc1690cc4"
+  integrity sha512-PiVos0qCotGqI+J0kOeFhbeg7zK8StPMTSDGaTtgYkX6UPjuVVS7lJMedyt4kAMFbM/2QE0bbP5jh22WqtspQg==
   dependencies:
     "@types/prop-types" "*"
     immutable "^3.8.2"
 
-"@types/react-motion@^0.0.34":
-  version "0.0.34"
-  resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.34.tgz#789ff2063e2f7fbb6085d291135c442e8b35291a"
-  integrity sha512-/rFI22Vg4Xzb47hXtS06WkzUGRu+Vb3yDleuxiqzGj0JbXYXQUCgwSa2ZU12K7ubKi4C8xsdIN3xt4Z4fjSdPw==
+"@types/react-motion@^0.0.35":
+  version "0.0.35"
+  resolved "https://registry.yarnpkg.com/@types/react-motion/-/react-motion-0.0.35.tgz#63002d85791dc9c7c212044c7b89dfff99cd0b51"
+  integrity sha512-7e0rlyG4wgvL1F5G8FMpgEYgPF54i7tmOy3b9KSp6kPjU2hEAV6BiRrl3qMPGrJXZ9soH/OlUYx1Ae5C9AJLGA==
   dependencies:
     "@types/react" "*"
 
@@ -2434,23 +2446,23 @@
     react-select "*"
 
 "@types/react-sparklines@^1.7.2":
-  version "1.7.2"
-  resolved "https://registry.yarnpkg.com/@types/react-sparklines/-/react-sparklines-1.7.2.tgz#c14e80623abd3669a10f18d13f6fb9fbdc322f70"
-  integrity sha512-N1GwO7Ri5C5fE8+CxhiDntuSw1qYdGytBuedKrCxWpaojXm4WnfygbdBdc5sXGX7feMxDXBy9MNhxoUTwrMl4A==
+  version "1.7.3"
+  resolved "https://registry.yarnpkg.com/@types/react-sparklines/-/react-sparklines-1.7.3.tgz#cdcbeea734bae191011d8f42ef20d794e55b9064"
+  integrity sha512-fU88CytKUp/aT8CsaWCNOgcvto5OoINj717z9l0a6OiLiz4EhojRW3c6dSwawM9VjKOIJZMXobSRbbJt7MCtsw==
   dependencies:
     "@types/react" "*"
 
 "@types/react-swipeable-views@^0.13.1":
-  version "0.13.2"
-  resolved "https://registry.yarnpkg.com/@types/react-swipeable-views/-/react-swipeable-views-0.13.2.tgz#c37cc8978ae60ab0dff209ef3eb1f77185aef330"
-  integrity sha512-FiszBm9M0JicAgzO/IwDqpfHQRUEjPZA88UexYsVD6qHJBf5LrbGjR5Mw4+yZbf8ZxJneNqOsZbe4WGjOYG7iQ==
+  version "0.13.3"
+  resolved "https://registry.yarnpkg.com/@types/react-swipeable-views/-/react-swipeable-views-0.13.3.tgz#a4c545b7b722c2622806e5853a96ec5826b0bafb"
+  integrity sha512-gVAQb5AxZTSLVTrJ/Fxwsk0axdBqGzXC8NxAD8MNwEf+qZynsb+15KL9TpNCaGGk4SCE2iyU/JNi6nGNB61AyA==
   dependencies:
     "@types/react" "*"
 
 "@types/react-test-renderer@^18.0.0":
-  version "18.0.2"
-  resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.2.tgz#44243977eec18ab8cda88d8977437f47a0d3fdbe"
-  integrity sha512-tJzMn+9GHDrdrLe0O4rwJELDfTrmdJbCn/UdYyzjlnPiXYXDl5FBNzdw4PVk2R3hJvSHKFjZcRgvZc12lV0p5Q==
+  version "18.0.3"
+  resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.3.tgz#67922bf5e5f0096581b1efd67dcdeabdd400cfea"
+  integrity sha512-4wcNLnY6nIT+L6g94CpzL4CXX2P18JvKPU9CDlaHr3DnbP3GiaQLhDotJqjWlVqOcE4UhLRjp0MtxqwuNKONnA==
   dependencies:
     "@types/react" "*"
 
@@ -2476,18 +2488,18 @@
     "@types/react" "*"
 
 "@types/react@*", "@types/react@16 || 17 || 18", "@types/react@>=16.9.11", "@types/react@^18.0.26", "@types/react@^18.2.7":
-  version "18.2.22"
-  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.22.tgz#abe778a1c95a07fa70df40a52d7300a40b949ccb"
-  integrity sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==
+  version "18.2.24"
+  resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.24.tgz#3c7d68c02e0205a472f04abe4a0c1df35d995c05"
+  integrity sha512-Ee0Jt4sbJxMu1iDcetZEIKQr99J1Zfb6D4F3qfUWoR1JpInkY1Wdg4WwCyBjL257D0+jGqSl1twBjV8iCaC0Aw==
   dependencies:
     "@types/prop-types" "*"
     "@types/scheduler" "*"
     csstype "^3.0.2"
 
 "@types/redux-immutable@^4.0.3":
-  version "4.0.3"
-  resolved "https://registry.yarnpkg.com/@types/redux-immutable/-/redux-immutable-4.0.3.tgz#db92a281aa9a55a7b63bc1f20a233790305a1f06"
-  integrity sha512-wXUApt9ib9MGUqoHUMbQmQhqCkvykMHBW3z/P7DISMigFGpGRQ0kkbv7we0XNiv5sYEtEiZzNCEDm+W6ei04DA==
+  version "4.0.4"
+  resolved "https://registry.yarnpkg.com/@types/redux-immutable/-/redux-immutable-4.0.4.tgz#091641dea366ceed4f8b228a08a0de5f380b9bfd"
+  integrity sha512-qPFra/qd6HX7+bxayxwM9bsGdMoF7QhTGW/ZJFiaoBZVDZEnQEQCrDhsbSW8Xpuihe6xJ0TRHG3/WTvQpHLGaQ==
   dependencies:
     immutable "^4.0.0-rc.1"
     redux "^4.0.0"
@@ -2505,14 +2517,14 @@
     "@types/node" "*"
 
 "@types/scheduler@*":
-  version "0.16.3"
-  resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.3.tgz#cef09e3ec9af1d63d2a6cc5b383a737e24e6dcf5"
-  integrity sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==
+  version "0.16.4"
+  resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.4.tgz#fedc3e5b15c26dc18faae96bf1317487cb3658cf"
+  integrity sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==
 
 "@types/semver@^7.5.0":
-  version "7.5.2"
-  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.2.tgz#31f6eec1ed7ec23f4f05608d3a2d381df041f564"
-  integrity sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==
+  version "7.5.3"
+  resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.3.tgz#9a726e116beb26c24f1ccd6850201e1246122e04"
+  integrity sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==
 
 "@types/send@*":
   version "0.17.1"
@@ -2532,9 +2544,9 @@
     "@types/node" "*"
 
 "@types/source-list-map@*":
-  version "0.1.2"
-  resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.2.tgz#0078836063ffaf17412349bba364087e0ac02ec9"
-  integrity sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==
+  version "0.1.3"
+  resolved "https://registry.yarnpkg.com/@types/source-list-map/-/source-list-map-0.1.3.tgz#077e15c87fe06520e30396a533bd9848e735ce9b"
+  integrity sha512-I9R/7fUjzUOyDy6AFkehCK711wWoAXEaBi80AfjZt1lIkbe6AcXKd3ckQc3liMvQExWvfOeh/8CtKzrfUFN5gA==
 
 "@types/stack-utils@^2.0.0":
   version "2.0.1"
@@ -2542,9 +2554,9 @@
   integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
 
 "@types/tapable@^1":
-  version "1.0.8"
-  resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.8.tgz#b94a4391c85666c7b73299fd3ad79d4faa435310"
-  integrity sha512-ipixuVrh2OdNmauvtT51o3d8z12p6LtFW9in7U79der/kwejjdNchQC5UMn5u/KxNoM7VHHOs/l8KS8uHxhODQ==
+  version "1.0.9"
+  resolved "https://registry.yarnpkg.com/@types/tapable/-/tapable-1.0.9.tgz#1481a4236267dd2d0ca2a637adb90f0ccb3d69c4"
+  integrity sha512-fOHIwZua0sRltqWzODGUM6b4ffZrf/vzGUmNXdR+4DzuJP42PMbM5dLKcdzlYvv8bMJ3GALOzkk1q7cDm2zPyA==
 
 "@types/tough-cookie@*":
   version "4.0.2"
@@ -2557,9 +2569,9 @@
   integrity sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==
 
 "@types/uglify-js@*":
-  version "3.17.1"
-  resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.1.tgz#e0ffcef756476410e5bce2cb01384ed878a195b5"
-  integrity sha512-GkewRA4i5oXacU/n4MA9+bLgt5/L3F1mKrYvFGm7r2ouLXhRKjuWwo9XHNnbx6WF3vlGW21S3fCvgqxvxXXc5g==
+  version "3.17.2"
+  resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.17.2.tgz#a2ba86fd524f6281a7655463338c546f845b29c3"
+  integrity sha512-9SjrHO54LINgC/6Ehr81NjAxAYvwEZqjUHLjJYvC4Nmr9jbLQCIZbWSvl4vXQkkmR1UAuaKDycau3O1kWGFyXQ==
   dependencies:
     source-map "^0.6.1"
 
@@ -2579,18 +2591,18 @@
   integrity sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==
 
 "@types/webpack-sources@*":
-  version "3.2.0"
-  resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.0.tgz#16d759ba096c289034b26553d2df1bf45248d38b"
-  integrity sha512-Ft7YH3lEVRQ6ls8k4Ff1oB4jN6oy/XmU6tQISKdhfh+1mR+viZFphS6WL0IrtDOzvefmJg5a0s7ZQoRXwqTEFg==
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/@types/webpack-sources/-/webpack-sources-3.2.1.tgz#98670b35fa799c44ac235910f3fda9bfdcdbc2c6"
+  integrity sha512-iLC3Fsx62ejm3ST3PQ8vBMC54Rb3EoCprZjeJGI5q+9QjfDLGt9jeg/k245qz1G9AQnORGk0vqPicJFPT1QODQ==
   dependencies:
     "@types/node" "*"
     "@types/source-list-map" "*"
     source-map "^0.7.3"
 
 "@types/webpack@^4.41.33":
-  version "4.41.33"
-  resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.33.tgz#16164845a5be6a306bcbe554a8e67f9cac215ffc"
-  integrity sha512-PPajH64Ft2vWevkerISMtnZ8rTs4YmRbs+23c402J0INmxDKCrhZNvwZYtzx96gY2wAtXdrK1BS2fiC8MlLr3g==
+  version "4.41.34"
+  resolved "https://registry.yarnpkg.com/@types/webpack/-/webpack-4.41.34.tgz#8cf616be84b39c8fb26f9459d4470a5514df2477"
+  integrity sha512-CN2aOGrR3zbMc2v+cKqzaClYP1ldkpPOgtdNvgX+RmlWCSWxHxpzz6WSCVQZRkF8D60ROlkRzAoEpgjWQ+bd2g==
   dependencies:
     "@types/node" "*"
     "@types/tapable" "^1"
@@ -2605,22 +2617,22 @@
   integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ==
 
 "@types/yargs@^17.0.24", "@types/yargs@^17.0.8":
-  version "17.0.25"
-  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.25.tgz#3edd102803c97356fb4c805b2bbaf7dfc9ab6abc"
-  integrity sha512-gy7iPgwnzNvxgAEi2bXOHWCVOG6f7xsprVJH4MjlAWeBmJ7vh/Y1kwMtUrs64ztf24zVIRCpr3n/z6gm9QIkgg==
+  version "17.0.26"
+  resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.26.tgz#388e5002a8b284ad7b4599ba89920a6d74d8d79a"
+  integrity sha512-Y3vDy2X6zw/ZCumcwLpdhM5L7jmyGpmBCTYMHDLqT2IKVMYRRLdv6ZakA+wxhra6Z/3bwhNbNl9bDGXaFU+6rw==
   dependencies:
     "@types/yargs-parser" "*"
 
 "@typescript-eslint/eslint-plugin@^6.0.0":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz#f18cc75c9cceac8080a9dc2e7d166008c5207b9f"
-  integrity sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.3.tgz#d98046e9f7102d49a93d944d413c6055c47fafd7"
+  integrity sha512-vntq452UHNltxsaaN+L9WyuMch8bMd9CqJ3zhzTPXXidwbf5mqqKCVXEuvRZUqLJSTLeWE65lQwyXsRGnXkCTA==
   dependencies:
     "@eslint-community/regexpp" "^4.5.1"
-    "@typescript-eslint/scope-manager" "6.7.2"
-    "@typescript-eslint/type-utils" "6.7.2"
-    "@typescript-eslint/utils" "6.7.2"
-    "@typescript-eslint/visitor-keys" "6.7.2"
+    "@typescript-eslint/scope-manager" "6.7.3"
+    "@typescript-eslint/type-utils" "6.7.3"
+    "@typescript-eslint/utils" "6.7.3"
+    "@typescript-eslint/visitor-keys" "6.7.3"
     debug "^4.3.4"
     graphemer "^1.4.0"
     ignore "^5.2.4"
@@ -2629,31 +2641,31 @@
     ts-api-utils "^1.0.1"
 
 "@typescript-eslint/parser@^6.0.0":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.2.tgz#e0ae93771441b9518e67d0660c79e3a105497af4"
-  integrity sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-6.7.3.tgz#aaf40092a32877439e5957e18f2d6a91c82cc2fd"
+  integrity sha512-TlutE+iep2o7R8Lf+yoer3zU6/0EAUc8QIBB3GYBc1KGz4c4TRm83xwXUZVPlZ6YCLss4r77jbu6j3sendJoiQ==
   dependencies:
-    "@typescript-eslint/scope-manager" "6.7.2"
-    "@typescript-eslint/types" "6.7.2"
-    "@typescript-eslint/typescript-estree" "6.7.2"
-    "@typescript-eslint/visitor-keys" "6.7.2"
+    "@typescript-eslint/scope-manager" "6.7.3"
+    "@typescript-eslint/types" "6.7.3"
+    "@typescript-eslint/typescript-estree" "6.7.3"
+    "@typescript-eslint/visitor-keys" "6.7.3"
     debug "^4.3.4"
 
-"@typescript-eslint/scope-manager@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz#cf59a2095d2f894770c94be489648ad1c78dc689"
-  integrity sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==
+"@typescript-eslint/scope-manager@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.7.3.tgz#07e5709c9bdae3eaf216947433ef97b3b8b7d755"
+  integrity sha512-wOlo0QnEou9cHO2TdkJmzF7DFGvAKEnB82PuPNHpT8ZKKaZu6Bm63ugOTn9fXNJtvuDPanBc78lGUGGytJoVzQ==
   dependencies:
-    "@typescript-eslint/types" "6.7.2"
-    "@typescript-eslint/visitor-keys" "6.7.2"
+    "@typescript-eslint/types" "6.7.3"
+    "@typescript-eslint/visitor-keys" "6.7.3"
 
-"@typescript-eslint/type-utils@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz#ed921c9db87d72fa2939fee242d700561454f367"
-  integrity sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==
+"@typescript-eslint/type-utils@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.7.3.tgz#c2c165c135dda68a5e70074ade183f5ad68f3400"
+  integrity sha512-Fc68K0aTDrKIBvLnKTZ5Pf3MXK495YErrbHb1R6aTpfK5OdSFj0rVN7ib6Tx6ePrZ2gsjLqr0s98NG7l96KSQw==
   dependencies:
-    "@typescript-eslint/typescript-estree" "6.7.2"
-    "@typescript-eslint/utils" "6.7.2"
+    "@typescript-eslint/typescript-estree" "6.7.3"
+    "@typescript-eslint/utils" "6.7.3"
     debug "^4.3.4"
     ts-api-utils "^1.0.1"
 
@@ -2662,10 +2674,10 @@
   resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f"
   integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==
 
-"@typescript-eslint/types@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.2.tgz#75a615a6dbeca09cafd102fe7f465da1d8a3c066"
-  integrity sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==
+"@typescript-eslint/types@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.7.3.tgz#0402b5628a63f24f2dc9d4a678e9a92cc50ea3e9"
+  integrity sha512-4g+de6roB2NFcfkZb439tigpAMnvEIg3rIjWQ+EM7IBaYt/CdJt6em9BJ4h4UpdgaBWdmx2iWsafHTrqmgIPNw==
 
 "@typescript-eslint/typescript-estree@5.62.0":
   version "5.62.0"
@@ -2680,30 +2692,30 @@
     semver "^7.3.7"
     tsutils "^3.21.0"
 
-"@typescript-eslint/typescript-estree@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz#ce5883c23b581a5caf878af641e49dd0349238c7"
-  integrity sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==
+"@typescript-eslint/typescript-estree@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.3.tgz#ec5bb7ab4d3566818abaf0e4a8fa1958561b7279"
+  integrity sha512-YLQ3tJoS4VxLFYHTw21oe1/vIZPRqAO91z6Uv0Ss2BKm/Ag7/RVQBcXTGcXhgJMdA4U+HrKuY5gWlJlvoaKZ5g==
   dependencies:
-    "@typescript-eslint/types" "6.7.2"
-    "@typescript-eslint/visitor-keys" "6.7.2"
+    "@typescript-eslint/types" "6.7.3"
+    "@typescript-eslint/visitor-keys" "6.7.3"
     debug "^4.3.4"
     globby "^11.1.0"
     is-glob "^4.0.3"
     semver "^7.5.4"
     ts-api-utils "^1.0.1"
 
-"@typescript-eslint/utils@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.2.tgz#b9ef0da6f04932167a9222cb4ac59cb187165ebf"
-  integrity sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==
+"@typescript-eslint/utils@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.7.3.tgz#96c655816c373135b07282d67407cb577f62e143"
+  integrity sha512-vzLkVder21GpWRrmSR9JxGZ5+ibIUSudXlW52qeKpzUEQhRSmyZiVDDj3crAth7+5tmN1ulvgKaCU2f/bPRCzg==
   dependencies:
     "@eslint-community/eslint-utils" "^4.4.0"
     "@types/json-schema" "^7.0.12"
     "@types/semver" "^7.5.0"
-    "@typescript-eslint/scope-manager" "6.7.2"
-    "@typescript-eslint/types" "6.7.2"
-    "@typescript-eslint/typescript-estree" "6.7.2"
+    "@typescript-eslint/scope-manager" "6.7.3"
+    "@typescript-eslint/types" "6.7.3"
+    "@typescript-eslint/typescript-estree" "6.7.3"
     semver "^7.5.4"
 
 "@typescript-eslint/visitor-keys@5.62.0":
@@ -2714,12 +2726,12 @@
     "@typescript-eslint/types" "5.62.0"
     eslint-visitor-keys "^3.3.0"
 
-"@typescript-eslint/visitor-keys@6.7.2":
-  version "6.7.2"
-  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz#4cb2bd786f1f459731b0ad1584c9f73e1c7a4d5c"
-  integrity sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==
+"@typescript-eslint/visitor-keys@6.7.3":
+  version "6.7.3"
+  resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.3.tgz#83809631ca12909bd2083558d2f93f5747deebb2"
+  integrity sha512-HEVXkU9IB+nk9o63CeICMHxFWbHWr3E1mpilIQBe9+7L/lH97rleFLVtYsfnWB+JVMaiFnEaxvknvmIzX+CqVg==
   dependencies:
-    "@typescript-eslint/types" "6.7.2"
+    "@typescript-eslint/types" "6.7.3"
     eslint-visitor-keys "^3.4.1"
 
 "@webassemblyjs/ast@1.9.0":
@@ -3356,9 +3368,9 @@ axe-core@^4.6.2:
   integrity sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==
 
 axios@^1.4.0:
-  version "1.5.0"
-  resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.0.tgz#f02e4af823e2e46a9768cfc74691fdd0517ea267"
-  integrity sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==
+  version "1.5.1"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.5.1.tgz#11fbaa11fc35f431193a9564109c88c1f27b585f"
+  integrity sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==
   dependencies:
     follow-redirects "^1.15.0"
     form-data "^4.0.0"
@@ -4343,9 +4355,9 @@ core-js@^2.5.0:
   integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
 
 core-js@^3.30.2:
-  version "3.32.2"
-  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.32.2.tgz#172fb5949ef468f93b4be7841af6ab1f21992db7"
-  integrity sha512-pxXSw1mYZPDGvTQqEc5vgIb83jGQKFGYWY76z4a7weZXUolw3G+OvpZqSRcfYOoOVUQJYEPsWeQK8pKEnUtWxQ==
+  version "3.33.0"
+  resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40"
+  integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw==
 
 core-util-is@~1.0.0:
   version "1.0.3"
@@ -6017,11 +6029,16 @@ flatted@^3.2.7:
   resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.9.tgz#7eb4c67ca1ba34232ca9d2d93e9886e611ad7daf"
   integrity sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==
 
-follow-redirects@^1.0.0, follow-redirects@^1.15.0:
+follow-redirects@^1.0.0:
   version "1.15.2"
   resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13"
   integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==
 
+follow-redirects@^1.15.0:
+  version "1.15.3"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
+  integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
+
 font-awesome@^4.7.0:
   version "4.7.0"
   resolved "https://registry.yarnpkg.com/font-awesome/-/font-awesome-4.7.0.tgz#8fa8cf0411a1a31afd07b06d2902bb9fc815a133"
@@ -6242,9 +6259,9 @@ glob-parent@^6.0.2:
     is-glob "^4.0.3"
 
 glob@^10.2.5, glob@^10.2.6:
-  version "10.3.9"
-  resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.9.tgz#181ae87640ecce9b2fc5b96e4e2d70b7c3629ab8"
-  integrity sha512-2tU/LKevAQvDVuVJ9pg9Yv9xcbSh+TqHuTaXTNbQwf+0kDl9Fm6bMovi4Nm5c8TVvfxo2LLcqCGtmO9KoJaGWg==
+  version "10.3.10"
+  resolved "https://registry.yarnpkg.com/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
+  integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
   dependencies:
     foreground-child "^3.1.0"
     jackspeak "^2.3.5"
@@ -9733,9 +9750,9 @@ postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
   integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
 
 postcss@^8.2.15, postcss@^8.4.24, postcss@^8.4.25:
-  version "8.4.30"
-  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.30.tgz#0e0648d551a606ef2192a26da4cabafcc09c1aa7"
-  integrity sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==
+  version "8.4.31"
+  resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.31.tgz#92b451050a9f914da6755af352bdc0192508656d"
+  integrity sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==
   dependencies:
     nanoid "^3.3.6"
     picocolors "^1.0.0"
@@ -10142,9 +10159,9 @@ react-redux-loading-bar@^5.0.4:
     react-lifecycles-compat "^3.0.4"
 
 react-redux@^8.0.4:
-  version "8.1.2"
-  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.2.tgz#9076bbc6b60f746659ad6d51cb05de9c5e1e9188"
-  integrity sha512-xJKYI189VwfsFc4CJvHqHlDrzyFTY/3vZACbE+rr/zQ34Xx1wQfB4OTOSeOSNrF6BDVe8OOdxIrAnMGXA3ggfw==
+  version "8.1.3"
+  resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-8.1.3.tgz#4fdc0462d0acb59af29a13c27ffef6f49ab4df46"
+  integrity sha512-n0ZrutD7DaX/j9VscF+uTALI3oUPa/pO4Z3soOBIjuRn/FzVu6aehhysxZCLi6y7duMf52WNZGMl7CtuK5EnRw==
   dependencies:
     "@babel/runtime" "^7.12.1"
     "@types/hoist-non-react-statics" "^3.3.1"
@@ -11476,6 +11493,7 @@ stringz@^2.1.0:
     char-regex "^1.0.2"
 
 "strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+  name strip-ansi-cjs
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
   integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==