about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-05-16 09:42:32 +0200
committerClaire <claire.github-309c@sitedethib.com>2022-05-16 09:42:32 +0200
commit040b7d37a460e5f023f7654b1b619368cbbc24ea (patch)
tree251a14cd362a6d98c1721e8f3f54fc386165e464
parent94e98864e39c010635e839fea984f2b4893bef1a (diff)
parentc3fac61f56b3ad63534961f3d3c426cdf8ac6213 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `app/services/remove_status_service.rb`:
  Conflict due to glitch-soc having extra code for a proper direct visibility
  timeline, in a part of the code upstream refactored.
  Restored glitch-soc's extra code in the refactored bit.
-rw-r--r--Gemfile4
-rw-r--r--Gemfile.lock118
-rw-r--r--app/controllers/media_proxy_controller.rb17
-rw-r--r--app/controllers/settings/exports_controller.rb15
-rw-r--r--app/javascript/mastodon/locales/af.json56
-rw-r--r--app/javascript/mastodon/locales/ar.json14
-rw-r--r--app/javascript/mastodon/locales/ast.json2
-rw-r--r--app/javascript/mastodon/locales/bg.json2
-rw-r--r--app/javascript/mastodon/locales/bn.json2
-rw-r--r--app/javascript/mastodon/locales/br.json2
-rw-r--r--app/javascript/mastodon/locales/ca.json6
-rw-r--r--app/javascript/mastodon/locales/ckb.json112
-rw-r--r--app/javascript/mastodon/locales/co.json2
-rw-r--r--app/javascript/mastodon/locales/cs.json2
-rw-r--r--app/javascript/mastodon/locales/cy.json2
-rw-r--r--app/javascript/mastodon/locales/da.json2
-rw-r--r--app/javascript/mastodon/locales/de.json2
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json29
-rw-r--r--app/javascript/mastodon/locales/el.json2
-rw-r--r--app/javascript/mastodon/locales/en-GB.json2
-rw-r--r--app/javascript/mastodon/locales/en.json2
-rw-r--r--app/javascript/mastodon/locales/eo.json12
-rw-r--r--app/javascript/mastodon/locales/es-AR.json4
-rw-r--r--app/javascript/mastodon/locales/es-MX.json2
-rw-r--r--app/javascript/mastodon/locales/es.json2
-rw-r--r--app/javascript/mastodon/locales/et.json2
-rw-r--r--app/javascript/mastodon/locales/eu.json2
-rw-r--r--app/javascript/mastodon/locales/fa.json24
-rw-r--r--app/javascript/mastodon/locales/fi.json2
-rw-r--r--app/javascript/mastodon/locales/fr.json4
-rw-r--r--app/javascript/mastodon/locales/ga.json2
-rw-r--r--app/javascript/mastodon/locales/gd.json4
-rw-r--r--app/javascript/mastodon/locales/gl.json12
-rw-r--r--app/javascript/mastodon/locales/he.json2
-rw-r--r--app/javascript/mastodon/locales/hi.json42
-rw-r--r--app/javascript/mastodon/locales/hr.json4
-rw-r--r--app/javascript/mastodon/locales/hu.json6
-rw-r--r--app/javascript/mastodon/locales/hy.json2
-rw-r--r--app/javascript/mastodon/locales/id.json2
-rw-r--r--app/javascript/mastodon/locales/io.json482
-rw-r--r--app/javascript/mastodon/locales/is.json2
-rw-r--r--app/javascript/mastodon/locales/it.json2
-rw-r--r--app/javascript/mastodon/locales/ja.json2
-rw-r--r--app/javascript/mastodon/locales/ka.json2
-rw-r--r--app/javascript/mastodon/locales/kab.json2
-rw-r--r--app/javascript/mastodon/locales/kk.json2
-rw-r--r--app/javascript/mastodon/locales/kn.json2
-rw-r--r--app/javascript/mastodon/locales/ko.json4
-rw-r--r--app/javascript/mastodon/locales/ku.json2
-rw-r--r--app/javascript/mastodon/locales/kw.json2
-rw-r--r--app/javascript/mastodon/locales/lt.json2
-rw-r--r--app/javascript/mastodon/locales/lv.json2
-rw-r--r--app/javascript/mastodon/locales/mk.json2
-rw-r--r--app/javascript/mastodon/locales/ml.json2
-rw-r--r--app/javascript/mastodon/locales/mr.json2
-rw-r--r--app/javascript/mastodon/locales/ms.json2
-rw-r--r--app/javascript/mastodon/locales/nl.json2
-rw-r--r--app/javascript/mastodon/locales/nn.json2
-rw-r--r--app/javascript/mastodon/locales/no.json2
-rw-r--r--app/javascript/mastodon/locales/oc.json2
-rw-r--r--app/javascript/mastodon/locales/pa.json2
-rw-r--r--app/javascript/mastodon/locales/pl.json2
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json2
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json2
-rw-r--r--app/javascript/mastodon/locales/ro.json2
-rw-r--r--app/javascript/mastodon/locales/ru.json2
-rw-r--r--app/javascript/mastodon/locales/sa.json2
-rw-r--r--app/javascript/mastodon/locales/sc.json2
-rw-r--r--app/javascript/mastodon/locales/si.json2
-rw-r--r--app/javascript/mastodon/locales/sk.json12
-rw-r--r--app/javascript/mastodon/locales/sl.json2
-rw-r--r--app/javascript/mastodon/locales/sq.json2
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json2
-rw-r--r--app/javascript/mastodon/locales/sr.json2
-rw-r--r--app/javascript/mastodon/locales/sv.json2
-rw-r--r--app/javascript/mastodon/locales/szl.json2
-rw-r--r--app/javascript/mastodon/locales/ta.json2
-rw-r--r--app/javascript/mastodon/locales/tai.json2
-rw-r--r--app/javascript/mastodon/locales/te.json2
-rw-r--r--app/javascript/mastodon/locales/th.json10
-rw-r--r--app/javascript/mastodon/locales/tr.json2
-rw-r--r--app/javascript/mastodon/locales/tt.json16
-rw-r--r--app/javascript/mastodon/locales/ug.json2
-rw-r--r--app/javascript/mastodon/locales/uk.json4
-rw-r--r--app/javascript/mastodon/locales/ur.json2
-rw-r--r--app/javascript/mastodon/locales/vi.json2
-rw-r--r--app/javascript/mastodon/locales/zgh.json2
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json96
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json2
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json20
-rw-r--r--app/lib/activitypub/activity.rb17
-rw-r--r--app/lib/activitypub/activity/announce.rb2
-rw-r--r--app/lib/activitypub/activity/create.rb4
-rw-r--r--app/lib/activitypub/activity/delete.rb6
-rw-r--r--app/models/account_migration.rb13
-rw-r--r--app/models/concerns/lockable.rb19
-rw-r--r--app/models/concerns/redisable.rb8
-rw-r--r--app/services/activitypub/process_account_service.rb33
-rw-r--r--app/services/activitypub/process_status_update_service.rb46
-rw-r--r--app/services/fetch_link_card_service.rb15
-rw-r--r--app/services/remove_status_service.rb63
-rw-r--r--app/services/resolve_account_service.rb13
-rw-r--r--app/services/vote_service.rb19
-rw-r--r--app/views/tags/show.rss.ruby1
-rw-r--r--app/workers/distribution_worker.rb9
-rw-r--r--chart/templates/configmap-env.yaml5
-rw-r--r--chart/values.yaml3
-rw-r--r--config/locales/activerecord.af.yml31
-rw-r--r--config/locales/af.yml20
-rw-r--r--config/locales/ar.yml22
-rw-r--r--config/locales/ast.yml2
-rw-r--r--config/locales/ca.yml36
-rw-r--r--config/locales/cs.yml10
-rw-r--r--config/locales/cy.yml35
-rw-r--r--config/locales/da.yml10
-rw-r--r--config/locales/de.yml10
-rw-r--r--config/locales/devise.ca.yml2
-rw-r--r--config/locales/devise.io.yml4
-rw-r--r--config/locales/devise.zh-TW.yml36
-rw-r--r--config/locales/doorkeeper.ar.yml1
-rw-r--r--config/locales/doorkeeper.io.yml16
-rw-r--r--config/locales/doorkeeper.ru.yml11
-rw-r--r--config/locales/doorkeeper.th.yml1
-rw-r--r--config/locales/doorkeeper.zh-CN.yml2
-rw-r--r--config/locales/doorkeeper.zh-TW.yml30
-rw-r--r--config/locales/el.yml6
-rw-r--r--config/locales/en.yml3
-rw-r--r--config/locales/es-AR.yml10
-rw-r--r--config/locales/es-MX.yml9
-rw-r--r--config/locales/es.yml10
-rw-r--r--config/locales/fa.yml30
-rw-r--r--config/locales/fr.yml11
-rw-r--r--config/locales/gd.yml7
-rw-r--r--config/locales/gl.yml7
-rw-r--r--config/locales/he.yml8
-rw-r--r--config/locales/hu.yml11
-rw-r--r--config/locales/id.yml10
-rw-r--r--config/locales/io.yml12
-rw-r--r--config/locales/is.yml7
-rw-r--r--config/locales/it.yml10
-rw-r--r--config/locales/ja.yml4
-rw-r--r--config/locales/ko.yml10
-rw-r--r--config/locales/ku.yml10
-rw-r--r--config/locales/lv.yml10
-rw-r--r--config/locales/pl.yml31
-rw-r--r--config/locales/pt-PT.yml10
-rw-r--r--config/locales/ru.yml17
-rw-r--r--config/locales/simple_form.ar.yml1
-rw-r--r--config/locales/simple_form.hu.yml4
-rw-r--r--config/locales/simple_form.io.yml187
-rw-r--r--config/locales/simple_form.zh-TW.yml52
-rw-r--r--config/locales/sk.yml1
-rw-r--r--config/locales/sl.yml7
-rw-r--r--config/locales/sq.yml7
-rw-r--r--config/locales/sv.yml5
-rw-r--r--config/locales/th.yml3
-rw-r--r--config/locales/tr.yml10
-rw-r--r--config/locales/uk.yml78
-rw-r--r--config/locales/vi.yml10
-rw-r--r--config/locales/zh-CN.yml24
-rw-r--r--config/locales/zh-TW.yml330
-rw-r--r--package.json2
-rw-r--r--yarn.lock8
163 files changed, 1788 insertions, 994 deletions
diff --git a/Gemfile b/Gemfile
index a3cd76fc4..28e696b27 100644
--- a/Gemfile
+++ b/Gemfile
@@ -7,7 +7,7 @@ gem 'pkg-config', '~> 1.4'
 gem 'rexml', '~> 3.2'
 
 gem 'puma', '~> 5.6'
-gem 'rails', '~> 6.1.5'
+gem 'rails', '~> 6.1.6'
 gem 'sprockets', '~> 3.7.2'
 gem 'thor', '~> 1.2'
 gem 'rack', '~> 2.2.3'
@@ -18,7 +18,7 @@ gem 'makara', '~> 0.5'
 gem 'pghero', '~> 2.8'
 gem 'dotenv-rails', '~> 2.7'
 
-gem 'aws-sdk-s3', '~> 1.113', require: false
+gem 'aws-sdk-s3', '~> 1.114', require: false
 gem 'fog-core', '<= 2.1.0'
 gem 'fog-openstack', '~> 0.3', require: false
 gem 'kt-paperclip', '~> 7.1'
diff --git a/Gemfile.lock b/Gemfile.lock
index 472f4e19c..6f796429d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,40 +1,40 @@
 GEM
   remote: https://rubygems.org/
   specs:
-    actioncable (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actioncable (6.1.6)
+      actionpack (= 6.1.6)
+      activesupport (= 6.1.6)
       nio4r (~> 2.0)
       websocket-driver (>= 0.6.1)
-    actionmailbox (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      activejob (= 6.1.5.1)
-      activerecord (= 6.1.5.1)
-      activestorage (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actionmailbox (6.1.6)
+      actionpack (= 6.1.6)
+      activejob (= 6.1.6)
+      activerecord (= 6.1.6)
+      activestorage (= 6.1.6)
+      activesupport (= 6.1.6)
       mail (>= 2.7.1)
-    actionmailer (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      actionview (= 6.1.5.1)
-      activejob (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actionmailer (6.1.6)
+      actionpack (= 6.1.6)
+      actionview (= 6.1.6)
+      activejob (= 6.1.6)
+      activesupport (= 6.1.6)
       mail (~> 2.5, >= 2.5.4)
       rails-dom-testing (~> 2.0)
-    actionpack (6.1.5.1)
-      actionview (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actionpack (6.1.6)
+      actionview (= 6.1.6)
+      activesupport (= 6.1.6)
       rack (~> 2.0, >= 2.0.9)
       rack-test (>= 0.6.3)
       rails-dom-testing (~> 2.0)
       rails-html-sanitizer (~> 1.0, >= 1.2.0)
-    actiontext (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      activerecord (= 6.1.5.1)
-      activestorage (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actiontext (6.1.6)
+      actionpack (= 6.1.6)
+      activerecord (= 6.1.6)
+      activestorage (= 6.1.6)
+      activesupport (= 6.1.6)
       nokogiri (>= 1.8.5)
-    actionview (6.1.5.1)
-      activesupport (= 6.1.5.1)
+    actionview (6.1.6)
+      activesupport (= 6.1.6)
       builder (~> 3.1)
       erubi (~> 1.4)
       rails-dom-testing (~> 2.0)
@@ -45,22 +45,22 @@ GEM
       case_transform (>= 0.2)
       jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
     active_record_query_trace (1.8)
-    activejob (6.1.5.1)
-      activesupport (= 6.1.5.1)
+    activejob (6.1.6)
+      activesupport (= 6.1.6)
       globalid (>= 0.3.6)
-    activemodel (6.1.5.1)
-      activesupport (= 6.1.5.1)
-    activerecord (6.1.5.1)
-      activemodel (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
-    activestorage (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      activejob (= 6.1.5.1)
-      activerecord (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    activemodel (6.1.6)
+      activesupport (= 6.1.6)
+    activerecord (6.1.6)
+      activemodel (= 6.1.6)
+      activesupport (= 6.1.6)
+    activestorage (6.1.6)
+      actionpack (= 6.1.6)
+      activejob (= 6.1.6)
+      activerecord (= 6.1.6)
+      activesupport (= 6.1.6)
       marcel (~> 1.0)
       mini_mime (>= 1.1.0)
-    activesupport (6.1.5.1)
+    activesupport (6.1.6)
       concurrent-ruby (~> 1.0, >= 1.0.2)
       i18n (>= 1.6, < 2)
       minitest (>= 5.1)
@@ -81,7 +81,7 @@ GEM
     attr_required (1.0.1)
     awrence (1.1.1)
     aws-eventstream (1.2.0)
-    aws-partitions (1.582.0)
+    aws-partitions (1.587.0)
     aws-sdk-core (3.130.2)
       aws-eventstream (~> 1, >= 1.0.2)
       aws-partitions (~> 1, >= 1.525.0)
@@ -90,7 +90,7 @@ GEM
     aws-sdk-kms (1.56.0)
       aws-sdk-core (~> 3, >= 3.127.0)
       aws-sigv4 (~> 1.1)
-    aws-sdk-s3 (1.113.2)
+    aws-sdk-s3 (1.114.0)
       aws-sdk-core (~> 3, >= 3.127.0)
       aws-sdk-kms (~> 1)
       aws-sigv4 (~> 1.4)
@@ -376,7 +376,7 @@ GEM
       activesupport (>= 4)
       railties (>= 4)
       request_store (~> 1.0)
-    loofah (2.17.0)
+    loofah (2.18.0)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)
@@ -406,7 +406,7 @@ GEM
       net-ssh (>= 2.6.5, < 7.0.0)
     net-ssh (6.1.0)
     nio4r (2.5.8)
-    nokogiri (1.13.4)
+    nokogiri (1.13.6)
       mini_portile2 (~> 2.8.0)
       racc (~> 1.4)
     nsa (0.2.8)
@@ -491,20 +491,20 @@ GEM
       rack
     rack-test (1.1.0)
       rack (>= 1.0, < 3)
-    rails (6.1.5.1)
-      actioncable (= 6.1.5.1)
-      actionmailbox (= 6.1.5.1)
-      actionmailer (= 6.1.5.1)
-      actionpack (= 6.1.5.1)
-      actiontext (= 6.1.5.1)
-      actionview (= 6.1.5.1)
-      activejob (= 6.1.5.1)
-      activemodel (= 6.1.5.1)
-      activerecord (= 6.1.5.1)
-      activestorage (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    rails (6.1.6)
+      actioncable (= 6.1.6)
+      actionmailbox (= 6.1.6)
+      actionmailer (= 6.1.6)
+      actionpack (= 6.1.6)
+      actiontext (= 6.1.6)
+      actionview (= 6.1.6)
+      activejob (= 6.1.6)
+      activemodel (= 6.1.6)
+      activerecord (= 6.1.6)
+      activestorage (= 6.1.6)
+      activesupport (= 6.1.6)
       bundler (>= 1.15.0)
-      railties (= 6.1.5.1)
+      railties (= 6.1.6)
       sprockets-rails (>= 2.0.0)
     rails-controller-testing (1.0.5)
       actionpack (>= 5.0.1.rc1)
@@ -520,9 +520,9 @@ GEM
       railties (>= 6.0.0, < 7)
     rails-settings-cached (0.6.6)
       rails (>= 4.2.0)
-    railties (6.1.5.1)
-      actionpack (= 6.1.5.1)
-      activesupport (= 6.1.5.1)
+    railties (6.1.6)
+      actionpack (= 6.1.6)
+      activesupport (= 6.1.6)
       method_source
       rake (>= 12.2)
       thor (~> 1.0)
@@ -732,7 +732,7 @@ DEPENDENCIES
   active_record_query_trace (~> 1.8)
   addressable (~> 2.8)
   annotate (~> 3.2)
-  aws-sdk-s3 (~> 1.113)
+  aws-sdk-s3 (~> 1.114)
   better_errors (~> 2.9)
   binding_of_caller (~> 1.0)
   blurhash (~> 0.1)
@@ -812,7 +812,7 @@ DEPENDENCIES
   rack (~> 2.2.3)
   rack-attack (~> 6.6)
   rack-cors (~> 1.1)
-  rails (~> 6.1.5)
+  rails (~> 6.1.6)
   rails-controller-testing (~> 1.0)
   rails-i18n (~> 6.0)
   rails-settings-cached (~> 0.6)
diff --git a/app/controllers/media_proxy_controller.rb b/app/controllers/media_proxy_controller.rb
index d2a4cb207..3b228722f 100644
--- a/app/controllers/media_proxy_controller.rb
+++ b/app/controllers/media_proxy_controller.rb
@@ -4,6 +4,7 @@ class MediaProxyController < ApplicationController
   include RoutingHelper
   include Authorization
   include Redisable
+  include Lockable
 
   skip_before_action :store_current_location
   skip_before_action :require_functional!
@@ -16,14 +17,10 @@ class MediaProxyController < ApplicationController
   rescue_from HTTP::TimeoutError, HTTP::ConnectionError, OpenSSL::SSL::SSLError, with: :internal_server_error
 
   def show
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        @media_attachment = MediaAttachment.remote.attached.find(params[:id])
-        authorize @media_attachment.status, :show?
-        redownload! if @media_attachment.needs_redownload? && !reject_media?
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("media_download:#{params[:id]}") do
+      @media_attachment = MediaAttachment.remote.attached.find(params[:id])
+      authorize @media_attachment.status, :show?
+      redownload! if @media_attachment.needs_redownload? && !reject_media?
     end
 
     redirect_to full_asset_url(@media_attachment.file.url(version))
@@ -45,10 +42,6 @@ class MediaProxyController < ApplicationController
     end
   end
 
-  def lock_options
-    { redis: redis, key: "media_download:#{params[:id]}", autorelease: 15.minutes.seconds }
-  end
-
   def reject_media?
     DomainBlock.reject_media?(@media_attachment.account.domain)
   end
diff --git a/app/controllers/settings/exports_controller.rb b/app/controllers/settings/exports_controller.rb
index 1638d3412..deaa7940e 100644
--- a/app/controllers/settings/exports_controller.rb
+++ b/app/controllers/settings/exports_controller.rb
@@ -3,6 +3,7 @@
 class Settings::ExportsController < Settings::BaseController
   include Authorization
   include Redisable
+  include Lockable
 
   skip_before_action :require_functional!
 
@@ -14,21 +15,13 @@ class Settings::ExportsController < Settings::BaseController
   def create
     backup = nil
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        authorize :backup, :create?
-        backup = current_user.backups.create!
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("backup:#{current_user.id}") do
+      authorize :backup, :create?
+      backup = current_user.backups.create!
     end
 
     BackupWorker.perform_async(backup.id)
 
     redirect_to settings_export_path
   end
-
-  def lock_options
-    { redis: redis, key: "backup:#{current_user.id}" }
-  end
 end
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 2f596a325..cd60d2532 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -20,12 +20,12 @@
   "account.followers_counter": "{count, plural, one {{counter} Follower} other {{counter} Followers}}",
   "account.following": "Following",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
-  "account.follows.empty": "This user doesn't follow anyone yet.",
+  "account.follows.empty": "Die gebruiker volg nie tans iemand nie.",
   "account.follows_you": "Volg jou",
   "account.hide_reblogs": "Versteek hupstoot vanaf @{name}",
   "account.joined": "{date} aangesluit",
   "account.link_verified_on": "Eienaarskap van die skakel was getoets op {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.locked_info": "Die rekening se privaatheidstatus is gesluit. Die eienaar hersien handmatig wie hom/haar kan volg.",
   "account.media": "Media",
   "account.mention": "Noem @{name}",
   "account.moved_to": "{name} is geskuif na:",
@@ -43,7 +43,7 @@
   "account.unblock_domain": "Ontblok domein {domain}",
   "account.unblock_short": "Ontblok",
   "account.unendorse": "Moenie beklemtoon op profiel nie",
-  "account.unfollow": "Unfollow",
+  "account.unfollow": "Ontvolg",
   "account.unmute": "Ontdemp @{name}",
   "account.unmute_notifications": "Ontdemp kennisgewings vanaf @{name}",
   "account.unmute_short": "Ontdemp",
@@ -63,50 +63,50 @@
   "boost_modal.combo": "You can press {combo} to skip this next time",
   "bundle_column_error.body": "Something went wrong while loading this component.",
   "bundle_column_error.retry": "Probeer weer",
-  "bundle_column_error.title": "Network error",
+  "bundle_column_error.title": "Netwerk fout",
   "bundle_modal_error.close": "Close",
-  "bundle_modal_error.message": "Something went wrong while loading this component.",
-  "bundle_modal_error.retry": "Try again",
+  "bundle_modal_error.message": "Iets het verkeerd gegaan terwyl hierdie komponent besig was om te laai.",
+  "bundle_modal_error.retry": "Probeer weer",
   "column.blocks": "Blocked users",
-  "column.bookmarks": "Bookmarks",
-  "column.community": "Local timeline",
+  "column.bookmarks": "Boekmerke",
+  "column.community": "Plaaslike tydlyn",
   "column.direct": "Direkte boodskappe",
-  "column.directory": "Browse profiles",
-  "column.domain_blocks": "Blocked domains",
-  "column.favourites": "Favourites",
-  "column.follow_requests": "Follow requests",
+  "column.directory": "Blaai deur profiele",
+  "column.domain_blocks": "Geblokte domeine",
+  "column.favourites": "Gunstelinge",
+  "column.follow_requests": "Volgversoeke",
   "column.home": "Tuis",
   "column.lists": "Lyste",
   "column.mutes": "Gedempte gebruikers",
   "column.notifications": "Kennisgewings",
   "column.pins": "Pinned toot",
-  "column.public": "Federated timeline",
+  "column.public": "Gefedereerde tydlyn",
   "column_back_button.label": "Terug",
   "column_header.hide_settings": "Versteek instellings",
   "column_header.moveLeft_settings": "Skuif kolom na links",
   "column_header.moveRight_settings": "Skuif kolom na regs",
-  "column_header.pin": "Pin",
+  "column_header.pin": "Pen vas",
   "column_header.show_settings": "Wys instellings",
-  "column_header.unpin": "Unpin",
+  "column_header.unpin": "Ontpen",
   "column_subheading.settings": "Instellings",
   "community.column_settings.local_only": "Slegs plaaslik",
   "community.column_settings.media_only": "Media only",
-  "community.column_settings.remote_only": "Remote only",
-  "compose_form.direct_message_warning_learn_more": "Learn more",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "community.column_settings.remote_only": "Slegs afgeleë",
+  "compose_form.direct_message_warning_learn_more": "Leer meer",
+  "compose_form.encryption_warning": "Plasings op Mastodon het nie end-tot-end enkripsie nie. Moet nie enige gevaarlike inligting oor Mastodon deel nie.",
   "compose_form.hashtag_warning": "This toot won't be listed under any hashtag as it is unlisted. Only public toots can be searched by hashtag.",
   "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
-  "compose_form.lock_disclaimer.lock": "locked",
+  "compose_form.lock_disclaimer.lock": "gesluit",
   "compose_form.placeholder": "What is on your mind?",
-  "compose_form.poll.add_option": "Add a choice",
-  "compose_form.poll.duration": "Poll duration",
-  "compose_form.poll.option_placeholder": "Choice {number}",
-  "compose_form.poll.remove_option": "Remove this choice",
-  "compose_form.poll.switch_to_multiple": "Change poll to allow multiple choices",
-  "compose_form.poll.switch_to_single": "Change poll to allow for a single choice",
-  "compose_form.publish": "Toot",
+  "compose_form.poll.add_option": "Voeg 'n keuse by",
+  "compose_form.poll.duration": "Duur van peiling",
+  "compose_form.poll.option_placeholder": "Keuse {number}",
+  "compose_form.poll.remove_option": "Verwyder hierdie keuse",
+  "compose_form.poll.switch_to_multiple": "Verander die peiling na verskeie keuses",
+  "compose_form.poll.switch_to_single": "Verander die peiling na 'n enkel keuse",
+  "compose_form.publish": "Toet",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "Stoor veranderinge",
   "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
   "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index cd085fa86..a1e1478b5 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -93,7 +93,7 @@
   "community.column_settings.media_only": "الوسائط فقط",
   "community.column_settings.remote_only": "عن بُعد فقط",
   "compose_form.direct_message_warning_learn_more": "تَعَلَّم المَزيد",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "إنّ المنشورات على ماستدون ليست مشفرة من النهاية إلى النهاية. لا تشارك أي معلومات حساسة عبر ماستدون.",
   "compose_form.hashtag_warning": "لن يُدرَج هذا المنشور تحت أي وسم بما أنَّه غير مُدرَج. فقط المنشورات العامة يُمكن البحث عنها بواسطة الوسم.",
   "compose_form.lock_disclaimer": "حسابُك غير {locked}. يُمكن لأي شخص مُتابعتك لرؤية (منشورات المتابعين فقط).",
   "compose_form.lock_disclaimer.lock": "مُقفَل",
@@ -168,7 +168,7 @@
   "empty_column.community": "الخط العام المحلي فارغ. أكتب شيئا ما للعامة كبداية!",
   "empty_column.direct": "لم تتلق أية رسالة خاصة مباشِرة بعد. سوف يتم عرض الرسائل المباشرة هنا إن قمت بإرسال واحدة أو تلقيت البعض منها.",
   "empty_column.domain_blocks": "ليس هناك نطاقات مخفية بعد.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "ليس هناك ما هو متداوَل الآن. عد في وقت لاحق!",
   "empty_column.favourited_statuses": "ليس لديك أية منشورات مفضلة بعد. عندما ستقوم بالإعجاب بواحدة، ستظهر هنا.",
   "empty_column.favourites": "لم يقم أي أحد بالإعجاب بهذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.",
   "empty_column.follow_recommendations": "يبدو أنه لا يمكن إنشاء أي اقتراحات لك. يمكنك البحث عن أشخاص قد تعرفهم أو استكشاف الوسوم الرائجة.",
@@ -264,6 +264,8 @@
   "lightbox.expand": "توسيع مربع عرض الصور",
   "lightbox.next": "التالي",
   "lightbox.previous": "العودة",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "أضف إلى القائمة",
   "lists.account.remove": "احذف من القائمة",
   "lists.delete": "احذف القائمة",
@@ -372,7 +374,7 @@
   "privacy.private.short": "للمتابِعين فقط",
   "privacy.public.long": "مرئي للكل",
   "privacy.public.short": "للعامة",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
+  "privacy.unlisted.long": "مرئي للجميع، ولكن مِن دون ميزات الاكتشاف",
   "privacy.unlisted.short": "غير مدرج",
   "refresh": "أنعِش",
   "regeneration_indicator.label": "جارٍ التحميل…",
@@ -395,7 +397,7 @@
   "report.categories.spam": "مزعج",
   "report.categories.violation": "المحتوى ينتهك شرطا أو عدة شروط استخدام للخادم",
   "report.category.subtitle": "اختر أفضل تطابق",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.title": "وضح لنا ما أمر {type}",
   "report.category.title_account": "ملف تعريفي",
   "report.category.title_status": "منشور",
   "report.close": "تم",
@@ -411,9 +413,9 @@
   "report.reasons.other": "شيء آخر",
   "report.reasons.other_description": "لا تندرج هذه المشكلة ضمن فئات أخرى",
   "report.reasons.spam": "إنها رسالة مزعجة",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.spam_description": "روابط خبيثة أو تفاعل كاذب أو ردود متكررة",
   "report.reasons.violation": "ينتهك قواعد الخادم",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
+  "report.reasons.violation_description": "تعلم أنه ينتهك قواعد محددة",
   "report.rules.subtitle": "اختر كل ما ينطبق",
   "report.rules.title": "ما هي القواعد المنتهكة؟",
   "report.statuses.subtitle": "اختر كل ما ينطبق",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 984153c12..d49a4dfbd 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Siguiente",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Amestar a la llista",
   "lists.account.remove": "Desaniciar de la llista",
   "lists.delete": "Desaniciar la llista",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 166ed4601..246a7cf22 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Разгъване на полето за преглед на изображение",
   "lightbox.next": "Напред",
   "lightbox.previous": "Назад",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Добавяне към списък",
   "lists.account.remove": "Премахване от списък",
   "lists.delete": "Изтриване на списък",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 718a1b2b2..b91740cbb 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "পরবর্তী",
   "lightbox.previous": "পূর্ববর্তী",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "তালিকাতে যুক্ত করতে",
   "lists.account.remove": "তালিকা থেকে বাদ দিতে",
   "lists.delete": "তালিকা মুছে ফেলতে",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index e7711e4d9..0ea9c5915 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ledanaat boest hewel ar skeudenn",
   "lightbox.next": "Da-heul",
   "lightbox.previous": "A-raok",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Ouzhpennañ d'al listenn",
   "lists.account.remove": "Lemel kuit eus al listenn",
   "lists.delete": "Dilemel al listenn",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 9946b6a9c..6f9b35588 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -138,7 +138,7 @@
   "confirmations.unfollow.message": "Segur que vols deixar de seguir {name}?",
   "conversation.delete": "Elimina la conversa",
   "conversation.mark_as_read": "Marca com a llegida",
-  "conversation.open": "Veure conversa",
+  "conversation.open": "Mostra la conversa",
   "conversation.with": "Amb {names}",
   "directory.federated": "Del fedivers conegut",
   "directory.local": "Només de {domain}",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Amplia el quadre de visualització de l’imatge",
   "lightbox.next": "Següent",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Afegeix a la llista",
   "lists.account.remove": "Elimina de la llista",
   "lists.delete": "Esborra la llista",
@@ -463,7 +465,7 @@
   "status.mention": "Esmenta @{name}",
   "status.more": "Més",
   "status.mute": "Silencia @{name}",
-  "status.mute_conversation": "Silencia conversació",
+  "status.mute_conversation": "Silencia la conversa",
   "status.open": "Amplia la publicació",
   "status.pin": "Fixa en el perfil",
   "status.pinned": "Publicació fixada",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index 2a4106c4b..22410e1aa 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -18,12 +18,12 @@
   "account.followers": "شوێنکەوتووان",
   "account.followers.empty": "کەسێک شوێن ئەم بەکارهێنەرە نەکەوتووە",
   "account.followers_counter": "{count, plural, one {{counter} شوێنکەوتوو} other {{counter} شوێنکەوتوو}}",
-  "account.following": "Following",
+  "account.following": "دواکەوتن",
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "ئەم بەکارهێنەرە تا ئێستا شوێن کەس نەکەوتووە.",
   "account.follows_you": "شوێنکەوتووەکانت",
   "account.hide_reblogs": "داشاردنی بووستەکان لە @{name}",
-  "account.joined": "Joined {date}",
+  "account.joined": "بەشداری {date}",
   "account.link_verified_on": "خاوەنداریەتی ئەم لینکە لە {date} چێک کراوە",
   "account.locked_info": "تایبەتمەندی ئەم هەژمارەیە ڕیکخراوە بۆ قوفڵدراوە. خاوەنەکە بە دەستی پێداچوونەوە دەکات کە کێ دەتوانێت شوێنیان بکەوێت.",
   "account.media": "میدیا",
@@ -41,18 +41,18 @@
   "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.unblock": "@{name} لاببە",
   "account.unblock_domain": "کردنەوەی دۆمەینی {domain}",
-  "account.unblock_short": "Unblock",
+  "account.unblock_short": "لابردنی بەربەست",
   "account.unendorse": "تایبەتمەندی لەسەر پرۆفایلەکە نیە",
   "account.unfollow": "بەدوادانەچو",
   "account.unmute": "بێدەنگکردنی @{name}",
   "account.unmute_notifications": "بێدەنگکردنی هۆشیارییەکان لە @{name}",
-  "account.unmute_short": "Unmute",
+  "account.unmute_short": "بێدەنگی مەکە",
   "account_note.placeholder": "کرتەبکە بۆ زیادکردنی تێبینی",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
   "admin.dashboard.retention.average": "Average",
-  "admin.dashboard.retention.cohort": "Sign-up month",
-  "admin.dashboard.retention.cohort_size": "New users",
+  "admin.dashboard.retention.cohort": "چوونەژوورەوەی مانگانە",
+  "admin.dashboard.retention.cohort_size": "ئەندامی نوێ",
   "alert.rate_limited.message": "تکایە هەوڵبدەرەوە دوای {retry_time, time, medium}.",
   "alert.rate_limited.title": "ڕێژەی سنووردار",
   "alert.unexpected.message": "هەڵەیەکی چاوەڕوان نەکراو ڕوویدا.",
@@ -70,7 +70,7 @@
   "column.blocks": "بەکارهێنەرە بلۆککراوەکان",
   "column.bookmarks": "نیشانەکان",
   "column.community": "هێڵی کاتی ناوخۆیی",
-  "column.direct": "Direct messages",
+  "column.direct": "نامە ڕاستەوخۆ",
   "column.directory": "گەڕان لە پرۆفایلەکان",
   "column.domain_blocks": "دۆمەینە داخراوەکان",
   "column.favourites": "دڵخوازترینەکان",
@@ -106,7 +106,7 @@
   "compose_form.poll.switch_to_single": "گۆڕینی ڕاپرسی بۆ ڕێگەدان بە تاکە هەڵبژاردنێک",
   "compose_form.publish": "توت",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "پاشکەوتی گۆڕانکاریەکان",
   "compose_form.sensitive.hide": "نیشانکردنی میدیا وەک هەستیار",
   "compose_form.sensitive.marked": "وادەی کۆتایی",
   "compose_form.sensitive.unmarked": "میدیا وەک هەستیار نیشان نەکراوە",
@@ -160,8 +160,8 @@
   "emoji_button.search_results": "ئەنجامەکانی گەڕان",
   "emoji_button.symbols": "هێماکان",
   "emoji_button.travel": "گەشت & شوێنەکان",
-  "empty_column.account_suspended": "Account suspended",
-  "empty_column.account_timeline": "لێرە هیچ توتەک نییە!",
+  "empty_column.account_suspended": "هەژمار ڕاگیرا",
+  "empty_column.account_timeline": "لێرە هیچ نووسراوە نییە!",
   "empty_column.account_unavailable": "پرۆفایل بەردەست نیە",
   "empty_column.blocks": "تۆ هێشتا هیچ بەکارهێنەرێکت بلۆک نەکردووە.",
   "empty_column.bookmarked_statuses": "تۆ هێشتا هیچ توتێکی دیاریکراوت نیە کاتێک نیشانەیەک نیشان دەکەیت، لێرە دەرئەکەویت.",
@@ -175,7 +175,7 @@
   "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.",
   "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.",
   "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.",
-  "empty_column.home.suggestions": "See some suggestions",
+  "empty_column.home.suggestions": "چەند پێشنیارێک ببینە",
   "empty_column.list": "هێشتا هیچ شتێک لەم لیستەدا نییە. کاتێک ئەندامانی ئەم لیستە دەنگی نوێ بڵاودەکەن، لێرە دەردەکەون.",
   "empty_column.lists": "تۆ هێشتا هیچ لیستت دروست نەکردووە، کاتێک دانەیەک دروست دەکەیت، لێرە پیشان دەدرێت.",
   "empty_column.mutes": "تۆ هێشتا هیچ بەکارهێنەرێکت بێدەنگ نەکردووە.",
@@ -187,15 +187,15 @@
   "error.unexpected_crash.next_steps_addons": "هەوڵدە لەکاریان بخەیت و لاپەڕەکە تازە بکەوە. ئەگەر ئەمە یارمەتیدەر نەبوو، لەوانەیە هێشتا بتوانیت ماستۆدۆن بەکاربێنیت لە ڕێگەی وێبگەڕەکانی دیکە یان نەرمەکالاکانی ئەسڵی.",
   "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
   "errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
-  "follow_recommendations.done": "Done",
-  "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
-  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
+  "explore.search_results": "ئەنجامەکانی گەڕان",
+  "explore.suggested_follows": "بۆ تۆ",
+  "explore.title": "گەڕان",
+  "explore.trending_links": "هەواڵەکان",
+  "explore.trending_statuses": "نووسراوەکان",
+  "explore.trending_tags": "هاشتاگ",
+  "follow_recommendations.done": "تەواو",
+  "follow_recommendations.heading": "شوێن ئەو کەسانە بکەون کە دەتەوێت پۆستەکان ببینیت لە! لێرەدا چەند پێشنیارێک هەیە.",
+  "follow_recommendations.lead": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!",
   "follow_request.authorize": "ده‌سه‌ڵاتپێدراو",
   "follow_request.reject": "ڕەتکردنەوە",
   "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.",
@@ -231,7 +231,7 @@
   "keyboard_shortcuts.column": "بۆ ئەوەی تیشک بخاتە سەر توتێک لە یەکێک لە ستوونەکان",
   "keyboard_shortcuts.compose": "بۆ سەرنجدان بە نووسینی ناوچەی دەق",
   "keyboard_shortcuts.description": "وه‌سف",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "بۆ کردنەوەی ستوونی نامە ڕاستەوخۆکان",
   "keyboard_shortcuts.down": "بۆ چوونە خوارەوە لە لیستەکەدا",
   "keyboard_shortcuts.enter": "بۆ کردنەوەی توت",
   "keyboard_shortcuts.favourite": "بۆ دڵخواز",
@@ -264,6 +264,8 @@
   "lightbox.expand": "فراوانکردنی سندوقی بینینی وێنە",
   "lightbox.next": "داهاتوو",
   "lightbox.previous": "پێشوو",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "زیادکردن بۆ لیست",
   "lists.account.remove": "لابردن لە لیست",
   "lists.delete": "سڕینەوەی لیست",
@@ -271,9 +273,9 @@
   "lists.edit.submit": "گۆڕینی ناونیشان",
   "lists.new.create": "زیادکردنی لیست",
   "lists.new.title_placeholder": "ناونیشانی لیستی نوێ",
-  "lists.replies_policy.followed": "Any followed user",
-  "lists.replies_policy.list": "Members of the list",
-  "lists.replies_policy.none": "No one",
+  "lists.replies_policy.followed": "هەر بەکارهێنەرێکی بەدواکەوتوو",
+  "lists.replies_policy.list": "ئەندامانی لیستەکە",
+  "lists.replies_policy.none": "هیچکەس",
   "lists.replies_policy.title": "پیشاندانی وەڵامەکان بۆ:",
   "lists.search": "بگەڕێ لەناو ئەو کەسانەی کە شوێنیان کەوتویت",
   "lists.subheading": "لیستەکانت",
@@ -290,11 +292,11 @@
   "navigation_bar.bookmarks": "نیشانکراوەکان",
   "navigation_bar.community_timeline": "دەمنامەی ناوخۆیی",
   "navigation_bar.compose": "نووسینی توتی نوێ",
-  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.direct": "نامە ڕاستەوخۆ",
   "navigation_bar.discover": "دۆزینەوە",
   "navigation_bar.domain_blocks": "دۆمەینە بلۆک کراوەکان",
   "navigation_bar.edit_profile": "دەستکاری پرۆفایل بکە",
-  "navigation_bar.explore": "Explore",
+  "navigation_bar.explore": "گەڕان",
   "navigation_bar.favourites": "دڵخوازەکان",
   "navigation_bar.filters": "وشە کپەکان",
   "navigation_bar.follow_requests": "بەدواداچوی داواکاریەکان بکە",
@@ -309,7 +311,7 @@
   "navigation_bar.preferences": "پەسەندەکان",
   "navigation_bar.public_timeline": "نووسراوەکانی هەمووشوێنێک",
   "navigation_bar.security": "ئاسایش",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "{name} تۆمارکرا",
   "notification.favourite": "{name} نووسراوەکەتی پەسەند کرد",
   "notification.follow": "{name} دوای تۆ کەوت",
   "notification.follow_request": "{name} داوای کردووە کە شوێنت بکەوێت",
@@ -318,15 +320,15 @@
   "notification.poll": "ڕاپرسییەک کە دەنگی پێداویت کۆتایی هات",
   "notification.reblog": "{name} نووسراوەکەتی دووبارە توتاند",
   "notification.status": "{name} تازە بڵاوکرایەوە",
-  "notification.update": "{name} edited a post",
+  "notification.update": "{name} پۆستێکی دەستکاریکرد",
   "notifications.clear": "ئاگانامەکان بسڕیەوە",
   "notifications.clear_confirmation": "ئایا دڵنیایت لەوەی دەتەوێت بە هەمیشەیی هەموو ئاگانامەکانت بسڕیتەوە?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "چوونەژوورەوەی نوێ:",
   "notifications.column_settings.alert": "ئاگانامەکانی پیشانگەرر ڕومێزی",
   "notifications.column_settings.favourite": "دڵخوازترین:",
   "notifications.column_settings.filter_bar.advanced": "هەموو پۆلەکان پیشان بدە",
   "notifications.column_settings.filter_bar.category": "شریتی پاڵێوەری خێرا",
-  "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
+  "notifications.column_settings.filter_bar.show_bar": "نیشاندانی شریتی پاڵافتن",
   "notifications.column_settings.follow": "شوێنکەوتوانی نوێ:",
   "notifications.column_settings.follow_request": "شوینکەوتنی داواکاری نوێ:",
   "notifications.column_settings.mention": "ئاماژەکان:",
@@ -338,7 +340,7 @@
   "notifications.column_settings.status": "توتەکانی نوێ:",
   "notifications.column_settings.unread_notifications.category": "Unread notifications",
   "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
-  "notifications.column_settings.update": "Edits:",
+  "notifications.column_settings.update": "دەستکاری:",
   "notifications.filter.all": "هەموو",
   "notifications.filter.boosts": "دووبارەتوتەکان",
   "notifications.filter.favourites": "دڵخوازەکان",
@@ -389,30 +391,30 @@
   "relative_time.seconds": "{number}کات",
   "relative_time.today": "ئیمڕۆ",
   "reply_indicator.cancel": "هەڵوەشاندنەوه",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
-  "report.categories.spam": "Spam",
-  "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.block": "بلۆک",
+  "report.block_explanation": "تۆ پۆستەکانیان نابینیت. ئەوان ناتوانن بابەتەکانتان ببینن یان شوێنتان بکەون. ئەوان دەتوانن بڵێن کە بەربەستکراون.",
+  "report.categories.other": "هی تر",
+  "report.categories.spam": "سپام",
+  "report.categories.violation": "ناوەڕۆک یەک یان زیاتر لە یاساکانی سێرڤەر پێشێل دەکات",
+  "report.category.subtitle": "باشترین هاوتا هەڵبژێرە",
+  "report.category.title": "پێمان بڵێ بە {type} چی ڕوودەدات",
+  "report.category.title_account": "پرۆفایل",
+  "report.category.title_status": "پۆست",
+  "report.close": "تەواو",
+  "report.comment.title": "ئایا هیچ شتێکی تر هەیە کە پێت وایە ئێمە دەبێت بزانین?",
   "report.forward": "ناردن بۆ {target}",
   "report.forward_hint": "هەژمارەکە لە ڕاژەیەکی ترە. ڕونووسێکی نەناسراو بنێرە بۆ گوزارشت لەوێ?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "بێدەنگ",
+  "report.mute_explanation": "تۆ پۆستەکانیان نابینیت. ئەوان هێشتا دەتوانن شوێنتان بکەون و پۆستەکانتان ببینن و نازانن کە ئەوان بێ دەنگن.",
+  "report.next": "دواتر",
   "report.placeholder": "سەرنجەکانی زیاتر",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
+  "report.reasons.dislike": "حەزم لێی نییە",
+  "report.reasons.dislike_description": "ئەوە شتێک نیە کە دەتەوێت بیبینیت",
+  "report.reasons.other": "شتێکی ترە",
+  "report.reasons.other_description": "کێشەکە ناگونجێت بۆ هاوپۆلەکانی تر",
+  "report.reasons.spam": "ئەوە سپامە",
+  "report.reasons.spam_description": "لینکە خراپەکان، بەشداری ساختە، یان وەڵامدانەوەی دووبارە",
+  "report.reasons.violation": "یاساکانی سێرڤەر پێشێل دەکات",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Select all that apply",
   "report.rules.title": "Which rules are being violated?",
@@ -434,7 +436,7 @@
   "search_popout.tips.text": "دەقی سادە هەڵدەسێ بە گەڕاندنەوەی هاوتایی ناوی پیشاندان، ناوی بەکارهێنەر و هاشتاگەکان",
   "search_popout.tips.user": "بەکارهێنەر",
   "search_results.accounts": "خەڵک",
-  "search_results.all": "All",
+  "search_results.all": "هەموو",
   "search_results.hashtags": "هەشتاگ",
   "search_results.nothing_found": "Could not find anything for these search terms",
   "search_results.statuses": "توتەکان",
@@ -450,8 +452,8 @@
   "status.delete": "سڕینەوە",
   "status.detailed_status": "ڕوانگەی گفتوگۆ بە وردەکاری",
   "status.direct": "پەیامی ڕاستەوخۆ @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
+  "status.edit": "دەستکاری",
+  "status.edited": "بەشداری {date}",
   "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
   "status.embed": "نیشتەجێ بکە",
   "status.favourite": "دڵخواز",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index a746fe606..ac2932334 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ingrandà a finestra d'affissera di i ritratti",
   "lightbox.next": "Siguente",
   "lightbox.previous": "Pricidente",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Aghjunghje à a lista",
   "lists.account.remove": "Toglie di a lista",
   "lists.delete": "Toglie a lista",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index 6b50244df..59a3a0c76 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ukázat obrázek v plné velikosti",
   "lightbox.next": "Další",
   "lightbox.previous": "Předchozí",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Přidat do seznamu",
   "lists.account.remove": "Odebrat ze seznamu",
   "lists.delete": "Smazat seznam",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 7e90d8fe0..8a32bc28b 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ehangu blwch gweld delwedd",
   "lightbox.next": "Nesaf",
   "lightbox.previous": "Blaenorol",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Ychwanegwch at restr",
   "lists.account.remove": "Dileu o'r rhestr",
   "lists.delete": "Dileu rhestr",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 40ccdcfb0..9a56520f3 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Udvid billedevisningsfelt",
   "lightbox.next": "Næste",
   "lightbox.previous": "Forrige",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Føj til liste",
   "lists.account.remove": "Fjern fra liste",
   "lists.delete": "Slet liste",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 813d84bce..cc7282eb1 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Bildansicht erweitern",
   "lightbox.next": "Weiter",
   "lightbox.previous": "Zurück",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Zur Liste hinzufügen",
   "lists.account.remove": "Von der Liste entfernen",
   "lists.delete": "Liste löschen",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index eb0c07627..49e0d8a38 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -75,6 +75,14 @@
       {
         "defaultMessage": "Unmute notifications from @{name}",
         "id": "account.unmute_notifications"
+      },
+      {
+        "defaultMessage": "Mute @{name}",
+        "id": "account.mute"
+      },
+      {
+        "defaultMessage": "Block @{name}",
+        "id": "account.block"
       }
     ],
     "path": "app/javascript/mastodon/components/account.json"
@@ -790,6 +798,19 @@
   {
     "descriptors": [
       {
+        "defaultMessage": "This profile has been hidden by the moderators of your server.",
+        "id": "limited_account_hint.title"
+      },
+      {
+        "defaultMessage": "Show profile anyway",
+        "id": "limited_account_hint.action"
+      }
+    ],
+    "path": "app/javascript/mastodon/features/account_timeline/components/limited_account_hint.json"
+  },
+  {
+    "descriptors": [
+      {
         "defaultMessage": "{name} has moved to:",
         "id": "account.moved_to"
       }
@@ -1889,6 +1910,10 @@
         "id": "timeline_hint.resources.followers"
       },
       {
+        "defaultMessage": "Account suspended",
+        "id": "empty_column.account_suspended"
+      },
+      {
         "defaultMessage": "Profile unavailable",
         "id": "empty_column.account_unavailable"
       },
@@ -1906,6 +1931,10 @@
         "id": "timeline_hint.resources.follows"
       },
       {
+        "defaultMessage": "Account suspended",
+        "id": "empty_column.account_suspended"
+      },
+      {
         "defaultMessage": "Profile unavailable",
         "id": "empty_column.account_unavailable"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 47cd09ba9..72b6dfa52 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ανάπτυξη πλαισίου εμφάνισης εικόνας",
   "lightbox.next": "Επόμενο",
   "lightbox.previous": "Προηγούμενο",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Πρόσθεσε στη λίστα",
   "lists.account.remove": "Βγάλε από τη λίστα",
   "lists.delete": "Διαγραφή λίστας",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index cf698618e..20f264f9d 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 1af526de6..7de11dc51 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -268,6 +268,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index a9b1890df..5a0b89a64 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -70,7 +70,7 @@
   "column.blocks": "Blokitaj uzantoj",
   "column.bookmarks": "Legosignoj",
   "column.community": "Loka templinio",
-  "column.direct": "Direct messages",
+  "column.direct": "Rektaj mesaĝoj",
   "column.directory": "Trarigardi profilojn",
   "column.domain_blocks": "Blokitaj domajnoj",
   "column.favourites": "Stelumoj",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Pligrandigi bildan vidkeston",
   "lightbox.next": "Sekva",
   "lightbox.previous": "Antaŭa",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Aldoni al la listo",
   "lists.account.remove": "Forigi de la listo",
   "lists.delete": "Forigi la liston",
@@ -290,7 +292,7 @@
   "navigation_bar.bookmarks": "Legosignoj",
   "navigation_bar.community_timeline": "Loka templinio",
   "navigation_bar.compose": "Skribi novan mesaĝon",
-  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.direct": "Rektaj mesaĝoj",
   "navigation_bar.discover": "Esplori",
   "navigation_bar.domain_blocks": "Blokitaj domajnoj",
   "navigation_bar.edit_profile": "Redakti profilon",
@@ -370,7 +372,7 @@
   "privacy.direct.short": "Direct",
   "privacy.private.long": "Videbla nur al viaj sekvantoj",
   "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
+  "privacy.public.long": "Videbla por ĉiuj",
   "privacy.public.short": "Publika",
   "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
   "privacy.unlisted.short": "Nelistigita",
@@ -403,7 +405,7 @@
   "report.forward": "Plusendi al {target}",
   "report.forward_hint": "La konto estas en alia servilo. Ĉu sendi sennomigitan kopion de la signalo ankaŭ tien?",
   "report.mute": "Silentigi",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
+  "report.mute_explanation": "Vi ne vidos iliajn afiŝojn. Ili ankoraŭ povas sekvi vin kaj vidi viajn afiŝojn, kaj ne scios ke si estas silentigitaj.",
   "report.next": "Sekva",
   "report.placeholder": "Pliaj komentoj",
   "report.reasons.dislike": "Mi ne ŝatas ĝin",
@@ -415,7 +417,7 @@
   "report.reasons.violation": "Ĝi malrespektas servilajn regulojn",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
   "report.rules.subtitle": "Elektu ĉiujn, kiuj validas",
-  "report.rules.title": "Which rules are being violated?",
+  "report.rules.title": "Kiuj reguloj estas malobservataj?",
   "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas",
   "report.statuses.title": "Are there any posts that back up this report?",
   "report.submit": "Sendi",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index 873e1cb07..9467fd019 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -18,7 +18,7 @@
   "account.followers": "Seguidores",
   "account.followers.empty": "Todavía nadie sigue a este usuario.",
   "account.followers_counter": "{count, plural, one {{counter} Seguidor} other {{counter} Seguidores}}",
-  "account.following": "Siguiendo",
+  "account.following": "Seguimientos",
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Todavía este usuario no sigue a nadie.",
   "account.follows_you": "Te sigue",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expandir cuadro de vista de imagen",
   "lightbox.next": "Siguiente",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Agregar a lista",
   "lists.account.remove": "Quitar de lista",
   "lists.delete": "Eliminar lista",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 55a3f67cd..d3c5460e7 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expandir cuadro de visualización de imagen",
   "lightbox.next": "Siguiente",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Añadir a lista",
   "lists.account.remove": "Quitar de lista",
   "lists.delete": "Borrar lista",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index d8ea364d6..a520f2812 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expandir cuadro de visualización de imagen",
   "lightbox.next": "Siguiente",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Añadir a lista",
   "lists.account.remove": "Quitar de lista",
   "lists.delete": "Borrar lista",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 6cccbb666..09fd9bd9a 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Järgmine",
   "lightbox.previous": "Eelmine",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Lisa nimistusse",
   "lists.account.remove": "Eemalda nimistust",
   "lists.delete": "Kustuta nimistu",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 6a328edf0..422f25f88 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Zabaldu irudia ikusteko kaxa",
   "lightbox.next": "Hurrengoa",
   "lightbox.previous": "Aurrekoa",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Gehitu zerrendara",
   "lists.account.remove": "Kendu zerrendatik",
   "lists.delete": "Ezabatu zerrenda",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index a3bd5bbf8..f89f242b7 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -70,7 +70,7 @@
   "column.blocks": "کاربران مسدود شده",
   "column.bookmarks": "نشانک‌ها",
   "column.community": "خط زمانی محلّی",
-  "column.direct": "Direct messages",
+  "column.direct": "پیام‌های مستقیم",
   "column.directory": "مرور نمایه‌ها",
   "column.domain_blocks": "دامنه‌های مسدود شده",
   "column.favourites": "پسندیده‌ها",
@@ -93,7 +93,7 @@
   "community.column_settings.media_only": "فقط رسانه",
   "community.column_settings.remote_only": "تنها دوردست",
   "compose_form.direct_message_warning_learn_more": "بیشتر بدانید",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "فرسته‌های ماستودون رمزگذاری سرتاسری نشده‌اند. هیچ اطّلاعات خطرناکی را روی ماستودون هم‌رسانی نکنید.",
   "compose_form.hashtag_warning": "از آن‌جا که این فرسته فهرست نشده است، در نتایج جست‌وجوی هشتگ‌ها پیدا نخواهد شد. تنها فرسته‌های عمومی را می‌توان با جست‌وجوی هشتگ یافت.",
   "compose_form.lock_disclaimer": "حسابتان {locked} نیست. هر کسی می‌تواند پی‌گیرتان شده و فرسته‌های ویژهٔ پی‌گیرانتان را ببیند.",
   "compose_form.lock_disclaimer.lock": "قفل‌شده",
@@ -166,7 +166,7 @@
   "empty_column.blocks": "هنوز کسی را مسدود نکرده‌اید.",
   "empty_column.bookmarked_statuses": "هنوز هیچ فرستهٔ نشانه‌گذاری شده‌ای ندارید. هنگامی که فرسته‌ای را نشانه‌گذاری کنید، این‌جا نشان داده خواهد شد.",
   "empty_column.community": "خط زمانی محلّی خالی است. چیزی بنویسید تا چرخش بچرخد!",
-  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.direct": "هنوز هیچ پیام مستقیمی ندارید. هنگامی که چنین پیامی بگیرید یا بفرستید این‌جا نشان داده خواهد شد.",
   "empty_column.domain_blocks": "هنوز هیچ دامنه‌ای مسدود نشده است.",
   "empty_column.explore_statuses": "الآن چیزی پرطرفدار نیست. بعداً دوباره بررسی کنید!",
   "empty_column.favourited_statuses": "شما هنوز هیچ فرسته‌ای را نپسندیده‌اید. هنگامی که فرسته‌ای را بپسندید، این‌جا نشان داده خواهد شد.",
@@ -231,7 +231,7 @@
   "keyboard_shortcuts.column": "برای تمرکز روی یک فرسته در یکی از ستون‌ها",
   "keyboard_shortcuts.compose": "تمرکز روی محیط نوشتن",
   "keyboard_shortcuts.description": "توضیح",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "برای گشودن ستون پیغام‌های مستقیم",
   "keyboard_shortcuts.down": "پایین بردن در سیاهه",
   "keyboard_shortcuts.enter": "گشودن فرسته",
   "keyboard_shortcuts.favourite": "پسندیدن فرسته",
@@ -264,6 +264,8 @@
   "lightbox.expand": "گسترش جعبهٔ نمایش تصویر",
   "lightbox.next": "بعدی",
   "lightbox.previous": "قبلی",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "افزودن به سیاهه",
   "lists.account.remove": "برداشتن از سیاهه",
   "lists.delete": "حذف سیاهه",
@@ -290,7 +292,7 @@
   "navigation_bar.bookmarks": "نشانک‌ها",
   "navigation_bar.community_timeline": "خط زمانی محلّی",
   "navigation_bar.compose": "نوشتن فرستهٔ تازه",
-  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.direct": "پیام‌های مستقیم",
   "navigation_bar.discover": "گشت و گذار",
   "navigation_bar.domain_blocks": "دامنه‌های مسدود شده",
   "navigation_bar.edit_profile": "ویرایش نمایه",
@@ -366,13 +368,13 @@
   "poll_button.add_poll": "افزودن نظرسنجی",
   "poll_button.remove_poll": "برداشتن نظرسنجی",
   "privacy.change": "تغییر محرمانگی فرسته",
-  "privacy.direct.long": "فقط برای کاربران نام‌برده نمایان است",
-  "privacy.direct.short": "Direct",
+  "privacy.direct.long": "نمایان فقط برای کاربران اشاره شده",
+  "privacy.direct.short": "فقط افراد اشاره شده",
   "privacy.private.long": "نمایان فقط برای پی‌گیرندگان",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
+  "privacy.private.short": "فقط پی‌گیرندگان",
+  "privacy.public.long": "نمایان برای همه",
   "privacy.public.short": "عمومی",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
+  "privacy.unlisted.long": "نمایان برای همه، ولی خارج از قابلیت‌های کشف",
   "privacy.unlisted.short": "فهرست نشده",
   "refresh": "نوسازی",
   "regeneration_indicator.label": "در حال بار شدن…",
@@ -515,7 +517,7 @@
   "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.",
   "upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
   "upload_form.description": "برای کم‌بینایان توصیفش کنید",
-  "upload_form.description_missing": "No description added",
+  "upload_form.description_missing": "شرحی افزوده نشده",
   "upload_form.edit": "ویرایش",
   "upload_form.thumbnail": "تغییر بندانگشتی",
   "upload_form.undo": "حذف",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index 7a5f18267..50295592e 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Laajenna kuvan näkymälaatikko",
   "lightbox.next": "Seuraava",
   "lightbox.previous": "Edellinen",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Lisää listaan",
   "lists.account.remove": "Poista listasta",
   "lists.delete": "Poista lista",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index b22213ec4..a822ba203 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -231,7 +231,7 @@
   "keyboard_shortcuts.column": "Se placer dans une colonne",
   "keyboard_shortcuts.compose": "Se placer dans la zone de rédaction",
   "keyboard_shortcuts.description": "Description",
-  "keyboard_shortcuts.direct": "ouvrir la colonne des messages directs",
+  "keyboard_shortcuts.direct": "pour ouvrir la colonne des messages directs",
   "keyboard_shortcuts.down": "Descendre dans la liste",
   "keyboard_shortcuts.enter": "Ouvrir le message",
   "keyboard_shortcuts.favourite": "Ajouter le message aux favoris",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Agrandir la fenêtre de visualisation des images",
   "lightbox.next": "Suivant",
   "lightbox.previous": "Précédent",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Ajouter à la liste",
   "lists.account.remove": "Supprimer de la liste",
   "lists.delete": "Supprimer la liste",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 217b9358c..d701d0d98 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 7cef3d69c..9406f2e5d 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -59,7 +59,7 @@
   "alert.unexpected.title": "Oich!",
   "announcement.announcement": "Brath-fios",
   "attachments_list.unprocessed": "(gun phròiseasadh)",
-  "autosuggest_hashtag.per_week": "{count} gach seachdain",
+  "autosuggest_hashtag.per_week": "{count} san t-seachdain",
   "boost_modal.combo": "Brùth air {combo} nam b’ fheàrr leat leum a ghearradh thar seo an ath-thuras",
   "bundle_column_error.body": "Chaidh rudeigin cearr nuair a dh’fheuch sinn ris a’ cho-phàirt seo a luchdadh.",
   "bundle_column_error.retry": "Feuch ris a-rithist",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Leudaich bogsa sealladh an deilbh",
   "lightbox.next": "Air adhart",
   "lightbox.previous": "Air ais",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Cuir ris an liosta",
   "lists.account.remove": "Thoir air falbh on liosta",
   "lists.delete": "Sguab às an liosta",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 8cd8cecbc..a1a476623 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expandir a caixa de vista da imaxe",
   "lightbox.next": "Seguinte",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Engadir á listaxe",
   "lists.account.remove": "Eliminar da listaxe",
   "lists.delete": "Eliminar listaxe",
@@ -494,11 +496,11 @@
   "tabs_bar.local_timeline": "Local",
   "tabs_bar.notifications": "Notificacións",
   "tabs_bar.search": "Procurar",
-  "time_remaining.days": "{number, plural, one {# día} other {# días}} restantes",
-  "time_remaining.hours": "{number, plural, one {# hora} other {# horas}} restantes",
-  "time_remaining.minutes": "{number, plural, one {# minuto} other {# minutos}} restantes",
-  "time_remaining.moments": "Momentos restantes",
-  "time_remaining.seconds": "{number, plural, one {# segundo} other {# segundos}} restantes",
+  "time_remaining.days": "Remata en {number, plural, one {# día} other {# días}}",
+  "time_remaining.hours": "Remata en {number, plural, one {# hora} other {# horas}}",
+  "time_remaining.minutes": "Remata en {number, plural, one {# minuto} other {# minutos}}",
+  "time_remaining.moments": "A piques de rematar",
+  "time_remaining.seconds": "Remata en {number, plural, one {# segundo} other {# segundos}}",
   "timeline_hint.remote_resource_not_displayed": "Non se mostran {resource} desde outros servidores.",
   "timeline_hint.resources.followers": "Seguidoras",
   "timeline_hint.resources.follows": "Seguindo",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 0cd308923..4c672a80a 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "הרחבת קופסת צפייה בתמונה",
   "lightbox.next": "הלאה",
   "lightbox.previous": "הקודם",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "הוסף לרשימה",
   "lists.account.remove": "הסר מרשימה",
   "lists.delete": "מחיקת רשימה",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 3ee12c30d..32ebbe450 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -9,21 +9,21 @@
   "account.browse_more_on_origin_server": "मूल प्रोफ़ाइल पर अधिक ब्राउज़ करें",
   "account.cancel_follow_request": "फ़ॉलो रिक्वेस्ट रद्द करें",
   "account.direct": "प्रत्यक्ष संदेश @{name}",
-  "account.disable_notifications": "Stop notifying me when @{name} posts",
+  "account.disable_notifications": "@{name} पोस्ट के लिए मुझे सूचित मत करो",
   "account.domain_blocked": "छिपा हुआ डोमेन",
   "account.edit_profile": "प्रोफ़ाइल संपादित करें",
-  "account.enable_notifications": "Notify me when @{name} posts",
+  "account.enable_notifications": "जब @{name} पोस्ट मौजूद हो सूचित करें",
   "account.endorse": "प्रोफ़ाइल पर दिखाए",
   "account.follow": "फॉलो करें",
   "account.followers": "फॉलोवर",
   "account.followers.empty": "कोई भी इस यूज़र् को फ़ॉलो नहीं करता है",
   "account.followers_counter": "{count, plural, one {{counter} अनुगामी} other {{counter} समर्थक}}",
-  "account.following": "Following",
+  "account.following": "फॉलोइंग",
   "account.following_counter": "{count, plural, one {{counter} निम्नलिखित} other {{counter} निम्नलिखित}}",
   "account.follows.empty": "यह यूज़र् अभी तक किसी को फॉलो नहीं करता है।",
   "account.follows_you": "आपको फॉलो करता है",
   "account.hide_reblogs": "@{name} के बूस्ट छुपाएं",
-  "account.joined": "Joined {date}",
+  "account.joined": "शामिल हुये {date}",
   "account.link_verified_on": "इस लिंक का स्वामित्व {date} को चेक किया गया था",
   "account.locked_info": "यह खाता गोपनीयता स्थिति लॉक करने के लिए सेट है। मालिक मैन्युअल रूप से समीक्षा करता है कि कौन उनको फॉलो कर सकता है।",
   "account.media": "मीडिया",
@@ -41,24 +41,24 @@
   "account.statuses_counter": "{count, plural, one {{counter} भोंपू} other {{counter} भोंपू}}",
   "account.unblock": "@{name} को अनब्लॉक करें",
   "account.unblock_domain": "{domain} दिखाए",
-  "account.unblock_short": "Unblock",
+  "account.unblock_short": "अनब्लॉक",
   "account.unendorse": "प्रोफ़ाइल पर न दिखाए",
   "account.unfollow": "अनफॉलो करें",
   "account.unmute": "अनम्यूट @{name}",
   "account.unmute_notifications": "@{name} के नोटिफिकेशन अनम्यूट करे",
-  "account.unmute_short": "Unmute",
+  "account.unmute_short": "अनम्यूट",
   "account_note.placeholder": "नोट्स जोड़ने के लिए क्लिक करें",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
-  "admin.dashboard.retention.average": "Average",
-  "admin.dashboard.retention.cohort": "Sign-up month",
-  "admin.dashboard.retention.cohort_size": "New users",
+  "admin.dashboard.daily_retention": "साईन-अप के बाद उपयोगकर्ता के रिटेंशन दर",
+  "admin.dashboard.monthly_retention": "साईन-अप के बाद उपयोगकर्ता के महीने तक रिटेंशन दर",
+  "admin.dashboard.retention.average": "औसत",
+  "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.unexpected.title": "उफ़!",
   "announcement.announcement": "घोषणा",
-  "attachments_list.unprocessed": "(unprocessed)",
+  "attachments_list.unprocessed": "(असंसाधित)",
   "autosuggest_hashtag.per_week": "{count} हर सप्ताह",
   "boost_modal.combo": "अगली बार स्किप करने के लिए आप {combo} दबा सकते है",
   "bundle_column_error.body": "इस कॉम्पोनेन्ट को लोड करते वक्त कुछ गलत हो गया",
@@ -70,7 +70,7 @@
   "column.blocks": "ब्लॉक्ड यूज़र्स",
   "column.bookmarks": "पुस्तकचिह्न:",
   "column.community": "लोकल टाइम्लाइन",
-  "column.direct": "Direct messages",
+  "column.direct": "सीधा संदेश",
   "column.directory": "प्रोफाइल्स खोजें",
   "column.domain_blocks": "छुपे डोमेन्स",
   "column.favourites": "पसंदीदा",
@@ -93,7 +93,7 @@
   "community.column_settings.media_only": "सिर्फ़ मीडिया",
   "community.column_settings.remote_only": "केवल सुदूर",
   "compose_form.direct_message_warning_learn_more": "और जानें",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "मास्टोडॉन पर पोस्ट एन्ड-टू-एन्ड एन्क्रिप्टेड नहीं है",
   "compose_form.hashtag_warning": "यह टूट् किसी भी हैशटैग के तहत सूचीबद्ध नहीं होगा क्योंकि यह अनलिस्टेड है। हैशटैग द्वारा केवल सार्वजनिक टूट्स खोजे जा सकते हैं।",
   "compose_form.lock_disclaimer": "आपका खाता {locked} नहीं है। आपको केवल फॉलोवर्स को दिखाई दिए जाने वाले पोस्ट देखने के लिए कोई भी फॉलो कर सकता है।",
   "compose_form.lock_disclaimer.lock": "लॉक्ड",
@@ -106,7 +106,7 @@
   "compose_form.poll.switch_to_single": "एक ही विकल्प के लिए अनुमति देने के लिए पोल बदलें",
   "compose_form.publish": "टूट्",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "परिवर्तनों को सहेजें",
   "compose_form.sensitive.hide": "मीडिया को संवेदनशील के रूप में चिह्नित करें",
   "compose_form.sensitive.marked": "मीडिया संवेदनशील के रूप में चिह्नित है",
   "compose_form.sensitive.unmarked": "मीडिया संवेदनशील के रूप में चिह्नित नहीं है",
@@ -121,8 +121,8 @@
   "confirmations.delete.message": "क्या आप वाकई इस स्टेटस को हटाना चाहते हैं?",
   "confirmations.delete_list.confirm": "मिटाए",
   "confirmations.delete_list.message": "क्या आप वाकई इस लिस्ट को हमेशा के लिये मिटाना चाहते हैं?",
-  "confirmations.discard_edit_media.confirm": "Discard",
-  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
+  "confirmations.discard_edit_media.confirm": "डिस्कार्ड",
+  "confirmations.discard_edit_media.message": "लिस्ट में जोड़ें",
   "confirmations.domain_block.confirm": "संपूर्ण डोमेन छिपाएं",
   "confirmations.domain_block.message": "क्या आप वास्तव में, वास्तव में आप पूरे {domain} को ब्लॉक करना चाहते हैं? ज्यादातर मामलों में कुछ लक्षित ब्लॉक या म्यूट पर्याप्त और बेहतर हैं। आप किसी भी सार्वजनिक समय-सीमा या अपनी सूचनाओं में उस डोमेन की सामग्री नहीं देखेंगे। उस डोमेन से आपके फॉलोवर्स को हटा दिया जाएगा।",
   "confirmations.logout.confirm": "लॉग आउट करें",
@@ -160,15 +160,15 @@
   "emoji_button.search_results": "खोज परिणाम",
   "emoji_button.symbols": "प्रतीक",
   "emoji_button.travel": "यात्रा एवं स्थान",
-  "empty_column.account_suspended": "Account suspended",
+  "empty_column.account_suspended": "खाता निलंबित",
   "empty_column.account_timeline": "सन्नाटा! यहां कोई टूट्स नहीं!",
   "empty_column.account_unavailable": "प्रोफाइल उपलब्ध नहीं",
   "empty_column.blocks": "आप अभी तक किसी भी यूजर के द्वारा ब्लॉक्ड नहीं हो।",
   "empty_column.bookmarked_statuses": "आपके पास अभी तक कोई बुकमार्क नहीं है। जब आप एक बुकमार्क करते हैं, तो यह यहां दिखाई देगा।",
   "empty_column.community": "लोकल टाइम्लाइन खाली है, कुछ देखने के लिये सार्वजनिक रूप से कुछ लिखें!",
-  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.direct": "आपके पास अभी तक कोई सीधा संदेश नहीं है, जब आप भेजेंगे या प्राप्त करेंगे तो ये यहाँ दिखेगा |",
   "empty_column.domain_blocks": "अभी तक कोई छुपा हुआ डोमेन नहीं है।",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "कुछ भी अभी ट्रैंडिंग नहीं है, कुछ देर बाद जांचे!",
   "empty_column.favourited_statuses": "आपके पास अभी कोई भी चहिता टूट नहीं है. जब आप किसी टूट को पसंद (स्टार) करेंगे, तब वो यहाँ दिखेगा।",
   "empty_column.favourites": "अभी तक किसी ने भी इस टूट को पसंद (स्टार) नहीं किया है. जब भी कोई इसे पसंद करेगा, उनका नाम यहाँ दिखेगा।",
   "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "अगला",
   "lightbox.previous": "पिछला",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "सूची से निकालें",
   "lists.delete": "सूची हटाएँ",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index f0c7954a3..1d02d6e40 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -122,7 +122,7 @@
   "confirmations.delete_list.confirm": "Obriši",
   "confirmations.delete_list.message": "Jeste li sigurni da želite trajno obrisati ovu listu?",
   "confirmations.discard_edit_media.confirm": "Odbaciti",
-  "confirmations.discard_edit_media.message": "Niste spremili promjene u opisu medija ili u predpregledu, svejedno ih odbaciti?",
+  "confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
   "confirmations.domain_block.confirm": "Blokiraj cijelu domenu",
   "confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.",
   "confirmations.logout.confirm": "Odjavi se",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Sljedeće",
   "lightbox.previous": "Prethodno",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Dodaj na listu",
   "lists.account.remove": "Ukloni s liste",
   "lists.delete": "Izbriši listu",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 4986cd199..80059f852 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -110,8 +110,8 @@
   "compose_form.sensitive.hide": "{count, plural, one {Média kényesnek jelölése} other {Média kényesnek jelölése}}",
   "compose_form.sensitive.marked": "{count, plural, one {A médiát kényesnek jelölték} other {A médiát kényesnek jelölték}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {A médiát nem jelölték kényesnek} other {A médiát nem jelölték kényesnek}}",
-  "compose_form.spoiler.marked": "A szöveg figyelmeztetés mögé van rejtve",
-  "compose_form.spoiler.unmarked": "A szöveg nem rejtett",
+  "compose_form.spoiler.marked": "Tartalmi figyelmeztetés törlése",
+  "compose_form.spoiler.unmarked": "Tartalmi figyelmeztetés hozzáadása",
   "compose_form.spoiler_placeholder": "Írd ide a figyelmeztetést",
   "confirmation_modal.cancel": "Mégse",
   "confirmations.block.block_and_report": "Letiltás és jelentés",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Képnézet kinagyítása",
   "lightbox.next": "Következő",
   "lightbox.previous": "Előző",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Hozzáadás a listához",
   "lists.account.remove": "Eltávolítás a listából",
   "lists.delete": "Lista törlése",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 1bce7a771..bb3092daf 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Բացել պատկերի դիտման պատուհանը",
   "lightbox.next": "Յաջորդ",
   "lightbox.previous": "Նախորդ",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Աւելացնել ցանկին",
   "lists.account.remove": "Հանել ցանկից",
   "lists.delete": "Ջնջել ցանկը",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 75b039177..ed4a36b2a 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Besarkan kotak tampilan gambar",
   "lightbox.next": "Selanjutnya",
   "lightbox.previous": "Sebelumnya",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Tambah ke daftar",
   "lists.account.remove": "Hapus dari daftar",
   "lists.delete": "Hapus daftar",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 1752bda65..3e1821acb 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -178,59 +178,59 @@
   "empty_column.home.suggestions": "Videz ula sugestati",
   "empty_column.list": "There is nothing in this list yet.",
   "empty_column.lists": "Vu ne havas irga listi til nun. Kande vu kreas talo, ol montresos hike.",
-  "empty_column.mutes": "You haven't muted any users yet.",
+  "empty_column.mutes": "Vu ne silencigis irga uzanti til nun.",
   "empty_column.notifications": "Tu havas ankore nula savigo. Komunikez kun altri por debutar la konverso.",
   "empty_column.public": "Esas nulo hike! Skribez ulo publike, o manuale sequez uzeri de altra instaluri por plenigar ol.",
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
-  "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
-  "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
-  "follow_recommendations.done": "Done",
-  "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
-  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
+  "error.unexpected_crash.explanation": "Pro eroro en nia numero o vidilkonciliebloproblemo, ca pagino ne povas korekte montresar.",
+  "error.unexpected_crash.explanation_addons": "Ca pagino ne povas korekte montresar. Ca eroro posible kauzigesas vidilplusajo o automata tradukutensili.",
+  "error.unexpected_crash.next_steps": "Probez rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.",
+  "error.unexpected_crash.next_steps_addons": "Probez desaktivigar e rifreshar pagino. Se to ne helpas, vu forsan ankore povas uzar Mastodon per diferenta vidilo o provizita softwaro.",
+  "errors.unexpected_crash.copy_stacktrace": "Kopiez amastraso a klipplanko",
+  "errors.unexpected_crash.report_issue": "Reportigez problemo",
+  "explore.search_results": "Trovuri",
+  "explore.suggested_follows": "Por vu",
+  "explore.title": "Explorez",
+  "explore.trending_links": "Niuz",
+  "explore.trending_statuses": "Posti",
+  "explore.trending_tags": "Hashtagi",
+  "follow_recommendations.done": "Fina",
+  "follow_recommendations.heading": "Sequez personi quo igas posti quon vu volas vidar! Hike esas ula sugestati.",
+  "follow_recommendations.lead": "Posti de personi quon vu sequas kronologiale montresos en vua hemniuzeto. Ne timas igar erori, vu povas desequar personi tam same facila irgatempe!",
   "follow_request.authorize": "Yurizar",
   "follow_request.reject": "Refuzar",
-  "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
-  "generic.saved": "Saved",
-  "getting_started.developers": "Developers",
-  "getting_started.directory": "Profile directory",
-  "getting_started.documentation": "Documentation",
+  "follow_requests.unlocked_explanation": "Quankam vua konto ne klefklozesis, la {domain} laborero pensas ke vu forsan volas kontralar sequodemandi de ca konti manuale.",
+  "generic.saved": "Sparesis",
+  "getting_started.developers": "Developeri",
+  "getting_started.directory": "Profilcheflisto",
+  "getting_started.documentation": "Dokumentajo",
   "getting_started.heading": "Debuto",
-  "getting_started.invite": "Invite people",
+  "getting_started.invite": "Invitez personi",
   "getting_started.open_source_notice": "Mastodon esas programaro kun apertita kodexo. Tu povas kontributar o signalar problemi en GitHub ye {github}.",
   "getting_started.security": "Security",
-  "getting_started.terms": "Terms of service",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "getting_started.terms": "Servkondicioni",
+  "hashtag.column_header.tag_mode.all": "e {additional}",
+  "hashtag.column_header.tag_mode.any": "o {additional}",
+  "hashtag.column_header.tag_mode.none": "sen {additional}",
+  "hashtag.column_settings.select.no_options_message": "Nula sugestati",
+  "hashtag.column_settings.select.placeholder": "Insertez hashtagi…",
+  "hashtag.column_settings.tag_mode.all": "Omna co",
+  "hashtag.column_settings.tag_mode.any": "Irga co",
+  "hashtag.column_settings.tag_mode.none": "Nula co",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "home.column_settings.basic": "Simpla",
   "home.column_settings.show_reblogs": "Montrar repeti",
   "home.column_settings.show_replies": "Montrar respondi",
-  "home.hide_announcements": "Hide announcements",
-  "home.show_announcements": "Show announcements",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "home.hide_announcements": "Celez anunci",
+  "home.show_announcements": "Montrez anunci",
+  "intervals.full.days": "{number, plural, one {# dio} other {# dii}}",
+  "intervals.full.hours": "{number, plural, one {# horo} other {# hori}}",
+  "intervals.full.minutes": "{number, plural, one {# minuto} other {# minuti}}",
   "keyboard_shortcuts.back": "to navigate back",
   "keyboard_shortcuts.blocked": "to open blocked users list",
   "keyboard_shortcuts.boost": "to boost",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
-  "keyboard_shortcuts.description": "Description",
+  "keyboard_shortcuts.description": "Deskripto",
   "keyboard_shortcuts.direct": "apertar kolumno di direta mesaji",
   "keyboard_shortcuts.down": "to move down in the list",
   "keyboard_shortcuts.enter": "to open status",
@@ -239,7 +239,7 @@
   "keyboard_shortcuts.federated": "to open federated timeline",
   "keyboard_shortcuts.heading": "Keyboard Shortcuts",
   "keyboard_shortcuts.home": "to open home timeline",
-  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.hotkey": "Rapidklavo",
   "keyboard_shortcuts.legend": "to display this legend",
   "keyboard_shortcuts.local": "to open local timeline",
   "keyboard_shortcuts.mention": "to mention author",
@@ -260,285 +260,287 @@
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
   "lightbox.close": "Klozar",
-  "lightbox.compress": "Compress image view box",
-  "lightbox.expand": "Expand image view box",
-  "lightbox.next": "Next",
-  "lightbox.previous": "Previous",
-  "lists.account.add": "Add to list",
-  "lists.account.remove": "Remove from list",
-  "lists.delete": "Delete list",
-  "lists.edit": "Edit list",
-  "lists.edit.submit": "Change title",
-  "lists.new.create": "Add list",
-  "lists.new.title_placeholder": "New list title",
-  "lists.replies_policy.followed": "Any followed user",
-  "lists.replies_policy.list": "Members of the list",
-  "lists.replies_policy.none": "No one",
-  "lists.replies_policy.title": "Show replies to:",
-  "lists.search": "Search among people you follow",
-  "lists.subheading": "Your lists",
-  "load_pending": "{count, plural, one {# new item} other {# new items}}",
+  "lightbox.compress": "Kompresez imajvidbuxo",
+  "lightbox.expand": "Expansez imajvidbuxo",
+  "lightbox.next": "Nexta",
+  "lightbox.previous": "Antea",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
+  "lists.account.add": "Insertez a listo",
+  "lists.account.remove": "Efacez de listo",
+  "lists.delete": "Efacez listo",
+  "lists.edit": "Modifikez listo",
+  "lists.edit.submit": "Chanjez titulo",
+  "lists.new.create": "Insertez listo",
+  "lists.new.title_placeholder": "Nova listotitulo",
+  "lists.replies_policy.followed": "Irga sequita uzanto",
+  "lists.replies_policy.list": "Membro di listo",
+  "lists.replies_policy.none": "Nulu",
+  "lists.replies_policy.title": "Montrez respondi a:",
+  "lists.search": "Trovez inter personi quon vu sequas",
+  "lists.subheading": "Vua listi",
+  "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
   "loading_indicator.label": "Kargante...",
   "media_gallery.toggle_visible": "Chanjar videbleso",
   "missing_indicator.label": "Ne trovita",
-  "missing_indicator.sublabel": "This resource could not be found",
-  "mute_modal.duration": "Duration",
-  "mute_modal.hide_notifications": "Hide notifications from this user?",
-  "mute_modal.indefinite": "Indefinite",
-  "navigation_bar.apps": "Mobile apps",
+  "missing_indicator.sublabel": "Ca resurso ne existas",
+  "mute_modal.duration": "Durado",
+  "mute_modal.hide_notifications": "Celez avizi de ca uzanto?",
+  "mute_modal.indefinite": "Nedefinitiva",
+  "navigation_bar.apps": "Telefonprogrami",
   "navigation_bar.blocks": "Blokusita uzeri",
-  "navigation_bar.bookmarks": "Bookmarks",
+  "navigation_bar.bookmarks": "Libromarki",
   "navigation_bar.community_timeline": "Lokala tempolineo",
   "navigation_bar.compose": "Compose new toot",
   "navigation_bar.direct": "Direta mesaji",
-  "navigation_bar.discover": "Discover",
+  "navigation_bar.discover": "Deskovrez",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "Modifikar profilo",
-  "navigation_bar.explore": "Explore",
+  "navigation_bar.explore": "Explorez",
   "navigation_bar.favourites": "Favorati",
-  "navigation_bar.filters": "Muted words",
+  "navigation_bar.filters": "Silencigita vorti",
   "navigation_bar.follow_requests": "Demandi di sequado",
-  "navigation_bar.follows_and_followers": "Follows and followers",
+  "navigation_bar.follows_and_followers": "Sequati e sequanti",
   "navigation_bar.info": "Detaloza informi",
   "navigation_bar.keyboard_shortcuts": "Keyboard shortcuts",
-  "navigation_bar.lists": "Lists",
+  "navigation_bar.lists": "Listi",
   "navigation_bar.logout": "Ekirar",
   "navigation_bar.mutes": "Celita uzeri",
-  "navigation_bar.personal": "Personal",
+  "navigation_bar.personal": "Personala",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Preferi",
   "navigation_bar.public_timeline": "Federata tempolineo",
-  "navigation_bar.security": "Security",
-  "notification.admin.sign_up": "{name} signed up",
+  "navigation_bar.security": "Sekureso",
+  "notification.admin.sign_up": "{name} registresis",
   "notification.favourite": "{name} favorizis tua mesajo",
   "notification.follow": "{name} sequeskis tu",
-  "notification.follow_request": "{name} has requested to follow you",
+  "notification.follow_request": "{name} demandas sequar vu",
   "notification.mention": "{name} mencionis tu",
-  "notification.own_poll": "Your poll has ended",
-  "notification.poll": "A poll you have voted in has ended",
+  "notification.own_poll": "Vua votposto finigis",
+  "notification.poll": "Votposto quo havas vua voto finigis",
   "notification.reblog": "{name} repetis tua mesajo",
-  "notification.status": "{name} just posted",
-  "notification.update": "{name} edited a post",
+  "notification.status": "{name} nove postigis",
+  "notification.update": "{name} modifikis posto",
   "notifications.clear": "Efacar savigi",
   "notifications.clear_confirmation": "Ka tu esas certa, ke tu volas efacar omna tua savigi?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
-  "notifications.column_settings.alert": "Surtabla savigi",
+  "notifications.column_settings.admin.sign_up": "Nova registranti:",
+  "notifications.column_settings.alert": "Desktopavizi",
   "notifications.column_settings.favourite": "Favorati:",
-  "notifications.column_settings.filter_bar.advanced": "Display all categories",
-  "notifications.column_settings.filter_bar.category": "Quick filter bar",
-  "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
+  "notifications.column_settings.filter_bar.advanced": "Montrez omna kategorii",
+  "notifications.column_settings.filter_bar.category": "Rapidfiltrobaro",
+  "notifications.column_settings.filter_bar.show_bar": "Montrez filtrobaro",
   "notifications.column_settings.follow": "Nova sequanti:",
-  "notifications.column_settings.follow_request": "New follow requests:",
+  "notifications.column_settings.follow_request": "Nova sequodemandi:",
   "notifications.column_settings.mention": "Mencioni:",
-  "notifications.column_settings.poll": "Poll results:",
-  "notifications.column_settings.push": "Push notifications",
+  "notifications.column_settings.poll": "Votpostorezulti:",
+  "notifications.column_settings.push": "Pulsavizi",
   "notifications.column_settings.reblog": "Repeti:",
   "notifications.column_settings.show": "Montrar en kolumno",
   "notifications.column_settings.sound": "Plear sono",
   "notifications.column_settings.status": "New toots:",
-  "notifications.column_settings.unread_notifications.category": "Unread notifications",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
-  "notifications.column_settings.update": "Edits:",
-  "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
-  "notifications.filter.follows": "Follows",
-  "notifications.filter.mentions": "Mentions",
-  "notifications.filter.polls": "Poll results",
-  "notifications.filter.statuses": "Updates from people you follow",
-  "notifications.grant_permission": "Grant permission.",
-  "notifications.group": "{count} notifications",
-  "notifications.mark_as_read": "Mark every notification as read",
-  "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
-  "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
-  "notifications_permission_banner.enable": "Enable desktop notifications",
-  "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
-  "notifications_permission_banner.title": "Never miss a thing",
-  "picture_in_picture.restore": "Put it back",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll.voted": "You voted for this answer",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "notifications.column_settings.unread_notifications.category": "Nelektita avizi",
+  "notifications.column_settings.unread_notifications.highlight": "Briligez nelektita avizi",
+  "notifications.column_settings.update": "Modifikati:",
+  "notifications.filter.all": "Omna",
+  "notifications.filter.boosts": "Busti",
+  "notifications.filter.favourites": "Favorati",
+  "notifications.filter.follows": "Sequati",
+  "notifications.filter.mentions": "Mencioni",
+  "notifications.filter.polls": "Votpostorezulti",
+  "notifications.filter.statuses": "Niuz de personi quon vu sequas",
+  "notifications.grant_permission": "Donez permiso.",
+  "notifications.group": "{count} avizi",
+  "notifications.mark_as_read": "Markigez singla avizi quale lektita",
+  "notifications.permission_denied": "Desktopavizi esas nedisplonebla pro antea refuzita vidilpermisdemando",
+  "notifications.permission_denied_alert": "Desktopavizi ne povas aktivigesar pro ke vidilpermiso refuzesis",
+  "notifications.permission_required": "Desktopavizi esas nedisplonebla pro ke bezonata permiso ne donesis.",
+  "notifications_permission_banner.enable": "Aktivigez desktopavizi",
+  "notifications_permission_banner.how_to_control": "Por ganar avizi kande Mastodon ne esas apertita, aktivigez dekstopavizi. Vu povas precize regularar quale interakti facas deskstopavizi tra la supera {icon} butono pos oli aktivigesis.",
+  "notifications_permission_banner.title": "Irga kozo ne pasas vu",
+  "picture_in_picture.restore": "Retropozez",
+  "poll.closed": "Klozita",
+  "poll.refresh": "Rifreshez",
+  "poll.total_people": "{count, plural, one {# persono} other {# personi}}",
+  "poll.total_votes": "{count, plural, one {# voto} other {# voti}}",
+  "poll.vote": "Votez",
+  "poll.voted": "Vu ja votis ca respondo",
+  "poll.votes": "{votes, plural, one {# voto} other {# voti}}",
+  "poll_button.add_poll": "Insertez votposto",
+  "poll_button.remove_poll": "Efacez votposto",
   "privacy.change": "Aranjar privateso di mesaji",
   "privacy.direct.long": "Sendar nur a mencionata uzeri",
-  "privacy.direct.short": "Direct",
+  "privacy.direct.short": "Mencionita personi nur",
   "privacy.private.long": "Sendar nur a sequanti",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
+  "privacy.private.short": "Sequanti nur",
+  "privacy.public.long": "Videbla da omnu",
   "privacy.public.short": "Publike",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
+  "privacy.unlisted.long": "Videbla da omnu ma voluntala ne inkluzas deskovrotraiti",
   "privacy.unlisted.short": "Ne enlistigota",
-  "refresh": "Refresh",
-  "regeneration_indicator.label": "Loading…",
-  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "refresh": "Rifreshez",
+  "regeneration_indicator.label": "Chargas…",
+  "regeneration_indicator.sublabel": "Vua hemniuzeto preparesas!",
   "relative_time.days": "{number}d",
-  "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
-  "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
-  "relative_time.full.just_now": "just now",
-  "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
-  "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
+  "relative_time.full.days": "{number, plural, one {# dio} other {# dii}} ante nun",
+  "relative_time.full.hours": "{number, plural, one {# horo} other {# hori}} ante nun",
+  "relative_time.full.just_now": "jus nun",
+  "relative_time.full.minutes": "{number, plural, one {# minuto} other {# minuti}} ante nun",
+  "relative_time.full.seconds": "{number, plural, one {# sekundo} other {# sekundi}} ante nun",
   "relative_time.hours": "{number}h",
-  "relative_time.just_now": "now",
+  "relative_time.just_now": "nun",
   "relative_time.minutes": "{number}m",
   "relative_time.seconds": "{number}s",
-  "relative_time.today": "today",
+  "relative_time.today": "hodie",
   "reply_indicator.cancel": "Nihiligar",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
-  "report.categories.spam": "Spam",
-  "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
-  "report.forward": "Forward to {target}",
-  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.block": "Restriktez",
+  "report.block_explanation": "Vu ne vidos olia posti. Oli ne povas vidar vua posti o sequar vu. Oli savos ke oli restriktesis.",
+  "report.categories.other": "Altra",
+  "report.categories.spam": "Spamo",
+  "report.categories.violation": "Kontenaj nesequas 1 o plu servilreguli",
+  "report.category.subtitle": "Selektez maxim bona parigato",
+  "report.category.title": "Savigez ni pri quo eventas kun ca {type}",
+  "report.category.title_account": "profilo",
+  "report.category.title_status": "posto",
+  "report.close": "Fina",
+  "report.comment.title": "Ka altra irgo quon vu pensas ke ni debas savar?",
+  "report.forward": "Sendez a {target}",
+  "report.forward_hint": "La konto esas de altra servilo. Vu volas sendar raportkopiur sen nomo ibe anke?",
+  "report.mute": "Silencigez",
+  "report.mute_explanation": "Vu ne vidos olia posti. Oli povas ankore sequar vu e vidar vua posti e ne savar ke oli silencigesis.",
+  "report.next": "Nexta",
   "report.placeholder": "Plusa komenti",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "Me ne amas",
+  "report.reasons.dislike_description": "Ol ne esas olo quon vu volas vidar",
+  "report.reasons.other": "Ol esas altra ulo",
+  "report.reasons.other_description": "La problemo ne fitas a altra kategorii",
+  "report.reasons.spam": "Ol esas spamo",
+  "report.reasons.spam_description": "Mala ligili, falsa interago o repetiva repliki",
+  "report.reasons.violation": "Ol nesequas servilreguli",
+  "report.reasons.violation_description": "Vu remarkas ke ol nesequas partikulara reguli",
+  "report.rules.subtitle": "Selektez relatata omno",
+  "report.rules.title": "Quala reguli nesequesas?",
+  "report.statuses.subtitle": "Selektez relatata omno",
+  "report.statuses.title": "Ka existas irga posti quo suportas ca raporto?",
   "report.submit": "Sendar",
   "report.target": "Denuncante",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Co esas vua opcioni por regularar quo vu vidas che Mastodon:",
+  "report.thanks.take_action_actionable": "Dum ke ni kontrolas co, vu povas demarshar kontra @{name}:",
+  "report.thanks.title": "Ka vu ne volas vidar co?",
+  "report.thanks.title_actionable": "Danko por raportigar, ni kontrolos co.",
+  "report.unfollow": "Desequez @{name}",
+  "report.unfollow_explanation": "Vu sequas ca konto. Por ne vidar olia posti en vua hemniuzeto plu, desequez oli.",
   "search.placeholder": "Serchez",
-  "search_popout.search_format": "Advanced search format",
+  "search_popout.search_format": "Avance trovformato",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
-  "search_popout.tips.hashtag": "hashtag",
+  "search_popout.tips.hashtag": "hashtago",
   "search_popout.tips.status": "status",
-  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
-  "search_popout.tips.user": "user",
-  "search_results.accounts": "People",
-  "search_results.all": "All",
-  "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_popout.tips.text": "Simpla textoretrovenuri quo parigas trovnomi, uzantonomi e hashtagi",
+  "search_popout.tips.user": "uzanto",
+  "search_results.accounts": "Personi",
+  "search_results.all": "Omna",
+  "search_results.hashtags": "Hashtagi",
+  "search_results.nothing_found": "Ne povas ganar irgo per ca trovvorti",
   "search_results.statuses": "Toots",
   "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
   "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezulti}}",
-  "status.admin_account": "Open moderation interface for @{name}",
+  "status.admin_account": "Apertez jerintervizajo por @{name}",
   "status.admin_status": "Open this status in the moderation interface",
-  "status.block": "Block @{name}",
-  "status.bookmark": "Bookmark",
-  "status.cancel_reblog_private": "Unboost",
-  "status.cannot_reblog": "This post cannot be boosted",
+  "status.block": "Restriktez @{name}",
+  "status.bookmark": "Libromarko",
+  "status.cancel_reblog_private": "Debustez",
+  "status.cannot_reblog": "Ca posto ne povas bustesas",
   "status.copy": "Copy link to status",
   "status.delete": "Efacar",
-  "status.detailed_status": "Detailed conversation view",
-  "status.direct": "Direct message @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
-  "status.embed": "Embed",
+  "status.detailed_status": "Detala konversvido",
+  "status.direct": "Direta mesajigez @{name}",
+  "status.edit": "Modifikez",
+  "status.edited": "Modifikesis ye {date}",
+  "status.edited_x_times": "Modifikesis {count, plural, one {{count} foyo} other {{count} foyi}}",
+  "status.embed": "Eninsertez",
   "status.favourite": "Favorizar",
-  "status.filtered": "Filtered",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.filtered": "Filtrita",
+  "status.history.created": "{name} kreis ye {date}",
+  "status.history.edited": "{name} modifikis ye {date}",
   "status.load_more": "Kargar pluse",
   "status.media_hidden": "Kontenajo celita",
   "status.mention": "Mencionar @{name}",
-  "status.more": "More",
-  "status.mute": "Mute @{name}",
-  "status.mute_conversation": "Mute conversation",
+  "status.more": "Plu",
+  "status.mute": "Silencigez @{name}",
+  "status.mute_conversation": "Silencigez konverso",
   "status.open": "Detaligar ca mesajo",
-  "status.pin": "Pin on profile",
+  "status.pin": "Pinglagez che profilo",
   "status.pinned": "Pinned toot",
-  "status.read_more": "Read more",
+  "status.read_more": "Lektez plu",
   "status.reblog": "Repetar",
-  "status.reblog_private": "Boost with original visibility",
+  "status.reblog_private": "Bustez kun originala videbleso",
   "status.reblogged_by": "{name} repetita",
   "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
-  "status.redraft": "Delete & re-draft",
-  "status.remove_bookmark": "Remove bookmark",
+  "status.redraft": "Efacez e riskisigez",
+  "status.remove_bookmark": "Efacez libromarko",
   "status.reply": "Respondar",
   "status.replyAll": "Respondar a filo",
   "status.report": "Denuncar @{name}",
   "status.sensitive_warning": "Trubliva kontenajo",
-  "status.share": "Share",
+  "status.share": "Partigez",
   "status.show_less": "Montrar mine",
-  "status.show_less_all": "Show less for all",
+  "status.show_less_all": "Montrez min por omno",
   "status.show_more": "Montrar plue",
-  "status.show_more_all": "Show more for all",
-  "status.show_thread": "Show thread",
-  "status.uncached_media_warning": "Not available",
-  "status.unmute_conversation": "Unmute conversation",
-  "status.unpin": "Unpin from profile",
-  "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
+  "status.show_more_all": "Montrez plu por omno",
+  "status.show_thread": "Montrez postaro",
+  "status.uncached_media_warning": "Nedisplonebla",
+  "status.unmute_conversation": "Desilencigez konverso",
+  "status.unpin": "Depinglagez de profilo",
+  "suggestions.dismiss": "Desklozez sugestajo",
+  "suggestions.header": "Vu forsan havas intereso pri…",
   "tabs_bar.federated_timeline": "Federata",
   "tabs_bar.home": "Hemo",
   "tabs_bar.local_timeline": "Lokala",
   "tabs_bar.notifications": "Savigi",
-  "tabs_bar.search": "Search",
-  "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
-  "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
-  "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
-  "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
-  "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
-  "timeline_hint.resources.followers": "Followers",
-  "timeline_hint.resources.follows": "Follows",
+  "tabs_bar.search": "Trovez",
+  "time_remaining.days": "{number, plural, one {# dio} other {# dii}} restas",
+  "time_remaining.hours": "{number, plural, one {# horo} other {# hori}} restas",
+  "time_remaining.minutes": "{number, plural, one {# minuto} other {# minuti}} restas",
+  "time_remaining.moments": "Poka sekundi restas",
+  "time_remaining.seconds": "{number, plural, one {# sekundo} other {# sekundi}} restas",
+  "timeline_hint.remote_resource_not_displayed": "{resource} de altra servili ne montresas.",
+  "timeline_hint.resources.followers": "Sequanti",
+  "timeline_hint.resources.follows": "Sequati",
   "timeline_hint.resources.statuses": "Older toots",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} talking",
-  "trends.trending_now": "Trending now",
-  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
-  "units.short.billion": "{count}B",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persono} other {{counter} personi}} parolas",
+  "trends.trending_now": "Tendencigas nun",
+  "ui.beforeunload": "Vua skisato perdesos se vu ekiras Mastodon.",
+  "units.short.billion": "{count}G",
   "units.short.million": "{count}M",
   "units.short.thousand": "{count}K",
   "upload_area.title": "Tranar faligar por kargar",
   "upload_button.label": "Adjuntar kontenajo",
-  "upload_error.limit": "File upload limit exceeded.",
-  "upload_error.poll": "File upload not allowed with polls.",
-  "upload_form.audio_description": "Describe for people with hearing loss",
-  "upload_form.description": "Describe for the visually impaired",
-  "upload_form.description_missing": "No description added",
-  "upload_form.edit": "Edit",
-  "upload_form.thumbnail": "Change thumbnail",
+  "upload_error.limit": "Failcharglimito ecesesis.",
+  "upload_error.poll": "Failchargo ne permisesas kun votposti.",
+  "upload_form.audio_description": "Deskriptez por personi kun min audkapableso",
+  "upload_form.description": "Deskriptez por personi kun min vidkapableso",
+  "upload_form.description_missing": "Deskriptajo ne insertesis",
+  "upload_form.edit": "Modifikez",
+  "upload_form.thumbnail": "Chanjez mikroimajo",
   "upload_form.undo": "Desfacar",
-  "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
-  "upload_modal.analyzing_picture": "Analyzing picture…",
-  "upload_modal.apply": "Apply",
-  "upload_modal.applying": "Applying…",
-  "upload_modal.choose_image": "Choose image",
-  "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
-  "upload_modal.detect_text": "Detect text from picture",
-  "upload_modal.edit_media": "Edit media",
-  "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
-  "upload_modal.preparing_ocr": "Preparing OCR…",
-  "upload_modal.preview_label": "Preview ({ratio})",
+  "upload_form.video_description": "Deskriptez por personi kun min audkapableso o min vidkapableso",
+  "upload_modal.analyzing_picture": "Analizas imajo…",
+  "upload_modal.apply": "Aplikez",
+  "upload_modal.applying": "Aplikas…",
+  "upload_modal.choose_image": "Selektez imajo",
+  "upload_modal.description_placeholder": "Rapida bruna foxo saltas super indolenta hundo",
+  "upload_modal.detect_text": "Deskovrez texto de imajo",
+  "upload_modal.edit_media": "Modifikez medii",
+  "upload_modal.hint": "Kliktez o tirez cirklo che prevido por selektar central punto quo sempre montresas kun omna mikroimaji.",
+  "upload_modal.preparing_ocr": "Preparas OCR…",
+  "upload_modal.preview_label": "Previdez ({ratio})",
   "upload_progress.label": "Kargante...",
-  "video.close": "Close video",
-  "video.download": "Download file",
-  "video.exit_fullscreen": "Exit full screen",
-  "video.expand": "Expand video",
-  "video.fullscreen": "Full screen",
-  "video.hide": "Hide video",
-  "video.mute": "Mute sound",
-  "video.pause": "Pause",
-  "video.play": "Play",
-  "video.unmute": "Unmute sound"
+  "video.close": "Klozez video",
+  "video.download": "Deschargez failo",
+  "video.exit_fullscreen": "Ekirez plena skreno",
+  "video.expand": "Expansez video",
+  "video.fullscreen": "Plena skreno",
+  "video.hide": "Celez video",
+  "video.mute": "Silencigez sono",
+  "video.pause": "Pauzez",
+  "video.play": "Pleez",
+  "video.unmute": "Desilencigez sono"
 }
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 8e3212f8f..0dd9d1a87 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Fletta út myndskoðunarreit",
   "lightbox.next": "Næsta",
   "lightbox.previous": "Fyrra",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Bæta á lista",
   "lists.account.remove": "Fjarlægja af lista",
   "lists.delete": "Eyða lista",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index c5fb5c731..40cdb6211 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Espandi casella di visualizzazione immagine",
   "lightbox.next": "Successivo",
   "lightbox.previous": "Precedente",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Aggiungi alla lista",
   "lists.account.remove": "Togli dalla lista",
   "lists.delete": "Elimina lista",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 86c9c34bc..f65cd8993 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -268,6 +268,8 @@
   "lightbox.expand": "画像ビューボックスを開く",
   "lightbox.next": "次",
   "lightbox.previous": "前",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "リストに追加",
   "lists.account.remove": "リストから外す",
   "lists.delete": "リストを削除",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index a9437bdb1..8d245f797 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "შემდეგი",
   "lightbox.previous": "წინა",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "სიაში დამატება",
   "lists.account.remove": "სიიდან ამოშლა",
   "lists.delete": "სიის წაშლა",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 9d77262dd..b619a7012 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Simeɣer tamnaḍt n uskan n tugna",
   "lightbox.next": "Γer zdat",
   "lightbox.previous": "Γer deffir",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Rnu ɣer tebdart",
   "lists.account.remove": "Kkes seg tebdart",
   "lists.delete": "Kkes tabdart",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 110d33ae4..568485774 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Келесі",
   "lightbox.previous": "Алдыңғы",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Тізімге қосу",
   "lists.account.remove": "Тізімнен шығару",
   "lists.delete": "Тізімді өшіру",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index d00d7feb7..f6b1c0b8c 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index a9c4fc6ce..4810cb955 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -28,7 +28,7 @@
   "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.",
   "account.media": "미디어",
   "account.mention": "@{name}에게 글쓰기",
-  "account.moved_to": "{name}는 계정을 이동했습니다:",
+  "account.moved_to": "{name} 님은 계정을 이동했습니다:",
   "account.mute": "@{name} 뮤트",
   "account.mute_notifications": "@{name}의 알림을 뮤트",
   "account.muted": "뮤트 됨",
@@ -264,6 +264,8 @@
   "lightbox.expand": "이미지 박스 확장",
   "lightbox.next": "다음",
   "lightbox.previous": "이전",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "리스트에 추가",
   "lists.account.remove": "리스트에서 제거",
   "lists.delete": "리스트 삭제",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 89765f8ff..42e9976b3 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Qutîya wêneya nîşan dike fireh bike",
   "lightbox.next": "Pêş",
   "lightbox.previous": "Paş",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Tevlî rêzokê bike",
   "lists.account.remove": "Ji rêzokê rake",
   "lists.delete": "Rêzokê jê bibe",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index 60dca71f5..96540d796 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Efani kist a weles aven",
   "lightbox.next": "Nessa",
   "lightbox.previous": "Kynsa",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Keworra dhe rol",
   "lists.account.remove": "Removya a rol",
   "lists.delete": "Dilea rol",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index 4d44ffac6..27e24b2cf 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 24311b859..aff6d01e6 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Paplašināt attēla ietvaru",
   "lightbox.next": "Tālāk",
   "lightbox.previous": "Iepriekš",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Pievienot sarakstam",
   "lists.account.remove": "Noņemt no saraksta",
   "lists.delete": "Dzēst sarakstu",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index aa6e8a969..27fb4cda4 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 908db9833..0f5956018 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "അടുത്തത്",
   "lightbox.previous": "പുറകോട്ട്",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "പട്ടികയിലേക്ക് ചേർക്കുക",
   "lists.account.remove": "പട്ടികയിൽ നിന്ന് ഒഴിവാക്കുക",
   "lists.delete": "പട്ടിക ഒഴിവാക്കുക",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index c34c836ce..42b40afb4 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 405b3eeb6..6f0133671 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Besarkan kotak paparan imej",
   "lightbox.next": "Seterusnya",
   "lightbox.previous": "Sebelumnya",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Tambah ke senarai",
   "lists.account.remove": "Buang daripada senarai",
   "lists.delete": "Padam senarai",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index ad27cf200..efbc172fe 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Afbeelding groot weergeven",
   "lightbox.next": "Volgende",
   "lightbox.previous": "Vorige",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Aan lijst toevoegen",
   "lists.account.remove": "Uit lijst verwijderen",
   "lists.delete": "Lijst verwijderen",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 76095b2e8..863ed2b98 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ekspander bildevisning boks",
   "lightbox.next": "Neste",
   "lightbox.previous": "Førre",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Legg til i liste",
   "lists.account.remove": "Fjern frå liste",
   "lists.delete": "Slett liste",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 3279fa547..2634da282 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ekspander bildevisning boks",
   "lightbox.next": "Neste",
   "lightbox.previous": "Forrige",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Legg til i listen",
   "lists.account.remove": "Fjern fra listen",
   "lists.delete": "Slett listen",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index e74d5315a..135461dc3 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Espandir la fenèstra de visualizacion d’imatge",
   "lightbox.next": "Seguent",
   "lightbox.previous": "Precedent",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Ajustar a la lista",
   "lists.account.remove": "Levar de la lista",
   "lists.delete": "Suprimir la lista",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index c4baf0533..bbd8b8771 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 90e5dfbb4..37d1dd6c1 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -268,6 +268,8 @@
   "lightbox.expand": "Rozwiń pole widoku obrazu",
   "lightbox.next": "Następne",
   "lightbox.previous": "Poprzednie",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Dodaj do listy",
   "lists.account.remove": "Usunąć z listy",
   "lists.delete": "Usuń listę",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index ba1bc592e..8c7a970c5 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Abrir imagem",
   "lightbox.next": "Próximo",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Adicionar à lista",
   "lists.account.remove": "Remover da lista",
   "lists.delete": "Excluir lista",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 1149fc658..8f9105afc 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expandir caixa de visualização de imagem",
   "lightbox.next": "Próximo",
   "lightbox.previous": "Anterior",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Adicionar à lista",
   "lists.account.remove": "Remover da lista",
   "lists.delete": "Eliminar lista",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index f4f20df2d..b939188aa 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Deschide panoul de vizualizare a imaginilor",
   "lightbox.next": "Înainte",
   "lightbox.previous": "Înapoi",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Adaugă în listă",
   "lists.account.remove": "Elimină din listă",
   "lists.delete": "Șterge lista",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 4846509be..b357799f7 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Развернуть окно просмотра изображений",
   "lightbox.next": "Далее",
   "lightbox.previous": "Назад",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Добавить в список",
   "lists.account.remove": "Убрать из списка",
   "lists.delete": "Удалить список",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 13d3244d7..43430be3e 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 48a471352..d3d174f31 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Ismànnia sa casella de visualizatzione de is immàgines",
   "lightbox.next": "Imbeniente",
   "lightbox.previous": "Pretzedente",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Agiunghe a sa lista",
   "lists.account.remove": "Boga dae sa lista",
   "lists.delete": "Cantzella sa lista",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index e9e383968..c8865c9a7 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "ඊළඟ",
   "lightbox.previous": "පෙර",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "ලැයිස්තුවට එකතු කරන්න",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 809145b40..a0a7bc70d 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -70,7 +70,7 @@
   "column.blocks": "Blokovaní užívatelia",
   "column.bookmarks": "Záložky",
   "column.community": "Miestna časová os",
-  "column.direct": "Direct messages",
+  "column.direct": "Priame správy",
   "column.directory": "Prehľadávaj profily",
   "column.domain_blocks": "Skryté domény",
   "column.favourites": "Obľúbené",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Rozšíriť náhľad obrázku",
   "lightbox.next": "Ďalšie",
   "lightbox.previous": "Predchádzajúci",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Pridaj do zoznamu",
   "lists.account.remove": "Odober zo zoznamu",
   "lists.delete": "Vymaž list",
@@ -290,7 +292,7 @@
   "navigation_bar.bookmarks": "Záložky",
   "navigation_bar.community_timeline": "Miestna časová os",
   "navigation_bar.compose": "Napíš nový príspevok",
-  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.direct": "Priame správy",
   "navigation_bar.discover": "Objavuj",
   "navigation_bar.domain_blocks": "Skryté domény",
   "navigation_bar.edit_profile": "Uprav profil",
@@ -456,8 +458,8 @@
   "status.embed": "Vložiť",
   "status.favourite": "Páči sa mi",
   "status.filtered": "Filtrované",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.history.created": "{name} vytvoril/a {date}",
+  "status.history.edited": "{name} upravil/a {date}",
   "status.load_more": "Ukáž viac",
   "status.media_hidden": "Skryté médiá",
   "status.mention": "Spomeň @{name}",
@@ -515,7 +517,7 @@
   "upload_error.poll": "Nahrávanie súborov pri anketách nieje možné.",
   "upload_form.audio_description": "Popíš, pre ľudí so stratou sluchu",
   "upload_form.description": "Opis pre slabo vidiacich",
-  "upload_form.description_missing": "No description added",
+  "upload_form.description_missing": "Nepridaný žiadny popis",
   "upload_form.edit": "Uprav",
   "upload_form.thumbnail": "Zmeniť miniatúru",
   "upload_form.undo": "Vymaž",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 11539f209..fb5fb43ff 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Razširi ogledno polje slike",
   "lightbox.next": "Naslednji",
   "lightbox.previous": "Prejšnji",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Dodaj na seznam",
   "lists.account.remove": "Odstrani s seznama",
   "lists.delete": "Izbriši seznam",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index f51dbd002..68011e254 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Zgjeroje kuadratin e parjes së figurave",
   "lightbox.next": "Pasuesja",
   "lightbox.previous": "E mëparshmja",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Shto në listë",
   "lists.account.remove": "Hiqe nga lista",
   "lists.delete": "Fshije listën",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 453ff7a0e..706c909f6 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Sledeći",
   "lightbox.previous": "Prethodni",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Dodaj na listu",
   "lists.account.remove": "Ukloni sa liste",
   "lists.delete": "Obriši listu",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index f183c343c..60bdb666b 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Увећај преглед слике",
   "lightbox.next": "Следећи",
   "lightbox.previous": "Претходни",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Додај на листу",
   "lists.account.remove": "Уклони са листе",
   "lists.delete": "Обриши листу",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 0741f14d0..9447910fe 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Utöka bildvyrutan",
   "lightbox.next": "Nästa",
   "lightbox.previous": "Tidigare",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Lägg till i lista",
   "lists.account.remove": "Ta bort från lista",
   "lists.delete": "Radera lista",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index c4baf0533..bbd8b8771 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 4d159b844..7b061a4fd 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "அடுத்த",
   "lightbox.previous": "சென்ற",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "பட்டியலில் சேர்",
   "lists.account.remove": "பட்டியலில் இருந்து அகற்று",
   "lists.delete": "பட்டியலை நீக்கு",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 37f0bf261..1128afd81 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 9c46c7950..f1039b9bb 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "తరువాత",
   "lightbox.previous": "మునుపటి",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "జాబితాకు జోడించు",
   "lists.account.remove": "జాబితా నుండి తొలగించు",
   "lists.delete": "జాబితాను తొలగించు",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index b2bbf78b3..057af060e 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -93,7 +93,7 @@
   "community.column_settings.media_only": "สื่อเท่านั้น",
   "community.column_settings.remote_only": "ระยะไกลเท่านั้น",
   "compose_form.direct_message_warning_learn_more": "เรียนรู้เพิ่มเติม",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "โพสต์ใน Mastodon ไม่ได้เข้ารหัสแบบต้นทางถึงปลายทาง อย่าแบ่งปันข้อมูลที่เป็นอันตรายใด ๆ ผ่าน Mastodon",
   "compose_form.hashtag_warning": "จะไม่แสดงรายการโพสต์นี้ภายใต้แฮชแท็กใด ๆ เนื่องจากไม่อยู่ในรายการ เฉพาะโพสต์สาธารณะเท่านั้นที่สามารถค้นหาได้โดยแฮชแท็ก",
   "compose_form.lock_disclaimer": "บัญชีของคุณไม่ได้ {locked} ใครก็ตามสามารถติดตามคุณเพื่อดูโพสต์สำหรับผู้ติดตามเท่านั้นของคุณ",
   "compose_form.lock_disclaimer.lock": "ล็อคอยู่",
@@ -264,6 +264,8 @@
   "lightbox.expand": "ขยายกล่องดูภาพ",
   "lightbox.next": "ถัดไป",
   "lightbox.previous": "ก่อนหน้า",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "เพิ่มไปยังรายการ",
   "lists.account.remove": "เอาออกจากรายการ",
   "lists.delete": "ลบรายการ",
@@ -349,9 +351,9 @@
   "notifications.grant_permission": "ให้สิทธิอนุญาต",
   "notifications.group": "{count} การแจ้งเตือน",
   "notifications.mark_as_read": "ทำเครื่องหมายทุกการแจ้งเตือนว่าอ่านแล้ว",
-  "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
-  "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
+  "notifications.permission_denied": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากมีการปฏิเสธคำขอสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้",
+  "notifications.permission_denied_alert": "ไม่สามารถเปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป เนื่องจากมีการปฏิเสธสิทธิอนุญาตเบราว์เซอร์ก่อนหน้านี้",
+  "notifications.permission_required": "การแจ้งเตือนบนเดสก์ท็อปไม่พร้อมใช้งานเนื่องจากไม่ได้ให้สิทธิอนุญาตที่จำเป็น",
   "notifications_permission_banner.enable": "เปิดใช้งานการแจ้งเตือนบนเดสก์ท็อป",
   "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
   "notifications_permission_banner.title": "ไม่พลาดสิ่งใด",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index b16b5577c..9b04faf66 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Resim görüntüleme kutusunu genişlet",
   "lightbox.next": "Sonraki",
   "lightbox.previous": "Önceki",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Listeye ekle",
   "lists.account.remove": "Listeden kaldır",
   "lists.delete": "Listeyi sil",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 8e78f551f..16a62138e 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -7,13 +7,13 @@
   "account.block_domain": "{domain} доменын блоклау",
   "account.blocked": "Блокланган",
   "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була",
-  "account.cancel_follow_request": "Cancel follow request",
+  "account.cancel_follow_request": "Язылуга сорауны бетерү",
   "account.direct": "@{name} өчен яңа хат",
-  "account.disable_notifications": "Stop notifying me when @{name} posts",
-  "account.domain_blocked": "Domain blocked",
+  "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү",
+  "account.domain_blocked": "Домен блокланган",
   "account.edit_profile": "Профильны үзгәртү",
   "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру",
-  "account.endorse": "Feature on profile",
+  "account.endorse": "Профильдә рекомендацияләү",
   "account.follow": "Языл",
   "account.followers": "Язылучылар",
   "account.followers.empty": "Әле беркем дә язылмаган.",
@@ -23,12 +23,12 @@
   "account.follows.empty": "Беркемгә дә язылмаган әле.",
   "account.follows_you": "Сезгә язылган",
   "account.hide_reblogs": "Hide boosts from @{name}",
-  "account.joined": "Joined {date}",
+  "account.joined": "{date} көнендә теркәлде",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
-  "account.locked_info": "This account privacy status is set to locked. The owner manually reviews who can follow them.",
+  "account.locked_info": "Бу - ябык аккаунт. Аны язылучылар гына күрә ала.",
   "account.media": "Медиа",
   "account.mention": "@{name} искәртү",
-  "account.moved_to": "{name} has moved to:",
+  "account.moved_to": "{name} монда күчте:",
   "account.mute": "Mute @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Киләсе",
   "lightbox.previous": "Алдагы",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Исемлектән бетерергә",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index c4baf0533..bbd8b8771 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 2dfa8ccd9..dbf73e86c 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Розгорнути поле перегляду зображень",
   "lightbox.next": "Далі",
   "lightbox.previous": "Назад",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Додати до списку",
   "lists.account.remove": "Видалити зі списку",
   "lists.delete": "Видалити список",
@@ -438,7 +440,7 @@
   "search_results.hashtags": "Хештеґи",
   "search_results.nothing_found": "Нічого не вдалося знайти за цими пошуковими термінами",
   "search_results.statuses": "Дмухів",
-  "search_results.statuses_fts_disabled": "Пошук дмухів за вмістом недоступний на цьому сервері Mastodon.",
+  "search_results.statuses_fts_disabled": "Пошук дописів за вмістом недоступний на даному сервері Mastodon.",
   "search_results.total": "{count, number} {count, plural, one {результат} few {результати} many {результатів} other {результатів}}",
   "status.admin_account": "Відкрити інтерфейс модерації для @{name}",
   "status.admin_status": "Відкрити цей статус в інтерфейсі модерації",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index ba59a393f..7ca016326 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Add to list",
   "lists.account.remove": "Remove from list",
   "lists.delete": "Delete list",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 63bc7bd5a..b9de72e79 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Phóng to hình",
   "lightbox.next": "Tiếp",
   "lightbox.previous": "Trước",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "Thêm vào danh sách",
   "lists.account.remove": "Xóa khỏi danh sách",
   "lists.delete": "Xóa danh sách",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index 60835209e..cca76dffb 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "Expand image view box",
   "lightbox.next": "Next",
   "lightbox.previous": "Previous",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "ⵔⵏⵓ ⵖⵔ ⵜⵍⴳⴰⵎⵜ",
   "lists.account.remove": "ⴽⴽⵙ ⵙⴳ ⵜⵍⴳⴰⵎⵜ",
   "lists.delete": "ⴽⴽⵙ ⵜⴰⵍⴳⴰⵎⵜ",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 473b84b8d..43fecbd5e 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -24,7 +24,7 @@
   "account.follows_you": "关注了你",
   "account.hide_reblogs": "隐藏来自 @{name} 的转贴",
   "account.joined": "加入于 {date}",
-  "account.link_verified_on": "此链接的所有权已在 {date} 被检查",
+  "account.link_verified_on": "此链接的所有权已在 {date} 检查",
   "account.locked_info": "此账户已锁嘟。账户所有者会手动审核关注者。",
   "account.media": "媒体",
   "account.mention": "提及 @{name}",
@@ -32,8 +32,8 @@
   "account.mute": "隐藏 @{name}",
   "account.mute_notifications": "隐藏来自 @{name} 的通知",
   "account.muted": "已隐藏",
-  "account.posts": "帖子",
-  "account.posts_with_replies": "帖子和回复",
+  "account.posts": "嘟文",
+  "account.posts_with_replies": "嘟文和回复",
   "account.report": "举报 @{name}",
   "account.requested": "正在等待对方同意。点击以取消发送关注请求",
   "account.share": "分享 @{name} 的个人资料页",
@@ -46,7 +46,7 @@
   "account.unfollow": "取消关注",
   "account.unmute": "不再隐藏 @{name}",
   "account.unmute_notifications": "不再隐藏来自 @{name} 的通知",
-  "account.unmute_short": "取消静音",
+  "account.unmute_short": "恢复消息提醒",
   "account_note.placeholder": "点击添加备注",
   "admin.dashboard.daily_retention": "注册后用户留存率(按日计算)",
   "admin.dashboard.monthly_retention": "注册后用户留存率(按月计算)",
@@ -79,7 +79,7 @@
   "column.lists": "列表",
   "column.mutes": "已隐藏的用户",
   "column.notifications": "通知",
-  "column.pins": "置顶帖子",
+  "column.pins": "置顶嘟文",
   "column.public": "跨站公共时间轴",
   "column_back_button.label": "返回",
   "column_header.hide_settings": "隐藏设置",
@@ -94,8 +94,8 @@
   "community.column_settings.remote_only": "仅限外部",
   "compose_form.direct_message_warning_learn_more": "了解更多",
   "compose_form.encryption_warning": "Mastodon 上的嘟文并未端到端加密。请不要在 Mastodon 上分享敏感信息。",
-  "compose_form.hashtag_warning": "此帖子被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开帖子才能通过话题标签进行搜索。",
-  "compose_form.lock_disclaimer": "你的账号没有{locked}。任何人在关注你后都能立即查看仅关注者可见的帖子。",
+  "compose_form.hashtag_warning": "这条嘟文被设置为“不公开”,因此它不会出现在任何话题标签的列表下。只有公开的嘟文才能通过话题标签进行搜索。",
+  "compose_form.lock_disclaimer": "你的帐户没有{locked}。任何人都可以在关注你后立即查看仅关注者可见的嘟文。",
   "compose_form.lock_disclaimer.lock": "开启保护",
   "compose_form.placeholder": "在想些什么?",
   "compose_form.poll.add_option": "添加一个选项",
@@ -124,11 +124,11 @@
   "confirmations.discard_edit_media.confirm": "丢弃",
   "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?",
   "confirmations.domain_block.confirm": "屏蔽整个域名",
-  "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。",
+  "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,对几个特定的用户进行屏蔽或禁用对他们的消息提醒就足够了。屏蔽后,来自该域名的内容将不再出现在你任何的公共时间轴或通知列表里,你来自该域名下的关注者也将被移除。",
   "confirmations.logout.confirm": "登出",
   "confirmations.logout.message": "你确定要登出吗?",
   "confirmations.mute.confirm": "隐藏",
-  "confirmations.mute.explanation": "这将隐藏他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。",
+  "confirmations.mute.explanation": "这将隐藏来自他们的嘟文以及提到他们的嘟文,但他们仍可以看到你的嘟文并关注你。",
   "confirmations.mute.message": "你确定要隐藏 {name} 吗?",
   "confirmations.redraft.confirm": "删除并重新编辑",
   "confirmations.redraft.message": "你确定要删除这条嘟文并重新编辑它吗?所有相关的转嘟和喜欢都会被清除,回复将会失去关联。",
@@ -144,7 +144,7 @@
   "directory.local": "仅来自 {domain}",
   "directory.new_arrivals": "新来者",
   "directory.recently_active": "最近活跃",
-  "embed.instructions": "要在你的网站上嵌入此嘟文,请复制以下代码。",
+  "embed.instructions": "复制下列代码以在你的网站中嵌入此嘟文。",
   "embed.preview": "它会像这样显示出来:",
   "emoji_button.activity": "活动",
   "emoji_button.custom": "自定义",
@@ -161,15 +161,15 @@
   "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.bookmarked_statuses": "你还没有给任何嘟文添加过书签。在你添加书签后,嘟文就会显示在这里。",
   "empty_column.community": "本站时间轴暂时没有内容,快写点什么让它动起来吧!",
   "empty_column.direct": "你还未使用过私信。当你发出或者收到私信时,它将显示在此。",
-  "empty_column.domain_blocks": "目前没有被隐藏的站点。",
+  "empty_column.domain_blocks": "暂且没有被屏蔽的站点。",
   "empty_column.explore_statuses": "目前没有热门话题,稍后再来看看吧!",
-  "empty_column.favourited_statuses": "你还未喜欢过任何帖子。当你喜欢帖子时,它将显示在此。",
+  "empty_column.favourited_statuses": "你还没有喜欢过任何嘟文。喜欢过的嘟文会显示在这里。",
   "empty_column.favourites": "没有人喜欢过这条嘟文。如果有人喜欢了,就会显示在这里。",
   "empty_column.follow_recommendations": "似乎无法为你生成任何建议。你可以尝试使用搜索寻找你可能知道的人或探索热门标签。",
   "empty_column.follow_requests": "你没有收到新的关注请求。收到后将显示在此。",
@@ -180,7 +180,7 @@
   "empty_column.lists": "你还没有创建过列表。你创建的列表会在这里显示。",
   "empty_column.mutes": "你没有隐藏任何用户。",
   "empty_column.notifications": "你还没有收到过任何通知,快和其他用户互动吧。",
-  "empty_column.public": "这里什么都没有!写一些公开帖子,或者关注其他服务器的用户后,这里就会有嘟文出现了",
+  "empty_column.public": "这里什么都没有!写一些公开的嘟文,或者关注其他服务器的用户后,这里就会有嘟文出现了",
   "error.unexpected_crash.explanation": "此页面无法正确显示,这可能是因为我们的代码中有错误,也可能是因为浏览器兼容问题。",
   "error.unexpected_crash.explanation_addons": "此页面无法正确显示,这个错误很可能是由浏览器附加组件或自动翻译工具造成的。",
   "error.unexpected_crash.next_steps": "刷新一下页面试试。如果没用,你可以换个浏览器或者用本地应用。",
@@ -191,14 +191,14 @@
   "explore.suggested_follows": "为你推荐",
   "explore.title": "探索",
   "explore.trending_links": "最新消息",
-  "explore.trending_statuses": "帖子",
+  "explore.trending_statuses": "嘟文",
   "explore.trending_tags": "话题标签",
   "follow_recommendations.done": "完成",
   "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。",
-  "follow_recommendations.lead": "你关注的人的帖子将按时间顺序显示在你的主页。 别担心,你可以随时取消关注!",
+  "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!",
   "follow_request.authorize": "授权",
   "follow_request.reject": "拒绝",
-  "follow_requests.unlocked_explanation": "虽说你没有锁嘟,但是 {domain} 的工作人员觉得你可能想手工审核这些账号的关注请求。",
+  "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。",
   "generic.saved": "已保存",
   "getting_started.developers": "开发",
   "getting_started.directory": "用户目录",
@@ -233,30 +233,30 @@
   "keyboard_shortcuts.description": "说明",
   "keyboard_shortcuts.direct": "打开私信栏",
   "keyboard_shortcuts.down": "在列表中让光标下移",
-  "keyboard_shortcuts.enter": "展开帖子",
-  "keyboard_shortcuts.favourite": "喜欢帖子",
-  "keyboard_shortcuts.favourites": "打开喜欢的帖子列表",
+  "keyboard_shortcuts.enter": "展开嘟文",
+  "keyboard_shortcuts.favourite": "喜欢嘟文",
+  "keyboard_shortcuts.favourites": "打开喜欢的嘟文列表",
   "keyboard_shortcuts.federated": "打开跨站时间轴",
   "keyboard_shortcuts.heading": "快捷键列表",
   "keyboard_shortcuts.home": "打开主页时间轴",
   "keyboard_shortcuts.hotkey": "快捷键",
   "keyboard_shortcuts.legend": "显示此列表",
   "keyboard_shortcuts.local": "打开本站时间轴",
-  "keyboard_shortcuts.mention": "提及作者",
-  "keyboard_shortcuts.muted": "打开已隐藏用户列表",
+  "keyboard_shortcuts.mention": "提及嘟文作者",
+  "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.reply": "回复嘟文",
   "keyboard_shortcuts.requests": "打开关注请求列表",
   "keyboard_shortcuts.search": "选择搜索框",
   "keyboard_shortcuts.spoilers": "显示或隐藏被折叠的正文",
   "keyboard_shortcuts.start": "打开“开始使用”栏",
   "keyboard_shortcuts.toggle_hidden": "显示或隐藏被折叠的正文",
   "keyboard_shortcuts.toggle_sensitivity": "显示/隐藏媒体",
-  "keyboard_shortcuts.toot": "发布新帖子",
+  "keyboard_shortcuts.toot": "发送新嘟文",
   "keyboard_shortcuts.unfocus": "取消输入/搜索",
   "keyboard_shortcuts.up": "在列表中让光标上移",
   "lightbox.close": "关闭",
@@ -264,6 +264,8 @@
   "lightbox.expand": "放大查看图片",
   "lightbox.next": "下一个",
   "lightbox.previous": "上一个",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "添加到列表",
   "lists.account.remove": "从列表中移除",
   "lists.delete": "删除列表",
@@ -289,7 +291,7 @@
   "navigation_bar.blocks": "已屏蔽的用户",
   "navigation_bar.bookmarks": "书签",
   "navigation_bar.community_timeline": "本站时间轴",
-  "navigation_bar.compose": "撰写新帖子",
+  "navigation_bar.compose": "撰写新嘟文",
   "navigation_bar.direct": "私信",
   "navigation_bar.discover": "发现",
   "navigation_bar.domain_blocks": "已屏蔽的域名",
@@ -305,20 +307,20 @@
   "navigation_bar.logout": "登出",
   "navigation_bar.mutes": "已隐藏的用户",
   "navigation_bar.personal": "个人",
-  "navigation_bar.pins": "置顶帖子",
+  "navigation_bar.pins": "置顶嘟文",
   "navigation_bar.preferences": "首选项",
   "navigation_bar.public_timeline": "跨站公共时间轴",
   "navigation_bar.security": "安全",
   "notification.admin.sign_up": "{name} 已注册",
-  "notification.favourite": "{name} 喜欢了你的帖子",
+  "notification.favourite": "{name} 喜欢了你的嘟文",
   "notification.follow": "{name} 开始关注你",
   "notification.follow_request": "{name} 向你发送了关注请求",
   "notification.mention": "{name} 提及了你",
   "notification.own_poll": "你的投票已经结束",
   "notification.poll": "你参与的一个投票已经结束",
   "notification.reblog": "{name} 转嘟了你的嘟文",
-  "notification.status": "{name} 刚刚发帖",
-  "notification.update": "{name} 编辑了帖子",
+  "notification.status": "{name} 刚刚发嘟",
+  "notification.update": "{name} 编辑了嘟文",
   "notifications.clear": "清空通知列表",
   "notifications.clear_confirmation": "你确定要永久清空通知列表吗?",
   "notifications.column_settings.admin.sign_up": "新注册:",
@@ -390,7 +392,7 @@
   "relative_time.today": "今天",
   "reply_indicator.cancel": "取消",
   "report.block": "屏蔽",
-  "report.block_explanation": "你将看不到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断他们被屏蔽了。",
+  "report.block_explanation": "你将无法看到他们的帖子。他们也将无法看到你的帖子或关注你。他们将能够判断出他们被屏蔽了。",
   "report.categories.other": "其他",
   "report.categories.spam": "垃圾信息",
   "report.categories.violation": "内容违反一条或多条服务器规则",
@@ -402,8 +404,8 @@
   "report.comment.title": "还有什么你认为我们应该知道的吗?",
   "report.forward": "转发举报至 {target}",
   "report.forward_hint": "这名用户来自另一个服务器。是否要向那个服务器发送一条匿名的举报?",
-  "report.mute": "静音",
-  "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的帖子,但他们不会知道他们被静音了。",
+  "report.mute": "隐藏",
+  "report.mute_explanation": "你将不会看到他们的嘟文。他们仍然可以关注你并看到你的嘟文,但他们不会知道你忽略了来自他们的信息。",
   "report.next": "下一步",
   "report.placeholder": "备注",
   "report.reasons.dislike": "我不喜欢它",
@@ -445,8 +447,8 @@
   "status.block": "屏蔽 @{name}",
   "status.bookmark": "添加到书签",
   "status.cancel_reblog_private": "取消转贴",
-  "status.cannot_reblog": "此贴不允许被转贴",
-  "status.copy": "复制帖子链接",
+  "status.cannot_reblog": "这条嘟文不允许被转嘟",
+  "status.copy": "复制嘟文链接",
   "status.delete": "删除",
   "status.detailed_status": "详细的对话视图",
   "status.direct": "私信 @{name}",
@@ -463,15 +465,15 @@
   "status.mention": "提及 @{name}",
   "status.more": "更多",
   "status.mute": "隐藏 @{name}",
-  "status.mute_conversation": "将此对话静音",
-  "status.open": "展开此贴",
-  "status.pin": "在个人资料页面置顶",
-  "status.pinned": "置顶帖子",
+  "status.mute_conversation": "禁用此对话的消息提醒",
+  "status.open": "展开嘟文",
+  "status.pin": "固定在个人资料页面上",
+  "status.pinned": "置顶嘟文",
   "status.read_more": "查看更多",
   "status.reblog": "转嘟",
-  "status.reblog_private": "转贴(可见者不变)",
-  "status.reblogged_by": "{name} 转贴了",
-  "status.reblogs.empty": "没有人转贴过此贴。如果有人转贴了将显示在此。",
+  "status.reblog_private": "转嘟(可见者不变)",
+  "status.reblogged_by": "{name} 转嘟了",
+  "status.reblogs.empty": "没有人转嘟过此条嘟文。如果有人转嘟了,就会显示在这里。",
   "status.redraft": "删除并重新编辑",
   "status.remove_bookmark": "移除书签",
   "status.reply": "回复",
@@ -485,8 +487,8 @@
   "status.show_more_all": "显示全部内容",
   "status.show_thread": "显示全部对话",
   "status.uncached_media_warning": "暂不可用",
-  "status.unmute_conversation": "将此对话解除静音",
-  "status.unpin": "在个人资料页面取消置顶",
+  "status.unmute_conversation": "恢复此对话的通知提醒",
+  "status.unpin": "从个人资料页面上取消固定",
   "suggestions.dismiss": "关闭建议",
   "suggestions.header": "你可能会感兴趣…",
   "tabs_bar.federated_timeline": "跨站",
@@ -502,7 +504,7 @@
   "timeline_hint.remote_resource_not_displayed": "不会显示来自其它服务器的 {resource}",
   "timeline_hint.resources.followers": "关注者",
   "timeline_hint.resources.follows": "关注",
-  "timeline_hint.resources.statuses": "更早的帖子",
+  "timeline_hint.resources.statuses": "更早的嘟文",
   "trends.counter_by_accounts": "{count, plural, one {{counter} 人} other {{counter} 人}}正在讨论",
   "trends.trending_now": "现在流行",
   "ui.beforeunload": "如果你现在离开 Mastodon,你的草稿内容将会丢失。",
@@ -540,5 +542,5 @@
   "video.mute": "静音",
   "video.pause": "暂停",
   "video.play": "播放",
-  "video.unmute": "取消静音"
+  "video.unmute": "解除禁音"
 }
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index f59ad7a2a..efec4807d 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -264,6 +264,8 @@
   "lightbox.expand": "擴大檢視",
   "lightbox.next": "下一頁",
   "lightbox.previous": "上一頁",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "新增到列表",
   "lists.account.remove": "從列表刪除",
   "lists.delete": "刪除列表",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index f78e07ee2..82b774a4b 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -25,7 +25,7 @@
   "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟",
   "account.joined": "加入於 {date}",
   "account.link_verified_on": "已在 {date} 檢查此連結的擁有者權限",
-  "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳戶的人。",
+  "account.locked_info": "此帳戶的隱私狀態被設為鎖定。該擁有者會手動審核能跟隨此帳號的人。",
   "account.media": "媒體",
   "account.mention": "提及 @{name}",
   "account.moved_to": "{name} 已遷移至:",
@@ -95,7 +95,7 @@
   "compose_form.direct_message_warning_learn_more": "了解更多",
   "compose_form.encryption_warning": "Mastodon 上的嘟文並未端到端加密。請不要透過 Mastodon 分享任何敏感資訊。",
   "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。",
-  "compose_form.lock_disclaimer": "您的帳戶尚未 {locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。",
+  "compose_form.lock_disclaimer": "您的帳號尚未 {locked}。任何人皆能跟隨您並看到您設定成只有跟隨者能看的嘟文。",
   "compose_form.lock_disclaimer.lock": "上鎖",
   "compose_form.placeholder": "正在想些什麼嗎?",
   "compose_form.poll.add_option": "新增選項",
@@ -124,7 +124,7 @@
   "confirmations.discard_edit_media.confirm": "捨棄",
   "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
   "confirmations.domain_block.confirm": "隱藏整個域名",
-  "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
+  "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳號能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
   "confirmations.logout.confirm": "登出",
   "confirmations.logout.message": "您確定要登出嗎?",
   "confirmations.mute.confirm": "靜音",
@@ -160,7 +160,7 @@
   "emoji_button.search_results": "搜尋結果",
   "emoji_button.symbols": "符號",
   "emoji_button.travel": "旅遊與地點",
-  "empty_column.account_suspended": "帳戶被暫停",
+  "empty_column.account_suspended": "帳號被暫停",
   "empty_column.account_timeline": "這裡還沒有嘟文!",
   "empty_column.account_unavailable": "無法取得個人檔案",
   "empty_column.blocks": "您還沒有封鎖任何使用者。",
@@ -198,7 +198,7 @@
   "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!",
   "follow_request.authorize": "授權",
   "follow_request.reject": "拒絕",
-  "follow_requests.unlocked_explanation": "即便您的帳戶未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳戶的跟隨請求。",
+  "follow_requests.unlocked_explanation": "即便您的帳號未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳號的跟隨請求。",
   "generic.saved": "已儲存",
   "getting_started.developers": "開發者",
   "getting_started.directory": "個人檔案目錄",
@@ -206,7 +206,7 @@
   "getting_started.heading": "開始使用",
   "getting_started.invite": "邀請使用者",
   "getting_started.open_source_notice": "Mastodon 是開源軟體。您可以在 GitHub {github} 上貢獻或是回報問題。",
-  "getting_started.security": "帳戶安全性設定",
+  "getting_started.security": "帳號安全性設定",
   "getting_started.terms": "服務條款",
   "hashtag.column_header.tag_mode.all": "以及 {additional}",
   "hashtag.column_header.tag_mode.any": "或是 {additional}",
@@ -264,6 +264,8 @@
   "lightbox.expand": "展開圖片檢視框",
   "lightbox.next": "下一步",
   "lightbox.previous": "上一步",
+  "limited_account_hint.action": "Show profile anyway",
+  "limited_account_hint.title": "This profile has been hidden by the moderators of your server.",
   "lists.account.add": "新增至列表",
   "lists.account.remove": "從列表中移除",
   "lists.delete": "刪除列表",
@@ -401,7 +403,7 @@
   "report.close": "已完成",
   "report.comment.title": "有什麼其他您想讓我們知道的嗎?",
   "report.forward": "轉寄到 {target}",
-  "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?",
+  "report.forward_hint": "這個帳號屬於其他伺服器。要向該伺服器發送匿名的檢舉訊息嗎?",
   "report.mute": "靜音",
   "report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。",
   "report.next": "繼續",
@@ -428,10 +430,10 @@
   "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。",
   "search.placeholder": "搜尋",
   "search_popout.search_format": "進階搜尋格式",
-  "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。",
+  "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳號顯示名稱和主題標籤。",
   "search_popout.tips.hashtag": "主題標籤",
   "search_popout.tips.status": "嘟文",
-  "search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳戶名稱與標籤",
+  "search_popout.tips.text": "輸入簡單的文字,搜尋符合的使用者名稱,帳號名稱與標籤",
   "search_popout.tips.user": "使用者",
   "search_results.accounts": "使用者",
   "search_results.all": "全部",
diff --git a/app/lib/activitypub/activity.rb b/app/lib/activitypub/activity.rb
index 3c51a7a51..7ff06ea39 100644
--- a/app/lib/activitypub/activity.rb
+++ b/app/lib/activitypub/activity.rb
@@ -3,6 +3,7 @@
 class ActivityPub::Activity
   include JsonLdHelper
   include Redisable
+  include Lockable
 
   SUPPORTED_TYPES = %w(Note Question).freeze
   CONVERTED_TYPES = %w(Image Audio Video Article Page Event).freeze
@@ -157,22 +158,6 @@ class ActivityPub::Activity
     end
   end
 
-  def lock_or_return(key, expire_after = 2.hours.seconds)
-    yield if redis.set(key, true, nx: true, ex: expire_after)
-  ensure
-    redis.del(key)
-  end
-
-  def lock_or_fail(key, expire_after = 15.minutes.seconds)
-    RedisLock.acquire({ redis: redis, key: key, autorelease: expire_after }) do |lock|
-      if lock.acquired?
-        yield
-      else
-        raise Mastodon::RaceConditionError
-      end
-    end
-  end
-
   def fetch?
     !@options[:delivery]
   end
diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb
index 0674b1083..e6674be8a 100644
--- a/app/lib/activitypub/activity/announce.rb
+++ b/app/lib/activitypub/activity/announce.rb
@@ -4,7 +4,7 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
   def perform
     return reject_payload! if delete_arrived_first?(@json['id']) || !related_to_local_activity?
 
-    lock_or_fail("announce:#{@object['id']}") do
+    with_lock("announce:#{value_or_id(@object)}") do
       original_status = status_from_object
 
       return reject_payload! if original_status.nil? || !announceable?(original_status)
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 09fe08d45..ebae12973 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -47,7 +47,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
   def create_status
     return reject_payload! if unsupported_object_type? || invalid_origin?(object_uri) || tombstone_exists? || !related_to_local_activity?
 
-    lock_or_fail("create:#{object_uri}") do
+    with_lock("create:#{object_uri}") do
       return if delete_arrived_first?(object_uri) || poll_vote?
 
       @status = find_existing_status
@@ -315,7 +315,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
     poll = replied_to_status.preloadable_poll
     already_voted = true
 
-    lock_or_fail("vote:#{replied_to_status.poll_id}:#{@account.id}") do
+    with_lock("vote:#{replied_to_status.poll_id}:#{@account.id}") do
       already_voted = poll.votes.where(account: @account).exists?
       poll.votes.create!(account: @account, choice: poll.options.index(@object['name']), uri: object_uri)
     end
diff --git a/app/lib/activitypub/activity/delete.rb b/app/lib/activitypub/activity/delete.rb
index f5ef863f3..871eb3966 100644
--- a/app/lib/activitypub/activity/delete.rb
+++ b/app/lib/activitypub/activity/delete.rb
@@ -12,7 +12,7 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
   private
 
   def delete_person
-    lock_or_return("delete_in_progress:#{@account.id}") do
+    with_lock("delete_in_progress:#{@account.id}", autorelease: 2.hours, raise_on_failure: false) do
       DeleteAccountService.new.call(@account, reserve_username: false, skip_activitypub: true)
     end
   end
@@ -20,14 +20,14 @@ class ActivityPub::Activity::Delete < ActivityPub::Activity
   def delete_note
     return if object_uri.nil?
 
-    lock_or_return("delete_status_in_progress:#{object_uri}", 5.minutes.seconds) do
+    with_lock("delete_status_in_progress:#{object_uri}", raise_on_failure: false) do
       unless invalid_origin?(object_uri)
         # This lock ensures a concurrent `ActivityPub::Activity::Create` either
         # does not create a status at all, or has finished saving it to the
         # database before we try to load it.
         # Without the lock, `delete_later!` could be called after `delete_arrived_first?`
         # and `Status.find` before `Status.create!`
-        lock_or_fail("create:#{object_uri}") { delete_later!(object_uri) }
+        with_lock("create:#{object_uri}") { delete_later!(object_uri) }
 
         Tombstone.find_or_create_by(uri: object_uri, account: @account)
       end
diff --git a/app/models/account_migration.rb b/app/models/account_migration.rb
index ded32c9c6..06291c9f3 100644
--- a/app/models/account_migration.rb
+++ b/app/models/account_migration.rb
@@ -15,6 +15,7 @@
 
 class AccountMigration < ApplicationRecord
   include Redisable
+  include Lockable
 
   COOLDOWN_PERIOD = 30.days.freeze
 
@@ -41,12 +42,8 @@ class AccountMigration < ApplicationRecord
 
     return false unless errors.empty?
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        save
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("account_migration:#{account.id}") do
+      save
     end
   end
 
@@ -83,8 +80,4 @@ class AccountMigration < ApplicationRecord
   def validate_migration_cooldown
     errors.add(:base, I18n.t('migrations.errors.on_cooldown')) if account.migrations.within_cooldown.exists?
   end
-
-  def lock_options
-    { redis: redis, key: "account_migration:#{account.id}" }
-  end
 end
diff --git a/app/models/concerns/lockable.rb b/app/models/concerns/lockable.rb
new file mode 100644
index 000000000..55a9714ca
--- /dev/null
+++ b/app/models/concerns/lockable.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+module Lockable
+  # @param [String] lock_name
+  # @param [ActiveSupport::Duration] autorelease Automatically release the lock after this time
+  # @param [Boolean] raise_on_failure Raise an error if a lock cannot be acquired, or fail silently
+  # @raise [Mastodon::RaceConditionError]
+  def with_lock(lock_name, autorelease: 15.minutes, raise_on_failure: true)
+    with_redis do |redis|
+      RedisLock.acquire(redis: redis, key: "lock:#{lock_name}", autorelease: autorelease.seconds) do |lock|
+        if lock.acquired?
+          yield
+        elsif raise_on_failure
+          raise Mastodon::RaceConditionError, "Could not acquire lock for #{lock_name}, try again later"
+        end
+      end
+    end
+  end
+end
diff --git a/app/models/concerns/redisable.rb b/app/models/concerns/redisable.rb
index 8d76b6b82..0dad3abb2 100644
--- a/app/models/concerns/redisable.rb
+++ b/app/models/concerns/redisable.rb
@@ -1,11 +1,11 @@
 # frozen_string_literal: true
 
 module Redisable
-  extend ActiveSupport::Concern
-
-  private
-
   def redis
     Thread.current[:redis] ||= RedisConfiguration.pool.checkout
   end
+
+  def with_redis(&block)
+    RedisConfiguration.with(&block)
+  end
 end
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 5649153ee..4449a5427 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -4,6 +4,7 @@ class ActivityPub::ProcessAccountService < BaseService
   include JsonLdHelper
   include DomainControlHelper
   include Redisable
+  include Lockable
 
   # Should be called with confirmed valid JSON
   # and WebFinger-resolved username and domain
@@ -17,22 +18,18 @@ class ActivityPub::ProcessAccountService < BaseService
     @domain      = domain
     @collections = {}
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        @account            = Account.remote.find_by(uri: @uri) if @options[:only_key]
-        @account          ||= Account.find_remote(@username, @domain)
-        @old_public_key     = @account&.public_key
-        @old_protocol       = @account&.protocol
-        @suspension_changed = false
-
-        create_account if @account.nil?
-        update_account
-        process_tags
-
-        process_duplicate_accounts! if @options[:verified_webfinger]
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("process_account:#{@uri}") do
+      @account            = Account.remote.find_by(uri: @uri) if @options[:only_key]
+      @account          ||= Account.find_remote(@username, @domain)
+      @old_public_key     = @account&.public_key
+      @old_protocol       = @account&.protocol
+      @suspension_changed = false
+
+      create_account if @account.nil?
+      update_account
+      process_tags
+
+      process_duplicate_accounts! if @options[:verified_webfinger]
     end
 
     return if @account.nil?
@@ -289,10 +286,6 @@ class ActivityPub::ProcessAccountService < BaseService
     !@old_protocol.nil? && @old_protocol != @account.protocol
   end
 
-  def lock_options
-    { redis: redis, key: "process_account:#{@uri}", autorelease: 15.minutes.seconds }
-  end
-
   def process_tags
     return if @json['tag'].blank?
 
diff --git a/app/services/activitypub/process_status_update_service.rb b/app/services/activitypub/process_status_update_service.rb
index fb6e44c6d..addd5fc27 100644
--- a/app/services/activitypub/process_status_update_service.rb
+++ b/app/services/activitypub/process_status_update_service.rb
@@ -3,6 +3,7 @@
 class ActivityPub::ProcessStatusUpdateService < BaseService
   include JsonLdHelper
   include Redisable
+  include Lockable
 
   def call(status, json)
     raise ArgumentError, 'Status has unsaved changes' if status.changed?
@@ -33,41 +34,32 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
     last_edit_date = @status.edited_at.presence || @status.created_at
 
     # Only allow processing one create/update per status at a time
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        Status.transaction do
-          record_previous_edit!
-          update_media_attachments!
-          update_poll!
-          update_immediate_attributes!
-          update_metadata!
-          create_edits!
-        end
+    with_lock("create:#{@uri}") do
+      Status.transaction do
+        record_previous_edit!
+        update_media_attachments!
+        update_poll!
+        update_immediate_attributes!
+        update_metadata!
+        create_edits!
+      end
 
-        queue_poll_notifications!
+      queue_poll_notifications!
 
-        next unless significant_changes?
+      next unless significant_changes?
 
-        reset_preview_card!
-        broadcast_updates!
-      else
-        raise Mastodon::RaceConditionError
-      end
+      reset_preview_card!
+      broadcast_updates!
     end
 
     forward_activity! if significant_changes? && @status_parser.edited_at > last_edit_date
   end
 
   def handle_implicit_update!
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        update_poll!(allow_significant_changes: false)
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("create:#{@uri}") do
+      update_poll!(allow_significant_changes: false)
+      queue_poll_notifications!
     end
-
-    queue_poll_notifications!
   end
 
   def update_media_attachments!
@@ -241,10 +233,6 @@ class ActivityPub::ProcessStatusUpdateService < BaseService
     equals_or_includes_any?(@json['type'], %w(Note Question))
   end
 
-  def lock_options
-    { redis: redis, key: "create:#{@uri}", autorelease: 15.minutes.seconds }
-  end
-
   def record_previous_edit!
     @previous_edit = @status.build_snapshot(at_time: @status.created_at, rate_limit: false) if @status.edits.empty?
   end
diff --git a/app/services/fetch_link_card_service.rb b/app/services/fetch_link_card_service.rb
index 868796a6b..e5b5b730e 100644
--- a/app/services/fetch_link_card_service.rb
+++ b/app/services/fetch_link_card_service.rb
@@ -2,6 +2,7 @@
 
 class FetchLinkCardService < BaseService
   include Redisable
+  include Lockable
 
   URL_PATTERN = %r{
     (#{Twitter::TwitterText::Regex[:valid_url_preceding_chars]})                                                                #   $1 preceding chars
@@ -22,13 +23,9 @@ class FetchLinkCardService < BaseService
 
     @url = @original_url.to_s
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        @card = PreviewCard.find_by(url: @url)
-        process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("fetch:#{@original_url}") do
+      @card = PreviewCard.find_by(url: @url)
+      process_url if @card.nil? || @card.updated_at <= 2.weeks.ago || @card.missing_image?
     end
 
     attach_card if @card&.persisted?
@@ -155,8 +152,4 @@ class FetchLinkCardService < BaseService
     @card.assign_attributes(link_details_extractor.to_preview_card_attributes)
     @card.save_with_optional_image! unless @card.title.blank? && @card.html.blank?
   end
-
-  def lock_options
-    { redis: redis, key: "fetch:#{@original_url}", autorelease: 15.minutes.seconds }
-  end
 end
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index c31d89776..97afc3f61 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -3,6 +3,7 @@
 class RemoveStatusService < BaseService
   include Redisable
   include Payloadable
+  include Lockable
 
   # Delete a status
   # @param   [Status] status
@@ -17,38 +18,34 @@ class RemoveStatusService < BaseService
     @account  = status.account
     @options  = options
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        @status.discard
-
-        remove_from_self if @account.local?
-        remove_from_followers
-        remove_from_lists
-
-        # There is no reason to send out Undo activities when the
-        # cause is that the original object has been removed, since
-        # original object being removed implicitly removes reblogs
-        # of it. The Delete activity of the original is forwarded
-        # separately.
-        remove_from_remote_reach if @account.local? && !@options[:original_removed]
-
-        # Since reblogs don't mention anyone, don't get reblogged,
-        # favourited and don't contain their own media attachments
-        # or hashtags, this can be skipped
-        unless @status.reblog?
-          remove_from_mentions
-          remove_reblogs
-          remove_from_hashtags
-          remove_from_public
-          remove_from_media if @status.with_media?
-          remove_from_direct if status.direct_visibility?
-          remove_media
-        end
-
-        @status.destroy! if permanently?
-      else
-        raise Mastodon::RaceConditionError
+    with_lock("distribute:#{@status.id}") do
+      @status.discard
+
+      remove_from_self if @account.local?
+      remove_from_followers
+      remove_from_lists
+
+      # There is no reason to send out Undo activities when the
+      # cause is that the original object has been removed, since
+      # original object being removed implicitly removes reblogs
+      # of it. The Delete activity of the original is forwarded
+      # separately.
+      remove_from_remote_reach if @account.local? && !@options[:original_removed]
+
+      # Since reblogs don't mention anyone, don't get reblogged,
+      # favourited and don't contain their own media attachments
+      # or hashtags, this can be skipped
+      unless @status.reblog?
+        remove_from_mentions
+        remove_reblogs
+        remove_from_hashtags
+        remove_from_public
+        remove_from_media if @status.with_media?
+        remove_from_direct if status.direct_visibility?
+        remove_media
       end
+
+      @status.destroy! if permanently?
     end
   end
 
@@ -152,8 +149,4 @@ class RemoveStatusService < BaseService
   def permanently?
     @options[:immediate] || !(@options[:preserve] || @status.reported?)
   end
-
-  def lock_options
-    { redis: redis, key: "distribute:#{@status.id}", autorelease: 5.minutes.seconds }
-  end
 end
diff --git a/app/services/resolve_account_service.rb b/app/services/resolve_account_service.rb
index 387e2e09b..b55e45409 100644
--- a/app/services/resolve_account_service.rb
+++ b/app/services/resolve_account_service.rb
@@ -5,6 +5,7 @@ class ResolveAccountService < BaseService
   include DomainControlHelper
   include WebfingerHelper
   include Redisable
+  include Lockable
 
   # Find or create an account record for a remote user. When creating,
   # look up the user's webfinger and fetch ActivityPub data
@@ -108,12 +109,8 @@ class ResolveAccountService < BaseService
   def fetch_account!
     return unless activitypub_ready?
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url)
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("resolve:#{@username}@#{@domain}") do
+      @account = ActivityPub::FetchRemoteAccountService.new.call(actor_url)
     end
 
     @account
@@ -146,8 +143,4 @@ class ResolveAccountService < BaseService
     @account.suspend!(origin: :remote)
     AccountDeletionWorker.perform_async(@account.id, { 'reserve_username' => false, 'skip_activitypub' => true })
   end
-
-  def lock_options
-    { redis: redis, key: "resolve:#{@username}@#{@domain}", autorelease: 15.minutes.seconds }
-  end
 end
diff --git a/app/services/vote_service.rb b/app/services/vote_service.rb
index b77812970..ccd04dbfc 100644
--- a/app/services/vote_service.rb
+++ b/app/services/vote_service.rb
@@ -4,6 +4,7 @@ class VoteService < BaseService
   include Authorization
   include Payloadable
   include Redisable
+  include Lockable
 
   def call(account, poll, choices)
     authorize_with account, poll, :vote?
@@ -15,17 +16,13 @@ class VoteService < BaseService
 
     already_voted = true
 
-    RedisLock.acquire(lock_options) do |lock|
-      if lock.acquired?
-        already_voted = @poll.votes.where(account: @account).exists?
+    with_lock("vote:#{@poll.id}:#{@account.id}") do
+      already_voted = @poll.votes.where(account: @account).exists?
 
-        ApplicationRecord.transaction do
-          @choices.each do |choice|
-            @votes << @poll.votes.create!(account: @account, choice: Integer(choice))
-          end
+      ApplicationRecord.transaction do
+        @choices.each do |choice|
+          @votes << @poll.votes.create!(account: @account, choice: Integer(choice))
         end
-      else
-        raise Mastodon::RaceConditionError
       end
     end
 
@@ -76,8 +73,4 @@ class VoteService < BaseService
     @poll.reload
     retry
   end
-
-  def lock_options
-    { redis: redis, key: "vote:#{@poll.id}:#{@account.id}" }
-  end
 end
diff --git a/app/views/tags/show.rss.ruby b/app/views/tags/show.rss.ruby
index 4152ecd24..f4481b81c 100644
--- a/app/views/tags/show.rss.ruby
+++ b/app/views/tags/show.rss.ruby
@@ -3,7 +3,6 @@ RSS::Builder.build do |doc|
   doc.description(I18n.t('rss.descriptions.tag', hashtag: @tag.name))
   doc.link(tag_url(@tag))
   doc.last_build_date(@statuses.first.created_at) if @statuses.any?
-  doc.icon(full_asset_url(@account.avatar.url(:original)))
   doc.logo(full_pack_url('media/images/logo_transparent_white.svg'))
   doc.generator("Mastodon v#{Mastodon::Version.to_s}")
 
diff --git a/app/workers/distribution_worker.rb b/app/workers/distribution_worker.rb
index 474b4daaf..59cdbc7b2 100644
--- a/app/workers/distribution_worker.rb
+++ b/app/workers/distribution_worker.rb
@@ -3,14 +3,11 @@
 class DistributionWorker
   include Sidekiq::Worker
   include Redisable
+  include Lockable
 
   def perform(status_id, options = {})
-    RedisLock.acquire(redis: redis, key: "distribute:#{status_id}", autorelease: 5.minutes.seconds) do |lock|
-      if lock.acquired?
-        FanOutOnWriteService.new.call(Status.find(status_id), **options.symbolize_keys)
-      else
-        raise Mastodon::RaceConditionError
-      end
+    with_lock("distribute:#{status_id}") do
+      FanOutOnWriteService.new.call(Status.find(status_id), **options.symbolize_keys)
     end
   rescue ActiveRecord::RecordNotFound
     true
diff --git a/chart/templates/configmap-env.yaml b/chart/templates/configmap-env.yaml
index 5e0620998..aa242684f 100644
--- a/chart/templates/configmap-env.yaml
+++ b/chart/templates/configmap-env.yaml
@@ -83,6 +83,9 @@ data:
   SMTP_TLS: {{ .Values.mastodon.smtp.tls | quote }}
   {{- end }}
   STREAMING_CLUSTER_NUM: {{ .Values.mastodon.streaming.workers | quote }}
+  {{- if .Values.mastodon.streaming.base_url }}
+  STREAMING_API_BASE_URL: {{ .Values.mastodon.streaming.base_url | quote }}
+  {{- end }}
   {{- if .Values.externalAuth.oidc.enabled }}
   OIDC_ENABLED: {{ .Values.externalAuth.oidc.enabled | quote }}
   OIDC_DISPLAY_NAME: {{ .Values.externalAuth.oidc.display_name }}
@@ -300,4 +303,4 @@ data:
   {{- if .Values.externalAuth.ldap.uid_conversion.replace }}
   LDAP_UID_CONVERSION_REPLACE: {{ .Values.externalAuth.ldap.uid_conversion.replace }}
   {{- end }}
-  {{- end }}
\ No newline at end of file
+  {{- end }}
diff --git a/chart/values.yaml b/chart/values.yaml
index 57d0b7391..2cfa3484b 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -83,6 +83,9 @@ mastodon:
     # the node running the pod, which is unrelated to the resources allocated to
     # the pod by k8s
     workers: 1
+    # The base url for streaming can be set if the streaming API is deployed to
+    # a different domain/subdomain.
+    # base_url: wws://streaming.example.com
   web:
     port: 3000
 
diff --git a/config/locales/activerecord.af.yml b/config/locales/activerecord.af.yml
index 252f9fd5a..8882df613 100644
--- a/config/locales/activerecord.af.yml
+++ b/config/locales/activerecord.af.yml
@@ -1 +1,32 @@
+---
 af:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: Sperdatum
+        options: Keuses
+      user:
+        agreement: Diensooreenkoms
+        email: E-pos adres
+        locale: Plaaslik
+        password: Wagwoord
+      user/account:
+        username: Gebruikersnaam
+      user/invite_request:
+        text: Rede
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: moet slegs letters, nommers en onderstrepe bevat
+              reserved: is gereserveer
+        status:
+          attributes:
+            reblog:
+              taken: van plasing bestaan reeds
+        user:
+          attributes:
+            email:
+              blocked: maak gebruik van 'n e-pos verskaffer wat nie toegelaat word nie
+              unreachable: blyk nie te bestaan nie
diff --git a/config/locales/af.yml b/config/locales/af.yml
index c60cbf41a..bc54cfdfd 100644
--- a/config/locales/af.yml
+++ b/config/locales/af.yml
@@ -1,9 +1,21 @@
 ---
 af:
+  about:
+    contact_unavailable: NVT
+    continue_to_web: Gaan voort na web toepassing
+    discover_users: Verken gebruikers
+    documentation: Dokumentasie
+    federation_hint_html: Met 'n rekening op %{instance} sal jy in staat wees om mense op enige Mastodon en federasie bediener te volg.
+    get_apps: Probeer 'n mobiele toepassing
+    hosted_on: Mastodon gehuisves op %{domain}
   admin:
     trends:
       only_allowed: Slegs toegelate
       trending: Gewild
+  disputes:
+    strikes:
+      approve_appeal: Aanvaar appêl
+      reject_appeal: Verwerp appêl
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': You don't have permission to view this page.
@@ -14,3 +26,11 @@ af:
     '429': Too many requests
     '500': 
     '503': The page could not be served due to a temporary server failure.
+  rss:
+    content_warning: 'Inhoud waarskuwing:'
+    descriptions:
+      account: Publieke plasings vanaf @%{acct}
+      tag: 'Publieke plasings met die #%{hashtag} etiket'
+  strikes:
+    errors:
+      too_late: Dit is te laat om hierdie staking te appelleer
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index 13c698853..a9f0c1730 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -380,6 +380,7 @@ ar:
       enable: تفعيل
       enabled: مُشغَّل
       enabled_msg: تم تنشيط ذاك الإيموجي بنجاح
+      image_hint: ملف PNG أو GIF لا يتعدى %{size}
       list: القائمة
       listed: مُدرَج
       new:
@@ -470,16 +471,20 @@ ar:
       back_to_limited: محدود
       back_to_warning: تحذير
       by_domain: النطاق
+      confirm_purge: هل أنت متأكد من أنك تريد حذف البيانات من هذا النطاق بشكل دائم؟
       content_policies:
         comment: ملاحظة داخلية
+        description_html: يمكنك تحديد سياسات المحتوى التي سيتم تطبيقها على جميع حسابات هذا النطاق وأي من نطاقاته الفرعية.
         policies:
           reject_media: رفض الوسائط
           reject_reports: رفض الشكاوى
+          silence: كتم
         policy: القواعد
         reason: السبب العلني
         title: سياسات المحتوى
       dashboard:
         instance_accounts_dimension: الحسابات الأكثر متابعة
+        instance_accounts_measure: حسابات مخزنة
         instance_languages_dimension: اللغات الأكثر استخدامًا
       delivery:
         all: الكل
@@ -560,6 +565,8 @@ ar:
           zero: "%{count} ملاحظات"
       action_log: سجل المراجعة
       action_taken_by: تم اتخاذ الإجراء مِن طرف
+      actions:
+        resolve_description_html: ولن يُتخذ أي إجراء ضد الحساب المبلّغ عنه، ولن تسلَّط عليه أية عقوبة، وسوف يُغلق التقرير.
       add_to_report: أضف المزيد إلى التقرير
       are_you_sure: هل أنت متأكد ؟
       assign_to_self: عين لي
@@ -568,6 +575,7 @@ ar:
       category: الفئة
       comment:
         none: لا شيء
+      comment_description_html: 'لتوفير المزيد من المعلومات، كتب %{name}:'
       created_at: ذكرت
       delete_and_resolve: احذف المنشورات
       forwarded: أُعيد توجيهه
@@ -583,6 +591,7 @@ ar:
         delete: حذف
         placeholder: قم بوصف الإجراءات التي تم اتخاذها أو أي تحديثات أخرى ذات علاقة...
         title: الملاحظات
+      remote_user_placeholder: المستخدم البعيد من %{instance}
       reopen: إعادة فتح الشكوى
       report: 'الشكوى #%{id}'
       reported_account: حساب مُبلّغ عنه
@@ -710,6 +719,8 @@ ar:
       title: منشورات الحساب
       with_media: تحتوي على وسائط
     strikes:
+      actions:
+        suspend: قام %{name} بتعليق حساب %{target}
       appeal_approved: طُعِن فيه
       appeal_pending: طعن قيد المراجعة
     system_checks:
@@ -943,9 +954,11 @@ ar:
       appealed_msg: تم تقديم طعنك. إذا تمت الموافقة عليه، سيتم إبلاغك.
       appeals:
         submit: تقديم طعن
+      approve_appeal: الموافقة على الطعن
       associated_report: التقرير المتربط
       created_at: بتاريخ
       recipient: موجّه إلى
+      reject_appeal: رفض الطعن
       status: 'المنشور #%{id}'
       title: "%{action} في %{date}"
       title_actions:
@@ -1263,6 +1276,10 @@ ar:
     reply:
       proceed: المواصلة إلى الرد
       prompt: 'ترغب في الرد على هذا المنشور:'
+  rss:
+    content_warning: 'تحذير عن المحتوى:'
+    descriptions:
+      account: منشورات للعلن مِن @%{acct}
   scheduled_statuses:
     over_daily_limit: لقد تجاوزتَ حد الـ %{limit} منشورات مُبَرمَجة مسموح بها اليوم
     over_total_limit: لقد بلغت حد الـ %{limit} مِن المنشورات المبرمَجة
@@ -1329,6 +1346,7 @@ ar:
     profile: الملف التعريفي
     relationships: المتابِعون والمتابَعون
     statuses_cleanup: الحذف الآلي للمنشورات
+    strikes: عقوبات الإشراف
     two_factor_authentication: المُصادقة بخُطوَتَيْن
     webauthn_authentication: مفاتيح الأمان
   statuses:
@@ -1578,11 +1596,15 @@ ar:
         spam: مزعج
         violation: ينتهك المحتوى المبادئ التوجيهية التالية للمجتمع
       explanation:
+        delete_statuses: لوحظ أنّ بعض منشوراتك تخالف واحدة أو أكثر من المبادئ التوجيهية للمجتمع وقد تم إزالتها إثر ذلك من قِبل مشرفي %{instance}.
+        disable: تم إيقاف حسابك، لكن ملفك الشخصي وكافة بياناتك لا زالت سليمة. يمكنك طلب نسخة احتياطية من بياناتك وتغيير إعدادات حسابك أو حذفه.
         sensitive: من الآن فصاعدا، سيتم وضع علامة على جميع ملفات الوسائط التي يتم تحميلها على أنها حساسة وستكون مخفية خلف تحذير يُنقر.
         silence: لا يزال بإمكانك استخدام حسابك ولكن فقط الأشخاص الذين يتابعونك فقط يمكنهم رؤية منشوراتك على هذا الخادم، وقد يتم استبعادك من ميزات الاكتشاف المختلفة. قد يتبعك آخرون على كل حال يدوياً.
+        suspend: لم يعد بإمكانك استخدام حسابك، والوصول إلى ملفك الشخصي والبيانات الأخرى. لا يزال بإمكانك تسجيل الدخول لطلب نسخة احتياطية من بياناتك حتى تتم إزالة البيانات بالكامل في غضون 30 يوما. ولكننا سنحتفظ ببعض البيانات الأساسية لمنعك من التهرب من عقوبة تعليق الحساب.
       reason: 'السبب:'
       statuses: 'المنشورات المذكورة:'
       subject:
+        delete_statuses: تم إزالة منشوراتك على %{acct}
         disable: تم تجميد حسابك %{acct}
         none: تحذير إلى %{acct}
         silence: إنّ حسابك %{acct} محدود
diff --git a/config/locales/ast.yml b/config/locales/ast.yml
index 48895f860..a9bcbbdf7 100644
--- a/config/locales/ast.yml
+++ b/config/locales/ast.yml
@@ -220,6 +220,8 @@ ast:
   disputes:
     strikes:
       appeal_rejected: Refugóse l'apellación
+      approve_appeal: Aprobar l'apellación
+      reject_appeal: Refugar l'apellación
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': Nun tienes permisu pa ver esta páxina.
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index f5fa3ece0..0017ee42e 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -231,7 +231,7 @@ ca:
       whitelisted: Llista blanca
     action_logs:
       action_types:
-        approve_appeal: Aprova Apel·lació
+        approve_appeal: Aprova l'apel·lació
         approve_user: Aprova l'usuari
         assigned_to_self_report: Assigna l'informe
         change_email_user: Canvia l'adreça electrònica per l'usuari
@@ -263,7 +263,7 @@ ca:
         enable_user: Activa l'usuari
         memorialize_account: Memoritza el compte
         promote_user: Promou l'usuari
-        reject_appeal: Rebutja Apel·lació
+        reject_appeal: Rebutja l'apel·lació
         reject_user: Rebutja l'usuari
         remove_avatar_user: Eliminar avatar
         reopen_report: Reobre l'informe
@@ -415,7 +415,7 @@ ca:
       website: Lloc web
     disputes:
       appeals:
-        empty: Cap apel·lació trobada.
+        empty: No s'ha trobat cap apel·lació.
         title: Apel·lacions
     domain_allows:
       add_new: Dominis autoritzats
@@ -1031,15 +1031,17 @@ ca:
       action_taken: Acció presa
       appeal: Apel·lació
       appeal_approved: L'acció ha estat apel·lada amb èxit i ja no és vàlida
-      appeal_rejected: L'apel·lació ha estat rebutjada
-      appeal_submitted_at: Apel·lació tramesa
-      appealed_msg: La teva apel·lació ha estat emesa. Si és aprovada, seràs notificat.
+      appeal_rejected: S'ha rebutjat l'apel·lació
+      appeal_submitted_at: Apel·lació enviada
+      appealed_msg: La teva apel·lació s'ha enviat. Et notificarem si s'aprova.
       appeals:
-        submit: Apel·lació emesa
+        submit: Envia l'apel·lació
+      approve_appeal: Aprova l'apel·lació
       associated_report: Informe associat
       created_at: Datada
       description_html: Aquestes son accions preses contra el teu compte i avisos que se t'han enviat per l'equip de %{instance}.
       recipient: Dirigida a
+      reject_appeal: Rebutja l'apel·lació
       status: 'Publicació #%{id}'
       status_removed: Publicació ja esborrada del sistema
       title: "%{action} del %{date}"
@@ -1052,7 +1054,7 @@ ca:
         silence: Limitació del compte
         suspend: Suspensió del compte
       your_appeal_approved: La teva apel·lació s'ha aprovat
-      your_appeal_pending: Has tramés una apel·lació
+      your_appeal_pending: Has enviat una apel·lació
       your_appeal_rejected: La teva apel·lació ha estat rebutjada
   domain_validator:
     invalid_domain: no es un nom de domini vàlid
@@ -1354,6 +1356,11 @@ ca:
   reports:
     errors:
       invalid_rules: no fa referència a normes vàlides
+  rss:
+    content_warning: 'Avís de contingut:'
+    descriptions:
+      account: Publicacions des de @%{acct}
+      tag: 'Publicacions etiquetades #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Has superat el límit de %{limit} publicacions programades per a avui
     over_total_limit: Has superat el límit de %{limit} publicacions programades
@@ -1512,6 +1519,9 @@ ca:
     pinned: Publicació fixada
     reblogged: ha impulsat
     sensitive_content: Contingut sensible
+  strikes:
+    errors:
+      too_late: És massa tard per a apel·lar aquesta acció
   tags:
     does_not_match_previous_name: no coincideix amb el nom anterior
   terms:
@@ -1624,11 +1634,11 @@ ca:
   user_mailer:
     appeal_approved:
       action: Ves al teu compte
-      explanation: La apel·lació a la acció contra el teu compte del %{strike_date} que has tramés el %{appeal_date} ha estat aprovada. El teu compte està un cop més al dia.
-      subject: La teva apel·lació de %{date} ha estat aprovada
+      explanation: L'apel·lació a l'acció contra el teu compte del %{strike_date} que has enviat el %{appeal_date} ha estat aprovada. El teu compte torna a estar en bon estat.
+      subject: La teva apel·lació del %{date} ha estat aprovada
       title: Apel·lació aprovada
     appeal_rejected:
-      explanation: La apel·lació a la acció contra el teu compte del %{strike_date} que has tramés el %{appeal_date} ha estat rebutjada.
+      explanation: L'apel·lació a l'acció contra el teu compte del %{strike_date} que has enviat el %{appeal_date} ha estat rebutjada.
       subject: La teva apel·lació del %{date} ha estat rebutjada
       title: Apel·lació rebutjada
     backup_ready:
@@ -1643,8 +1653,8 @@ ca:
       subject: El teu compte ha estat accedit des d'una nova adreça IP
       title: Un nou inici de sessió
     warning:
-      appeal: Trametre una apel·lació
-      appeal_description: Si creus que això és un error pots emetre una apel·lació al equip de %{instance}.
+      appeal: Envia una apel·lació
+      appeal_description: Si creus que això és un error, pots enviar una apel·lació a l'equip de %{instance}.
       categories:
         spam: Contingut brossa
         violation: El contingut viola les següents guies de la comunitat
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 717bb5614..61997886a 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -1070,10 +1070,12 @@ cs:
       appealed_msg: Vaše odvolání bylo podáno. Pokud bude schváleno, budete informováni.
       appeals:
         submit: Podat odvolání
+      approve_appeal: Schválit odvolání
       associated_report: Přidružené hlášení
       created_at: Datováno
       description_html: Toto jsou kroky podniknuté proti vašemu účtu a varování, která vám byla poslána personálem %{instance}.
       recipient: Adresováno
+      reject_appeal: Zamítnout odvolání
       status: 'Příspěvek #%{id}'
       status_removed: Příspěvek už byl ze systému odstraněn
       title: "%{action} ze dne %{date}"
@@ -1396,6 +1398,11 @@ cs:
   reports:
     errors:
       invalid_rules: neodkazuje na platná pravidla
+  rss:
+    content_warning: 'Varování o obsahu:'
+    descriptions:
+      account: Veřejné příspěvky od @%{acct}
+      tag: 'Veřejné příspěvky s hashtagem #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Překročili jste limit %{limit} příspěvků naplánovaných na tento den
     over_total_limit: Překročili jste limit %{limit} naplánovaných příspěvků
@@ -1566,6 +1573,9 @@ cs:
     pinned: Připnutý příspěvek
     reblogged: boostnul
     sensitive_content: Citlivý obsah
+  strikes:
+    errors:
+      too_late: Na odvolání proti tomuto prohřešku už je pozdě
   tags:
     does_not_match_previous_name: se neshoduje s předchozím názvem
   terms:
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 51fde7837..306df5979 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -96,8 +96,8 @@ cy:
       other: Tŵtiau
       two: Tŵtiau
       zero: Tŵtiau
-    posts_tab_heading: Tŵtiau
-    posts_with_replies: Tŵtiau ac atebion
+    posts_tab_heading: Postiadau
+    posts_with_replies: Postiadau ac atebion
     roles:
       admin: Gweinyddwr
       bot: Bot
@@ -116,6 +116,7 @@ cy:
     accounts:
       add_email_domain_block: Cosbrestru parth e-bost
       approve: Cymeradwyo
+      approved_msg: Wedi llwyddo cymeradwyo cais cofrestru %{username}
       are_you_sure: Ydych chi'n siŵr?
       avatar: Afatar
       by_domain: Parth
@@ -129,10 +130,13 @@ cy:
       confirm: Cadarnhau
       confirmed: Cadarnhawyd
       confirming: Cadarnhau
+      custom: Arbennig
       delete: Dileu data
       deleted: Wedi dileu
       demote: Diraddio
+      destroyed_msg: Mae data %{username} bellach mewn ciw i gael ei ddileu yn fuan
       disable: Diffodd
+      disable_sign_in_token_auth: Analluogi dilysu tocynnau e-bost
       disable_two_factor_authentication: Diffodd 2FA
       disabled: Wedi ei ddiffodd
       display_name: Enw arddangos
@@ -141,11 +145,14 @@ cy:
       email: E-bost
       email_status: Statws E-bost
       enable: Galluogi
+      enable_sign_in_token_auth: Galluogi dilysu tocynnau e-bost
       enabled: Wedi ei alluogi
+      enabled_msg: Wedi dadrewi cyfrif %{username} yn llwyddianus
       followers: Dilynwyr
       follows: Yn dilyn
       header: Pennawd
       inbox_url: URL Mewnflwch
+      invite_request_text: Rhesymau dros ymuno
       invited_by: Gwahoddwyd gan
       ip: IP
       joined: Ymunodd
@@ -156,7 +163,9 @@ cy:
         title: Lleoliad
       login_status: Statws mewngofnodi
       media_attachments: Atodiadau
-      memorialize: Troi yn gofeb
+      memorialize: Creu cyfrif coffa
+      memorialized: Wedi troi'n gyfrif coffa
+      memorialized_msg: Llwyddodd i droi %{username} yn gyfrif coffa
       moderation:
         active: Yn weithredol
         all: Popeth
@@ -171,12 +180,15 @@ cy:
       not_subscribed: Heb danysgrifio
       pending: Yn aros am adolygiad
       perform_full_suspension: Atal
+      previous_strikes: Rhybuddion blaenorol
       promote: Hyrwyddo
       protocol: Protocol
       public: Cyhoeddus
       push_subscription_expires: Tanysgrifiad gwthiadwy yn dod i ben
       redownload: Adnewyddu proffil
+      redownloaded_msg: Adnewyddwyd proffil %{username} o'r gweinydd gwreiddiol
       reject: Gwrthod
+      rejected_msg: Wedi gwrthod cais cofrestru %{username}
       remove_avatar: Dileu afatar
       remove_header: Dileu pennawd
       resend_confirmation:
@@ -251,6 +263,8 @@ cy:
         update_announcement: Diweddaru Cyhoeddiad
         update_custom_emoji: Diweddaru Emoji Addasiedig
         update_status: Diweddaru Statws
+      actions:
+        memorialize_account_html: Newidodd %{name} gyfrif %{target} i dudalen goffa
       deleted_status: "(statws wedi ei ddileu)"
       empty: Dim logiau ar gael.
       filter_by_action: Hidlo wrth weithred
@@ -667,8 +681,12 @@ cy:
       username_unavailable: Ni fydd eich enw defnyddiwr ar gael
   directories:
     directory: Cyfeiriadur proffil
-    explanation: Darganfod defnyddwyr yn seiliedig ar eu diddordebau
+    explanation: Darganfod defnyddwyr yn ôl eu diddordebau
     explore_mastodon: Archwilio %{title}
+  disputes:
+    strikes:
+      approve_appeal: Cymeradwyo'r apêl
+      reject_appeal: Gwrthod yr apêl
   domain_validator:
     invalid_domain: ddim yn enw parth dilys
   errors:
@@ -760,7 +778,7 @@ cy:
       following: Rhestr dilyn
       muting: Rhestr tawelu
     upload: Uwchlwytho
-  in_memoriam_html: Mewn Cofiad.
+  in_memoriam_html: Er cof.
   invites:
     delete: Dadactifadu
     expired: Wedi darfod
@@ -867,6 +885,8 @@ cy:
       body: 'Cafodd eich statws ei fŵstio gan %{name}:'
       subject: Bŵstiodd %{name} eich statws
       title: Hwb newydd
+    status:
+      subject: "%{name} newydd ei bostio"
   notifications:
     email_events: Digwyddiadau ar gyfer hysbysiadau e-bost
     email_events_hint: 'Dewis digwyddiadau hoffech derbyn hysbysiadau ar eu cyfer:'
@@ -1054,6 +1074,9 @@ cy:
     pinned: Tŵt wedi'i binio
     reblogged: hybwyd
     sensitive_content: Cynnwys sensitif
+  strikes:
+    errors:
+      too_late: Mae'n rhy hwyr i apelio yn erbyn y rhybudd hwn
   tags:
     does_not_match_previous_name: ddim yn cyfateb i'r enw blaenorol
   terms:
@@ -1192,5 +1215,5 @@ cy:
     seamless_external_login: Yr ydych wedi'ch mewngofnodi drwy wasanaeth allanol, felly nid yw gosodiadau cyfrinair ac e-bost ar gael.
     signed_in_as: 'Wedi mewngofnodi fel:'
   verification:
-    explanation_html: 'Mae modd i chi <strong>ddilysu eich hun fel perchenog y dolenni yn metadata eich proffil</strong>. Rhaid i''r wefan a dolen iddi gynnwys dolen yn ôl i''ch proffil Mastodon. <strong>Rhaid</strong> i''r ddolen yn ôl gael nodwedd <code>rel="fi"</code>. Nid oes ots beth yw cynnwys testun y ddolen. Dyma enghraifft:'
+    explanation_html: 'Mae modd i chi <strong>ddilysu eich hun fel perchenog y dolenni yn metadata eich proffil</strong>. Rhaid i''r wefan â dolen iddi gynnwys dolen yn ôl i''ch proffil Mastodon. <strong>Rhaid</strong> i''r ddolen yn ôl cynnwys y nodwedd <code>rel="me"</code>. Does dim ots beth yw cynnwys testun y ddolen. Dyma enghraifft:'
     verification: Dilysu
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 0455b700b..698e772f4 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -1036,10 +1036,12 @@ da:
       appealed_msg: Din appel er indgivet. Godkendes den, underrettes du.
       appeals:
         submit: Indgiv appel
+      approve_appeal: Godkend appel
       associated_report: Tilknyttet anmeldelse
       created_at: Dateret
       description_html: Disse er implementerede handlinger for din konto, samt advarsler tilsendt dig af %{instance}-personalet.
       recipient: Adresseret til
+      reject_appeal: Afvis appel
       status: 'Indlæg #%{id}'
       status_removed: Indlæg allerede fjernet fra system
       title: "%{action} pr. %{date}"
@@ -1354,6 +1356,11 @@ da:
   reports:
     errors:
       invalid_rules: refererer ikke til gyldige regler
+  rss:
+    content_warning: 'Indholdsadvarsel:'
+    descriptions:
+      account: Offentlige indlæg fra @%{acct}
+      tag: 'Offentlige indlæg tagget #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Den daglige grænse på %{limit} planlagte indlæg er nået
     over_total_limit: Grænsen på %{limit} planlagte indlæg er nået
@@ -1512,6 +1519,9 @@ da:
     pinned: Fastgjort indlæg
     reblogged: boostet
     sensitive_content: Sensitivt indhold
+  strikes:
+    errors:
+      too_late: Det er for sent at appellere denne advarsel
   tags:
     does_not_match_previous_name: matcher ikke det foregående navn
   terms:
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 2da287708..79ed79d3b 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1036,10 +1036,12 @@ de:
       appealed_msg: Dein Einspruch wurde abgesendet. Wenn er angenommen wird, wirst du benachrichtigt.
       appeals:
         submit: Einspruch erheben
+      approve_appeal: Einspruch annehmen
       associated_report: Zugehöriger Bericht
       created_at: Datum
       description_html: Dies sind Aktionen gegen dein Konto und Warnungen, die von den Mitarbeitern von %{instance} an dich gesendet wurden.
       recipient: Adressiert an
+      reject_appeal: Einspruch ablehnen
       status: 'Beitrag #%{id}'
       status_removed: Beitrag bereits vom System entfernt
       title: "%{action} vom %{date}"
@@ -1354,6 +1356,11 @@ de:
   reports:
     errors:
       invalid_rules: verweist nicht auf gültige Regeln
+  rss:
+    content_warning: 'Inhaltswarnung:'
+    descriptions:
+      account: Öffentliche Beiträge von @%{acct}
+      tag: 'Öffentliche Beiträge mit dem Tag #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, für heute erreicht
     over_total_limit: Du hast das Limit für geplante Beiträge, dass %{limit} beträgt, erreicht
@@ -1512,6 +1519,9 @@ de:
     pinned: Angehefteter Beitrag
     reblogged: teilte
     sensitive_content: NSFW
+  strikes:
+    errors:
+      too_late: Es ist zu spät, um gegen diese Verwarnung Einspruch zu erheben
   tags:
     does_not_match_previous_name: entspricht nicht dem vorherigen Namen
   terms:
diff --git a/config/locales/devise.ca.yml b/config/locales/devise.ca.yml
index c94d996fc..e15ff7677 100644
--- a/config/locales/devise.ca.yml
+++ b/config/locales/devise.ca.yml
@@ -23,7 +23,7 @@ ca:
         action: Verifica l'adreça de correu
         action_with_app: Confirma i torna a %{app}
         explanation: Has creat un compte a %{host} amb aquesta adreça de correu electrònic. Estàs a un sol clic d'activar-lo. Si no ho has fet tu, ignora aquest correu electrònic.
-        explanation_when_pending: Has sol·licitat una invitació a %{host} amb aquesta adreça de correu electrònic. Un cop confirmis la teva adreça de correu electrònic, revisarem la teva sol·licitud. Pots iniciar la sessió per canviar els detalls o eliminar el teu compte, però no pots accedir a la majoria de les funcions fins que s'hagi aprovat. Si es rebutja la teva sol·licitud, les teves dades s’eliminaran, de manera que no se t’exigirà cap més acció. Si no has estat tu qui ha fet aquesta sol·licitud, ignora aquest correu electrònic, si us plau.
+        explanation_when_pending: Has sol·licitat una invitació a %{host} amb aquesta adreça de correu electrònic. Revisarem la sol·licitud quan confirmis la teva adreça de correu electrònic. Pots iniciar la sessió per canviar els detalls o eliminar el teu compte, però no pots accedir a la majoria de les funcions fins que s'hagi aprovat. Si es rebutja la sol·licitud, les teves dades s’eliminaran, de manera que no se t’exigirà cap acció més. Si tu no has fet aquesta sol·licitud, ignora aquest correu electrònic.
         extra_html: Si us plau, consulta també a <a href="%{terms_path}"> les regles del servidor</a> i a <a href="%{policy_path}"> les nostres condicions de servei</a>.
         subject: 'Mastodon: instruccions de confirmació per a %{instance}'
         title: Verifica l'adreça de correu
diff --git a/config/locales/devise.io.yml b/config/locales/devise.io.yml
index a6d7a6d02..a0ad7a7c6 100644
--- a/config/locales/devise.io.yml
+++ b/config/locales/devise.io.yml
@@ -51,7 +51,7 @@ io:
         subject: 'Mastodon: 2-faktorverifiko deaktivigesis'
         title: 2FA deaktivigesis
       two_factor_enabled:
-        explanation: 2-faktorverifiko aktivigesis por vua konto. Fisho quo facesis da parigita apliko TOTP bezonesos por eniro.
+        explanation: 2-faktorverifiko aktivigesis por vua konto. Fisho quo facesis da parigita softwaro TOTP bezonesos por eniro.
         subject: 'Mastodon: 2-faktorverifiko aktivigesis'
         title: 2FA aktivigesis
       two_factor_recovery_codes_changed:
@@ -70,7 +70,7 @@ io:
           subject: 'Mastodon: Sekurklefo efacesis'
           title: 1 de vua sekurklefi efacesis
       webauthn_disabled:
-        explanation: Verifiko per sekurklefi deaktivigesis por vua konto. Eniro nun esas posibla per nur ficho quo facesis da parita apliko TOTP.
+        explanation: Verifiko per sekurklefi deaktivigesis por vua konto. Eniro nun esas posibla per nur ficho quo facesis da parita softwaro TOTP.
         subject: 'Mastodon: Verifiko per sekurklefi deaktivigesis'
         title: Sekurklefi deaktivigesis
       webauthn_enabled:
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index 910c77e8a..0d9e6a56a 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -7,12 +7,12 @@ zh-TW:
       send_paranoid_instructions: 如果您的電子信箱存在於我們的資料庫,您將會在幾分鐘內收到確認信。若未收到請檢查垃圾郵件資料夾。
     failure:
       already_authenticated: 您已登入。
-      inactive: 您的帳戶尚未啟用。
+      inactive: 您的帳號尚未啟用。
       invalid: 無效的 %{authentication_keys} 或密碼。
-      last_attempt: 在帳戶鎖定前,您還有最後一次嘗試機會。
-      locked: 已鎖定您的帳戶。
+      last_attempt: 在帳號鎖定前,您還有最後一次嘗試機會。
+      locked: 已鎖定您的帳號。
       not_found_in_database: 無效的 %{authentication_keys} 或密碼。
-      pending: 您的帳戶仍在審核中。
+      pending: 您的帳號仍在審核中。
       timeout: 登入階段逾時。請重新登入以繼續。
       unauthenticated: 您必須先登入或註冊才能繼續使用。
       unconfirmed: 您必須先確認電子信箱才能繼續使用。
@@ -20,38 +20,38 @@ zh-TW:
       confirmation_instructions:
         action: 驗證電子信箱地址
         action_with_app: 確認並返回 %{app}
-        explanation: 您已經在 %{host} 上以此電子信箱地址建立了一支帳戶。您距離啟用它只剩一點之遙了。若這不是您,請忽略此信件。
-        explanation_when_pending: 您使用此電子信箱地址申請了 %{host} 的邀請。當您確認電子信箱後我們將審核您的申請。您可以登入以改變您的細節或刪除您的帳戶,但直到您的帳戶被核准之前,您無法操作大部分的功能。若您的申請遭拒絕,您的資料將被移除而不必做後續動作。如果這不是您,請忽略此信件。
+        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: 您帳戶的電子信箱地址將變更為:
-        extra: 若您未變更電子信箱,那麼很有可能是某人取得了您帳戶的存取權限。請立刻變更密碼,或當帳戶被鎖定時,請聯絡伺服器的管理員。
+        explanation: 您帳號的電子信箱地址將變更為:
+        extra: 若您未變更電子信箱,那麼很有可能是某人取得了您帳號的存取權限。請立刻變更密碼,或當帳號被鎖定時,請聯絡伺服器的管理員。
         subject: Mastodon:已變更電子信箱
         title: 新電子信箱地址
       password_change:
-        explanation: 您帳戶的密碼已變更。
-        extra: 若您未變更密碼,那麼很有可能是某人取得了您帳戶的存取權限。請立刻變更密碼,或若帳戶被鎖定時,請聯絡伺服器的管理員。
+        explanation: 您帳號的密碼已變更。
+        extra: 若您未變更密碼,那麼很有可能是某人取得了您帳號的存取權限。請立刻變更密碼,或若帳號被鎖定時,請聯絡伺服器的管理員。
         subject: Mastodon:已變更密碼
         title: 密碼已變更
       reconfirmation_instructions:
         explanation: 請確認新的電子信箱地址以變更。
-        extra: 若此次變更不是由您開啟的,請忽略此信件。Mastodon 帳戶的電子信箱地址在您存取上面的連結前不會變更。
+        extra: 若此次變更不是由您開啟的,請忽略此信件。Mastodon 帳號的電子信箱地址在您存取上面的連結前不會變更。
         subject: Mastodon:確認 %{instance} 的電子信箱地址
         title: 驗證電子信箱地址
       reset_password_instructions:
         action: 變更密碼
-        explanation: 您已請求帳戶的新密碼。
+        explanation: 您已請求帳號的新密碼。
         extra: 若您並未請求,請忽略此信件。您的密碼在存取上方連結並建立新密碼前不會變更。
         subject: Mastodon:重設密碼指引
         title: 重設密碼
       two_factor_disabled:
-        explanation: 您帳戶的兩步驟驗證已停用。現在只能使用電子信箱及密碼登入。
+        explanation: 您帳號的兩步驟驗證已停用。現在只使用電子信箱及密碼登入。
         subject: Mastodon:已停用兩步驟驗證
         title: 已停用 2FA
       two_factor_enabled:
-        explanation: 已對您的帳戶啟用兩步驟驗證。登入時將需要配對之 TOTP 應用程式所產生的 Token。
+        explanation: 已對您的帳號啟用兩步驟驗證。登入時將需要配對之 TOTP 應用程式所產生的 Token。
         subject: Mastodon:已啟用兩步驟驗證
         title: 已啟用 2FA
       two_factor_recovery_codes_changed:
@@ -62,11 +62,11 @@ zh-TW:
         subject: Mastodon:解鎖指引
       webauthn_credential:
         added:
-          explanation: 下面的安全密鑰已經新增至您的帳戶
+          explanation: 以下的安全密鑰已經新增至您的帳號
           subject: Mastodon:新安全密鑰
           title: 已新增新安全密鑰
         deleted:
-          explanation: 以下的安全密鑰已經從您的帳戶中移除
+          explanation: 以下的安全密鑰已經從您的帳號中移除
           subject: Mastodon:安全密鑰已移除
           title: 您的一支安全密鑰已經被移除
       webauthn_disabled:
@@ -101,8 +101,8 @@ zh-TW:
       signed_out: 已成功登出。
     unlocks:
       send_instructions: 幾分鐘後您將收到解鎖帳戶的指引信件。若未收到請檢查垃圾郵件資料夾。
-      send_paranoid_instructions: 若此帳戶存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。
-      unlocked: 已解鎖您的帳戶,請登入繼續。
+      send_paranoid_instructions: 若此帳號存在,您將在幾分鐘後收到解鎖指引信件。若未收到請檢查垃圾郵件資料夾。
+      unlocked: 已解鎖您的帳號,請登入繼續。
   errors:
     messages:
       already_confirmed: 已經確認,請嘗試登入
diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml
index 07314684d..9019b0fd9 100644
--- a/config/locales/doorkeeper.ar.yml
+++ b/config/locales/doorkeeper.ar.yml
@@ -60,6 +60,7 @@ ar:
       error:
         title: حدث هناك خطأ
       new:
+        prompt_html: يريد %{client_name} الإذن للوصول إلى حسابك. إنه تطبيق طرف ثالث. <strong>إذا كنت لا تثق فيه، فلا ينبغي أن تأذن له بذلك.</strong>
         review_permissions: مراجعة الصلاحيات
         title: إذن بالتصريح
       show:
diff --git a/config/locales/doorkeeper.io.yml b/config/locales/doorkeeper.io.yml
index 0e03ab79f..05a537fb9 100644
--- a/config/locales/doorkeeper.io.yml
+++ b/config/locales/doorkeeper.io.yml
@@ -4,7 +4,7 @@ io:
     attributes:
       doorkeeper/application:
         name: Nomo
-        redirect_uri: URI di plussendo
+        redirect_uri: Deviacligilo
         scopes: Skopi
         website: Apliksito
     errors:
@@ -40,18 +40,18 @@ io:
         delete: Efacez
         empty: Vu ne havas apliki.
         name: Nomo
-        new: New Application
+        new: Nova apliko
         scopes: Skopi
         show: Montrez
         title: Vua apliki
       new:
-        title: New Application
+        title: Nova apliko
       show:
         actions: Agi
-        application_id: Application Id
+        application_id: Klientoklefo
         callback_urls: Callback urls
         scopes: Skopi
-        secret: Secret
+        secret: Klientosekreto
         title: 'Apliko: %{name}'
     authorizations:
       buttons:
@@ -60,7 +60,7 @@ io:
       error:
         title: Eroro eventis
       new:
-        prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa apliko. <strong>Se vu ne fidas, lore vu debas ne permisar.</strong>"
+        prompt_html: "%{client_name} volas permiso por acesar vua konti. Ol esas externa softwaro. <strong>Se vu ne fidas, lore vu debas ne permisar.</strong>"
         review_permissions: Kontrolez permisi
         title: Permiso bezonesas
       show:
@@ -72,12 +72,12 @@ io:
         revoke: Ka vu esas certa?
       index:
         authorized_at: Permisesis ye %{date}
-        description_html: Co esas apliki quo povas acesar vua konto per API. Se existas apliki quon vu ne rikonocas hike, o apliko misfuncionas, vu povas desaprobar ola aceso.
+        description_html: Co esas softwari quo povas acesar vua konto per API. Se existas softwari quon vu ne rikonocas hike, o softwari misfuncionas, vu povas desaprobar ola aceso.
         last_used_at: Antee uzesis ye %{date}
         never_used: Nulaloke uzesas
         scopes: Permisi
         superapp: Interna
-        title: Vua permisita apliki
+        title: Vua permisita softwari
     errors:
       messages:
         access_denied: Resursproprietanto o permisservilo refuzis la demando.
diff --git a/config/locales/doorkeeper.ru.yml b/config/locales/doorkeeper.ru.yml
index a772f081a..ff0e48720 100644
--- a/config/locales/doorkeeper.ru.yml
+++ b/config/locales/doorkeeper.ru.yml
@@ -3,7 +3,7 @@ ru:
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Название
+        name: Название приложения
         redirect_uri: URI перенаправления
         scopes: Разрешения
         website: Веб-сайт приложения
@@ -36,7 +36,7 @@ ru:
         scopes: Разделяйте список разрешений пробелами. Оставьте незаполненным для использования разрешений по умолчанию.
       index:
         application: Приложение
-        callback_url: URL обратной связи
+        callback_url: URL-адреса обратного вызова
         delete: Удалить
         empty: У вас нет созданных приложений.
         name: Название
@@ -48,8 +48,8 @@ ru:
         title: Создание приложения
       show:
         actions: Действия
-        application_id: Id приложения
-        callback_urls: Callback urls
+        application_id: Ключ клиента
+        callback_urls: URL-адреса обратного вызова
         scopes: Разрешения
         secret: Секрет
         title: 'Приложение: %{name}'
@@ -118,7 +118,9 @@ ru:
         write: Доступ только для записи
       title:
         accounts: Учётные записи
+        admin/accounts: Управление учётными записями
         admin/all: Все административные функции
+        admin/reports: Управление отчётами
         all: Все
         blocks: Блокировки
         bookmarks: Закладки
@@ -150,6 +152,7 @@ ru:
       admin:write: модифицировать все данные на сервере
       admin:write:accounts: производить модерацию учётных записей
       admin:write:reports: производить модерацию жалоб
+      crypto: использ. сквозное шифрование
       follow: управлять подписками и списком блокировок
       push: получать push-уведомления
       read: просматривать данные вашей учётной записи
diff --git a/config/locales/doorkeeper.th.yml b/config/locales/doorkeeper.th.yml
index dd25d88b6..5c1e1582f 100644
--- a/config/locales/doorkeeper.th.yml
+++ b/config/locales/doorkeeper.th.yml
@@ -81,6 +81,7 @@ th:
     errors:
       messages:
         access_denied: เจ้าของทรัพยากรหรือเซิร์ฟเวอร์การอนุญาตปฏิเสธคำขอ
+        invalid_redirect_uri: URI การเปลี่ยนเส้นทางที่รวมอยู่ไม่ถูกต้อง
         invalid_request:
           missing_param: 'พารามิเตอร์ที่จำเป็นขาดหายไป: %{value}'
         invalid_scope: ขอบเขตที่ขอไม่ถูกต้อง ไม่รู้จัก หรือผิดรูปแบบ
diff --git a/config/locales/doorkeeper.zh-CN.yml b/config/locales/doorkeeper.zh-CN.yml
index f612ac067..b4d680185 100644
--- a/config/locales/doorkeeper.zh-CN.yml
+++ b/config/locales/doorkeeper.zh-CN.yml
@@ -133,7 +133,7 @@ zh-CN:
         follows: 关注
         lists: 列表
         media: 媒体文件
-        mutes: 静音
+        mutes: 已被隐藏的
         notifications: 通知
         push: 推送通知
         reports: 报告
diff --git a/config/locales/doorkeeper.zh-TW.yml b/config/locales/doorkeeper.zh-TW.yml
index 9a777c28b..e8a699d85 100644
--- a/config/locales/doorkeeper.zh-TW.yml
+++ b/config/locales/doorkeeper.zh-TW.yml
@@ -43,7 +43,7 @@ zh-TW:
         new: 新增應用程式
         scopes: 範圍
         show: 顯示
-        title: 你的應用程式
+        title: 您的應用程式
       new:
         title: 新增應用程式
       show:
@@ -148,35 +148,35 @@ zh-TW:
         title: 需要 OAuth 授權
     scopes:
       admin:read: 讀取伺服器的所有資料
-      admin:read:accounts: 讀取所有帳戶的敏感資訊
-      admin:read:reports: 讀取所有回報 / 被回報之帳戶的敏感資訊
+      admin:read:accounts: 讀取所有帳號的敏感資訊
+      admin:read:reports: 讀取所有回報 / 被回報之帳號的敏感資訊
       admin:write: 修改伺服器的所有資料
-      admin:write:accounts: 對帳戶進行仲裁管理動作
+      admin:write:accounts: 對帳號進行仲裁管理動作
       admin:write:reports: 對報告進行仲裁管理動作
       crypto: 使用端到端加密
-      follow: 修改帳戶關係
-      push: 接收帳戶的推播通知
-      read: 讀取您所有的帳戶資料
-      read:accounts: 檢視帳戶資訊
+      follow: 修改帳號關係
+      push: 接收帳號的推播通知
+      read: 讀取您所有的帳號資料
+      read:accounts: 檢視帳號資訊
       read:blocks: 檢視您的封鎖名單
       read:bookmarks: 檢視您的書籤
-      read:favourites: 檢視您的收藏項目
+      read:favourites: 檢視您收藏的最愛
       read:filters: 檢視您的過濾條件
-      read:follows: 檢視您關注的人
+      read:follows: 檢視您跟隨的人
       read:lists: 檢視您的名單
       read:mutes: 檢視您靜音的人
       read:notifications: 檢視您的通知
       read:reports: 檢視您的檢舉
-      read:search: 以你的身份搜尋
+      read:search: 以您的身份搜尋
       read:statuses: 檢視所有嘟文
-      write: 修改您帳戶的所有資料
+      write: 修改您帳號的所有資料
       write:accounts: 修改您的個人檔案
-      write:blocks: 封鎖帳戶及站台
+      write:blocks: 封鎖帳號及站台
       write:bookmarks: 書籤狀態
       write:conversations: 靜音及刪除對話
-      write:favourites: 收藏嘟文
+      write:favourites: 加到最愛
       write:filters: 建立過濾條件
-      write:follows: 關注其他人
+      write:follows: 跟隨其他人
       write:lists: 建立名單
       write:media: 上傳媒體檔案
       write:mutes: 靜音使用者及對話
diff --git a/config/locales/el.yml b/config/locales/el.yml
index 71b07a24d..c8cdf2d20 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -762,6 +762,10 @@ el:
     directory: Κατάλογος λογαριασμών
     explanation: Βρες χρήστες βάσει των ενδιαφερόντων τους
     explore_mastodon: Εξερεύνησε το %{title}
+  disputes:
+    strikes:
+      approve_appeal: Έγκριση έφεσης
+      reject_appeal: Απόρριψη έφεσης
   domain_validator:
     invalid_domain: δεν είναι έγκυρο όνομα τομέα
   errors:
@@ -1043,6 +1047,8 @@ el:
   reports:
     errors:
       invalid_rules: δεν παραπέμπει σε έγκυρους κανόνες
+  rss:
+    content_warning: 'Προειδοποίηση περιεχομένου:'
   scheduled_statuses:
     over_daily_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ για εκείνη τη μέρα
     over_total_limit: Έχεις υπερβεί το όριο των %{limit} προγραμματισμένων τουτ
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 583683bff..4b39d549b 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1532,6 +1532,9 @@ en:
     pinned: Pinned post
     reblogged: boosted
     sensitive_content: Sensitive content
+  strikes:
+    errors:
+      too_late: It is too late to appeal this strike
   tags:
     does_not_match_previous_name: does not match the previous name
   terms:
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index ad333ae29..beefc4193 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -1036,10 +1036,12 @@ es-AR:
       appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará.
       appeals:
         submit: Enviar apelación
+      approve_appeal: Aprobar apelación
       associated_report: Denuncia asociada
       created_at: Con fecha
       description_html: Estas son acciones tomadas contra tu cuenta y las advertencias que te han sido enviadas por el equipo de %{instance}.
       recipient: Dirigida a
+      reject_appeal: Rechazar apelación
       status: 'Mensaje #%{id}'
       status_removed: Mensaje ya eliminado del sistema
       title: "%{action} de %{date}"
@@ -1354,6 +1356,11 @@ es-AR:
   reports:
     errors:
       invalid_rules: no hace referencia a reglas válidas
+  rss:
+    content_warning: 'Advertencia de contenido:'
+    descriptions:
+      account: Mensajes públicos de @%{acct}
+      tag: 'Mensajes públicos etiquetados #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Superaste el límite de %{limit} mensajes programados para ese día
     over_total_limit: Superaste el límite de %{limit} mensajes programados
@@ -1512,6 +1519,9 @@ es-AR:
     pinned: Mensaje fijado
     reblogged: adhirió a este mensaje
     sensitive_content: Contenido sensible
+  strikes:
+    errors:
+      too_late: Es demasiado tarde para apelar este incumplimiento
   tags:
     does_not_match_previous_name: no coincide con el nombre anterior
   terms:
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index 360a790fe..5b1b04100 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -802,7 +802,7 @@ es-MX:
           other: Compartido por %{count} personas durante la última semana
         title: Enlaces en tendencia
         usage_comparison: Compartido %{today} veces hoy, comparado a %{yesterday} ayer
-      only_allowed: Sólo permitido
+      only_allowed: Sólo las permitidas
       pending_review: Revisión pendiente
       preview_card_providers:
         allowed: Los enlaces de este editor pueden ser tendencia
@@ -1036,10 +1036,12 @@ es-MX:
       appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará.
       appeals:
         submit: Enviar apelación
+      approve_appeal: Aprobar apelación
       associated_report: Informe asociado
       created_at: Con fecha
       description_html: Estas son las acciones emprendidas contra tu cuenta y las advertencias que te han sido enviadas por el personal de %{instance}.
       recipient: Dirigida a
+      reject_appeal: Rechazar apelación
       status: 'Publicación #%{id}'
       status_removed: Publicación ya eliminada del sistema
       title: "%{action} del %{date}"
@@ -1354,6 +1356,11 @@ es-MX:
   reports:
     errors:
       invalid_rules: no hace referencia a reglas válidas
+  rss:
+    content_warning: 'Advertencia de contenido:'
+    descriptions:
+      account: Publicaciones públicas de @%{acct}
+      tag: 'Publicaciones públicas etiquetadas con #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Ha superado el límite de %{limit} toots programados para ese día
     over_total_limit: Ha superado el límite de %{limit} toots programados
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 7df72d59d..8abd8212f 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -1036,10 +1036,12 @@ es:
       appealed_msg: Tu apelación fue enviada. Si se aprueba, se te notificará.
       appeals:
         submit: Enviar apelación
+      approve_appeal: Aprobar apelación
       associated_report: Informe asociado
       created_at: Con fecha
       description_html: Estas son las acciones emprendidas contra tu cuenta y las advertencias que te han sido enviadas por el personal de %{instance}.
       recipient: Dirigida a
+      reject_appeal: Rechazar apelación
       status: 'Publicación #%{id}'
       status_removed: Publicación ya eliminada del sistema
       title: "%{action} del %{date}"
@@ -1354,6 +1356,11 @@ es:
   reports:
     errors:
       invalid_rules: no hace referencia a reglas válidas
+  rss:
+    content_warning: 'Advertencia de contenido:'
+    descriptions:
+      account: Publicaciones públicas de @%{acct}
+      tag: 'Publicaciones públicas etiquetadas con #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Ha superado el límite de %{limit} publicaciones programadas para ese día
     over_total_limit: Ha superado el límite de %{limit} publicaciones programadas
@@ -1512,6 +1519,9 @@ es:
     pinned: Publicación fijada
     reblogged: retooteado
     sensitive_content: Contenido sensible
+  strikes:
+    errors:
+      too_late: Es demasiado tarde para apelar esta amonestación
   tags:
     does_not_match_previous_name: no coincide con el nombre anterior
   terms:
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 566cfc4b7..05a1ce434 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -368,6 +368,7 @@ fa:
       enable: به کار انداختن
       enabled: فعال
       enabled_msg: این شکلک با موفقیت فعال شد
+      image_hint: پی‌ان‌چی یا جیف تا %{size}
       list: فهرست
       listed: فهرست شده
       new:
@@ -450,6 +451,9 @@ fa:
       add_new: افزودن تازه
       created_msg: مسدودسازی دامین ایمیل با موفقیت ساخته شد
       delete: پاک‌کردن
+      dns:
+        types:
+          mx: رکورد MX
       domain: دامین
       new:
         create: ساختن مسدودسازی
@@ -464,11 +468,28 @@ fa:
       title: پیشنهادهای پی‌گیری
       unsuppress: بازگردانی پیشنهادهای پی‌گیری
     instances:
+      availability:
+        no_failures_recorded: هیچ شکستی در سابقه نیست.
+        title: موجود بودن
       back_to_all: همه
       back_to_limited: محدود
       back_to_warning: هشدار
       by_domain: دامین
       confirm_purge: آیا مطمئن هستید می‌خواهید داده را از این دامنه برای همیشه پاک کنید؟
+      content_policies:
+        comment: یادداشت داخلی
+        policies:
+          silence: کران
+          suspend: تعلیق
+        policy: سیاست
+        reason: دلیل عمومی
+        title: سیاست‌های محتوا
+      dashboard:
+        instance_accounts_dimension: حساب‌های پیش‌تر پی‌گیری شده
+        instance_followers_measure: پی‌گیرندگانمان در آن‌جا
+        instance_follows_measure: پی‌گیرندگانشان در این‌جا
+        instance_languages_dimension: زبان‌های برتر
+        instance_reports_measure: گزارش‌ها درباره‌شان
       delivery:
         all: همه
         clear: پاک کردن خطاهای تحول محتوا
@@ -722,6 +743,8 @@ fa:
       preview_card_providers:
         title: ناشران
       rejected: رد شده
+      statuses:
+        title: فرسته‌های داغ
       tags:
         current_score: امتیاز کنونی %{score}
         dashboard:
@@ -758,6 +781,9 @@ fa:
     new_trends:
       new_trending_links:
         no_approved_links: در حال حاضر هیچ پیوند پرطرفداری پذیرفته نشده است.
+        title: پیوندهای داغ
+      new_trending_statuses:
+        title: فرسته‌های داغ
   aliases:
     add_new: ساختن نام مستعار
     created_msg: نام مستعار تازه با موفقیت ساخته شد. الان می‌توانید انتقال از حساب قدیمی را آغاز کنید.
@@ -1082,6 +1108,9 @@ fa:
     carry_mutes_over_text: این کاربر از %{acct} که خموشش کرده‌اید، جابه‌جا شد.
     copy_account_note_text: 'این کاربر از %{acct} جابه‌جا شده است. یادداشت‌های پیشینتان درباره‌اش این‌هاست:'
   notification_mailer:
+    admin:
+      sign_up:
+        subject: "%{name} ثبت نام کرد"
     digest:
       action: دیدن تمامی آگاهی‌ها
       body: خلاصه‌ای از پیغام‌هایی که از زمان آخرین بازدید شما در %{since} فرستاده شد
@@ -1287,6 +1316,7 @@ fa:
     open_in_web: گشودن در وب
     over_character_limit: از حد مجاز %{max} حرف فراتر رفتید
     pin_errors:
+      direct: فرسته‌هایی که فقط برای کاربران اشاره شده نمایانند نمی‌توانند سنجاق شوند
       limit: از این بیشتر نمی‌شود نوشته‌های ثابت داشت
       ownership: نوشته‌های دیگران را نمی‌توان ثابت کرد
       reblog: تقویت را نمی‌توان سنجاق کرد
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index 63fce2af6..3fcd67bb2 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -802,7 +802,7 @@ fr:
           other: Partagé par %{count} personnes au cours de la dernière semaine
         title: Liens tendances
         usage_comparison: Partagé %{today} fois aujourd'hui, comparé à %{yesterday} hier
-      only_allowed: Seuls autorisés
+      only_allowed: Autorisées seulement
       pending_review: En attente de révision
       preview_card_providers:
         allowed: Les liens de cet éditeur peuvent être tendance
@@ -1036,10 +1036,12 @@ fr:
       appealed_msg: Votre demande d'appel a été soumise. Si elle est approuvée, vous en serez informé·e.
       appeals:
         submit: Faire appel
+      approve_appeal: Approuver l’appel
       associated_report: Rapport associé
       created_at: En date du
       description_html: Ce sont les mesures prises contre votre compte et les avertissements qui vous ont été envoyés par les responsables de %{instance}.
       recipient: Adressé à
+      reject_appeal: Rejeter l’appel
       status: 'Message #%{id}'
       status_removed: Message déjà supprimé du système
       title: "%{action} du %{date}"
@@ -1354,6 +1356,11 @@ fr:
   reports:
     errors:
       invalid_rules: ne fait pas référence à des règles valides
+  rss:
+    content_warning: 'Avertissement de contenu :'
+    descriptions:
+      account: Messages publics de @%{acct}
+      tag: 'Messages publics taggés #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Vous avez dépassé la limite de %{limit} messages planifiés par jour
     over_total_limit: Vous avez dépassé la limite de %{limit} messages planifiés
@@ -1447,7 +1454,7 @@ fr:
     open_in_web: Ouvrir sur le web
     over_character_limit: limite de %{max} caractères dépassée
     pin_errors:
-      direct: Les messages qui ne sont visibles que pour les utilisateurs mentionnés ne peuvent pas être épinglés
+      direct: Les messages qui ne sont visibles que pour les utilisateur·rice·s mentionné·e·s ne peuvent pas être épinglés
       limit: Vous avez déjà épinglé le nombre maximum de messages
       ownership: Vous ne pouvez pas épingler un message ne vous appartenant pas
       reblog: Un partage ne peut pas être épinglé
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index 6156901ac..c6a0c39f1 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -1070,10 +1070,12 @@ gd:
       appealed_msg: Chaidh an t-ath-thagradh agad a chur a-null. Ma thèid aontachadh ris, gheibh thu brath mu dhèidhinn.
       appeals:
         submit: Cuir a-null an t-ath-thagradh
+      approve_appeal: Zatwierdź odwołanie
       associated_report: An gearan co-cheangailte
       created_at: Ceann-là
       description_html: Seo na gnìomhan a chaidh a ghabhail an aghaidh a’ chunntais agad agus na rabhaidhean a chaidh a chur thugad le luchd-obrach %{instance}.
       recipient: Faightear
+      reject_appeal: Diùlt an t-ath-thagradh
       status: 'Post #%{id}'
       status_removed: Chaidh am post a thoirt air falbh on t-siostam mu thràth
       title: "%{action} o %{date}"
@@ -1396,6 +1398,11 @@ gd:
   reports:
     errors:
       invalid_rules: gun iomradh air riaghailtean dligheach
+  rss:
+    content_warning: 'Rabhadh susbainte:'
+    descriptions:
+      account: Postaichean poblach o @%{acct}
+      tag: 'Postaichean poblach le taga #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte an-diugh
     over_total_limit: Chaidh thu thar na crìoch de %{limit} post(aichean) sgeidealaichte
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index a183c6436..56a33eb6b 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -1036,10 +1036,12 @@ gl:
       appealed_msg: A túa apelación foi enviada. Se é aprobada recibirás unha notificación.
       appeals:
         submit: Enviar apelación
+      approve_appeal: Aprobar apelación
       associated_report: Denuncia asociada
       created_at: Data
       description_html: Estas son as accións tomadas contra a túa conta e os avisos que che enviou a administración de %{instance}.
       recipient: Entregada a
+      reject_appeal: Rexeitar apelación
       status: 'Publicación #%{id}'
       status_removed: A publicación xa foi eliminada do sistema
       title: "%{action} o %{date}"
@@ -1354,6 +1356,11 @@ gl:
   reports:
     errors:
       invalid_rules: non fai referencia a regras válidas
+  rss:
+    content_warning: 'Aviso sobre o contido:'
+    descriptions:
+      account: Publicacións públicas de @%{acct}
+      tag: 'Publicacións públicas con #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Excedeches o límite de %{limit} publicacións programadas para ese día
     over_total_limit: Excedeches o límite de %{limit} publicacións programadas
diff --git a/config/locales/he.yml b/config/locales/he.yml
index a5712909b..2d0cf8ae9 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -1396,6 +1396,11 @@ he:
   reports:
     errors:
       invalid_rules: לא מתייחס לכללים קבילים
+  rss:
+    content_warning: 'אזהרת תוכן:'
+    descriptions:
+      account: פוסטים ציבוריים מחשבון @%{acct}
+      tag: 'פוסטים ציבוריים עם תיוג #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים להיום, שהוא %{limit}
     over_total_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים, שהוא %{limit}
@@ -1566,6 +1571,9 @@ he:
     pinned: חצרוץ מוצמד
     reblogged: הודהד
     sensitive_content: תוכן רגיש
+  strikes:
+    errors:
+      too_late: מאוחר מדי להגיש ערעור
   tags:
     does_not_match_previous_name: לא תואם את השם האחרון
   terms:
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index d91dd28b5..b6108c6e6 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -40,7 +40,7 @@ hu:
     status_count_before: Eddig
     tagline: Kövess barátokat és találj újakat
     terms: Felhasználási feltételek
-    unavailable_content: A tartalom nem elérhető
+    unavailable_content: Kimoderált szerverek
     unavailable_content_description:
       domain: Szerver
       reason: 'Indok:'
@@ -1038,10 +1038,12 @@ hu:
       appealed_msg: A fellebbezésedet beküldtük. Ha jóváhagyták, értesítünk.
       appeals:
         submit: Fellebbezés beküldése
+      approve_appeal: Fellebbezés jóváhagyása
       associated_report: Társított bejelentés
       created_at: Dátum
       description_html: Ezek a fiókoddal szemben elvégzett műveletek és figyelmeztetések, melyeket a %{instance} szerver csapata küldött.
       recipient: Címzett
+      reject_appeal: Fellebbezés elutasítása
       status: 'Bejegyzés #%{id}'
       status_removed: A bejegyzést már eltávolítottuk a rendszerből
       title: "%{action} ekkor: %{date}"
@@ -1356,6 +1358,11 @@ hu:
   reports:
     errors:
       invalid_rules: nem hivatkozik érvényes szabályra
+  rss:
+    content_warning: 'Tartalmi figyelmeztetés:'
+    descriptions:
+      account: Nyilvános bejegyzések a(z) @%{acct} fióktól
+      tag: 'Ezzel jelölt nyilvános bejegyzések: #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os napi limitet
     over_total_limit: Túllépted az időzített bejegyzésekre vonatkozó %{limit} db-os limitet
@@ -1438,7 +1445,7 @@ hu:
         one: "%{count} videó"
         other: "%{count} videó"
     boosted_from_html: Megtolva innen %{acct_link}
-    content_warning: 'Tartalom figyelmeztetés: %{warning}'
+    content_warning: 'Tartalmi figyelmeztetés: %{warning}'
     default_language: Felhasználói felület nyelvével azonos
     disallowed_hashtags:
       one: 'tiltott hashtaget tartalmaz: %{tags}'
diff --git a/config/locales/id.yml b/config/locales/id.yml
index d6d00581e..610a45e1c 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -1017,10 +1017,12 @@ id:
       appealed_msg: Banding Anda sudah dikirim. Jika disetujui, Anda akan diberi tahu.
       appeals:
         submit: Ajukan banding
+      approve_appeal: Setujui banding
       associated_report: Laporan yang berkaitan
       created_at: Tanggal
       description_html: Ini adalah tindakan yang dilakukan terhadap akun Anda dan peringatan telah dikirim oleh staf %{instance}.
       recipient: Dialamatkan untuk
+      reject_appeal: Tolak banding
       status: 'Kiriman #%{id}'
       status_removed: Kirim sudah dihapus dari sistem
       title: "%{action} dari %{date}"
@@ -1331,6 +1333,11 @@ id:
   reports:
     errors:
       invalid_rules: tidak mereferensikan aturan yang valid
+  rss:
+    content_warning: 'Peringatan konten:'
+    descriptions:
+      account: Kiriman publik dari @%{acct}
+      tag: 'Kiriman publik ditagari #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Anda telah melampaui batas %{limit} toot terjadwal untuk sehari
     over_total_limit: Anda telah melampaui batas %{limit} toot terjadwal
@@ -1483,6 +1490,9 @@ id:
     pinned: Toot tersemat
     reblogged: di-boost-kan
     sensitive_content: Konten sensitif
+  strikes:
+    errors:
+      too_late: Terlambat untuk mengajukan banding hukuman ini
   tags:
     does_not_match_previous_name: tidak cocok dengan nama sebelumnya
   terms:
diff --git a/config/locales/io.yml b/config/locales/io.yml
index b6f7937c3..044dbf22e 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -71,6 +71,10 @@ io:
     distance_in_words:
       half_a_minute: Jus
       less_than_x_seconds: Jus
+  disputes:
+    strikes:
+      approve_appeal: Aprobez rikonsidero
+      reject_appeal: Refusez rikonsidero
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': You don't have permission to view this page.
@@ -127,6 +131,11 @@ io:
     missing_resource: La URL di plussendado ne povis esar trovita
     proceed: Durar por plussendar
     prompt: 'Tu sequeskos:'
+  rss:
+    content_warning: 'Kontenajaverto:'
+    descriptions:
+      account: Publika posti de @%{acct}
+      tag: 'Publika posti kun tago #%{hashtag}'
   settings:
     authorized_apps: Yurizita apliki
     back: Retro a Mastodon
@@ -146,6 +155,9 @@ io:
   stream_entries:
     reblogged: diskonocigita
     sensitive_content: Titiliva kontenajo
+  strikes:
+    errors:
+      too_late: Ol esas tro tarda ye apelar ca strekizo
   two_factor_authentication:
     disable: Extingar
     generate_recovery_codes: Generate Recovery Codes
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 3e3ca0ed5..02a2e0254 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -1036,10 +1036,12 @@ is:
       appealed_msg: Áfrýjun þín hefur verið sen dinn. Þú verður látin/n vita ef hún verður samþykkt.
       appeals:
         submit: Senda inn áfrýjun
+      approve_appeal: Samþykkja áfrýjun
       associated_report: Tengd kæra
       created_at: Dagsett
       description_html: Þetta eru aðgerðir sem notaðar hafa verið gagnvart aðgangnum þínum og aðvaranir sem þér hafa verið sendar af umsjónarfólki á %{instance}.
       recipient: Stílað til
+      reject_appeal: Hafna áfrýjun
       status: 'Færsla #%{id}'
       status_removed: Færsla þegar fjarlægð úr kerfinu
       title: "%{action} frá %{date}"
@@ -1354,6 +1356,11 @@ is:
   reports:
     errors:
       invalid_rules: vísar ekki til gildra reglna
+  rss:
+    content_warning: 'Aðvörun vegna efnis:'
+    descriptions:
+      account: Opinberar færslur frá @%{acct}
+      tag: 'Opinberar færslur merktar #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur fyrir þennan dag
     over_total_limit: Þú hefur farið fram úr hámarkinu með %{limit} áætlaðar færslur
diff --git a/config/locales/it.yml b/config/locales/it.yml
index ed3fc3785..7963c2afe 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -1038,10 +1038,12 @@ it:
       appealed_msg: Il tuo appello è stato presentato. Se sarà approvato, sarai informato.
       appeals:
         submit: Presenta un appello
+      approve_appeal: Approva ricorso
       associated_report: Segnalazione associata
       created_at: Data
       description_html: Queste sono azioni intraprese contro il tuo profilo e avvisi inviati a te dallo staff di %{instance}.
       recipient: Indirizzata a
+      reject_appeal: Respingi ricorso
       status: 'Post #%{id}'
       status_removed: Post già rimosso dal sistema
       title: "%{action} da %{date}"
@@ -1356,6 +1358,11 @@ it:
   reports:
     errors:
       invalid_rules: non fa riferimento a regole valide
+  rss:
+    content_warning: 'Avviso sul contenuto:'
+    descriptions:
+      account: Post pubblici di @%{acct}
+      tag: 'Post pubblici taggati #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Hai superato il limite di %{limit} post programmati per questo giorno
     over_total_limit: Hai superato il limite di %{limit} post programmati
@@ -1514,6 +1521,9 @@ it:
     pinned: Post fissato in cima
     reblogged: condiviso
     sensitive_content: Materiale sensibile
+  strikes:
+    errors:
+      too_late: È troppo tardi per fare appello contro questa sanzione
   tags:
     does_not_match_previous_name: non corrisponde al nome precedente
   terms:
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 13b1b149f..6e7b6b0a7 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -492,6 +492,8 @@ ja:
       dashboard:
         instance_accounts_dimension: 最もフォローされているアカウント
         instance_accounts_measure: 保存されたアカウント
+        instance_followers_measure: そこでの我々のフォロワー
+        instance_follows_measure: そのインスタンスのこのインスタンスでのフォロワー
         instance_languages_dimension: 人気の言語
         instance_media_attachments_measure: 保存されたメディア
         instance_reports_measure: 通報
@@ -1003,10 +1005,12 @@ ja:
       appealed_msg: 申し立てが送信されました。承認されると通知されます。
       appeals:
         submit: 抗議を送信
+      approve_appeal: 抗議を承認
       associated_report: 関連する通報
       created_at: 日時
       description_html: これらは、%{instance}のスタッフがあなたのアカウントに対して行った措置や、あなたに送られた警告です。
       recipient: 送信元
+      reject_appeal: 抗議を却下
       status: '投稿 #%{id}'
       status_removed: 既に削除されています
       title: "%{date}に%{action}"
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index 0c1576776..124708d34 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -1021,10 +1021,12 @@ ko:
       appealed_msg: 당신의 이의제기가 접수되었습니다. 만약 승인된다면, 알림을 받게 될 것입니다.
       appeals:
         submit: 이의 제출
+      approve_appeal: 이의제기 승인
       associated_report: 관련된 신고
       created_at: 날짜
       description_html: 이 결정사항들은 당신에 계정에 대해 행해졌고 %{instance}의 스태프에 의해 경고가 발송되었습니다.
       recipient: 수신자
+      reject_appeal: 이의제기 거절
       status: '게시물 #%{id}'
       status_removed: 게시물이 이미 시스템에서 지워졌습니다
       title: "%{action} (%{date}에)"
@@ -1335,6 +1337,11 @@ ko:
   reports:
     errors:
       invalid_rules: 올바른 규칙을 포함하지 않습니다
+  rss:
+    content_warning: '열람 주의:'
+    descriptions:
+      account: "@%{acct}의 공개 게시물"
+      tag: "#%{hashtag} 해시태그가 붙은 공개 게시물"
   scheduled_statuses:
     over_daily_limit: 그 날짜에 대한 %{limit}개의 예약 게시물 제한을 초과합니다
     over_total_limit: 예약 게시물 제한 %{limit}을 초과합니다
@@ -1487,6 +1494,9 @@ ko:
     pinned: 고정된 게시물
     reblogged: 님이 부스트 했습니다
     sensitive_content: 민감한 컨텐츠
+  strikes:
+    errors:
+      too_late: 이의를 제기하기에 너무 늦었습니다
   tags:
     does_not_match_previous_name: 이전 이름과 맞지 않습니다
   terms:
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
index 547bfcce0..3b4ab87c2 100644
--- a/config/locales/ku.yml
+++ b/config/locales/ku.yml
@@ -1038,10 +1038,12 @@ ku:
       appealed_msg: Îtîraza te hatiye şandin. Ku were pejirandin, tu yê werî agahdarkirin.
       appeals:
         submit: Îtîrazê bişîne
+      approve_appeal: Îtîrazê bipejirîne
       associated_report: Ragihandina têkildar
       created_at: Dîrok
       description_html: Ev kiryarên ku li dijî ajimêrê te hatine kirin û hişyariyên ku ji hêla xebatkarên %{instance} ve ji te re hatine şandinin.
       recipient: Ji kê re
+      reject_appeal: Îtîrazê nepejirîne
       status: 'Şandî #%{id}'
       status_removed: Şandî jixwe ji pergalê hatî rakirin
       title: "%{action} ji %{date}"
@@ -1356,6 +1358,11 @@ ku:
   reports:
     errors:
       invalid_rules: rêbazên derbasdar nîşan nadê
+  rss:
+    content_warning: 'Hişyariya naverokê:'
+    descriptions:
+      account: Şandiyên gelemperî ji @%{acct}
+      tag: 'Şandiyên gelemperî yên nîşankirî #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Te sînorê %{limit} şandiyên demsazkirî yên ji bo îro derbas kir
     over_total_limit: Te sînorê %{limit} şandiyên demsazkirî derbas kir
@@ -1514,6 +1521,9 @@ ku:
     pinned: Şandiya derzîkirî
     reblogged: bilindkirî
     sensitive_content: Naveroka hestiyarî
+  strikes:
+    errors:
+      too_late: Pir dereng e ji bo îtîrazê li ser vê binpêkirinê
   tags:
     does_not_match_previous_name: bi navê berê re li hev nayê
   terms:
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 61e15c679..e62264acd 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -1053,10 +1053,12 @@ lv:
       appealed_msg: Jūsu apelācija ir iesniegta. Ja tā tiks apstiprināta, jums tiks paziņots.
       appeals:
         submit: Iesniegt apelāciju
+      approve_appeal: Apstiprināt apelāciju
       associated_report: Saistītais ziņojums
       created_at: Datēts
       description_html: Šīs ir darbības, kas veiktas pret tavu kontu, un brīdinājumi, ko tev ir nosūtījuši %{instance} darbinieki.
       recipient: Adresēts
+      reject_appeal: Noraidīt apelāciju
       status: 'Publikācija #%{id}'
       status_removed: Publikācija jau ir noņemta no sistēmas
       title: "%{action} kopš %{date}"
@@ -1375,6 +1377,11 @@ lv:
   reports:
     errors:
       invalid_rules: neatsaucas uz derīgiem noteikumiem
+  rss:
+    content_warning: 'Satura brīdinājums:'
+    descriptions:
+      account: Publiskas ziņas no @%{acct}
+      tag: 'Publiskas ziņas ar atzīmi #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Tu esi pārsniedzis šodien ieplānoto %{limit} ziņu ierobežojumu
     over_total_limit: Tu esi pārsniedzis ieplānoto %{limit} ziņu ierobežojumu
@@ -1539,6 +1546,9 @@ lv:
     pinned: Piespraustā ziņa
     reblogged: paaugstinātās
     sensitive_content: Sensitīvs saturs
+  strikes:
+    errors:
+      too_late: Brīdinājuma apstrīdēšanas laiks ir nokavēts
   tags:
     does_not_match_previous_name: nesakrīt ar iepriekšējo nosaukumu
   terms:
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 7a322a730..76b3535fe 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -173,6 +173,11 @@ pl:
       pending: Oczekuje na przegląd
       perform_full_suspension: Zawieś
       previous_strikes: Poprzednie ostrzeżenia
+      previous_strikes_description_html:
+        few: To konto ma <strong>%{count}</strong> ostrzeżenia.
+        many: To konto ma <strong>%{count}</strong> ostrzeżeń.
+        one: To konto ma <strong>jedno</strong> ostrzeżenie.
+        other: To konto ma <strong>%{count}</strong> ostrzeżeń.
       promote: Podnieś uprawnienia
       protocol: Protokół
       public: Publiczne
@@ -465,6 +470,11 @@ pl:
       view: Zobacz blokadę domeny
     email_domain_blocks:
       add_new: Dodaj nową
+      attempts_over_week:
+        few: "%{count} próby w ciągu ostatniego tygodnia"
+        many: "%{count} prób w ciągu ostatniego tygodnia"
+        one: "%{count} próba w ciągu ostatniego tygodnia"
+        other: "%{count} prób w ciągu ostatniego tygodnia"
       created_msg: Pomyślnie utworzono blokadę domeny e-mail
       delete: Usuń
       dns:
@@ -490,6 +500,11 @@ pl:
     instances:
       availability:
         failure_threshold_reached: Próg niepowodzenia osiągnięty dnia %{date}.
+        failures_recorded:
+          few: Nieudane próby w %{count} różnych dniach.
+          many: Nieudane próby w %{count} różnych dniach.
+          one: Nieudane próby %{count} dnia.
+          other: Nieudane próby w %{count} różnych dniach.
         no_failures_recorded: Brak błędów w rejestrze.
         title: Dostępność
         warning: Ostatnia próba połączenia z tym serwerem zakończyła się niepowodzeniem
@@ -521,6 +536,7 @@ pl:
       delivery:
         all: Wszystkie
         clear: Wyczyść błędy w doręczaniu
+        failing: Niepowodzenie
         restart: Uruchom ponownie doręczenie
         stop: Zatrzymaj doręczanie
         unavailable: Niedostępne
@@ -529,6 +545,11 @@ pl:
       delivery_error_hint: Jeżeli doręczanie nie będzie możliwe przez %{count} dni, zostanie automatycznie oznaczona jako nie do doręczania.
       destroyed_msg: Dane z %{domain} są teraz w kolejce do bezpośredniego usunięcia.
       empty: Nie znaleziono domen.
+      known_accounts:
+        few: "%{count} znane konta"
+        many: "%{count} znanych kont"
+        one: "%{count} znane konto"
+        other: "%{count} znane konta"
       moderation:
         all: Wszystkie
         limited: Ograniczone
@@ -1034,10 +1055,12 @@ pl:
       appealed_msg: Twoje odwołanie zostało złożone. Jeśli zostanie zatwierdzone, zostaniesz powiadomiony.
       appeals:
         submit: Zgłoś odwołanie
+      approve_appeal: Zatwierdź odwołanie
       associated_report: Powiązany raport
       created_at: Data
       description_html: Są to działania podjęte przeciwko Twojemu kontu i ostrzeżenia wysłane do ciebie przez administrację %{instance}.
       recipient: Adresowane do
+      reject_appeal: Odrzuć odwołanie
       status: 'Post #%{id}'
       status_removed: Post został już usunięty z systemu
       title: "%{action} z %{date}"
@@ -1360,6 +1383,11 @@ pl:
   reports:
     errors:
       invalid_rules: nie odwołuje się do prawidłowych reguł
+  rss:
+    content_warning: 'Ostrzeżenie o zawartości:'
+    descriptions:
+      account: Publiczne posty od @%{acct}
+      tag: 'Publiczne wpisy oznaczone #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów na ten dzień
     over_total_limit: Przekroczyłeś(-aś) limit %{limit} zaplanowanych wpisów
@@ -1530,6 +1558,9 @@ pl:
     pinned: Przypięty wpis
     reblogged: podbił
     sensitive_content: Wrażliwa zawartość
+  strikes:
+    errors:
+      too_late: Jest za późno na odwołanie się od tego ostrzeżenia
   tags:
     does_not_match_previous_name: nie pasuje do poprzedniej nazwy
   terms:
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index fa8d33b58..49cee32d0 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -1036,10 +1036,12 @@ pt-PT:
       appealed_msg: O seu recurso foi submetido. Se ele for aprovado, será notificado.
       appeals:
         submit: Submeter recurso
+      approve_appeal: Aprovar recurso
       associated_report: Denúncia associada
       created_at: Data
       description_html: Estas são ações tomadas contra a sua conta e avisos que lhe foram enviados pela equipa de %{instance}.
       recipient: Endereçado a
+      reject_appeal: Rejeitar recurso
       status: 'Publicação #%{id}'
       status_removed: Publicação já eliminada do sistema
       title: "%{action} de %{date}"
@@ -1354,6 +1356,11 @@ pt-PT:
   reports:
     errors:
       invalid_rules: não faz referência a regras válidas
+  rss:
+    content_warning: 'Aviso de conteúdo:'
+    descriptions:
+      account: Publicações públicas de @%{acct}
+      tag: 'Publicações públicas marcadas com #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Excedeste o limite de %{limit} publicações agendadas para esse dia
     over_total_limit: Tu excedeste o limite de %{limit} publicações agendadas
@@ -1512,6 +1519,9 @@ pt-PT:
     pinned: Toot fixado
     reblogged: partilhado
     sensitive_content: Conteúdo sensível
+  strikes:
+    errors:
+      too_late: É tarde demais para apelar desta punição
   tags:
     does_not_match_previous_name: não coincide com o nome anterior
   terms:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 2187ae409..5123a2d6f 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -260,6 +260,7 @@ ru:
         destroy_domain_allow: Отзыв разрешений для доменов
         destroy_domain_block: Разблокировка доменов
         destroy_email_domain_block: Разблокировка e-mail доменов
+        destroy_instance: Очистить домен
         destroy_ip_block: Удаление правил для IP-адресов
         destroy_status: Удаление постов
         destroy_unavailable_domain: Исключение доменов из списка недоступных
@@ -912,6 +913,7 @@ ru:
       functional: Ваша учётная запись в полном порядке.
       pending: Ваша заявка ожидает одобрения администраторами, это может занять немного времени. Вы получите письмо, как только заявку одобрят.
       redirecting_to: Ваша учётная запись деактивированна, потому что вы настроили перенаправление на %{acct}.
+      view_strikes: Просмотр предыдущих замечаний в адрес вашей учетной записи
     too_fast: Форма отправлена слишком быстро, попробуйте еще раз.
     trouble_logging_in: Не удаётся войти?
     use_security_key: Использовать ключ безопасности
@@ -984,9 +986,11 @@ ru:
       appealed_msg: Ваша апелляция была отправлена. Если она будет одобрена, вы будете уведомлены.
       appeals:
         submit: Подать обжалование
+      approve_appeal: Одобрить обжалование
       associated_report: Связанные обращения
       created_at: Дата
       recipient: Адресовано
+      reject_appeal: Отклонить обжалование
       status: 'Пост #%{id}'
       status_removed: Пост уже удален из системы
       title: "%{action} от %{date}"
@@ -1306,6 +1310,11 @@ ru:
   reports:
     errors:
       invalid_rules: не ссылается на действительные правила
+  rss:
+    content_warning: 'Предупреждение о содержании:'
+    descriptions:
+      account: Публичные посты @%{acct}
+      tag: 'Публичные посты отмеченные хэштегом #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Вы превысили лимит в %{limit} запланированных постов на указанный день
     over_total_limit: Вы превысили лимит на %{limit} запланированных постов
@@ -1372,6 +1381,7 @@ ru:
     profile: Профиль
     relationships: Подписки и подписчики
     statuses_cleanup: Авто-удаление постов
+    strikes: Замечания модерации
     two_factor_authentication: Подтверждение входа
     webauthn_authentication: Ключи безопасности
   statuses:
@@ -1475,6 +1485,9 @@ ru:
     pinned: Закреплённый пост
     reblogged: продвинул(а)
     sensitive_content: Содержимое деликатного характера
+  strikes:
+    errors:
+      too_late: Слишком поздно обжаловать это замечание
   tags:
     does_not_match_previous_name: не совпадает с предыдущим именем
   terms:
@@ -1601,12 +1614,14 @@ ru:
       title: Выполнен вход
     warning:
       appeal: Обжаловать
+      appeal_description: Если вы считаете, что это ошибка, вы можете обратиться к поддержке %{instance}.
       categories:
         spam: Спам
         violation: Содержимое нарушает следующие правила сообщества
       explanation:
         delete_statuses: Было обнаружено, что некоторые из ваших постов нарушают одно или несколько правил сообщества, и они были удалены модераторами %{instance}.
         disable: Вы не можете использовать свою учётную запись, однако ваш профиль и данные остаются нетронутыми. Вы можете запросить выгрузку своих данных, менять настройки, либо полностью удалить свою учётную запись.
+        mark_statuses_as_sensitive: Некоторые из ваших сообщений были отмечены модераторами %{instance} как деликатные. Это означает, что людям нужно будет нажать на медиа в сообщениях, прежде чем будет показан предпросмотр. При публикации в будущем вы можете помечать медиафайлы как деликатные самостоятельно.
         sensitive: С этого момента, все прикрепляемые вами файлы будут отмечаться как «деликатного характера» и скрыты за предупреждением, требующими клика.
         silence: Вы по-прежнему можете использовать свою учётную запись, но только пользователи, которые подписаны на вас, смогут видеть ваши публикации на данном узле. Вы также будете исключены из различных поисковых функций, однако пользователи всё ещё могут вручную подписаться на вас.
         suspend: Вы больше не сможете использовать эту учётную запись и ваш профиль более недоступен к просмотру. Вы по-прежнему можете войти в учётную запись, чтобы запросить выгрузку своих данных, до тех пор, пока они не будут удалены спустя 30 дней (за исключением информации, которая не позволит вам обойти эту блокировку).
@@ -1615,7 +1630,9 @@ ru:
       subject:
         delete_statuses: Опубликованные вами с учётной записи %{acct} посты были удалены
         disable: Ваша учётная запись %{acct} заморожена
+        mark_statuses_as_sensitive: Ваши сообщения в %{acct} были отмечены как деликатные
         none: "%{acct} вынесено предупреждение"
+        sensitive: Ваши сообщения в %{acct} будут отмечены с этого момента как деликатные
         silence: На учётную запись %{acct} наложены ограничения
         suspend: Ваша учётная запись %{acct} была заблокирована
       title:
diff --git a/config/locales/simple_form.ar.yml b/config/locales/simple_form.ar.yml
index 60d893cce..ea01e6882 100644
--- a/config/locales/simple_form.ar.yml
+++ b/config/locales/simple_form.ar.yml
@@ -37,6 +37,7 @@ ar:
         current_password: لأسباب أمنية ، يرجى إدخال الكلمة السرية الخاصة بالحساب الحالي
         current_username: يرجى إدخال اسم المستخدم الخاص بالحساب الحالي قصد التأكيد
         digest: تُرسَل إليك بعد مُضيّ مدة مِن خمول نشاطك و فقط إذا ما تلقيت رسائل شخصية مباشِرة أثناء فترة غيابك مِن الشبكة
+        discoverable: السماح للغرباء اكتشاف حسابك من خلال التوصيات والمتداولة وغيرها من الميزات
         email: سوف تتلقى رسالة إلكترونية للتأكيد
         fields: يُمكنك عرض 4 عناصر على شكل جدول في صفحتك التعريفية
         header: ملف PNG أو GIF أو JPG. حجمه على أقصى تصدير %{size}. سيتم تصغيره إلى %{dimensions}px
diff --git a/config/locales/simple_form.hu.yml b/config/locales/simple_form.hu.yml
index 993961667..fb147a22c 100644
--- a/config/locales/simple_form.hu.yml
+++ b/config/locales/simple_form.hu.yml
@@ -46,7 +46,7 @@ hu:
         locale: A felhasználói felület, e-mailek, push üzenetek nyelve
         locked: Egyenként engedélyezned kell a követőidet
         password: Legalább 8 karakter
-        phrase: Illeszkedni fog kis/nagybetű függetlenül, és tartalom-figyelmeztetések mögött is
+        phrase: Illeszkedni fog kis/nagybetű függetlenül, és tartalmi figyelmeztetések mögött is
         scopes: Mely API-kat érheti el az alkalmazás. Ha felső szintű hatáskört választasz, nem kell egyesével kiválasztanod az alatta lévőeket.
         setting_aggregate_reblogs: Ne mutassunk megtolásokat olyan bejegyzésekhez, melyeket nemrég toltak meg (csak új megtolásokra lép életbe)
         setting_always_send_emails: Alapesetben nem küldünk e-mail értesítéseket, ha aktívan használod a Mastodont
@@ -165,7 +165,7 @@ hu:
         setting_display_media_default: Alapértelmezés
         setting_display_media_hide_all: Mindent elrejt
         setting_display_media_show_all: Mindent mutat
-        setting_expand_spoilers: Tartalom figyelmeztetéssel ellátott bejegyzések automatikus kinyitása
+        setting_expand_spoilers: Tartalmi figyelmeztetéssel ellátott bejegyzések automatikus kinyitása
         setting_hide_network: Hálózatod elrejtése
         setting_noindex: Megtiltom a keresőmotoroknak, hogy indexeljék a tartalmaimat
         setting_reduce_motion: Animációk mozgásának csökkentése
diff --git a/config/locales/simple_form.io.yml b/config/locales/simple_form.io.yml
index 4d640fd9a..4f6f2f782 100644
--- a/config/locales/simple_form.io.yml
+++ b/config/locales/simple_form.io.yml
@@ -2,42 +2,229 @@
 io:
   simple_form:
     hints:
+      account_alias:
+        acct: Partikulare pozez uzantonomo@domeno di konto quon vua volas ektransferesar
+      account_migration:
+        acct: Partikulare pozez uzantonomo@domeno di konto quon vua volas entransferesar
+      account_warning_preset:
+        text: Vu povas uzar postosintaxo tale URL, hashtagi e mencioni
+        title: Neobligata. Nevidebla da recevanto
+      admin_account_action:
+        include_statuses: Uzanto vidos quala posti quo kauzigas jero o averto
+        send_email_notification: Uzanto ganos expliko pri quo eventas a olia konto
+        text_html: Neobligata. Vu povas uzar postosintaxo. Vu povas <a href="%{path}">insertar avertofixiti</a> por sparar tempo
+        type_html: Selektez ago per <strong>%{acct}</strong>
+        types:
+          disable: Preventez uzanto de uzar olia konto ma ne efacez o celez olia kontenaji.
+          none: Uzez co por sendar averto a la uzanto sen eventigar irga altra ago.
+          sensitive: Koaktez omna mediiatachaji da ca uzanto markigesar quale sentiva.
+          silence: Preventez la uzanto de povar postar per publika videbleso, celez olia posti e avizi de personi quo ne sequas oli.
+          suspend: Preventez irga interago de o a ca konto e efacez ola kontenaji. Inversebla til 30 dii.
+        warning_preset_id: Neobligata. Vu povas ankore insertar kustume texto a extremajo di fixito
+      announcement:
+        all_day: Kande kontrolesas, nur tempoporteodato montresos
+        ends_at: Neobligata. Anunco automatika depublikigesos dum ta tempo
+        scheduled_at: Restez quale vakua por publikigar anunco quik
+        starts_at: Neobligata. Por vua anunco limitizesas a partikulare tempoporteo
+        text: Vu povas uzar postosintaxo. Notez intervalo quon anunco uzas che skreno de uzanto
+      appeal:
+        text: Vu povas nur apelar striko unafoye
       defaults:
+        autofollow: Personi quo registresesas tra invito automatika sequos vu
         avatar: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px
+        bot: Signalez a altra personi ke la konto precipue havas automatikigita agi e forsan ne surveyesas
+        context: 1 o plu situeso kande filtrilo debas aplikesar
+        current_password: Por sekuresorezoni, pozez pasvorto di ca konto
+        current_username: Por konfirmar, pozez uzantonomo di ca konto
+        digest: Nur sendesas pos longa neaktiveso e nur se vu ganis irga mesaji dum ke vu esas neprezenta
+        discoverable: Permisez vua konto deskovresar da nekonociti tra rekomendi, tendenci e altra traiti
+        email: Vu sendesos konfirmretposto
+        fields: On povas havar maxime 4 kozi quo montresas quale tabelo che ona profilo
         header: En la formato PNG, GIF o JPG. Til %{size}. Esos mikrigita a %{dimensions}px
+        inbox_url: Kopiez URL de frontpagino de relayo quon vu volas uzar
+        irreversible: Filtrita posti neinversigeble desaparos, mem se filtro efacesas pose
+        locale: Linguo di uzantointervizajo, retposti e pulsavizi
         locked: Tu devos aprobar omna demandi di sequado, e tua mesaji esos senchanje nur por tua sequanti.
+        password: Uzes minime 8 litri
+        phrase: Parigesos ne ye textosituaciono o konteneyoaverto di posto
+        scopes: Quala API quon softwaro permisesas acesar. Se vu selektas alta skopo, vu ne mustas selektar individui.
+        setting_aggregate_reblogs: Ne montrez nova busti di posti quo recente bustesas (nova busti)
+        setting_always_send_emails: Normale retpostoavizi ne sendesas kande vu aktiva uzas Mastodon
+        setting_default_sensitive: Sentoza medii originala celesas e povas revelesar per klikto
+        setting_display_media_default: Celez medii quo markigesis quale sentoza
+        setting_display_media_hide_all: Sempre celez medii
+        setting_display_media_show_all: Sempre montrez medii
+        setting_hide_network: Vua sequato e sequanto celesos che vua profilo
+        setting_noindex: Efektigar vua publika profilo e postopagini
+        setting_show_application: Softwaro quon vu uzar por postigar montresos che detala vidajo di vua posti
+        setting_use_blurhash: Inklini esas segun kolori di celesis vidaji ma kovras irga detali
+        setting_use_pending_items: Celez tempolineonovi dop kliktar e ne automatike movigar niuzeto
+        username: Vua uzantonomo esos nura che %{domain}
+        whole_word: Kande klefvorto o fraz esas nur litera e nombra, ol nur aplikesos se ol parigesas la tota vorto
+      domain_allow:
+        domain: Ca domeno povas ganar informi de ca servilo e venanta informo de ol procedagesos e sparesos
+      email_domain_block:
+        domain: Co povas esas domennomo quo montresas che retposto o registrajo MX quon ol uzas. Oli kontrolesos kande registro.
+        with_dns_records: Probo di rezolvar registri DNS di la domeno agesos e rezulti anke preventesos
+      featured_tag:
+        name: 'Vu forsan volas uzar 1 de co:'
+      form_challenge:
+        current_password: Vu eniras sekura areo
       imports:
         data: Dosiero CSV de altra instaluro di Mastodon
+      invite_request:
+        text: Co helpos ni kontrolar vua apliko
+      ip_block:
+        comment: Neobligata. Memorez por quo vu insertas ca regulo.
+        expires_in: IP-Adresi esas finita resurs, oli kelkafoye partigesas e frequenta uzesas da multa personi. Do, nedefinita IP-restrikti ne rekomendesas.
+        ip: Tipez adreso di IPv4 o IPv6. Vu povas restrikar tota porteo per sintaxo CIDR. Sorgemez por ke vu ne klefklozas su!
+        severities:
+          no_access: Restriktez aceso a omna resursi
+          sign_up_requires_approval: Nova registro bezonos vua aprobo
+        severity: Selektez quo eventos kun demandi de ca IP
+      rule:
+        text: Deskriptez regulo o bezonaj por uzanti en ca servilo. Vu debas lasar lu esar korta e simpla
       sessions:
         otp: Enter the Two-factor code from your phone or use one of your recovery codes.
+        webauthn: Se ol esas klefo di USB, certigar ke vu insertas e se bezonesas, tushetez.
+      tag:
+        name: Vu povas nur chanjar literkaso, por exemplo, por kauzigar lu divenar plu lektebla
+      user:
+        chosen_languages: Kande marketigesis, nur posti en selektesis lingui montresos en publika tempolinei
     labels:
+      account:
+        fields:
+          name: Etiketo
+          value: Kontenajo
+      account_alias:
+        acct: Nomo di olda konto
+      account_migration:
+        acct: Nomo di nova konto
+      account_warning_preset:
+        text: Fixita texto
+        title: Titulo
+      admin_account_action:
+        include_statuses: Inkluzez raportigita posti en retposto
+        send_email_notification: Notifikez la uzanto di retposto
+        text: Kustumizita averto
+        type: Ago
+        types:
+          disable: Cesez
+          none: Sendez averto
+          sensitive: Privata
+          silence: Limitigez
+          suspend: Desaprobez
+        warning_preset_id: Uzez avertfixito
+      announcement:
+        all_day: Evento di tota dio
+        ends_at: Fino di evento
+        scheduled_at: Skemigez publikigito
+        starts_at: Komenco di evento
+        text: Anunco
+      appeal:
+        text: Explikar por quo ca decidajo debas inversigesar
       defaults:
+        autofollow: Invitez por sequar vua konto
         avatar: Profilimajo
+        bot: Co esas botkonto
+        chosen_languages: Filtrez lingui
         confirm_new_password: Konfirmar nova pasvorto
         confirm_password: Konfirmar nova pasvorto
+        context: Filtrez kuntexti
         current_password: Nuna pasvorto
         data: Datumi
+        discoverable: Sugestez konto a altra personi
         display_name: Publika nomo
         email: Retpost-adreso
+        expires_in: Expiras pos
+        fields: Profilmetadato
         header: Kapimajo
+        honeypot: "%{label} (ne plenigez)"
+        inbox_url: URL di relayoenbuxo
+        irreversible: Deslevez e ne celez
         locale: Linguo
         locked: Privatigar la konto
+        max_uses: Maxima uzi
         new_password: Nova pasvorto
         note: Suprizento
         otp_attempt: Dufaktora identigilo
         password: Pasvorto
+        phrase: Klefvorto o frazo
+        setting_advanced_layout: Aktivigez avanca retintervizajo
+        setting_aggregate_reblogs: Grupbusti en tempolinei
+        setting_always_send_emails: Sempre sendez retpostoavizi
+        setting_auto_play_gif: Automate pleez animigita GIFi
+        setting_boost_modal: Montrez konfirmdialogo ante bustar
+        setting_crop_images: Ektranchez imaji en neexpansigita posti a 16x9
+        setting_default_language: Postolinguo
         setting_default_privacy: Videbleso di la mesaji
+        setting_default_sensitive: Sempre markigez medii quale privata
+        setting_delete_modal: Montrez konfirmdialogo ante efacar posto
+        setting_disable_swiping: Desaktivigez fingromovi
+        setting_display_media: Mediomontrajo
+        setting_display_media_default: Originalo
+        setting_display_media_hide_all: Celez omno
+        setting_display_media_show_all: Montrez omno
+        setting_expand_spoilers: Sempre expansigez posti quo markigesis kun kontenajaverti
+        setting_hide_network: Celez vua sociala grafiko
+        setting_noindex: Desjuntez trovmotorindexigo
+        setting_reduce_motion: Diminutez animmovo
+        setting_show_application: Montrez softwaro quo uzesis por sendar posti
+        setting_system_font_ui: Uzez originala literfonto di sistemo
+        setting_theme: Sittemo
+        setting_trends: Montrez tendenco di hodie
+        setting_unfollow_modal: Montrez konfirmdialogo ante desequar ulu
+        setting_use_blurhash: Montrez koloroza inklini por celata medii
+        setting_use_pending_items: Modo lenta
+        severity: Severeso
+        sign_in_token_attempt: Sekuresnumero
         type: Tipo di importaco
         username: Uzernomo
+        username_or_email: Uzantonomo o retposto
+        whole_word: Tota vorto
+      email_domain_block:
+        with_dns_records: Inkluzez registraji MX e IPi di domeno
+      featured_tag:
+        name: Hashtago
       interactions:
         must_be_follower: Celar la savigi da homi, qui ne sequas tu
         must_be_following: Celar la savigi da homi, quin tu ne sequas
+        must_be_following_dm: Obstruktez direta mesaji de personi quon vu ne sequas
+      invite:
+        comment: Komento
+      invite_request:
+        text: Por quo vu volas juntar?
+      ip_block:
+        comment: Komento
+        ip: IP
+        severities:
+          no_access: Depermisez aceso
+          sign_up_requires_approval: Limitigez registri
+        severity: Regulo
       notification_emails:
+        appeal: Ulu apelas jererdecidajo
         digest: Sendar rezuma retpost-mesaji
         favourite: Sendar retpost-mesajo, kande ulu favoras mesajo da tu
         follow: Sendar retpost-mesajo, kande ulu sequeskas tu
         follow_request: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
         mention: Sendar retpost-mesajo, kande ulu mencionas tu
+        pending_account: Nova konto bezonas kontrolo
         reblog: Sendar retpost-mesajo, kande ulu diskonocigas mesajo da tu
+        report: Nova raport sendesas
+        trending_tag: Nova tendenco bezonas kontrolo
+      rule:
+        text: Regulo
+      tag:
+        listable: Permisez ca hashtago aparar en trovaji e sugestaji
+        name: Hashtago
+        trendable: Permisez ca hashtago aparar che tendenci
+        usable: Permisez posti uzar ca hashtago
+    'no': Ne
+    recommended: Rekomendito
     required:
+      mark: "*"
       text: bezonata
+    title:
+      sessions:
+        webauthn: Uzez 1 de vua sekuresklefti por enirar
+    'yes': 'Yes'
diff --git a/config/locales/simple_form.zh-TW.yml b/config/locales/simple_form.zh-TW.yml
index 1a2a449f0..86103ec96 100644
--- a/config/locales/simple_form.zh-TW.yml
+++ b/config/locales/simple_form.zh-TW.yml
@@ -11,15 +11,15 @@ zh-TW:
         title: 可選。不會向收件者顯示
       admin_account_action:
         include_statuses: 使用者可看到導致檢舉或警告的嘟文
-        send_email_notification: 使用者將收到帳戶發生之事情的解釋
+        send_email_notification: 使用者將收到帳號發生之事情的解釋
         text_html: 選用。您能使用嘟文語法。您可 <a href="%{path}">新增警告預設</a> 來節省時間
         type_html: 設定要使用 <strong>%{acct}</strong> 做的事
         types:
-          disable: 禁止該使用者使用他們的帳戶,但是不刪除或隱藏他們的內容。
+          disable: 禁止該使用者使用他們的帳號,但是不刪除或隱藏他們的內容。
           none: 使用這個寄送警告給該使用者,而不進行其他動作。
           sensitive: 強制標記此使用者所有媒體為敏感內容。
-          silence: 禁止該使用者發公開嘟文,從無跟隨他們的帳戶中隱藏嘟文和通知。
-          suspend: 禁止所有對該帳戶任何互動,並且刪除其內容。三十日內可以撤回。
+          silence: 禁止該使用者發公開嘟文,從無跟隨他們的帳號中隱藏嘟文和通知。
+          suspend: 禁止所有對該帳號任何互動,並且刪除其內容。三十日內可以撤回。
         warning_preset_id: 選用。您仍可在預設的結尾新增自訂文字
       announcement:
         all_day: 核取後,只會顯示出時間範圍中的日期部分
@@ -30,13 +30,13 @@ zh-TW:
       appeal:
         text: 您只能對警示提出一次申訴
       defaults:
-        autofollow: 通過邀請網址註冊的使用者將自動關注你
+        autofollow: 通過邀請網址註冊的使用者將自動跟隨您
         avatar: 支援 PNG, GIF 或 JPG 圖片,檔案最大為 %{size},會等比例縮減成 %{dimensions} 像素
-        bot: 此帳戶主要執行自動操作且可能未被監控
+        bot: 此帳號主要執行自動操作且可能未被監控
         context: 應該套用過濾器的一項或多項內容
-        current_password: 因安全因素,請輸入目前帳戶的密碼
-        current_username: 請輸入目前帳戶的使用者名稱以確認
-        digest: 僅在你長時間未登入且在未登入期間收到私訊時傳送
+        current_password: 因安全因素,請輸入目前帳號的密碼
+        current_username: 請輸入目前帳號的使用者名稱以確認
+        digest: 僅在您長時間未登入且在未登入期間收到私訊時傳送
         discoverable: 允許陌生人透過推薦、熱門趨勢及其他功能發現您的帳號
         email: 您將收到一封確認電子郵件
         fields: 您可在個人資料上有至多 4 個以表格形式顯示的項目
@@ -44,7 +44,7 @@ zh-TW:
         inbox_url: 從您想要使用的中繼首頁複製網址
         irreversible: 已過濾的嘟文將會不可逆的消失,即便過濾器移除之後也一樣
         locale: 使用者介面、電子信件和推送通知的語言
-        locked: 需要您手動核准關注請求
+        locked: 需要您手動批准跟隨請求
         password: 使用至少 8 個字元
         phrase: 無論是嘟文的本文或是內容警告都會被過濾
         scopes: 允許讓應用程式存取的 API。 若您選擇最高階範圍,則無須選擇個別項目。
@@ -54,7 +54,7 @@ zh-TW:
         setting_display_media_default: 隱藏標為敏感的媒體
         setting_display_media_hide_all: 總是隱藏所有媒體
         setting_display_media_show_all: 總是顯示標為敏感的媒體
-        setting_hide_network: 你關注的人與關注你的人將不會在你的個人資料頁上顯示
+        setting_hide_network: 您跟隨的人與跟隨您的人將不會在您的個人資料頁上顯示
         setting_noindex: 會影響您的公開個人資料與嘟文頁面
         setting_show_application: 您用來發嘟文的應用程式將會在您嘟文的詳細檢視顯示
         setting_use_blurhash: 漸層圖樣是基於隱藏媒體內容顏色產生,所有細節會變得模糊
@@ -113,7 +113,7 @@ zh-TW:
           none: 什麼也不做
           sensitive: 有雷小心
           silence: 安靜
-          suspend: 停權並不可逆的刪除帳戶資料
+          suspend: 停權並不可逆的刪除帳號資料
         warning_preset_id: 使用警告預設
       announcement:
         all_day: 全天活動
@@ -124,16 +124,16 @@ zh-TW:
       appeal:
         text: 解釋為什麼要撤銷這個決定
       defaults:
-        autofollow: 邀請別人關注你的帳戶
+        autofollow: 邀請別人跟隨您的帳號
         avatar: 大頭貼
-        bot: 此帳戶是台機器人
+        bot: 此帳號是台機器人
         chosen_languages: 過濾語言
         confirm_new_password: 確認新密碼
         confirm_password: 確認密碼
         context: 過濾情境
         current_password: 目前密碼
         data: 資料
-        discoverable: 在目錄列出此帳戶
+        discoverable: 在目錄列出此帳號
         display_name: 顯示名稱
         email: 電子信箱地址
         expires_in: 失效時間
@@ -143,7 +143,7 @@ zh-TW:
         inbox_url: 中繼收件匣的 URL
         irreversible: 放棄而非隱藏
         locale: 介面語言
-        locked: 鎖定帳戶
+        locked: 鎖定帳號
         max_uses: 最大使用次數
         new_password: 新密碼
         note: 簡介
@@ -173,7 +173,7 @@ zh-TW:
         setting_system_font_ui: 使用系統預設字型
         setting_theme: 站點主題
         setting_trends: 顯示本日趨勢
-        setting_unfollow_modal: 取消關注某人前先詢問我
+        setting_unfollow_modal: 取消跟隨某人前先詢問我
         setting_use_blurhash: 將隱藏媒體以彩色漸變圖樣表示
         setting_use_pending_items: 限速模式
         severity: 優先級
@@ -187,9 +187,9 @@ zh-TW:
       featured_tag:
         name: "「#」標籤"
       interactions:
-        must_be_follower: 封鎖非關注者的通知
-        must_be_following: 封鎖您未關注之使用者的通知
-        must_be_following_dm: 封鎖您未關注之使用者的私訊
+        must_be_follower: 封鎖非跟隨者的通知
+        must_be_following: 封鎖您未跟隨之使用者的通知
+        must_be_following_dm: 封鎖您未跟隨之使用者的私訊
       invite:
         comment: 備註
       invite_request:
@@ -204,12 +204,12 @@ zh-TW:
       notification_emails:
         appeal: 有人對管理員的決定提出上訴
         digest: 傳送摘要信件
-        favourite: 當有使用者喜歡你的嘟文時,傳送電子信件通知
-        follow: 當有使用者關注你時,傳送電子信件通知
-        follow_request: 當有使用者請求關注你時,傳送電子信件通知
-        mention: 當有使用者在嘟文提及你時,傳送電子信件通知
-        pending_account: 需要審核的新帳戶
-        reblog: 當有使用者轉嘟你的嘟文時,傳送電子信件通知
+        favourite: 當有使用者喜歡您的嘟文時,傳送電子信件通知
+        follow: 當有使用者跟隨您時,傳送電子信件通知
+        follow_request: 當有使用者請求跟隨您時,傳送電子信件通知
+        mention: 當有使用者在嘟文提及您時,傳送電子信件通知
+        pending_account: 需要審核的新帳號
+        reblog: 當有使用者轉嘟您的嘟文時,傳送電子信件通知
         report: 新回報已遞交
         trending_tag: 新趨勢需要審閱
       rule:
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 5412b8fd1..8a46b531f 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -195,6 +195,7 @@ sk:
       silenced: Stíšený/é
       statuses: Príspevkov
       subscribe: Odoberaj
+      suspend: Vylúč
       suspended: Vylúčený/á
       title: Účty
       unblock_email: Odblokuj emailovú adresu
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index fe38db82f..1280e164c 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -1070,10 +1070,12 @@ sl:
       appealed_msg: Vaša pritožba je oddana. Če bo odobrena, boste o tem obveščeni.
       appeals:
         submit: Pošlji pritožbo
+      approve_appeal: Ugodi pritožbi
       associated_report: Povezana prijava
       created_at: Datum
       description_html: To so dejanja, izvedena proti vašemu računu ter opozorila, ki so vam jih poslali sodelavci %{instance}.
       recipient: Naslovljeno na
+      reject_appeal: Zavrni pritožbo
       status: 'Objava #%{id}'
       status_removed: Objava je že odstranjena iz sistema
       title: "%{action} dne %{date}"
@@ -1396,6 +1398,11 @@ sl:
   reports:
     errors:
       invalid_rules: se ne sklicuje na veljavna pravila
+  rss:
+    content_warning: 'Opozorilo o vsebini:'
+    descriptions:
+      account: Javne objave @%{acct}
+      tag: 'Javne objave s ključnikom #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Za ta dan ste presegli omejitev %{limit} načrtovanih objav
     over_total_limit: Presegli ste omejitev %{limit} načrtovanih objav
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index b21767738..30b701c25 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -1027,10 +1027,12 @@ sq:
       appealed_msg: Apelimi juaj u parashtruar. Nëse miratohet, do të njoftoheni.
       appeals:
         submit: Parashtroni apelim
+      approve_appeal: Miratoni apelimin
       associated_report: Raportimi i përshoqëruar
       created_at: Datuar
       description_html: Këto janë veprime të ndërmara kundër llogarisë tuaj dhe sinjalizime që ju janë dërguar nga stafi i %{instance}.
       recipient: Drejtuar
+      reject_appeal: Hidheni poshtë apelimin
       status: "#%{id} postimi"
       status_removed: Postim i hequr tashmë nga sistemi
       title: "%{action} prej %{date}"
@@ -1345,6 +1347,11 @@ sq:
   reports:
     errors:
       invalid_rules: s’i referohet ndonjë rregulli të vlefshëm
+  rss:
+    content_warning: 'Sinjalizim lënde:'
+    descriptions:
+      account: Postime publike prej @%{acct}
+      tag: 'Postime publike etiketuar me #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Keni tejkaluar kufirin e %{limit} mesazheve të planifikuara për atë ditë
     over_total_limit: Keni tejkaluar kufirin prej %{limit} mesazhesh të planifikuara
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index b7f8c6747..7bfeb5e0e 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -768,7 +768,9 @@ sv:
     explore_mastodon: Utforska %{title}
   disputes:
     strikes:
+      approve_appeal: Godkänn förfrågan
       created_at: Daterad
+      reject_appeal: Avvisa förfrågan
       status: 'Inlägg #%{id}'
       title_actions:
         none: Varning
@@ -1175,6 +1177,9 @@ sv:
     pinned: Fäst toot
     reblogged: boostad
     sensitive_content: Känsligt innehåll
+  strikes:
+    errors:
+      too_late: Det är för sent att överklaga denna strejk
   tags:
     does_not_match_previous_name: matchar inte det föregående namnet
   terms:
diff --git a/config/locales/th.yml b/config/locales/th.yml
index cee5cecfb..25fc7034e 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -803,6 +803,7 @@ th:
       body_remote: ใครสักคนจาก %{domain} ได้รายงาน %{target}
       subject: รายงานใหม่สำหรับ %{instance} (#%{id})
     new_trends:
+      body: 'รายการดังต่อไปนี้จำเป็นต้องมีการตรวจทานก่อนที่จะสามารถแสดงรายการเป็นสาธารณะ:'
       new_trending_links:
         no_approved_links: ไม่มีลิงก์ที่กำลังนิยมที่ได้รับอนุมัติในปัจจุบัน
         title: ลิงก์ที่กำลังนิยม
@@ -956,10 +957,12 @@ th:
       appeal_submitted_at: ส่งการอุทธรณ์แล้ว
       appeals:
         submit: ส่งการอุทธรณ์
+      approve_appeal: อนุมัติการอุทธรณ์
       associated_report: รายงานที่เกี่ยวข้อง
       created_at: ลงวันที่
       description_html: นี่คือการกระทำที่ใช้กับบัญชีของคุณและคำเตือนที่ส่งถึงคุณโดยพนักงานของ %{instance}
       recipient: ส่งถึง
+      reject_appeal: ปฏิเสธการอุทธรณ์
       status: 'โพสต์ #%{id}'
       status_removed: เอาโพสต์ออกจากระบบไปแล้ว
       title: "%{action} จาก %{date}"
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 922f4fd82..ad03aa7e4 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -1036,10 +1036,12 @@ tr:
       appealed_msg: İtiraz gönderildi. Kabul edilirse bilgilendirileceksiniz.
       appeals:
         submit: İtirazı gönder
+      approve_appeal: İtirazı kabul et
       associated_report: İlişkili rapor
       created_at: Tarih
       description_html: Bunlar hesabınıza yönelik eylemler ve %{instance} yönetimi tarafından size gönderilen uyarılardır.
       recipient: Kime
+      reject_appeal: İtirazı reddet
       status: 'Gönderi #%{id}'
       status_removed: Gönderi zaten sistemden kaldırıldı
       title: "%{date} tarihli %{action}"
@@ -1354,6 +1356,11 @@ tr:
   reports:
     errors:
       invalid_rules: geçerli kurallara işaret etmez
+  rss:
+    content_warning: 'İçerik uyarısı:'
+    descriptions:
+      account: "@%{acct} hesabından herkese açık gönderiler"
+      tag: "#%{hashtag} etiketli herkese açık gönderiler"
   scheduled_statuses:
     over_daily_limit: O gün için %{limit} zamanlanmış toot sınırını aştınız
     over_total_limit: "%{limit} zamanlanmış toot sınırını aştınız"
@@ -1512,6 +1519,9 @@ tr:
     pinned: Sabitlenmiş toot
     reblogged: boostladı
     sensitive_content: Hassas içerik
+  strikes:
+    errors:
+      too_late: Bu eyleme itiraz etmek için çok geç
   tags:
     does_not_match_previous_name: önceki adla eşleşmiyor
   terms:
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index 72937cbca..1142fa140 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -1,14 +1,14 @@
 ---
 uk:
   about:
-    about_hashtag_html: Це публічні дмухи, позначені символом <strong>#%{hashtag}</strong>. Ви можете взаємодіяти з ними, якщо маєте обліковий запис будь-де у федіверсі.
-    about_mastodon_html: Mastodon — це соціальна мережа, заснована на відкритих веб-протоколах та вільному програмному забезпеченні з відкритим кодом. Вона є децентралізованою на кшталт електронної пошти.
-    about_this: Про цю інстанцію
+    about_hashtag_html: Це публічні дописи, позначені символом <strong>#%{hashtag}</strong>. Ви можете взаємодіяти з ними, якщо маєте обліковий запис будь-де у федесвіті.
+    about_mastodon_html: 'Соціальна мережа майбутнього: жодної реклами, жодного корпоративного нагляду, етичний дизайн та децентралізація! З Mastodon ваші дані під вашим контролем!'
+    about_this: Про цей сервер
     active_count_after: активних
-    active_footnote: Активні користувачі місяця (MAU)
+    active_footnote: Щомісячно активні користувачі (MAU)
     administered_by: 'Адміністратор:'
     api: API
-    apps: Мобільні додатки
+    apps: Мобільні застосунки
     apps_platforms: Користуйтесь Mastodon на iOS, Android та інших платформах
     browse_directory: Переглядайте каталог профілів та фільтруйте за інтересами
     browse_local_posts: Переглядайте потік публічних постів з цього сервера
@@ -170,12 +170,12 @@ uk:
       not_subscribed: Не підписані
       pending: Відгук в очікуванні
       perform_full_suspension: Призупинити
-      previous_strikes: Попередні скарги
+      previous_strikes: Попередні попередження
       previous_strikes_description_html:
-        few: У цього облікового запису є <strong>%{count}</strong> скарги.
-        many: У цього облікового запису є <strong>%{count}</strong> скарг.
-        one: У цього облікового запису є <strong>одна</strong> скарга.
-        other: У цього облікового запису є <strong>%{count}</strong> скарг.
+        few: У цього облікового запису є <strong>%{count}</strong> попередження.
+        many: У цього облікового запису є <strong>%{count}</strong> попереджень.
+        one: У цього облікового запису є <strong>одне</strong> попередження.
+        other: У цього облікового запису є <strong>%{count}</strong> попереджень.
       promote: Просунути
       protocol: Протокол
       public: Публічний
@@ -211,12 +211,12 @@ uk:
       sensitized: позначено делікатним
       shared_inbox_url: URL спільного вхідного кошика
       show:
-        created_reports: Скарги, створені цим акаунтом
-        targeted_reports: Скарги щодо цього акаунту
+        created_reports: Скарги, створені цим обліковим записом
+        targeted_reports: Скарги на цей обліковий запис
       silence: Глушення
       silenced: Заглушені
       statuses: Статуси
-      strikes: Попередні скарги
+      strikes: Попередні попередження
       subscribe: Підписатися
       suspend: Призупинити
       suspended: Призупинені
@@ -274,13 +274,13 @@ uk:
         reject_appeal: Відхилити апеляцію
         reject_user: Відхилити користувача
         remove_avatar_user: Видалити аватар
-        reopen_report: Перевідкрити скаргу
+        reopen_report: Поновити скаргу
         reset_password_user: Скинути пароль
         resolve_report: Розв'язати скаргу
         sensitive_account: Позначити делікатним медіа вашого облікового запису
         silence_account: Заглушити обліковий запис
         suspend_account: Призупинити обліковий запис
-        unassigned_report: Видалити скаргу
+        unassigned_report: Зняти скаргу
         unblock_email_account: Розблокувати адресу е-пошти
         unsensitive_account: Прибрати позначку "делікатне" з медіа вашого облікового запису
         unsilence_account: Розглушити обліковий запис
@@ -290,6 +290,7 @@ uk:
         update_domain_block: Оновити блокування домену
         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}"
@@ -321,6 +322,7 @@ uk:
         enable_user_html: "%{name} вмикає вхід для користувача %{target}"
         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}"
@@ -481,6 +483,7 @@ uk:
         create: Додати домен
         resolve: Розв'язати домен
         title: Нове блокування поштового домену
+      no_email_domain_block_selected: Жодні налаштування блокування доменів електронної пошти не було змінено, оскільки жоден з них не було обрано
       resolved_through_html: Розв'язано через %{domain}
       title: Чорний список поштових доменів
     follow_recommendations:
@@ -493,6 +496,7 @@ uk:
       unsuppress: Відновити поради щодо підписок
     instances:
       availability:
+        failure_threshold_reached: Досягнуто поріг допустимих помилок станом на %{date}.
         failures_recorded:
           few: Невдалих спроб за %{count} різні дні.
           many: Невдалих спроб за %{count} різних днів.
@@ -500,6 +504,7 @@ uk:
           other: Невдалих спроб за %{count} різних днів.
         no_failures_recorded: Проблем щодо запису немає.
         title: Доступність
+        warning: Остання спроба підключення до цього сервера була невдала
       back_to_all: Усі
       back_to_limited: Обмежені
       back_to_warning: Попередження
@@ -548,12 +553,14 @@ uk:
       private_comment: Приватний коментар
       public_comment: Публічний коментар
       purge: Очисти
-      title: Відомі інстанції
+      purge_description_html: Якщо ви вважаєте, що цей домен більше ніколи не працюватиме, ви можете видалити всі дані облікових записів та пов'язані з ним дані з цього домену зі свого сховища. Це може зайняти деякий час.
+      title: Федерація
       total_blocked_by_us: Заблокованих нами
       total_followed_by_them: Вони стежать за
       total_followed_by_us: Ми стежимо за
       total_reported: Звітів про них
       total_storage: Мультимедійні вкладення
+      totals_time_period_hint_html: Нижче зображена статистика за все існування сервера.
     invites:
       deactivate_all: Деактивувати всі
       filter:
@@ -686,14 +693,14 @@ uk:
       domain_blocks_rationale:
         title: Обґрунтування
       hero:
-        desc_html: Відображається на головній сторінці. Рекомендовано як мінімум 600x100 пікселів. Якщо не вказано, буде використано передпоказ інстанції
-        title: Банер інстанції
+        desc_html: Зображується на головній сторінці. Рекомендовано як мінімум 600x100 пікселів. Якщо не встановлено, буде використана мініатюра сервера
+        title: Банер серверу
       mascot:
-        desc_html: Відображається на багатьох сторінках. Щонайменше 293×205 пікселів рекомендовано. Якщо не вказано, буде використано талісман інстанції
+        desc_html: Зображується на декількох сторінках. Щонайменше 293×205 пікселів рекомендовано. Якщо не вказано, буде використано персонаж за замовчуванням
         title: Талісман
       peers_api_enabled:
-        desc_html: Доменні ім'я, помічені цією інстанцією федисвіту
-        title: Опублікувати список знайдених інстанцій
+        desc_html: Доменні ім'я, які сервер знайшов у федесвіті
+        title: Опублікувати список знайдених серверів в API
       preview_sensitive_media:
         desc_html: Передпоказ посилання на інших сайтах буде відображати мініатюру навіть якщо медіа відмічене як дражливе
         title: Показувати дражливе медіа у передпоказах OpenGraph
@@ -727,7 +734,7 @@ uk:
         title: Показувати персонал
       site_description:
         desc_html: Відображається у якості параграфа на титульній сторінці та використовується у якості мета-тега.<br>Можна використовувати HTML-теги, особливо <code>&lt;a&gt;</code> і <code>&lt;em&gt;</code>.
-        title: Опис інстанції
+        title: Опис сервера
       site_description_extended:
         desc_html: Відображається на сторінці додаткової информації<br>Можна використовувати HTML-теги
         title: Розширений опис сайту
@@ -742,7 +749,7 @@ uk:
       site_title: Назва сайту
       thumbnail:
         desc_html: Використовується для передпоказів через OpenGraph та API. Бажано розміром 1200х640 пікселів
-        title: Мініатюра інстанції
+        title: Мініатюра сервера
       timeline_preview:
         desc_html: Показувати публічну стрічку на головній сторінці
         title: Передпоказ фіду
@@ -782,6 +789,11 @@ uk:
     system_checks:
       database_schema_check:
         message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми
+      elasticsearch_running_check:
+        message_html: Не вдалося під'єднатися до Elasticsearch. Перевірте, чи він запущений або вимкніть повнотекстовий пошук
+      elasticsearch_version_check:
+        message_html: 'Несумісна версія Elasticsear: %{value}'
+        version_comparison: Запущено Elasticsearch %{running_version}, але вимагається %{required_version}
       rules_check:
         action: Керування правилами сервера
         message_html: Ви не визначили будь-які правила сервера.
@@ -800,6 +812,11 @@ uk:
         allow_provider: Дозволити публікатора
         disallow: Заборонити посилання
         disallow_provider: Заборонити публікатора
+        shared_by_over_week:
+          few: Поширили %{count} людини за останній тиждень
+          many: Поширили %{count} людей за останній тиждень
+          one: Поширила одна людина за останній тиждень
+          other: Поширили %{count} людей за останній тиждень
         title: Популярні посилання
         usage_comparison: Сьогодні поширено %{today} разів, у порівнянні з %{yesterday} вчора
       only_allowed: Тільки дозволене
@@ -839,6 +856,7 @@ uk:
           one: Використала одна людина за минулий тиждень
           other: Використали %{count} людей за минулий тиждень
       title: Популярні
+      trending: Популярне
     warning_presets:
       add_new: Додати новий
       delete: Видалити
@@ -866,6 +884,7 @@ uk:
       subject: Нова скарга до %{instance} (#%{id})
     new_trends:
       new_trending_links:
+        no_approved_links: На цей час немає схвалених популярних посилань.
         title: Популярні посилання
       new_trending_statuses:
         no_approved_statuses: На цей час немає схвалених популярних дописів.
@@ -1022,9 +1041,11 @@ uk:
       appealed_msg: Вашу апеляцію було надіслано. Якщо її погодять, вам буде повідомлено про це.
       appeals:
         submit: Подати апеляцію
+      approve_appeal: Схвалити апеляцію
       associated_report: Пов'язана скарга
       created_at: Застарілі
       recipient: Адресант
+      reject_appeal: Відхилити апеляцію
       status: 'Допис #%{id}'
       status_removed: Допис уже вилучено з системи
       title: "%{action} від %{date}"
@@ -1126,7 +1147,7 @@ uk:
       merge_long: Зберегти існуючі записи та додати нові
       overwrite: Перезаписувати
       overwrite_long: Замінити поточні записи новими
-    preface: Вы можете завантажити деякі дані, наприклад, списки людей, на яких Ви підписані чи яких блокуєте, в Ваш акаунт на цій інстанції з файлів, експортованих з іншої інстанції.
+    preface: Ви можете завантажити деякі дані, наприклад, списки людей, на яких ви підписані чи яких блокуєте, у ваш обліковий запис на даному сервері з файлів, експортованих з іншого сервера.
     success: Ваші дані були успішно загружені та будуть оброблені в найближчий момент
     types:
       blocking: Список блокувань
@@ -1229,6 +1250,11 @@ uk:
         many: У Вас з'явилось %{count} нових підписників! Чудово!
         one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура!
         other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово!
+      subject:
+        few: "%{count} нові сповіщення з вашого останнього відвідування 🐘"
+        many: "%{count} нових сповіщень з вашого останнього відвідування 🐘"
+        one: "1 нове сповіщення з вашого останнього відвідування 🐘"
+        other: "%{count} нових сповіщень з вашого останнього відвідування 🐘"
       title: Поки ви були відсутні...
     favourite:
       body: 'Ваш статус подобається %{name}:'
@@ -1342,6 +1368,8 @@ uk:
   reports:
     errors:
       invalid_rules: не посилається на чинні правила
+  rss:
+    content_warning: 'Попередження про матеріали:'
   scheduled_statuses:
     over_daily_limit: Ви перевищили ліміт в %{limit} запланованих дмухів на сьогодні
     over_total_limit: Ви перевищили ліміт в %{limit} запланованих дмухів
@@ -1408,6 +1436,7 @@ uk:
     profile: Профіль
     relationships: Підписки та підписники
     statuses_cleanup: Автовидалення допису
+    strikes: Попередження модераторів
     two_factor_authentication: Двофакторна авторизація
     webauthn_authentication: Ключі безпеки
   statuses:
@@ -1565,6 +1594,7 @@ uk:
         spam: Спам
         violation: Вміст порушує такі правила спільноти
       explanation:
+        delete_statuses: Деякі з ваших дописів порушили одне або кілька правил спільноти, і модератори %{instance} видалили їх.
         disable: Ви можете більше не використовувати свій обліковий запис, але ваш профіль та інші дані залишаються недоторканими. Ви можете надіслати запит на створення резервної копії ваших даних, змінити налаштування облікового запису або видалити свій обліковий запис.
         sensitive: Відтепер усі ваші завантажені медіафайли будуть позначені делікатними й приховані за попередженням.
         silence: Ви й надалі можете користуватися своїм обліковим записом, але ваші дописи на цьому сервері бачитимуть лише ті люди, які вже стежать за вами, а вас може бути виключено з різних можливостей виявлення. Проте, інші можуть почати стежити за вами вручну.
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index a685c73ec..9812d33bb 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -1017,10 +1017,12 @@ vi:
       appealed_msg: Khiếu nại của bạn đã được gửi đi. Nếu nó được chấp nhận, bạn sẽ nhận được thông báo.
       appeals:
         submit: Gửi khiếu nại
+      approve_appeal: Chấp nhận kháng cáo
       associated_report: Báo cáo đính kèm
       created_at: Ngày
       description_html: Đây là những cảnh cáo và áp đặt kiểm duyệt đối với bạn bởi đội ngũ %{instance}.
       recipient: Người nhận
+      reject_appeal: Từ chối kháng cáo
       status: 'Tút #%{id}'
       status_removed: Tút này đã được xóa khỏi hệ thống
       title: "%{action} từ %{date}"
@@ -1331,6 +1333,11 @@ vi:
   reports:
     errors:
       invalid_rules: không đúng với quy tắc
+  rss:
+    content_warning: 'Cảnh báo nội dung:'
+    descriptions:
+      account: Những tút công khai của @%{acct}
+      tag: 'Những tút #%{hashtag} công khai'
   scheduled_statuses:
     over_daily_limit: Bạn đã vượt qua giới hạn được lên lịch đăng tút %{limit} hôm nay
     over_total_limit: Bạn đã vượt quá giới hạn %{limit} của các tút được lên lịch
@@ -1483,6 +1490,9 @@ vi:
     pinned: Tút đã ghim
     reblogged: đăng lại
     sensitive_content: NSFW
+  strikes:
+    errors:
+      too_late: Đã quá trễ để kháng cáo
   tags:
     does_not_match_previous_name: không khớp với tên trước
   terms:
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 2deb4ccbd..425d1d186 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -1019,10 +1019,12 @@ zh-CN:
       appealed_msg: 你的申诉已经提交。如果申诉通过,你将收到通知。
       appeals:
         submit: 提交申诉
+      approve_appeal: 批准申诉
       associated_report: 相关举报
       created_at: 日期
       description_html: 这些是针对您的帐户采取的行动和警告,已经由 %{instance} 的工作人员发送给您。
       recipient: 发送至
+      reject_appeal: 驳回申诉
       status: '嘟文 #%{id}'
       status_removed: 嘟文已从系统中删除
       title: "%{action} 于 %{date}"
@@ -1070,7 +1072,7 @@ zh-CN:
     csv: CSV
     domain_blocks: 域名屏蔽
     lists: 列表
-    mutes: 你隐藏的用户
+    mutes: 已被你隐藏的
     storage: 媒体文件存储
   featured_tags:
     add_new: 添加新条目
@@ -1333,6 +1335,11 @@ zh-CN:
   reports:
     errors:
       invalid_rules: 没有引用有效的规则
+  rss:
+    content_warning: 内容警告:
+    descriptions:
+      account: "@%{acct} 的公开嘟文"
+      tag: "#%{hashtag} 标签下的公开嘟文"
   scheduled_statuses:
     over_daily_limit: 你已超出每日定时嘟文的上限(%{limit} 条)
     over_total_limit: 你已超出定时嘟文的上限(%{limit} 条)
@@ -1423,8 +1430,8 @@ zh-CN:
     over_character_limit: 超过了 %{max} 字的限制
     pin_errors:
       direct: 仅对被提及的用户可见的帖子不能被置顶
-      limit: 你所置顶的嘟文数量已经达到上限
-      ownership: 不能置顶他人的嘟文
+      limit: 你所固定的嘟文数量已达到上限
+      ownership: 不能置顶别人的嘟文
       reblog: 不能置顶转嘟
     poll:
       total_people:
@@ -1460,7 +1467,7 @@ zh-CN:
     keep_media: 保留带媒体附件的嘟文
     keep_media_hint: 不会删除任何包含媒体附件的嘟文
     keep_pinned: 保留置顶嘟文
-    keep_pinned_hint: 不会删除你的任何置顶嘟文
+    keep_pinned_hint: 没有删除任何你已经固定的嘟文
     keep_polls: 保留投票
     keep_polls_hint: 不会删除你的任何投票
     keep_self_bookmark: 保存被你加入书签的嘟文
@@ -1485,6 +1492,9 @@ zh-CN:
     pinned: 置顶嘟文
     reblogged: 转嘟
     sensitive_content: 敏感内容
+  strikes:
+    errors:
+      too_late: 已来不及对此次处罚提出申诉
   tags:
     does_not_match_previous_name: 和之前的名称不匹配
   terms:
@@ -1624,7 +1634,7 @@ zh-CN:
       explanation:
         delete_statuses: 你的一些嘟文被发现违反了一条或多条社区准则,并已被 %{instance} 的监察员删除。
         disable: 你不能再使用你的帐户,但你的个人资料和其他数据保持不变。你可以请求数据备份,更改账户设置或删除账户。
-        mark_statuses_as_sensitive: 你的一些嘟文已经被 %{instance} 检察员标记为敏感内容。这意味着人们需要在嘟文中点击媒体,才能显示媒体预览。你可以在今后发嘟时自行将媒体标记为敏感内容。
+        mark_statuses_as_sensitive: 你的一些嘟文已经被 %{instance} 检察员标记为敏感内容。这意味着别人需要在嘟文中点击媒体,才能显示媒体预览。你可以在今后发嘟时自行将媒体标记为敏感内容。
         sensitive: 即刻起,你上传的所有媒体文件都将被标记为敏感内容并隐藏,在点击警告后才能查看。
         silence: 你可以继续使用你的账号,但只有已关注你的人才能在看到你在此服务器上的嘟文,并且你会被排除在各类公共列表之外。其他用户仍可以手动关注你。
         suspend: 你不能再使用你的帐户,并且你的个人资料和其他数据都将无法访问。在大约30天内,你仍可以登录并请求数据备份,之后相关数据将被完全删除。我们会保留一些基础数据以避免封禁失效。
@@ -1635,7 +1645,7 @@ zh-CN:
         disable: 你的帐户 %{acct} 已被冻结
         mark_statuses_as_sensitive: 你在 %{acct} 的嘟文已被标记为敏感内容
         none: 对 %{acct} 的警告
-        sensitive: 你在 %{acct} 的嘟文将从此被标记为敏感内容
+        sensitive: 你在 %{acct} 的嘟文今后将被标记为敏感内容
         silence: 你的帐户 %{acct} 已被隐藏
         suspend: 你的帐户 %{acct} 已被封禁。
       title:
@@ -1645,7 +1655,7 @@ zh-CN:
         none: 警示
         sensitive: 账户已被标记为敏感内容
         silence: 帐户被隐藏
-        suspend: 账号被挂起
+        suspend: 账号被封禁
     welcome:
       edit_profile_action: 设置个人资料
       edit_profile_step: 你可以自定义你的个人资料,包括上传头像、横幅图片、更改昵称等等。如果你想在新的关注者关注你之前对他们进行审核,你也可以选择为你的帐户开启保护。
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 0d1716790..0a6d6f9e7 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1,8 +1,8 @@
 ---
 zh-TW:
   about:
-    about_hashtag_html: 這些是包含「<strong>#%{hashtag}</strong>」標籤的公開文章。只要你有任何 Mastodon 站點、或者其他站點的使用者,便可以與他們互動。
-    about_mastodon_html: Mastodon (長毛象)是一個<em>自由、開放原始碼</em>的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳戶,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的<em>社群網路</em>交流。
+    about_hashtag_html: 這些是包含「<strong>#%{hashtag}</strong>」標籤的公開文章。只要您有任何 Mastodon 站點、或者其他站點的使用者,便可以與他們互動。
+    about_mastodon_html: Mastodon (長毛象)是一個<em>自由、開放原始碼</em>的社群網站。它是一個分散式的服務,避免您的通訊被單一商業機構壟斷操控。請您選擇一家您信任的 Mastodon 站點,在上面建立帳號,然後您就可以和任一 Mastodon 站點上的使用者互通,享受無縫的<em>社群網路</em>交流。
     about_this: 關於本站
     active_count_after: 活躍
     active_footnote: 每月活躍使用者 (MAU)
@@ -19,7 +19,7 @@ zh-TW:
     continue_to_web: 於網頁程式中繼續
     discover_users: 探索使用者
     documentation: 文件
-    federation_hint_html: 你只需要擁有 %{instance} 的帳戶,就可以追蹤隨便一台 Mastodon 伺服器上的人等等。
+    federation_hint_html: 您只需要擁有 %{instance} 的帳號,就可以追蹤任何一台 Mastodon 伺服器上的人等等。
     get_apps: 嘗試行動應用程式
     hosted_on: 在 %{domain} 運作的 Mastodon 站點
     instance_actor_flash: "這個帳戶是個用來代表伺服器自已的虛擬角色,而不是實際的使用者。它是用來聯盟用的,除非您想要封鎖整個站台,不然不該封鎖它。但要封鎖整個站台,您可以使用網域封鎖功能。 \n"
@@ -28,7 +28,7 @@ zh-TW:
     logout_before_registering: 您已經登入了!
     privacy_policy: 隱私權政策
     rules: 伺服器規則
-    rules_html: 以下是您若想在此 Mastodon 伺服器建立帳戶必須遵守的規則總結:
+    rules_html: 以下是您若想在此 Mastodon 伺服器建立帳號必須遵守的規則總結:
     see_whats_happening: 看看發生什麼事
     server_stats: 伺服器統計:
     source_code: 原始碼
@@ -54,13 +54,13 @@ zh-TW:
     what_is_mastodon: 什麼是 Mastodon?
   accounts:
     choices_html: "%{name} 的選擇:"
-    endorsements_hint: 推薦您已經關注的人,把他們釘在您的個人頁面。
+    endorsements_hint: 推薦您已經跟隨的人,將他們釘選在您的個人頁面。
     featured_tags_hint: 您可以推薦不同主題標籤,它們也會在此處出現。
-    follow: 關注
+    follow: 跟隨
     followers:
-      other: 關注者
-    following: 正在關注
-    instance_actor_flash: 這個帳戶是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
+      other: 跟隨者
+    following: 正在跟隨
+    instance_actor_flash: 這個帳號是一個用來代表此伺服器的虛擬執行者,而非真實使用者。它用途為站點聯盟且不應被停權。
     joined: 加入於 %{date}
     last_active: 上次活躍時間
     link_verified_on: 此連結的所有權已在 %{date} 檢查過
@@ -68,10 +68,10 @@ zh-TW:
     moved_html: "%{name} 已經搬遷到 %{new_profile_link}:"
     network_hidden: 此訊息不可用
     nothing_here: 暫時沒有內容可供顯示!
-    people_followed_by: "%{name} 關注的人"
-    people_who_follow: 關注 %{name} 的人
+    people_followed_by: "%{name} 跟隨的人"
+    people_who_follow: 跟隨 %{name} 的人
     pin_errors:
-      following: 你只能推薦你正在關注的使用者。
+      following: 您只能推薦您正在跟隨的使用者。
     posts:
       other: 嘟文
     posts_tab_heading: 嘟文
@@ -82,7 +82,7 @@ zh-TW:
       group: 群組
       moderator: 版主
     unavailable: 無法取得個人檔案
-    unfollow: 取消關注
+    unfollow: 取消跟隨
   admin:
     account_actions:
       action: 執行動作
@@ -93,13 +93,13 @@ zh-TW:
       destroyed_msg: 成功刪除管理備忘!
     accounts:
       add_email_domain_block: 將電子郵件網域加入黑名單
-      approve: 核准
-      approved_msg: 成功審核了%{username} 的新帳戶申請
+      approve: 批准
+      approved_msg: 成功審核了%{username} 的新帳號申請
       are_you_sure: 您確定嗎?
       avatar: 頭像
       by_domain: 站點
       change_email:
-        changed_msg: 已成功變更帳戶電子信箱地址!
+        changed_msg: 已成功變更帳號電子信箱地址!
         current_email: 目前的電子信箱地址
         label: 變更電子信箱地址
         new_email: 新的電子信箱地址
@@ -125,9 +125,9 @@ zh-TW:
       enable: 啟用
       enable_sign_in_token_auth: 啟用電子信箱 token 驗證
       enabled: 已啟用
-      enabled_msg: 成功解除 %{username} 帳戶的凍結
-      followers: 關注者
-      follows: 正在關注
+      enabled_msg: 成功解除 %{username} 帳號的凍結
+      followers: 跟隨者
+      follows: 正在跟隨
       header: 開頭
       inbox_url: 收件箱 (Inbox) URL
       invite_request_text: 加入原因
@@ -141,9 +141,9 @@ zh-TW:
         title: 位置
       login_status: 登入狀態
       media_attachments: 多媒體附件
-      memorialize: 設定為追悼帳戶
+      memorialize: 設定為追悼帳號
       memorialized: 被悼念的
-      memorialized_msg: 成功將%{username} 的帳戶變為紀念帳戶
+      memorialized_msg: 成功將%{username} 的帳號變為紀念帳號
       moderation:
         active: 活躍
         all: 全部
@@ -153,7 +153,7 @@ zh-TW:
       moderation_notes: 管理備忘
       most_recent_activity: 最近活動
       most_recent_ip: 最近 IP 位址
-      no_account_selected: 未選取任何帳戶,因此未變更
+      no_account_selected: 未選取任何帳號,因此未變更
       no_limits_imposed: 未受限制
       not_subscribed: 未訂閱
       pending: 等待審核中
@@ -168,7 +168,7 @@ zh-TW:
       redownload: 重新整理個人資料
       redownloaded_msg: 成功重新載入%{username} 的個人資料頁面
       reject: 拒絕
-      rejected_msg: 成功拒絕了%{username} 的新帳戶申請
+      rejected_msg: 成功拒絕了%{username} 的新帳號申請
       remove_avatar: 取消頭像
       remove_header: 移除開頭
       removed_avatar_msg: 成功刪除了 %{username} 的頭像
@@ -205,18 +205,18 @@ zh-TW:
       subscribe: 訂閱
       suspend: 停權
       suspended: 已停權
-      suspension_irreversible: 已永久刪除這個帳戶的數據。雖然這個帳戶的數據已被永久刪除,但是您仍然可以取消暫停這個帳戶。
-      suspension_reversible_hint_html: 這個帳戶已被暫停,所有數據將會在 %{date} 被刪除。在此之前,您可以完全回復您的帳戶。如果您想即時刪除這個帳戶的數據,您可以在下面進行操作。
-      title: 帳戶
+      suspension_irreversible: 已永久刪除這個帳號的數據。雖然這個帳號的數據已被永久刪除,但是您仍然可以取消暫停這個帳號。
+      suspension_reversible_hint_html: 這個帳號已被暫停,所有數據將會在 %{date} 被刪除。在此之前,您可以完全回復您的帳號。如果您想即時刪除這個帳號的數據,您可以在下面進行操作。
+      title: 帳號
       unblock_email: 解除封鎖電子郵件地址
       unblocked_email_msg: 成功解除封鎖 %{username} 的電子郵件地址
       unconfirmed_email: 未確認的電子信箱地址
       undo_sensitized: 取消敏感狀態
       undo_silenced: 取消靜音
       undo_suspension: 取消停權
-      unsilenced_msg: 成功解除 %{username} 的帳戶限制
+      unsilenced_msg: 成功解除 %{username} 的帳號限制
       unsubscribe: 取消訂閱
-      unsuspended_msg: 成功取消暫停 %{username} 的帳戶
+      unsuspended_msg: 成功取消暫停 %{username} 的帳號
       username: 使用者名稱
       view_domain: 查看站台概要
       warn: 警告
@@ -250,32 +250,32 @@ zh-TW:
         disable_2fa_user: 停用兩階段認證
         disable_custom_emoji: 停用自訂顏文字
         disable_sign_in_token_auth_user: 停用使用者電子信箱 token 驗證
-        disable_user: 停用帳戶
+        disable_user: 停用帳號
         enable_custom_emoji: 啓用自訂顏文字
         enable_sign_in_token_auth_user: 啟用使用者電子信箱 token 驗證
-        enable_user: 啓用帳戶
-        memorialize_account: 設定成紀念帳戶
+        enable_user: 啓用帳號
+        memorialize_account: 設定成紀念帳號
         promote_user: 把用戶升級
-        reject_appeal: 回絕申訴
+        reject_appeal: 駁回申訴
         reject_user: 回絕使用者
         remove_avatar_user: 刪除大頭貼
         reopen_report: 重開舉報
         reset_password_user: 重設密碼
         resolve_report: 消除舉報
-        sensitive_account: 把您的帳戶的媒體標記為敏感內容
-        silence_account: 靜音用戶
-        suspend_account: 暫停用戶
+        sensitive_account: 把您的帳號的媒體標記為敏感內容
+        silence_account: 靜音帳號
+        suspend_account: 停權帳號
         unassigned_report: 取消指派舉報
         unblock_email_account: 解除封鎖電子郵件地址
-        unsensitive_account: 取消把您的帳戶的媒體設定為敏感內容
-        unsilence_account: 取消用戶的靜音狀態
-        unsuspend_account: 取消用戶的暫停狀態
+        unsensitive_account: 取消把您的帳號的媒體設定為敏感內容
+        unsilence_account: 取消帳號的靜音狀態
+        unsuspend_account: 取消帳號的暫停狀態
         update_announcement: 更新公告
         update_custom_emoji: 更新自訂顏文字
         update_domain_block: 更新封鎖網域
         update_status: 更新狀態
       actions:
-        approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定上訴"
+        approve_appeal_html: "%{name} 批准了來自 %{target} 的審核決定申訴"
         approve_user_html: "%{name} 批准了從 %{target} 而來的註冊"
         assigned_to_self_report_html: "%{name} 將報告 %{target} 指派給自己"
         change_email_user_html: "%{name} 變更了使用者 %{target} 的電子信箱地址"
@@ -305,9 +305,9 @@ zh-TW:
         enable_custom_emoji_html: "%{name} 啟用了自訂表情符號 %{target}"
         enable_sign_in_token_auth_user_html: "%{name} 啟用了 %{target} 之使用者電子信箱 token 驗證"
         enable_user_html: "%{name} 將使用者 %{target} 設定為允許登入"
-        memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳戶"
+        memorialize_account_html: "%{name} 將 %{target} 設定為追悼帳號"
         promote_user_html: "%{name} 對使用者 %{target} 進行了晉級操作"
-        reject_appeal_html: "%{name} 回絕了來自 %{target} 的審核決定上訴"
+        reject_appeal_html: "%{name} 回絕了來自 %{target} 的審核決定申訴"
         reject_user_html: "%{name} 回絕了從 %{target} 而來的註冊"
         remove_avatar_user_html: "%{name} 移除了 %{target} 的大頭貼"
         reopen_report_html: "%{name} 重新開啟 %{target} 的檢舉"
@@ -420,9 +420,9 @@ zh-TW:
       existing_domain_block_html: 您已經對 %{name} 施加了更嚴格的限制,您需要先把他<a href="%{unblock_url}">取消封鎖</a>。
       new:
         create: 新增封鎖
-        hint: 站點封鎖動作並不會阻止帳戶紀錄被新增至資料庫,但會自動回溯性地對那些帳戶套用特定管理設定。
+        hint: 站點封鎖動作並不會阻止帳號紀錄被新增至資料庫,但會自動回溯性地對那些帳號套用特定管理設定。
         severity:
-          desc_html: "「<strong>靜音</strong>」令該站點下使用者的嘟文,設定為只對關注者顯示,沒有關注的人會看不到。「<strong>停權</strong>」會刪除將該站點下使用者的嘟文、媒體檔案和個人資料。「<strong>無</strong>」則會拒絕接收來自該站點的媒體檔案。"
+          desc_html: "「<strong>靜音</strong>」令該站點下使用者的嘟文,設定為只對跟隨者顯示,沒有跟隨的人會看不到。「<strong>停權</strong>」會刪除將該站點下使用者的嘟文、媒體檔案和個人資料。「<strong>無</strong>」則會拒絕接收來自該站點的媒體檔案。"
           noop: 無
           silence: 靜音
           suspend: 停權
@@ -432,7 +432,7 @@ zh-TW:
       private_comment: 私人留言
       private_comment_hint: 請提供更多有關此站台限制的資訊以供版主作內部參考。
       public_comment: 公開留言
-      public_comment_hint: 如果你已經啟用站台限制列表的公告,請為一般大眾提供更多有關此站台限制的資訊。
+      public_comment_hint: 如果您已經啟用站台限制列表的公告,請為一般大眾提供更多有關此站台限制的資訊。
       reject_media: 拒絕媒體檔案
       reject_media_hint: 刪除本地快取的媒體檔案,並且不再接收來自該站點的任何媒體檔案。與停權無關
       reject_reports: 拒絕檢舉
@@ -526,8 +526,8 @@ zh-TW:
       purge_description_html: 若您相信此網域將永久離線,您可以自儲存空間中刪除該網域所有帳號紀錄及相關資料。這可能花費一些時間。
       title: 聯邦
       total_blocked_by_us: 被我們封鎖
-      total_followed_by_them: 被他們關注
-      total_followed_by_us: 被我們關注
+      total_followed_by_them: 被他們跟隨
+      total_followed_by_us: 被我們跟隨
       total_reported: 關於他們的舉報
       total_storage: 多媒體附檔
       totals_time_period_hint_html: 以下顯示之總和包含所有時間的資料。
@@ -559,11 +559,11 @@ zh-TW:
     relays:
       add_new: 新增中繼站
       delete: 刪除
-      description_html: "<strong>聯邦中繼站</strong> 是種中繼伺服器,會在訂閱並推送至此中繼站的伺服器之間交換大量的公開嘟文。<strong>中繼站也能協助小型或中型伺服器從聯邦中探索內容</strong>,而無須本地使用者手動關注遠端伺服器的其他使用者。"
+      description_html: "<strong>聯邦中繼站</strong> 是種中繼伺服器,會在訂閱並推送至此中繼站的伺服器之間交換大量的公開嘟文。<strong>中繼站也能協助小型或中型伺服器從聯邦宇宙中探索內容</strong>,而無須本地使用者手動跟隨遠端伺服器的其他使用者。"
       disable: 停用
       disabled: 停用
       enable: 啟用
-      enable_hint: 啟用後,你的伺服器將訂閱該中繼的所有公開文章,並將會此伺服器的公開文章發送給它。
+      enable_hint: 啟用後,您的伺服器將訂閱該中繼的所有公開文章,並將會此伺服器的公開文章發送給它。
       enabled: 已啟用
       inbox_url: 中繼URL
       pending: 等待中繼站審核
@@ -591,10 +591,10 @@ zh-TW:
         suspend_description_html: 個人頁面及其內容將無法被存取,直到其最終被刪除。將無法與此帳號互動。此設定 30 日內可被還原。
       actions_description_html: 決定應對此報告採取何種行動。若您對檢舉之帳號採取懲罰措施,則將對他們發送 e-mail 通知,如非選擇了 <strong>垃圾郵件</strong> 類別。
       add_to_report: 加入更多至報告
-      are_you_sure: 你確定嗎?
+      are_you_sure: 您確定嗎?
       assign_to_self: 指派給自己
       assigned: 指派負責人
-      by_target_domain: 檢舉帳戶之網域
+      by_target_domain: 檢舉帳號之網域
       category: 分類
       category_description_html: 此帳號及/或被檢舉內容之原因會被引用在檢舉帳號通知中
       comment:
@@ -628,7 +628,7 @@ zh-TW:
       status: 嘟文
       statuses: 被檢舉的內容
       statuses_description_html: 侵犯性違規內容會被引用在檢舉帳號通知中
-      target_origin: 檢舉帳戶之來源
+      target_origin: 檢舉帳號之來源
       title: 檢舉
       unassign: 取消指派
       unresolved: 未解決
@@ -646,8 +646,8 @@ zh-TW:
         desc_html: 本站使用者發佈的嘟文數量,以及本站的活躍使用者與一週內新使用者數量
         title: 公開使用者活躍度的統計數據
       bootstrap_timeline_accounts:
-        desc_html: 以半形逗號分隔多個使用者名。只能加入來自本站且未開啟保護的帳戶。如果留空,則預設關注本站所有管理員。
-        title: 新使用者預設關注
+        desc_html: 以半形逗號分隔多個使用者名稱。只能加入來自本站且未開啟保護的帳號。如果留空,則預設跟隨本站所有管理員。
+        title: 新使用者預設跟隨
       contact_information:
         email: 用於聯絡的公開電子信箱地址
         username: 請輸入使用者名稱
@@ -684,8 +684,8 @@ zh-TW:
           desc_html: 關閉註冊時顯示在首頁的內容,可使用 HTML 標籤
           title: 關閉註冊訊息
         deletion:
-          desc_html: 允許所有人刪除自己的帳戶
-          title: 開放刪除帳戶的權限
+          desc_html: 允許所有人刪除自己的帳號
+          title: 開放刪除帳號的權限
         min_invite_role:
           disabled: 沒有人
           title: 允許發送邀請的身份
@@ -734,7 +734,7 @@ zh-TW:
       delete: 刪除上傳的檔案
       destroyed_msg: 成功刪除站台的上傳項目!
     statuses:
-      back_to_account: 返回帳戶訊息頁
+      back_to_account: 返回帳號訊息頁
       back_to_report: 回到檢舉報告頁面
       batch:
         remove_from_report: 從檢舉報告中移除
@@ -743,7 +743,7 @@ zh-TW:
       media:
         title: 媒體檔案
       no_status_selected: 因未選擇嘟文而未變更。
-      title: 帳戶嘟文
+      title: 帳號嘟文
       with_media: 含有媒體檔案
     strikes:
       actions:
@@ -766,9 +766,9 @@ zh-TW:
         version_comparison: Elasticsearch %{running_version} 版正在執行,需要 %{required_version} 版。
       rules_check:
         action: 管理服务器规则
-        message_html: 你没有定义任何服务器规则。
+        message_html: 您没有定義任何伺服器規則。
       sidekiq_process_check:
-        message_html: 没有队列 %{value} 的Sidekiq进程,请检查你的Sidekiq配置
+        message_html: 沒有佇列 %{value} 的 Sidekiq 行程,請檢查您的 Sidekiq 設定組態
     tags:
       review: 審核嘟文
       updated_msg: 成功更新主題標籤設定
@@ -844,12 +844,12 @@ zh-TW:
         sensitive: 要將他們的帳號標記為含有敏感內容
         silence: 要限制他們的帳號
         suspend: 要停權他們的帳號
-      body: "%{target} 正在就 %{date} 的 %{action_taken_by} 做出的審核決定提出上訴,該決定是 %{type}。他們寫道:"
+      body: "%{target} 正在就 %{date} 的 %{action_taken_by} 做出的審核決定提出申訴,該決定是 %{type}。他們寫道:"
       next_steps: 您可以批准申訴以還原審核決定,或是忽略它。
       subject: "%{username} 正在申訴 %{instance} 上的審核決定"
     new_pending_account:
-      body: 以下是新帳戶的詳細資訊。您可以同意或拒絕這項申請。
-      subject: "%{instance} 上有新帳戶 (%{username}) 待審核"
+      body: 以下是新帳號的詳細資訊。您可以同意或拒絕這項申請。
+      subject: "%{instance} 上有新帳號 (%{username}) 待審核"
     new_report:
       body: "%{reporter} 檢舉了使用者 %{target}"
       body_remote: 來自 %{domain} 的使用者檢舉了使用者 %{target}
@@ -871,10 +871,10 @@ zh-TW:
       subject: "%{instance} 有待審核之新熱門"
   aliases:
     add_new: 建立別名
-    created_msg: 成功建立別名。您可以自舊帳戶開始轉移。
-    deleted_msg: 成功移除別名。您將無法再由舊帳戶轉移到目前的帳戶。
+    created_msg: 成功建立別名。您可以自舊帳號開始轉移。
+    deleted_msg: 成功移除別名。您將無法再由舊帳號轉移到目前的帳號。
     empty: 您目前沒有任何別名。
-    hint_html: 如果想由其他帳戶轉移到此帳戶,您可以在此處建立別名,稍後系統將容許您把關注者由舊帳戶轉移至此。此項作業是<strong>無害且可復原的</strong>。 <strong>帳戶的遷移程序需要在舊帳戶啟動</strong>。
+    hint_html: 如果想由其他帳號轉移到此帳號,您可以在此處創建別名,稍後系統將容許您把跟隨者由舊帳號轉移至此。此項作業是<strong>無害且可復原的</strong>。 <strong>帳號的遷移程序需要在舊帳號啟動</strong>。
     remove: 取消連結別名
   appearance:
     advanced_web_interface: 進階網頁介面
@@ -902,18 +902,18 @@ zh-TW:
     regenerate_token: 重設 token
     token_regenerated: 已重設 token
     warning: 警告,不要把它分享給任何人!
-    your_token: 你的 token
+    your_token: 您的 access token
   auth:
     apply_for_account: 索取註冊邀請
     change_password: 密碼
     checkbox_agreement_html: 我同意 <a href="%{rules_path}" target="_blank">之伺服器規則</a> 以及 <a href="%{terms_path}" target="_blank">服務條款</a>
     checkbox_agreement_without_rules_html: 我同意 <a href="%{terms_path}" target="_blank">服務條款</a>
-    delete_account: 刪除帳戶
-    delete_account_html: 如果你想刪除你的帳戶,請<a href="%{path}">點擊這裡繼續</a>。你需要確認你的操作。
+    delete_account: 刪除帳號
+    delete_account_html: 如果您欲刪除您的帳號,請<a href="%{path}">點擊這裡繼續</a>。您需要確認您的操作。
     description:
       prefix_invited_by_user: "@%{name} 邀請您加入這個 Mastodon 伺服器!"
-      prefix_sign_up: 現在就註冊 Mastodon 帳戶吧!
-      suffix: 有了帳戶,就可以從任何 Mastodon 伺服器關注任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多!
+      prefix_sign_up: 現在就註冊 Mastodon 帳號吧!
+      suffix: 有了帳號,就可以從任何 Mastodon 伺服器跟隨任何人、發發廢嘟,並且與任何 Mastodon 伺服器的使用者交流,以及更多!
     didnt_get_confirmation: 沒有收到驗證信?
     dont_have_your_security_key: 找不到您的安全金鑰?
     forgot_password: 忘記密碼?
@@ -923,8 +923,8 @@ zh-TW:
     log_in_with: 登入,使用
     login: 登入
     logout: 登出
-    migrate_account: 轉移到另一個帳戶
-    migrate_account_html: 如果你希望引導他人關注另一個帳戶,請<a href="%{path}">到這裡設定</a>。
+    migrate_account: 轉移到另一個帳號
+    migrate_account_html: 如果您希望引導他人關注另一個帳號,請 <a href="%{path}">到這裡設定</a>。
     or_log_in_with: 或透過其他方式登入
     providers:
       cas: CAS
@@ -937,10 +937,10 @@ zh-TW:
     set_new_password: 設定新密碼
     setup:
       email_below_hint_html: 如果此電子郵件地址不正確,您可於此修改並接收郵件進行認證。
-      email_settings_hint_html: 請確認電子信件是否寄至 %{email} 。如果不對的話,可以在帳戶設定裡變更。
+      email_settings_hint_html: 請確認 e-mail 是否傳送到 %{email} 。如果不對的話,可以從帳號設定修改。
       title: 設定
     status:
-      account_status: 帳戶狀態
+      account_status: 帳號狀態
       confirming: 等待電子郵件確認完成。
       functional: 您的帳號可以正常使用了。
       pending: 管管們正在處理您的申請,這可能需要一點時間處理。我們將在申請通過後以電子郵件方式通知您。
@@ -950,17 +950,17 @@ zh-TW:
     trouble_logging_in: 登錄時遇到困難?
     use_security_key: 使用安全金鑰
   authorize_follow:
-    already_following: 你已經關注了這個使用者
+    already_following: 您已經跟隨了這個使用者
     already_requested: 您早已向該帳戶寄送追蹤請求
     error: 對不起,搜尋其他站點使用者出現錯誤
-    follow: 關注
-    follow_request: 關注請求已經發送給:
-    following: 成功! 你正在關注:
+    follow: 跟隨
+    follow_request: 跟隨請求已發送給:
+    following: 成功!您正在跟隨:
     post_follow:
-      close: 你也可以直接關閉這個頁面。
+      close: 您可以直接關閉此頁面。
       return: 顯示個人資料頁
       web: 返回本站
-    title: 關注 %{acct}
+    title: 跟隨 %{acct}
   challenge:
     confirm: 繼續
     hint_html: "<strong>温馨小提醒:</strong> 我們在接下來一小時內不會再要求您輸入密碼。"
@@ -990,21 +990,21 @@ zh-TW:
       x_seconds: "%{count}秒"
   deletes:
     challenge_not_passed: 您所輸入的資料不正確
-    confirm_password: 輸入你現在的密碼來驗證身份
+    confirm_password: 輸入您現在的密碼以驗證身份
     confirm_username: 請輸入您的使用者名稱以作確認
     proceed: 刪除帳戶
-    success_msg: 你的帳戶已經成功刪除
+    success_msg: 您的帳戶已經成功刪除
     warning:
       before: 在進行下一步驟之前,請詳細閱讀以下説明:
       caches: 已被其他節點快取的內容可能會殘留其中
       data_removal: 您的嘟文和其他資料將會被永久刪除
-      email_change_html: 你可以在不刪除帳戶的情況下<a href="%{path}">變更你的電子郵件地址</a>
-      email_contact_html: 如果你仍然沒有收到郵件,請寄信到 <a href="mailto:%{email}">%{email}</a> 以獲得協助
-      email_reconfirmation_html: 如果你沒有收到確認郵件,你可以<a href="%{path}">請求再次發送</a>
-      irreversible: 你將無法復原或重新啟用你的帳戶
+      email_change_html: 您可以在不刪除帳號的情況下<a href="%{path}">變更您的電子郵件地址</a>
+      email_contact_html: 如果您仍然沒有收到郵件,請寄信至 <a href="mailto:%{email}">%{email}</a> 以獲得協助
+      email_reconfirmation_html: 如果您沒有收到確認郵件,可以<a href="%{path}">請求再次發送</a>
+      irreversible: 您將無法復原或重新啟用您的帳號
       more_details_html: 更多詳細資訊,請參閲<a href="%{terms_path}">隱私政策</a>。
-      username_available: 你的使用者名稱將會釋出供他人使用
-      username_unavailable: 你的使用者名稱將會保留並不予他人使用
+      username_available: 您的使用者名稱將會釋出供他人使用
+      username_unavailable: 您的使用者名稱將會保留並不予他人使用
   directories:
     directory: 個人資料目錄
     explanation: 根據興趣去發現新朋友
@@ -1014,15 +1014,17 @@ zh-TW:
       action_taken: 採取的行動
       appeal: 申訴
       appeal_approved: 此警示已成功申訴,不再有效
-      appeal_rejected: 申訴已被回絕
+      appeal_rejected: 申訴已被駁回
       appeal_submitted_at: 申訴已遞交
       appealed_msg: 您的申訴已遞交。若其被批准,您將會被通知。
       appeals:
         submit: 遞交申訴
+      approve_appeal: 批准申訴
       associated_report: 相關報告
       created_at: 過時的
       description_html: 這些是 %{instance} 的管理員向您發送的針對您的帳號採取的措施與警告。
       recipient: 此致
+      reject_appeal: 駁回申訴
       status: '嘟文編號 #%{id}'
       status_removed: 嘟文已從系統中移除
       title: "%{action} 來自 %{date}"
@@ -1036,12 +1038,12 @@ zh-TW:
         suspend: 帳號停權
       your_appeal_approved: 您的申訴已被批准
       your_appeal_pending: 您已遞交申訴
-      your_appeal_rejected: 您的申訴已被回絕
+      your_appeal_rejected: 您的申訴已被駁回
   domain_validator:
     invalid_domain: 並非一個有效域名
   errors:
-    '400': 你所送出的請求無效或格式不正確。
-    '403': 你沒有觀看這個頁面的權限。
+    '400': 您所送出的請求無效或格式不正確。
+    '403': 您沒有檢視這個頁面的權限。
     '404': 您所尋找的網頁不存在。
     '406': 此頁面無法以請求的格式顯示。
     '410': 您所尋找的網頁此處已不存在。
@@ -1053,7 +1055,7 @@ zh-TW:
       content: 抱歉,我們的後台出現問題了。
       title: 這個頁面有問題
     '503': 此頁面因伺服器暫時發生錯誤而無法提供。
-    noscript_html: 使用 Mastodon 網頁版應用需要啟用 JavaScript。你也可以選擇適用於你的平台的 <a href="%{apps_path}">Mastodon 應用</a>。
+    noscript_html: 使用 Mastodon 網頁版應用需要啟用 JavaScript。您也可以選擇適用於您的平台的 <a href="%{apps_path}">Mastodon 應用</a>。
   existing_username_validator:
     not_found: 無法在本站找到這個名稱的使用者
     not_found_multiple: 揣嘸 %{usernames}
@@ -1061,8 +1063,8 @@ zh-TW:
     archive_takeout:
       date: 日期
       download: 下載檔案
-      hint_html: 你可以下載包含你的<strong>文章和媒體</strong>的檔案。資料以 ActivityPub 格式儲存,可用於相容的軟體。每次允許存檔的間隔至少7天。
-      in_progress: 正在準備你的存檔...
+      hint_html: 您可以下載包含您的<strong>文章和媒體</strong>的檔案。資料以 ActivityPub 格式儲存,可用於相容的軟體。每次允許存檔的間隔至少 7 天。
+      in_progress: 正在準備您的存檔...
       request: 下載存檔
       size: 大小
     blocks: 您封鎖的使用者
@@ -1075,7 +1077,7 @@ zh-TW:
   featured_tags:
     add_new: 追加
     errors:
-      limit: 你所推薦的標籤數量已經達到上限
+      limit: 您所推薦的標籤數量已經達到上限
     hint_html: "<strong>推薦標籤是什麼?</strong> 這些標籤將顯示於您的公開個人檔案頁,訪客可以藉此閱覽您標示了這些標籤的嘟文,拿來展示創意作品或者長期更新的專案很好用唷!"
   filters:
     contexts:
@@ -1121,7 +1123,7 @@ zh-TW:
       merge_long: 保留現有記錄並新增紀錄
       overwrite: 覆蓋
       overwrite_long: 以新的紀錄覆蓋目前紀錄
-    preface: 您可以在此匯入您在其他伺服器所匯出的資料檔,包括關注的使用者、封鎖的使用者名單。
+    preface: 您可以在此匯入您在其他伺服器所匯出的資料檔,包括跟隨的使用者、封鎖的使用者名單。
     success: 資料檔上傳成功,正在匯入,請稍候
     types:
       blocking: 您封鎖的使用者名單
@@ -1143,7 +1145,7 @@ zh-TW:
       '86400': 1 天後
     expires_in_prompt: 永不過期
     generate: 建立邀請連結
-    invited_by: 你的邀請人是:
+    invited_by: 您的邀請人是:
     max_uses:
       other: "%{count} 則"
     max_uses_prompt: 無限制
@@ -1154,7 +1156,7 @@ zh-TW:
     title: 邀請使用者
   lists:
     errors:
-      limit: 你所建立的列表數量已經達到上限
+      limit: 您所建立的列表數量已經達到上限
   login_activities:
     authentication_methods:
       otp: 兩步驟驗證應用程式
@@ -1172,25 +1174,25 @@ zh-TW:
       not_ready: 修但幾勒!不能附加未完成處理的檔案欸,咁按呢?
       too_many: 無法加入超過 4 個檔案
   migrations:
-    acct: 新帳戶的 使用者名稱@站點網域
+    acct: 新帳號的 使用者名稱@站點網域
     cancel: 取消重導向
-    cancel_explanation: 取消重新導向將會重新啟用目前帳戶,但不會還原已移至該帳號的關注者。
+    cancel_explanation: 取消重導向將會重新啓用目前帳號,但不會還原已移至該帳號的跟隨者。
     cancelled_msg: 成功取消重導向。
     errors:
-      already_moved: 與已經重導向的帳戶相同
-      missing_also_known_as: 不是這個帳戶的別名
-      move_to_self: 不能是目前帳戶
+      already_moved: 與已經重導向的帳號相同
+      missing_also_known_as: 不是這個帳號的別名
+      move_to_self: 不能是目前帳號
       not_found: 找不到
-      on_cooldown: 你正在處於冷卻(CD)狀態
+      on_cooldown: 您正在處於冷卻(CD)狀態
     followers_count: 轉移時的追隨者
-    incoming_migrations: 自另一個帳戶轉移
+    incoming_migrations: 自另一個帳號轉移
     incoming_migrations_html: 要從其他帳號移動到此帳號的話,首先您必須<a href="%{path}">建立帳號別名</a>。
     moved_msg: 您的帳號正被重新導向到 %{acct},您的追蹤者也會同步轉移至該帳號。
     not_redirecting: 您的帳號目前尚未重新導向到任何其他帳號。
     on_cooldown: 您最近已轉移過您的帳號。此功能將在 %{count} 天後可再度使用。
     past_migrations: 以往的轉移紀錄
-    proceed_with_move: 移動關注者
-    redirected_msg: 您的帳戶現在指向 %{acct}
+    proceed_with_move: 移動跟隨者
+    redirected_msg: 您的帳號現在指向 %{acct}
     redirecting_to: 您的帳號目前正被重新導向到 %{acct}
     set_redirect: 設定重新導向
     warning:
@@ -1214,36 +1216,36 @@ zh-TW:
         subject: "%{name} 已進行註冊"
     digest:
       action: 閱覽所有通知
-      body: 以下是自%{since}你最後一次登入以來錯過的訊息摘要
-      mention: "%{name} 在此提及了你:"
+      body: 以下是自 %{since} 您最後一次登入以來錯過的訊息摘要
+      mention: "%{name} 在此提及了您:"
       new_followers_summary:
         other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的!
       subject:
         other: "從您上次造訪以來有 %{count} 個新通知 🐘"
-      title: 你不在的時候...
+      title: 您不在的時候...
     favourite:
-      body: '你的嘟文被 %{name} 加入了最愛:'
-      subject: "%{name} 將你的嘟文加入了最愛"
+      body: 您的嘟文被 %{name} 加入了最愛:
+      subject: "%{name} 將您的嘟文加入了最愛"
       title: 新的最愛
     follow:
-      body: "%{name} 開始關注你!"
-      subject: "%{name} 開始關注你"
-      title: 新的關注者
+      body: "%{name} 開始跟隨您!"
+      subject: "%{name} 開始跟隨您"
+      title: 新的跟隨者
     follow_request:
-      action: 處理關注請求
-      body: "%{name} 要求關注你"
-      subject: 等待關注你的使用者︰ %{name}
-      title: 新的關注請求
+      action: 處理跟隨請求
+      body: "%{name} 要求跟隨您"
+      subject: 等待跟隨您的使用者︰ %{name}
+      title: 新的跟隨請求
     mention:
       action: 回覆
-      body: "%{name} 在嘟文中提及你:"
-      subject: "%{name} 在嘟文中提及你"
+      body: "%{name} 在嘟文中提及您:"
+      subject: "%{name} 在嘟文中提及您"
       title: 新的提及
     poll:
       subject: 由 %{name} 發起的投票已結束
     reblog:
-      body: '你的嘟文被 %{name} 轉嘟:'
-      subject: "%{name} 轉嘟了你的嘟文"
+      body: 您的嘟文被 %{name} 轉嘟:
+      subject: "%{name} 轉嘟了您的嘟文"
       title: 新的轉嘟
     status:
       subject: "%{name} 剛剛嘟文"
@@ -1251,7 +1253,7 @@ zh-TW:
       subject: "%{name} 編輯了貼文"
   notifications:
     email_events: 電子郵件通知設定
-    email_events_hint: 選取你想接收通知的事件:
+    email_events_hint: 選取您想接收通知的事件:
     other_settings: 其他通知設定
   number:
     human:
@@ -1312,13 +1314,13 @@ zh-TW:
     remove_selected_domains: 從所選網域中移除所有追隨者
     remove_selected_followers: 移除所選的跟隨者
     remove_selected_follows: 取消跟隨所選使用者
-    status: 帳戶狀態
+    status: 帳號狀態
   remote_follow:
     acct: 請輸入您的使用者名稱@站點網域
     missing_resource: 無法找到資源
     no_account_html: 還沒有帳號?您可以<a href='%{sign_up_path}' target='_blank'>於這裡註冊</a>
     proceed: 下一步
-    prompt: '您希望關注:'
+    prompt: 您希望跟隨:
     reason_html: "<strong>為什麼要經過這個步驟?</strong>因為<code>%{instance}</code>未必是您註冊的伺服器,我們需要先將您帶回您駐在的伺服器。"
   remote_interaction:
     favourite:
@@ -1333,6 +1335,11 @@ zh-TW:
   reports:
     errors:
       invalid_rules: 未引用有效規則
+  rss:
+    content_warning: 內容警告:
+    descriptions:
+      account: 來自 @%{acct} 之公開嘟文
+      tag: '帶有 #%{hashtag} 之公開嘟文'
   scheduled_statuses:
     over_daily_limit: 您已經超過了本日排定發嘟的限額 (%{limit})
     over_total_limit: 您已經超過了排定發嘟的限額 (%{limit})
@@ -1360,7 +1367,7 @@ zh-TW:
       weibo: 新浪微博
     current_session: 目前的 session
     description: "%{platform} 上的 %{browser}"
-    explanation: 這些是現在正登入於你的 Mastodon 帳戶的瀏覽器。
+    explanation: 這些是現在正登入於您 Mastodon 帳號的瀏覽器。
     ip: IP 位址
     platforms:
       adobe_air: Adobe Air
@@ -1380,20 +1387,20 @@ zh-TW:
     title: 作業階段
     view_authentication_history: 檢視您帳號的身份驗證歷史紀錄
   settings:
-    account: 帳戶
-    account_settings: 帳戶設定
-    aliases: 帳戶別名
+    account: 帳號
+    account_settings: 帳號設定
+    aliases: 帳號別名
     appearance: 外觀設定
     authorized_apps: 已授權應用程式
     back: 回到 Mastodon
-    delete: 刪除帳戶
+    delete: 刪除帳號
     development: 開發
     edit_profile: 編輯使用者資訊
     export: 匯出
     featured_tags: 推薦標籤
     import: 匯入
     import_and_export: 匯入及匯出
-    migrate: 帳戶搬遷
+    migrate: 帳號搬遷
     notifications: 通知
     preferences: 偏好設定
     profile: 使用者資訊
@@ -1423,7 +1430,7 @@ zh-TW:
     over_character_limit: 超過了 %{max} 字的限制
     pin_errors:
       direct: 無法釘選只有僅提及使用者可見之嘟文
-      limit: 你所置頂的嘟文數量已經達到上限
+      limit: 您所置頂的嘟文數量已經達到上限
       ownership: 不能置頂他人的嘟文
       reblog: 不能置頂轉嘟
     poll:
@@ -1440,8 +1447,8 @@ zh-TW:
     title: "%{name}:「%{quote}」"
     visibilities:
       direct: 私訊
-      private: 僅關注者
-      private_long: 只有關注你的人能看到
+      private: 僅限跟隨者
+      private_long: 只有跟隨您的人能看到
       public: 公開
       public_long: 所有人都能看到
       unlisted: 公開,但不在公共時間軸顯示
@@ -1485,6 +1492,9 @@ zh-TW:
     pinned: 置頂嘟文
     reblogged: 轉嘟
     sensitive_content: 敏感內容
+  strikes:
+    errors:
+      too_late: 您太晚申訴這個警示了
   tags:
     does_not_match_previous_name: 與先前的名稱不吻合
   terms:
@@ -1574,7 +1584,7 @@ zh-TW:
     mastodon-light: Mastodon(亮色主題)
   time:
     formats:
-      default: "%Y年%-m月%d日 %H:%M"
+      default: "%Y 年 %b 月 %d 日 %H:%M"
       month: "%b %Y"
       time: "%H:%M"
   two_factor_authentication:
@@ -1585,12 +1595,12 @@ zh-TW:
     enabled: 兩階段認證已啟用
     enabled_success: 已成功啟用兩階段認證
     generate_recovery_codes: 產生備用驗證碼
-    lost_recovery_codes: 讓你可以在遺失手機時,使用備用驗證碼登入。如果你遺失了備用驗證碼,可以在這裏產生一批新的,舊有的備用驗證碼將會失效。
+    lost_recovery_codes: 讓您可以在遺失手機時,使用備用驗證碼登入。若您遺失了備用驗證碼,可以在這裏產生一批新的,舊有的備用驗證碼將會失效。
     methods: 兩步驟方式
     otp: 驗證應用程式
     recovery_codes: 備份備用驗證碼
     recovery_codes_regenerated: 成功產生新的備用驗證碼
-    recovery_instructions_html: 如果你的手機無法使用,你可以使用下列任意一個備用驗證碼來重新獲得帳戶的訪問權。<strong>請妥善保管好你的備用驗證碼</strong>(例如,你可以將它們列印出來,與你的其他重要文件放在一起)。
+    recovery_instructions_html: 若您的手機無法使用,您可以使用下列任意一個備用驗證碼來重新獲得帳號的訪問權。<strong>請妥善保管好您的備用驗證碼</strong>(例如,可以將它們列印出來,與您的其他重要文件放在一起)。
     webauthn: 安全金鑰
   user_mailer:
     appeal_approved:
@@ -1599,12 +1609,12 @@ zh-TW:
       subject: 您在 %{date} 提出的申訴已獲批准
       title: 申訴已批准
     appeal_rejected:
-      explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已被回絕。
-      subject: 您在 %{date} 提出的申訴已被回絕
-      title: 申訴被回絕
+      explanation: 您在 %{appeal_date} 遞交的針對您帳號的 %{strike_date} 警示的申訴已被駁回。
+      subject: 您在 %{date} 提出的申訴已被駁回
+      title: 申訴被駁回
     backup_ready:
-      explanation: 你要求的 Mastodon 帳戶完整備份檔案現已就緒,可供下載!
-      subject: 你的備份檔已可供下載
+      explanation: 您要求的 Mastodon 帳號完整備份檔案現已就緒,可供下載!
+      subject: 您的備份檔已可供下載
       title: 檔案匯出
     suspicious_sign_in:
       change_password: 變更密碼
@@ -1625,7 +1635,7 @@ zh-TW:
         mark_statuses_as_sensitive: 您的部份嘟文已被 %{instance} 的管理員標記為敏感。這代表了人們必須在顯示預覽前點擊嘟文中的媒體。您可以在將來嘟文時自己將媒體標記為敏感。
         sensitive: 由此刻起,您所有上傳的媒體檔案將被標記為敏感內容,並且隱藏於點擊警告之後。
         silence: 您仍然可以使用您的帳號,但僅有已追蹤您的人才能看到您在此伺服器的貼文,您也可能會從各式探索功能中被排除。但其他人仍可手動追蹤您。
-        suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載你的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。
+        suspend: 您將不能使用您的帳號,您的個人資料頁面及其他資料將不再能被存取。您仍可於約 30 日內資料被完全刪除前要求下載您的資料,但我們仍會保留一部份基本資料,以防止有人規避停權處罰。
       reason: 原因:
       statuses: 引用的嘟文:
       subject:
@@ -1646,27 +1656,27 @@ zh-TW:
         suspend: 帳號己被停用
     welcome:
       edit_profile_action: 設定個人資料
-      edit_profile_step: 你可以設定你的個人資料,包括上傳頭像、橫幅圖片、變更顯示名稱等等。如果你想在新的關注者關注你之前對他們進行審核,你也可以選擇為你的帳戶設為「私人」。
-      explanation: 下面是幾個小幫助,希望它們能幫到你
+      edit_profile_step: 您可以設定您的個人資料,包括上傳頭像、橫幅圖片、變更顯示名稱等等。如果想在新的跟隨者跟隨您之前對他們進行審核,您也可以選擇為您的帳號設為「私人」。
+      explanation: 下面是幾個小幫助,希望它們能幫到您
       final_action: 開始嘟嘟
-      final_step: '開始嘟嘟吧! 即使你現在沒有關注者,其他人仍然能在本站時間軸或著話題標籤等地方看到你的公開嘟文。試著用 #introductions 這個話題標籤介紹一下自己吧。'
-      full_handle: 你的完整帳戶名稱
-      full_handle_hint: 你需要把這告訴你的朋友們,這樣他們就能從另一個伺服器向你發送訊息或著關注你。
+      final_step: '開始嘟嘟吧!即使您現在沒有跟隨者,其他人仍然能在本站時間軸或著話題標籤等地方看到您的公開嘟文。試著用 #introductions 這個話題標籤介紹一下自己吧。'
+      full_handle: 您的完整帳號名稱
+      full_handle_hint: 您需要把這告訴你的朋友們,這樣他們就能從另一個伺服器向您發送訊息或著跟隨您。
       review_preferences_action: 變更偏好設定
-      review_preferences_step: 記得調整你的偏好設定,比如你想接收什麼類型的電子郵件,或著你想把你的嘟文可見範圍預設設定什麼級別。如果你沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。
+      review_preferences_step: 記得調整您的偏好設定,比如想接收什麼類型的電子郵件,或著想把您的嘟文可見範圍預設設定什麼級別。如果您沒有暈車的話,考慮一下啟用「自動播放 GIF 動畫」這個選項吧。
       subject: 歡迎來到 Mastodon
-      tip_federated_timeline: 跨站公共時間軸可以讓你一窺更廣闊的 Mastodon 網路。不過,由於它們只顯示你的鄰居們所訂閱的內容,所以並不是全部。
-      tip_following: 預設情況下,你會自動關注你所在站點的管理員。想結交更多有趣的人的話,記得多逛逛本站時間軸與跨站公共時間軸哦。
-      tip_local_timeline: 本站時間軸可以讓你一窺 %{instance} 上的使用者。他們就是離你最近的鄰居!
-      tip_mobile_webapp: 如果你的行動裝置瀏覽器允許你將 Mastodon 新增到主螢幕,你就能夠接收推送訊息。它就像手機APP一樣好用!
+      tip_federated_timeline: 跨站公共時間軸可以讓您一窺更廣闊的 Mastodon 網路。不過,由於它們只顯示您的鄰居們所訂閱的內容,所以並不是全部。
+      tip_following: 預設情況下,您會自動跟隨您所在站點的管管。想結交更多有趣的人的話,請記得多逛逛本站時間軸與跨站公共時間軸哦。
+      tip_local_timeline: 本站時間軸可以讓您一窺 %{instance} 上的使用者。他們就是離您最近的鄰居!
+      tip_mobile_webapp: 如果您的行動裝置瀏覽器允許將 Mastodon 新增到主螢幕,您就能夠接收推播通知。它就像手機 APP 一樣好用!
       tips: 小幫手
-      title: "%{name} 歡迎你的加入!"
+      title: "%{name} 誠摯歡迎您的加入!"
   users:
     follow_limit_reached: 您無法追蹤多於 %{limit} 個人
     invalid_otp_token: 兩階段認證碼不正確
-    otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫
-    seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。
-    signed_in_as: 目前登入的帳戶:
+    otp_lost_help_html: 如果您無法訪問這兩者,可以透過 %{email} 與我們聯繫
+    seamless_external_login: 由於您是由外部系統登入,所以不能設定密碼與電子郵件。
+    signed_in_as: 目前登入的帳號:
   verification:
     explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式<strong>驗證您確實掌控該連結網頁的內容</strong>。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 <strong>必須</strong>包含<code>rel="me"</code>屬性。連結的顯示文字可自由發揮,以下為範例:
     verification: 驗證連結
@@ -1674,7 +1684,7 @@ zh-TW:
     add: 新增安全金鑰
     create:
       error: 新增安全金鑰時出現了問題。請再試一次。
-      success: 你已成功加入安全金鑰。
+      success: 您已成功加入安全金鑰。
     delete: 刪除
     delete_confirmation: 您確定要移除這把安全金鑰嗎?
     description_html: 如果您啟用<strong>安全金鑰驗證</strong>的話,您將在登入時需要使用其中一把安全金鑰。
diff --git a/package.json b/package.json
index 68b7f12f0..c3481d08f 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,7 @@
     "@babel/runtime": "^7.17.9",
     "@gamestdio/websocket": "^0.3.2",
     "@github/webauthn-json": "^0.5.7",
-    "@rails/ujs": "^6.1.5",
+    "@rails/ujs": "^6.1.6",
     "array-includes": "^3.1.5",
     "atrament": "0.2.4",
     "arrow-key-navigation": "^1.2.0",
diff --git a/yarn.lock b/yarn.lock
index d1fd018c4..9850da020 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1512,10 +1512,10 @@
   resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.11.tgz#aeb16f50649a91af79dbe36574b66d0f9e4d9f71"
   integrity sha512-3NsZsJIA/22P3QUyrEDNA2D133H4j224twJrdipXN38dpnIOzAbUDtOwkcJ5pXmn75w7LSQDjA4tO9dm1XlqlA==
 
-"@rails/ujs@^6.1.5":
-  version "6.1.5"
-  resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.5.tgz#bb1afddd0d771f00924f44b21634969e329532e1"
-  integrity sha512-Ir4yd2fdDldWIghavPr874copVKf6OOoecKHZiFRlPtm38tFvhyxr+ywzNieXGwolF9JQe3D5GrM8ejkzUgh5Q==
+"@rails/ujs@^6.1.6":
+  version "6.1.6"
+  resolved "https://registry.yarnpkg.com/@rails/ujs/-/ujs-6.1.6.tgz#de486ae0a663e1bed637a012cbb2739bfcfa2031"
+  integrity sha512-2M4zlthYmOC6X/tcPcFd//sIL26a7JbCpGNl8uIrQf+pR1Z47uhYt9cOwVqJTJZPurdy2k+YY3Pn64pqruAPEA==
 
 "@redis/bloom@1.0.2":
   version "1.0.2"