about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-04-08 22:24:07 +0200
committerGitHub <noreply@github.com>2022-04-08 22:24:07 +0200
commitc483101b4ae7d9f22ea43921c512f479e16e98ca (patch)
tree1de88394686dd7f532e7ddf68a9023caa1bfdb88
parente0c39f9fad837b77373220515f078f2443ddf553 (diff)
parenta8d89aabb2292af499f2d1392ad435dd261dd41b (diff)
Merge pull request #1737 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
-rw-r--r--Gemfile8
-rw-r--r--Gemfile.lock41
-rw-r--r--app/controllers/api/v1/admin/accounts_controller.rb3
-rw-r--r--app/controllers/api/v1/statuses_controller.rb6
-rw-r--r--app/controllers/api/v1/trends/links_controller.rb6
-rw-r--r--app/controllers/api/v1/trends/statuses_controller.rb6
-rw-r--r--app/controllers/api/v1/trends/tags_controller.rb6
-rw-r--r--app/controllers/settings/preferences_controller.rb3
-rw-r--r--app/javascript/flavours/glitch/actions/streaming.js17
-rw-r--r--app/javascript/flavours/glitch/actions/timelines.js22
-rw-r--r--app/javascript/flavours/glitch/reducers/timelines.js13
-rw-r--r--app/javascript/mastodon/actions/streaming.js17
-rw-r--r--app/javascript/mastodon/actions/timelines.js22
-rw-r--r--app/javascript/mastodon/locales/af.json1
-rw-r--r--app/javascript/mastodon/locales/ar.json33
-rw-r--r--app/javascript/mastodon/locales/ast.json1
-rw-r--r--app/javascript/mastodon/locales/bg.json1
-rw-r--r--app/javascript/mastodon/locales/bn.json1
-rw-r--r--app/javascript/mastodon/locales/br.json7
-rw-r--r--app/javascript/mastodon/locales/ca.json1
-rw-r--r--app/javascript/mastodon/locales/ckb.json1
-rw-r--r--app/javascript/mastodon/locales/co.json1
-rw-r--r--app/javascript/mastodon/locales/cs.json95
-rw-r--r--app/javascript/mastodon/locales/cy.json1
-rw-r--r--app/javascript/mastodon/locales/da.json7
-rw-r--r--app/javascript/mastodon/locales/de.json1
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json4
-rw-r--r--app/javascript/mastodon/locales/el.json1
-rw-r--r--app/javascript/mastodon/locales/en.json1
-rw-r--r--app/javascript/mastodon/locales/eo.json35
-rw-r--r--app/javascript/mastodon/locales/es-AR.json1
-rw-r--r--app/javascript/mastodon/locales/es-MX.json1
-rw-r--r--app/javascript/mastodon/locales/es.json1
-rw-r--r--app/javascript/mastodon/locales/et.json1
-rw-r--r--app/javascript/mastodon/locales/eu.json1
-rw-r--r--app/javascript/mastodon/locales/fa.json1
-rw-r--r--app/javascript/mastodon/locales/fi.json1
-rw-r--r--app/javascript/mastodon/locales/fr.json1
-rw-r--r--app/javascript/mastodon/locales/ga.json1
-rw-r--r--app/javascript/mastodon/locales/gd.json1
-rw-r--r--app/javascript/mastodon/locales/gl.json1
-rw-r--r--app/javascript/mastodon/locales/he.json1
-rw-r--r--app/javascript/mastodon/locales/hi.json1
-rw-r--r--app/javascript/mastodon/locales/hr.json1
-rw-r--r--app/javascript/mastodon/locales/hu.json1
-rw-r--r--app/javascript/mastodon/locales/hy.json1
-rw-r--r--app/javascript/mastodon/locales/id.json1
-rw-r--r--app/javascript/mastodon/locales/io.json1
-rw-r--r--app/javascript/mastodon/locales/is.json1
-rw-r--r--app/javascript/mastodon/locales/it.json7
-rw-r--r--app/javascript/mastodon/locales/ja.json1
-rw-r--r--app/javascript/mastodon/locales/ka.json1
-rw-r--r--app/javascript/mastodon/locales/kab.json1
-rw-r--r--app/javascript/mastodon/locales/kk.json1
-rw-r--r--app/javascript/mastodon/locales/kn.json1
-rw-r--r--app/javascript/mastodon/locales/ko.json7
-rw-r--r--app/javascript/mastodon/locales/ku.json1
-rw-r--r--app/javascript/mastodon/locales/kw.json1
-rw-r--r--app/javascript/mastodon/locales/lt.json1
-rw-r--r--app/javascript/mastodon/locales/lv.json1
-rw-r--r--app/javascript/mastodon/locales/mk.json1
-rw-r--r--app/javascript/mastodon/locales/ml.json1
-rw-r--r--app/javascript/mastodon/locales/mr.json1
-rw-r--r--app/javascript/mastodon/locales/ms.json1
-rw-r--r--app/javascript/mastodon/locales/nl.json1
-rw-r--r--app/javascript/mastodon/locales/nn.json1
-rw-r--r--app/javascript/mastodon/locales/no.json1
-rw-r--r--app/javascript/mastodon/locales/oc.json35
-rw-r--r--app/javascript/mastodon/locales/pa.json1
-rw-r--r--app/javascript/mastodon/locales/pl.json1
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json1
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json1
-rw-r--r--app/javascript/mastodon/locales/ro.json1
-rw-r--r--app/javascript/mastodon/locales/ru.json1
-rw-r--r--app/javascript/mastodon/locales/sa.json1
-rw-r--r--app/javascript/mastodon/locales/sc.json1
-rw-r--r--app/javascript/mastodon/locales/si.json1
-rw-r--r--app/javascript/mastodon/locales/sk.json1
-rw-r--r--app/javascript/mastodon/locales/sl.json7
-rw-r--r--app/javascript/mastodon/locales/sq.json1
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json1
-rw-r--r--app/javascript/mastodon/locales/sr.json1
-rw-r--r--app/javascript/mastodon/locales/sv.json1
-rw-r--r--app/javascript/mastodon/locales/szl.json1
-rw-r--r--app/javascript/mastodon/locales/ta.json1
-rw-r--r--app/javascript/mastodon/locales/tai.json1
-rw-r--r--app/javascript/mastodon/locales/te.json1
-rw-r--r--app/javascript/mastodon/locales/th.json1
-rw-r--r--app/javascript/mastodon/locales/tr.json1
-rw-r--r--app/javascript/mastodon/locales/tt.json1
-rw-r--r--app/javascript/mastodon/locales/ug.json1
-rw-r--r--app/javascript/mastodon/locales/uk.json7
-rw-r--r--app/javascript/mastodon/locales/ur.json1
-rw-r--r--app/javascript/mastodon/locales/vi.json15
-rw-r--r--app/javascript/mastodon/locales/zgh.json1
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json3
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json1
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json97
-rw-r--r--app/javascript/mastodon/reducers/timelines.js13
-rw-r--r--app/lib/user_settings_decorator.rb5
-rw-r--r--app/models/trends/base.rb12
-rw-r--r--app/models/trends/links.rb5
-rw-r--r--app/models/trends/query.rb13
-rw-r--r--app/models/trends/statuses.rb31
-rw-r--r--app/models/user.rb2
-rw-r--r--app/services/notify_service.rb63
-rw-r--r--app/views/admin/trends/links/_preview_card.html.haml4
-rw-r--r--app/views/admin/trends/statuses/_status.html.haml4
-rw-r--r--app/views/settings/preferences/notifications/show.html.haml3
-rw-r--r--config/application.rb1
-rw-r--r--config/i18n-tasks.yml1
-rw-r--r--config/initializers/devise.rb4
-rw-r--r--config/initializers/session_store.rb2
-rw-r--r--config/locales/ar.yml55
-rw-r--r--config/locales/bg.yml4
-rw-r--r--config/locales/br.yml1
-rw-r--r--config/locales/ca.yml21
-rw-r--r--config/locales/ckb.yml13
-rw-r--r--config/locales/co.yml14
-rw-r--r--config/locales/cs.yml312
-rw-r--r--config/locales/cy.yml9
-rw-r--r--config/locales/da.yml19
-rw-r--r--config/locales/de.yml21
-rw-r--r--config/locales/doorkeeper.ar.yml15
-rw-r--r--config/locales/doorkeeper.cs.yml45
-rw-r--r--config/locales/doorkeeper.oc.yml9
-rw-r--r--config/locales/doorkeeper.vi.yml2
-rw-r--r--config/locales/el.yml13
-rw-r--r--config/locales/en.yml4
-rw-r--r--config/locales/en_GB.yml4
-rw-r--r--config/locales/eo.yml37
-rw-r--r--config/locales/es-AR.yml23
-rw-r--r--config/locales/es-MX.yml28
-rw-r--r--config/locales/es.yml23
-rw-r--r--config/locales/et.yml4
-rw-r--r--config/locales/eu.yml66
-rw-r--r--config/locales/fa.yml14
-rw-r--r--config/locales/fi.yml15
-rw-r--r--config/locales/fr.yml19
-rw-r--r--config/locales/gd.yml39
-rw-r--r--config/locales/gl.yml35
-rw-r--r--config/locales/hr.yml1
-rw-r--r--config/locales/hu.yml21
-rw-r--r--config/locales/hy.yml4
-rw-r--r--config/locales/id.yml12
-rw-r--r--config/locales/io.yml4
-rw-r--r--config/locales/is.yml21
-rw-r--r--config/locales/it.yml23
-rw-r--r--config/locales/ja.yml12
-rw-r--r--config/locales/ka.yml4
-rw-r--r--config/locales/kab.yml5
-rw-r--r--config/locales/kk.yml4
-rw-r--r--config/locales/ko.yml25
-rw-r--r--config/locales/ku.yml18
-rw-r--r--config/locales/lv.yml39
-rw-r--r--config/locales/nl.yml13
-rw-r--r--config/locales/nn.yml14
-rw-r--r--config/locales/no.yml14
-rw-r--r--config/locales/oc.yml6
-rw-r--r--config/locales/pl.yml27
-rw-r--r--config/locales/pt-BR.yml14
-rw-r--r--config/locales/pt-PT.yml26
-rw-r--r--config/locales/ro.yml1
-rw-r--r--config/locales/ru.yml25
-rw-r--r--config/locales/sc.yml13
-rw-r--r--config/locales/simple_form.cs.yml14
-rw-r--r--config/locales/simple_form.en.yml2
-rw-r--r--config/locales/simple_form.gl.yml2
-rw-r--r--config/locales/simple_form.it.yml4
-rw-r--r--config/locales/simple_form.uk.yml4
-rw-r--r--config/locales/simple_form.vi.yml22
-rw-r--r--config/locales/sk.yml12
-rw-r--r--config/locales/sl.yml11
-rw-r--r--config/locales/sq.yml15
-rw-r--r--config/locales/sr-Latn.yml6
-rw-r--r--config/locales/sr.yml6
-rw-r--r--config/locales/sv.yml13
-rw-r--r--config/locales/ta.yml11
-rw-r--r--config/locales/th.yml20
-rw-r--r--config/locales/tr.yml39
-rw-r--r--config/locales/uk.yml52
-rw-r--r--config/locales/vi.yml87
-rw-r--r--config/locales/zh-CN.yml34
-rw-r--r--config/locales/zh-HK.yml14
-rw-r--r--config/locales/zh-TW.yml19
-rw-r--r--config/settings.yml5
-rw-r--r--lib/action_dispatch/cookie_jar_extensions.rb25
-rw-r--r--lib/mastodon/migration_helpers.rb5
188 files changed, 1409 insertions, 986 deletions
diff --git a/Gemfile b/Gemfile
index 4c8cd2f5a..09dd1c2e2 100644
--- a/Gemfile
+++ b/Gemfile
@@ -40,7 +40,7 @@ end
 gem 'net-ldap', '~> 0.17'
 gem 'omniauth-cas', '~> 2.0'
 gem 'omniauth-saml', '~> 1.10'
-gem 'gitlab-omniauth-openid-connect', '~>0.5.0', require: 'omniauth_openid_connect'
+gem 'gitlab-omniauth-openid-connect', '~>0.9.1', require: 'omniauth_openid_connect'
 gem 'omniauth', '~> 1.9'
 gem 'omniauth-rails_csrf_protection', '~> 0.1'
 
@@ -101,9 +101,9 @@ gem 'rdf-normalize', '~> 0.5'
 gem 'redcarpet', '~> 3.5'
 
 group :development, :test do
-  gem 'fabrication', '~> 2.27'
+  gem 'fabrication', '~> 2.28'
   gem 'fuubar', '~> 2.5'
-  gem 'i18n-tasks', '~> 0.9', require: false
+  gem 'i18n-tasks', '~> 1.0', require: false
   gem 'pry-byebug', '~> 3.9'
   gem 'pry-rails', '~> 0.3'
   gem 'rspec-rails', '~> 5.1'
@@ -148,7 +148,7 @@ group :development do
 end
 
 group :production do
-  gem 'lograge', '~> 0.11'
+  gem 'lograge', '~> 0.12'
 end
 
 gem 'concurrent-ruby', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index 04572ad75..3d815cd7b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -101,6 +101,14 @@ GEM
       coderay (>= 1.0.0)
       erubi (>= 1.0.0)
       rack (>= 0.9.0)
+    better_html (1.0.16)
+      actionview (>= 4.0)
+      activesupport (>= 4.0)
+      ast (~> 2.0)
+      erubi (~> 1.4)
+      html_tokenizer (~> 0.0.6)
+      parser (>= 2.4)
+      smart_properties
     bindata (2.4.10)
     binding_of_caller (1.0.0)
       debug_inspector (>= 0.0.1)
@@ -211,7 +219,7 @@ GEM
     et-orbi (1.2.6)
       tzinfo
     excon (0.76.0)
-    fabrication (2.27.0)
+    fabrication (2.28.0)
     faker (2.20.0)
       i18n (>= 1.8.11, < 2)
     faraday (1.9.3)
@@ -262,7 +270,7 @@ GEM
     fuubar (2.5.1)
       rspec-core (~> 3.0)
       ruby-progressbar (~> 1.4)
-    gitlab-omniauth-openid-connect (0.5.0)
+    gitlab-omniauth-openid-connect (0.9.1)
       addressable (~> 2.7)
       omniauth (~> 1.9)
       openid_connect (~> 1.2)
@@ -278,12 +286,13 @@ GEM
       hamlit (>= 1.2.0)
       railties (>= 4.0.1)
     hashdiff (1.0.1)
-    hashie (4.1.0)
+    hashie (5.0.0)
     hcaptcha (7.1.0)
       json
     highline (2.0.3)
     hiredis (0.6.3)
     hkdf (0.3.0)
+    html_tokenizer (0.0.7)
     htmlentities (4.3.4)
     http (5.0.4)
       addressable (~> 2.8)
@@ -300,9 +309,10 @@ GEM
       rainbow (>= 2.0.0)
     i18n (1.10.0)
       concurrent-ruby (~> 1.0)
-    i18n-tasks (0.9.37)
+    i18n-tasks (1.0.8)
       activesupport (>= 4.0.2)
       ast (>= 2.1.0)
+      better_html (~> 1.0)
       erubi
       highline (>= 2.0.0)
       i18n
@@ -362,12 +372,12 @@ GEM
     llhttp-ffi (0.4.0)
       ffi-compiler (~> 1.0)
       rake (~> 13.0)
-    lograge (0.11.2)
+    lograge (0.12.0)
       actionpack (>= 4)
       activesupport (>= 4)
       railties (>= 4)
       request_store (~> 1.0)
-    loofah (2.15.0)
+    loofah (2.16.0)
       crass (~> 1.0.2)
       nokogiri (>= 1.5.9)
     mail (2.7.1)
@@ -419,7 +429,7 @@ GEM
     omniauth-saml (1.10.3)
       omniauth (~> 1.3, >= 1.3.2)
       ruby-saml (~> 1.9)
-    openid_connect (1.2.0)
+    openid_connect (1.3.0)
       activemodel
       attr_required (>= 1.0.0)
       json-jwt (>= 1.5.0)
@@ -472,7 +482,7 @@ GEM
       rack (>= 1.0, < 3)
     rack-cors (1.1.1)
       rack (>= 2.0.0)
-    rack-oauth2 (1.16.0)
+    rack-oauth2 (1.19.0)
       activesupport
       attr_required
       httpclient
@@ -528,7 +538,7 @@ GEM
     redis-namespace (1.8.2)
       redis (>= 3.0.4)
     regexp_parser (2.2.1)
-    request_store (1.5.0)
+    request_store (1.5.1)
       rack (>= 1.4)
     responders (3.0.1)
       actionpack (>= 5.0)
@@ -623,6 +633,7 @@ GEM
       simplecov_json_formatter (~> 0.1)
     simplecov-html (0.12.3)
     simplecov_json_formatter (0.1.2)
+    smart_properties (1.17.0)
     sprockets (3.7.2)
       concurrent-ruby (~> 1.0)
       rack (> 1, < 3)
@@ -638,7 +649,7 @@ GEM
     stoplight (2.2.1)
     strong_migrations (0.7.9)
       activerecord (>= 5)
-    swd (1.2.0)
+    swd (1.3.0)
       activesupport (>= 3)
       attr_required (>= 0.0.5)
       httpclient (>= 2.4)
@@ -694,7 +705,7 @@ GEM
       safety_net_attestation (~> 0.4.0)
       securecompare (~> 1.0)
       tpm-key_attestation (~> 0.9.0)
-    webfinger (1.1.0)
+    webfinger (1.2.0)
       activesupport
       httpclient (>= 2.4)
     webmock (3.14.0)
@@ -753,14 +764,14 @@ DEPENDENCIES
   doorkeeper (~> 5.5)
   dotenv-rails (~> 2.7)
   ed25519 (~> 1.3)
-  fabrication (~> 2.27)
+  fabrication (~> 2.28)
   faker (~> 2.20)
   fast_blank (~> 1.0)
   fastimage
   fog-core (<= 2.1.0)
   fog-openstack (~> 0.3)
   fuubar (~> 2.5)
-  gitlab-omniauth-openid-connect (~> 0.5.0)
+  gitlab-omniauth-openid-connect (~> 0.9.1)
   hamlit-rails (~> 0.2)
   hcaptcha (~> 7.1)
   hiredis (~> 0.6)
@@ -768,7 +779,7 @@ DEPENDENCIES
   http (~> 5.0)
   http_accept_language (~> 2.1)
   httplog (~> 1.5.0)
-  i18n-tasks (~> 0.9)
+  i18n-tasks (~> 1.0)
   idn-ruby
   json-ld
   json-ld-preloaded (~> 3.2)
@@ -777,7 +788,7 @@ DEPENDENCIES
   letter_opener (~> 1.8)
   letter_opener_web (~> 2.0)
   link_header (~> 0.0)
-  lograge (~> 0.11)
+  lograge (~> 0.12)
   makara (~> 0.5)
   mario-redis-lock (~> 1.2)
   memory_profiler
diff --git a/app/controllers/api/v1/admin/accounts_controller.rb b/app/controllers/api/v1/admin/accounts_controller.rb
index dc9d3402f..65ed69f7b 100644
--- a/app/controllers/api/v1/admin/accounts_controller.rb
+++ b/app/controllers/api/v1/admin/accounts_controller.rb
@@ -65,8 +65,9 @@ class Api::V1::Admin::AccountsController < Api::BaseController
 
   def destroy
     authorize @account, :destroy?
+    json = render_to_body json: @account, serializer: REST::Admin::AccountSerializer
     Admin::AccountDeletionWorker.perform_async(@account.id)
-    render json: @account, serializer: REST::Admin::AccountSerializer
+    render json: json
   end
 
   def unsensitive
diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb
index 7de446ac4..b2cee3e92 100644
--- a/app/controllers/api/v1/statuses_controller.rb
+++ b/app/controllers/api/v1/statuses_controller.rb
@@ -79,10 +79,12 @@ class Api::V1::StatusesController < Api::BaseController
     authorize @status, :destroy?
 
     @status.discard
-    RemovalWorker.perform_async(@status.id, { 'redraft' => true })
     @status.account.statuses_count = @status.account.statuses_count - 1
+    json = render_to_body json: @status, serializer: REST::StatusSerializer, source_requested: true
+
+    RemovalWorker.perform_async(@status.id, { 'redraft' => true })
 
-    render json: @status, serializer: REST::StatusSerializer, source_requested: true
+    render json: json
   end
 
   private
diff --git a/app/controllers/api/v1/trends/links_controller.rb b/app/controllers/api/v1/trends/links_controller.rb
index b1cde5a4b..2385fe438 100644
--- a/app/controllers/api/v1/trends/links_controller.rb
+++ b/app/controllers/api/v1/trends/links_controller.rb
@@ -36,13 +36,17 @@ class Api::V1::Trends::LinksController < Api::BaseController
   end
 
   def next_path
-    api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT))
+    api_v1_trends_links_url pagination_params(offset: offset_param + limit_param(DEFAULT_LINKS_LIMIT)) if records_continue?
   end
 
   def prev_path
     api_v1_trends_links_url pagination_params(offset: offset_param - limit_param(DEFAULT_LINKS_LIMIT)) if offset_param > limit_param(DEFAULT_LINKS_LIMIT)
   end
 
+  def records_continue?
+    @links.size == limit_param(DEFAULT_LINKS_LIMIT)
+  end
+
   def offset_param
     params[:offset].to_i
   end
diff --git a/app/controllers/api/v1/trends/statuses_controller.rb b/app/controllers/api/v1/trends/statuses_controller.rb
index 4977803fb..1f2fff582 100644
--- a/app/controllers/api/v1/trends/statuses_controller.rb
+++ b/app/controllers/api/v1/trends/statuses_controller.rb
@@ -36,7 +36,7 @@ class Api::V1::Trends::StatusesController < Api::BaseController
   end
 
   def next_path
-    api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT))
+    api_v1_trends_statuses_url pagination_params(offset: offset_param + limit_param(DEFAULT_STATUSES_LIMIT)) if records_continue?
   end
 
   def prev_path
@@ -46,4 +46,8 @@ class Api::V1::Trends::StatusesController < Api::BaseController
   def offset_param
     params[:offset].to_i
   end
+
+  def records_continue?
+    @statuses.size == limit_param(DEFAULT_STATUSES_LIMIT)
+  end
 end
diff --git a/app/controllers/api/v1/trends/tags_controller.rb b/app/controllers/api/v1/trends/tags_controller.rb
index 329ef5ae7..38003f599 100644
--- a/app/controllers/api/v1/trends/tags_controller.rb
+++ b/app/controllers/api/v1/trends/tags_controller.rb
@@ -32,7 +32,7 @@ class Api::V1::Trends::TagsController < Api::BaseController
   end
 
   def next_path
-    api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT))
+    api_v1_trends_tags_url pagination_params(offset: offset_param + limit_param(DEFAULT_TAGS_LIMIT)) if records_continue?
   end
 
   def prev_path
@@ -42,4 +42,8 @@ class Api::V1::Trends::TagsController < Api::BaseController
   def offset_param
     params[:offset].to_i
   end
+
+  def records_continue?
+    @tags.size == limit_param(DEFAULT_TAGS_LIMIT)
+  end
 end
diff --git a/app/controllers/settings/preferences_controller.rb b/app/controllers/settings/preferences_controller.rb
index 1fddd087b..669ed00c6 100644
--- a/app/controllers/settings/preferences_controller.rb
+++ b/app/controllers/settings/preferences_controller.rb
@@ -57,7 +57,8 @@ class Settings::PreferencesController < Settings::BaseController
       :setting_use_pending_items,
       :setting_trends,
       :setting_crop_images,
-      notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag trending_link trending_status),
+      :setting_always_send_emails,
+      notification_emails: %i(follow follow_request reblog favourite mention digest report pending_account trending_tag trending_link trending_status appeal),
       interactions: %i(must_be_follower must_be_following must_be_following_dm)
     )
   end
diff --git a/app/javascript/flavours/glitch/actions/streaming.js b/app/javascript/flavours/glitch/actions/streaming.js
index 223924534..90d6a0231 100644
--- a/app/javascript/flavours/glitch/actions/streaming.js
+++ b/app/javascript/flavours/glitch/actions/streaming.js
@@ -7,6 +7,10 @@ import {
   expandHomeTimeline,
   connectTimeline,
   disconnectTimeline,
+  fillHomeTimelineGaps,
+  fillPublicTimelineGaps,
+  fillCommunityTimelineGaps,
+  fillListTimelineGaps,
 } from './timelines';
 import { updateNotifications, expandNotifications } from './notifications';
 import { updateConversations } from './conversations';
@@ -35,6 +39,7 @@ const randomUpTo = max =>
  * @param {Object.<string, string>} params
  * @param {Object} options
  * @param {function(Function, Function): void} [options.fallback]
+ * @param {function(): void} [options.fillGaps]
  * @param {function(object): boolean} [options.accept]
  * @return {function(): void}
  */
@@ -61,6 +66,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti
           clearTimeout(pollingId);
           pollingId = null;
         }
+
+        if (options.fillGaps) {
+          dispatch(options.fillGaps());
+        }
       },
 
       onDisconnect() {
@@ -119,7 +128,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
  * @return {function(): void}
  */
 export const connectUserStream = () =>
-  connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification });
+  connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps });
 
 /**
  * @param {Object} options
@@ -127,7 +136,7 @@ export const connectUserStream = () =>
  * @return {function(): void}
  */
 export const connectCommunityStream = ({ onlyMedia } = {}) =>
-  connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
+  connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
 
 /**
  * @param {Object} options
@@ -137,7 +146,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
  * @return {function(): void}
  */
 export const connectPublicStream = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}) =>
-  connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`);
+  connectTimelineStream(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote, allowLocalOnly }) });
 
 /**
  * @param {string} columnId
@@ -160,4 +169,4 @@ export const connectDirectStream = () =>
  * @return {function(): void}
  */
 export const connectListStream = listId =>
-  connectTimelineStream(`list:${listId}`, 'list', { list: listId });
+  connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
diff --git a/app/javascript/flavours/glitch/actions/timelines.js b/app/javascript/flavours/glitch/actions/timelines.js
index 24cc0d63f..0b36d8ac3 100644
--- a/app/javascript/flavours/glitch/actions/timelines.js
+++ b/app/javascript/flavours/glitch/actions/timelines.js
@@ -138,6 +138,22 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) {
   };
 };
 
+export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) {
+  return (dispatch, getState) => {
+    const timeline = getState().getIn(['timelines', timelineId], ImmutableMap());
+    const items = timeline.get('items');
+    const nullIndexes = items.map((statusId, index) => statusId === null ? index : null);
+    const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null);
+
+    // Only expand at most two gaps to avoid doing too many requests
+    done = gaps.take(2).reduce((done, maxId) => {
+      return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done)));
+    }, done);
+
+    done();
+  };
+}
+
 export const expandHomeTimeline            = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done);
 export const expandPublicTimeline          = ({ maxId, onlyMedia, onlyRemote, allowLocalOnly } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, allow_local_only: !!allowLocalOnly, max_id: maxId, only_media: !!onlyMedia }, done);
 export const expandCommunityTimeline       = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done);
@@ -156,6 +172,11 @@ export const expandHashtagTimeline         = (hashtag, { maxId, tags, local } =
   }, done);
 };
 
+export const fillHomeTimelineGaps      = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done);
+export const fillPublicTimelineGaps    = ({ onlyMedia, onlyRemote, allowLocalOnly } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : (allowLocalOnly ? ':allow_local_only' : '')}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia, allow_local_only: !!allowLocalOnly }, done);
+export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done);
+export const fillListTimelineGaps      = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done);
+
 export function expandTimelineRequest(timeline, isLoadingMore) {
   return {
     type: TIMELINE_EXPAND_REQUEST,
@@ -199,6 +220,7 @@ export function connectTimeline(timeline) {
   return {
     type: TIMELINE_CONNECT,
     timeline,
+    usePendingItems: preferPendingItems,
   };
 };
 
diff --git a/app/javascript/flavours/glitch/reducers/timelines.js b/app/javascript/flavours/glitch/reducers/timelines.js
index 29e02a864..afd9d12cb 100644
--- a/app/javascript/flavours/glitch/reducers/timelines.js
+++ b/app/javascript/flavours/glitch/reducers/timelines.js
@@ -177,6 +177,17 @@ const updateTop = (state, timeline, top) => {
   }));
 };
 
+const reconnectTimeline = (state, usePendingItems) => {
+  if (state.get('online')) {
+    return state;
+  }
+
+  return state.withMutations(mMap => {
+    mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items);
+    mMap.set('online', true);
+  });
+};
+
 export default function timelines(state = initialState, action) {
   switch(action.type) {
   case TIMELINE_LOAD_PENDING:
@@ -202,7 +213,7 @@ export default function timelines(state = initialState, action) {
   case TIMELINE_SCROLL_TOP:
     return updateTop(state, action.timeline, action.top);
   case TIMELINE_CONNECT:
-    return state.update(action.timeline, initialTimeline, map => map.set('online', true));
+    return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems));
   case TIMELINE_DISCONNECT:
     return state.update(
       action.timeline,
diff --git a/app/javascript/mastodon/actions/streaming.js b/app/javascript/mastodon/actions/streaming.js
index 8fbb22271..d76f045c8 100644
--- a/app/javascript/mastodon/actions/streaming.js
+++ b/app/javascript/mastodon/actions/streaming.js
@@ -7,6 +7,10 @@ import {
   expandHomeTimeline,
   connectTimeline,
   disconnectTimeline,
+  fillHomeTimelineGaps,
+  fillPublicTimelineGaps,
+  fillCommunityTimelineGaps,
+  fillListTimelineGaps,
 } from './timelines';
 import { updateNotifications, expandNotifications } from './notifications';
 import { updateConversations } from './conversations';
@@ -35,6 +39,7 @@ const randomUpTo = max =>
  * @param {Object.<string, string>} params
  * @param {Object} options
  * @param {function(Function, Function): void} [options.fallback]
+ * @param {function(): void} [options.fillGaps]
  * @param {function(object): boolean} [options.accept]
  * @return {function(): void}
  */
@@ -61,6 +66,10 @@ export const connectTimelineStream = (timelineId, channelName, params = {}, opti
           clearTimeout(pollingId);
           pollingId = null;
         }
+
+        if (options.fillGaps) {
+          dispatch(options.fillGaps());
+        }
       },
 
       onDisconnect() {
@@ -119,7 +128,7 @@ const refreshHomeTimelineAndNotification = (dispatch, done) => {
  * @return {function(): void}
  */
 export const connectUserStream = () =>
-  connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification });
+  connectTimelineStream('home', 'user', {}, { fallback: refreshHomeTimelineAndNotification, fillGaps: fillHomeTimelineGaps });
 
 /**
  * @param {Object} options
@@ -127,7 +136,7 @@ export const connectUserStream = () =>
  * @return {function(): void}
  */
 export const connectCommunityStream = ({ onlyMedia } = {}) =>
-  connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`);
+  connectTimelineStream(`community${onlyMedia ? ':media' : ''}`, `public:local${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => (fillCommunityTimelineGaps({ onlyMedia })) });
 
 /**
  * @param {Object} options
@@ -136,7 +145,7 @@ export const connectCommunityStream = ({ onlyMedia } = {}) =>
  * @return {function(): void}
  */
 export const connectPublicStream = ({ onlyMedia, onlyRemote } = {}) =>
-  connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`);
+  connectTimelineStream(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, `public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, {}, { fillGaps: () => fillPublicTimelineGaps({ onlyMedia, onlyRemote }) });
 
 /**
  * @param {string} columnId
@@ -159,4 +168,4 @@ export const connectDirectStream = () =>
  * @return {function(): void}
  */
 export const connectListStream = listId =>
-  connectTimelineStream(`list:${listId}`, 'list', { list: listId });
+  connectTimelineStream(`list:${listId}`, 'list', { list: listId }, { fillGaps: () => fillListTimelineGaps(listId) });
diff --git a/app/javascript/mastodon/actions/timelines.js b/app/javascript/mastodon/actions/timelines.js
index 31ae09e4a..44fedd5c2 100644
--- a/app/javascript/mastodon/actions/timelines.js
+++ b/app/javascript/mastodon/actions/timelines.js
@@ -124,6 +124,22 @@ export function expandTimeline(timelineId, path, params = {}, done = noOp) {
   };
 };
 
+export function fillTimelineGaps(timelineId, path, params = {}, done = noOp) {
+  return (dispatch, getState) => {
+    const timeline = getState().getIn(['timelines', timelineId], ImmutableMap());
+    const items = timeline.get('items');
+    const nullIndexes = items.map((statusId, index) => statusId === null ? index : null);
+    const gaps = nullIndexes.map(index => index > 0 ? items.get(index - 1) : null);
+
+    // Only expand at most two gaps to avoid doing too many requests
+    done = gaps.take(2).reduce((done, maxId) => {
+      return (() => dispatch(expandTimeline(timelineId, path, { ...params, maxId }, done)));
+    }, done);
+
+    done();
+  };
+}
+
 export const expandHomeTimeline            = ({ maxId } = {}, done = noOp) => expandTimeline('home', '/api/v1/timelines/home', { max_id: maxId }, done);
 export const expandPublicTimeline          = ({ maxId, onlyMedia, onlyRemote } = {}, done = noOp) => expandTimeline(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, max_id: maxId, only_media: !!onlyMedia }, done);
 export const expandCommunityTimeline       = ({ maxId, onlyMedia } = {}, done = noOp) => expandTimeline(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, max_id: maxId, only_media: !!onlyMedia }, done);
@@ -141,6 +157,11 @@ export const expandHashtagTimeline         = (hashtag, { maxId, tags, local } =
   }, done);
 };
 
+export const fillHomeTimelineGaps      = (done = noOp) => fillTimelineGaps('home', '/api/v1/timelines/home', {}, done);
+export const fillPublicTimelineGaps    = ({ onlyMedia, onlyRemote } = {}, done = noOp) => fillTimelineGaps(`public${onlyRemote ? ':remote' : ''}${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { remote: !!onlyRemote, only_media: !!onlyMedia }, done);
+export const fillCommunityTimelineGaps = ({ onlyMedia } = {}, done = noOp) => fillTimelineGaps(`community${onlyMedia ? ':media' : ''}`, '/api/v1/timelines/public', { local: true, only_media: !!onlyMedia }, done);
+export const fillListTimelineGaps      = (id, done = noOp) => fillTimelineGaps(`list:${id}`, `/api/v1/timelines/list/${id}`, {}, done);
+
 export function expandTimelineRequest(timeline, isLoadingMore) {
   return {
     type: TIMELINE_EXPAND_REQUEST,
@@ -184,6 +205,7 @@ export function connectTimeline(timeline) {
   return {
     type: TIMELINE_CONNECT,
     timeline,
+    usePendingItems: preferPendingItems,
   };
 };
 
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 088b5ff36..4373287dd 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 6580f5d44..b1e6483c7 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -2,8 +2,8 @@
   "account.account_note_header": "مُلاحظة",
   "account.add_or_remove_from_list": "الإضافة أو الإزالة من القائمة",
   "account.badges.bot": "روبوت",
-  "account.badges.group": "مجموعة",
-  "account.block": "حظر @{name}",
+  "account.badges.group": "فريق",
+  "account.block": "احجب @{name}",
   "account.block_domain": "حظر اسم النِّطاق {domain}",
   "account.blocked": "محظور",
   "account.browse_more_on_origin_server": "تصفح المزيد في الملف الشخصي الأصلي",
@@ -11,14 +11,14 @@
   "account.direct": "مراسلة @{name} بشكل مباشر",
   "account.disable_notifications": "توقف عن إشعاري عندما ينشر @{name}",
   "account.domain_blocked": "اسم النِّطاق محظور",
-  "account.edit_profile": "تحرير الملف الشخصي",
+  "account.edit_profile": "تعديل الملف الشخصي",
   "account.enable_notifications": "أشعرني عندما ينشر @{name}",
   "account.endorse": "أوصِ به على صفحتك الشخصية",
-  "account.follow": "المُتابعة",
-  "account.followers": "المُتابِعون",
-  "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم حتى الآن.",
+  "account.follow": "متابعة",
+  "account.followers": "مُتابِعون",
+  "account.followers.empty": "لا أحدَ يُتابع هذا المُستخدم إلى حد الآن.",
   "account.followers_counter": "{count, plural, zero{لا مُتابع} one {مُتابعٌ واحِد} two{مُتابعانِ اِثنان} few{{counter} مُتابِعين} many{{counter}  مُتابِعًا} other {{counter}  مُتابع}}",
-  "account.following": "Following",
+  "account.following": "الإشتراكات",
   "account.following_counter": "{count, plural, zero{لا يُتابِع} one {يُتابِعُ واحد} two{يُتابِعُ اِثنان} few{يُتابِعُ {counter}} many{يُتابِعُ {counter}} other {يُتابِعُ {counter}}}",
   "account.follows.empty": "لا يُتابع هذا المُستخدمُ أيَّ أحدٍ حتى الآن.",
   "account.follows_you": "يُتابِعُك",
@@ -35,18 +35,18 @@
   "account.posts": "منشورات",
   "account.posts_with_replies": "المنشورات والرُدود",
   "account.report": "الإبلاغ عن @{name}",
-  "account.requested": "في اِنتظر القُبول. اِنقُر لإلغاء طلب المُتابعة",
+  "account.requested": "في انتظار القبول. اضغط لإلغاء طلب المُتابعة",
   "account.share": "مُشاركة الملف الشخصي لـ @{name}",
   "account.show_reblogs": "عرض مشاركات @{name}",
-  "account.statuses_counter": "{count, plural, zero {لَا تَبويقات} one {تَبويقةٌ واحدة} two {تَبويقَتانِ اِثنتان} few {{counter} تَبويقات} many {{counter} تَبويقتًا} other {{counter} تَبويقة}}",
+  "account.statuses_counter": "{count, plural, zero {لَا منشورات} one {منشور واحد} two {منشوران إثنان} few {{counter} منشورات} many {{counter} منشورًا} other {{counter} منشور}}",
   "account.unblock": "إلغاء الحَظر عن @{name}",
   "account.unblock_domain": "إلغاء الحَظر عن النِّطاق {domain}",
-  "account.unblock_short": "Unblock",
+  "account.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",
@@ -78,7 +78,7 @@
   "column.home": "الرئيسية",
   "column.lists": "القوائم",
   "column.mutes": "المُستَخدِمون المَكتومون",
-  "column.notifications": "الإشعارَات",
+  "column.notifications": "الإشعارات",
   "column.pins": "المنشورات المُثَبَّتَة",
   "column.public": "الخَطُّ الزَّمَنِيُّ المُوَحَّد",
   "column_back_button.label": "العودة",
@@ -294,7 +294,7 @@
   "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": "طلبات المتابعة",
@@ -315,7 +315,7 @@
   "notification.follow_request": "لقد طلب {name} متابعتك",
   "notification.mention": "{name} ذكرك",
   "notification.own_poll": "انتهى استطلاعك للرأي",
-  "notification.poll": "لقد إنتها تصويت شاركت فيه",
+  "notification.poll": "لقد انتهى استطلاع رأي شاركتَ فيه",
   "notification.reblog": "قام {name} بمشاركة منشورك",
   "notification.status": "{name} نشر للتو",
   "notification.update": "{name} edited a post",
@@ -410,7 +410,7 @@
   "report.reasons.dislike_description": "ألا ترغب برؤيته",
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
+  "report.reasons.spam": "إنها رسالة مزعجة",
   "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "ينتهك قواعد الخادم",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
@@ -470,7 +470,7 @@
   "status.read_more": "اقرأ المزيد",
   "status.reblog": "رَقِّي",
   "status.reblog_private": "القيام بالترقية إلى الجمهور الأصلي",
-  "status.reblogged_by": "رقّاه {name}",
+  "status.reblogged_by": "شارَكَه {name}",
   "status.reblogs.empty": "لم يقم أي أحد بمشاركة هذا المنشور بعد. عندما يقوم أحدهم بذلك سوف يظهر هنا.",
   "status.redraft": "إزالة و إعادة الصياغة",
   "status.remove_bookmark": "احذفه مِن الفواصل المرجعية",
@@ -515,6 +515,7 @@
   "upload_error.poll": "لا يمكن إدراج ملفات في استطلاعات الرأي.",
   "upload_form.audio_description": "وصف للأشخاص ذي قِصر السمع",
   "upload_form.description": "وصف للمعاقين بصريا",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "تعديل",
   "upload_form.thumbnail": "غيّر الصورة المصغرة",
   "upload_form.undo": "حذف",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 14e46e458..fe5c1e569 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "La xuba de ficheros nun ta permitida con encuestes.",
   "upload_form.audio_description": "Descripción pa persones con perda auditiva",
   "upload_form.description": "Descripción pa discapacitaos visuales",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Desaniciar",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index e65681394..3efde0381 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Качването на файлове не е позволено с анкети.",
   "upload_form.audio_description": "Опишете за хора със загуба на слуха",
   "upload_form.description": "Опишете за хора със зрителни увреждания",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Редакция",
   "upload_form.thumbnail": "Промяна на миниизображението",
   "upload_form.undo": "Отмяна",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 3542c4e46..75e0fbb77 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "নির্বাচনক্ষেত্রে কোনো ফাইল যুক্ত করা যাবেনা।",
   "upload_form.audio_description": "শ্রবণশক্তি লোকদের জন্য বর্ণনা করুন",
   "upload_form.description": "যারা দেখতে পায়না তাদের জন্য এটা বর্ণনা করতে",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "সম্পাদন",
   "upload_form.thumbnail": "থাম্বনেল পরিবর্তন করুন",
   "upload_form.undo": "মুছে ফেলতে",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 51b78f777..8b86cd62a 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -187,12 +187,12 @@
   "error.unexpected_crash.next_steps_addons": "Klaskit azbevaat ar bajenn. Ma n'ez a ket en-dro e c'hallit klask ober gant Mastodon dre ur merdeer disheñvel pe dre an arload genidik.",
   "errors.unexpected_crash.copy_stacktrace": "Eilañ ar roudoù diveugañ er golver",
   "errors.unexpected_crash.report_issue": "Danevellañ ur fazi",
-  "explore.search_results": "Search results",
+  "explore.search_results": "Disoc'hoù an enklask",
   "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
+  "explore.title": "Ergerzhit",
   "explore.trending_links": "News",
   "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_tags": "Gerioù-klik",
   "follow_recommendations.done": "Graet",
   "follow_recommendations.heading": "Heuliit tud e plijfe deoc'h lenn toudoù! Setu un tamm alioù.",
   "follow_recommendations.lead": "Toudoù eus tud heuliet ganeoc'h a zeuio war wel en un urzh amzeroniezhel war ho red degemer. N'ho peus ket aon ober fazioù, gallout a rit paouez heuliañ tud ken aes n'eus forzh pegoulz!",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Pellgargañ restroù n'eo ket aotreet gant sontadegoù.",
   "upload_form.audio_description": "Diskrivañ evit tud a zo kollet o c'hlev",
   "upload_form.description": "Diskrivañ evit tud a zo kollet o gweled",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Aozañ",
   "upload_form.thumbnail": "Kemmañ ar velvenn",
   "upload_form.undo": "Dilemel",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 055732cfd..79ec113c2 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "No es permet l'enviament de fitxers en les enquestes.",
   "upload_form.audio_description": "Descriviu per a les persones amb pèrdua auditiva",
   "upload_form.description": "Descriure per els que tenen problemes visuals",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edita",
   "upload_form.thumbnail": "Canvia la miniatura",
   "upload_form.undo": "Esborra",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index 7209633ad..09058276f 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "پەڕگەکە ڕێی پێنەدراوە بە ڕاپرسی باربکرێت.",
   "upload_form.audio_description": "بۆ ئەو کەسانەی کە گوێ بیستیان هەیە وەسف دەکات",
   "upload_form.description": "وەسف بکە بۆ کەمبینایان",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "دەستکاری",
   "upload_form.thumbnail": "گۆڕانی وینۆچکە",
   "upload_form.undo": "سڕینەوە",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 21240bc3b..453aa9653 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Ùn si pò micca caricà fugliali cù i scandagli.",
   "upload_form.audio_description": "Discrizzione per i ciochi",
   "upload_form.description": "Discrizzione per i malvistosi",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Mudificà",
   "upload_form.thumbnail": "Cambià vignetta",
   "upload_form.undo": "Sguassà",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index c6ffaa6f2..1f1c2740c 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -5,7 +5,7 @@
   "account.badges.group": "Skupina",
   "account.block": "Zablokovat @{name}",
   "account.block_domain": "Blokovat doménu {domain}",
-  "account.blocked": "Blokováno",
+  "account.blocked": "Blokován",
   "account.browse_more_on_origin_server": "Více na původním profilu",
   "account.cancel_follow_request": "Zrušit žádost o sledování",
   "account.direct": "Poslat @{name} přímou zprávu",
@@ -18,7 +18,7 @@
   "account.followers": "Sledující",
   "account.followers.empty": "Tohoto uživatele ještě nikdo nesleduje.",
   "account.followers_counter": "{count, plural, one {{counter} Sledující} few {{counter} Sledující} many {{counter} Sledujících} other {{counter} Sledujících}}",
-  "account.following": "Following",
+  "account.following": "Sledujete",
   "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}",
   "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.",
   "account.follows_you": "Sleduje vás",
@@ -41,15 +41,15 @@
   "account.statuses_counter": "{count, plural, one {{counter} Příspěvek} few {{counter} Příspěvky} many {{counter} Příspěvků} other {{counter} Příspěvků}}",
   "account.unblock": "Odblokovat @{name}",
   "account.unblock_domain": "Odblokovat doménu {domain}",
-  "account.unblock_short": "Unblock",
+  "account.unblock_short": "Odblokovat",
   "account.unendorse": "Nezvýrazňovat na profilu",
   "account.unfollow": "Přestat sledovat",
-  "account.unmute": "Zrušit skrytí @{name}",
-  "account.unmute_notifications": "Zrušit skrytí oznámení od @{name}",
-  "account.unmute_short": "Unmute",
+  "account.unmute": "Odkrýt @{name}",
+  "account.unmute_notifications": "Odkrýt oznámení od @{name}",
+  "account.unmute_short": "Odkrýt",
   "account_note.placeholder": "Klikněte pro přidání poznámky",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
+  "admin.dashboard.daily_retention": "Míra udržení uživatelů podle dne po registraci",
+  "admin.dashboard.monthly_retention": "Míra udržení uživatelů podle měsíce po registraci",
   "admin.dashboard.retention.average": "Průměr",
   "admin.dashboard.retention.cohort": "Měsíc registrace",
   "admin.dashboard.retention.cohort_size": "Noví uživatelé",
@@ -106,7 +106,7 @@
   "compose_form.poll.switch_to_single": "Povolit u ankety výběr jediné možnosti",
   "compose_form.publish": "Odeslat",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "Uložit změny",
   "compose_form.sensitive.hide": "{count, plural, one {Označit média za citlivá} few {Označit média za citlivá} many {Označit média za citlivá} other {Označit média za citlivá}}",
   "compose_form.sensitive.marked": "{count, plural, one {Média jsou označena za citlivá} few {Média jsou označena za citlivá} many {Média jsou označena za citlivá} other {Média jsou označena za citlivá}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Média nejsou označena za citlivá} few {Média nejsou označena za citlivá} many {Média nejsou označena za citlivá} other {Média nejsou označena za citlivá}}",
@@ -168,7 +168,7 @@
   "empty_column.community": "Místní časová osa je prázdná. Napište něco veřejně a rozhýbejte to tu!",
   "empty_column.direct": "Ještě nemáte žádné přímé zprávy. Pokud nějakou pošlete nebo dostanete, zobrazí se zde.",
   "empty_column.domain_blocks": "Ještě nemáte žádné blokované domény.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Momentálně není nic populární. Vraťte se později!",
   "empty_column.favourited_statuses": "Ještě nemáte žádné oblíbené příspěvky. Pokud si nějaký oblíbíte, zobrazí se zde.",
   "empty_column.favourites": "Tento příspěvek si ještě nikdo neoblíbil. Pokud to někdo udělá, zobrazí se zde.",
   "empty_column.follow_recommendations": "Zdá se, že pro vás nelze vygenerovat žádné návrhy. Můžete zkusit přes vyhledávání naleznout lidi, které znáte, nebo prozkoumat populární hashtagy.",
@@ -187,18 +187,18 @@
   "error.unexpected_crash.next_steps_addons": "Zkuste je vypnout a stránku obnovit. Pokud to nepomůže, zkuste otevřít Mastodon v jiném prohlížeči nebo nativní aplikaci.",
   "errors.unexpected_crash.copy_stacktrace": "Zkopírovat stacktrace do schránky",
   "errors.unexpected_crash.report_issue": "Nahlásit problém",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "explore.search_results": "Výsledky hledání",
+  "explore.suggested_follows": "Pro vás",
+  "explore.title": "Objevování",
+  "explore.trending_links": "Zprávy",
+  "explore.trending_statuses": "Příspěvky",
+  "explore.trending_tags": "Hashtagy",
   "follow_recommendations.done": "Hotovo",
   "follow_recommendations.heading": "Sledujte lidi, jejichž příspěvky chcete vidět! Tady jsou nějaké návrhy.",
   "follow_recommendations.lead": "Příspěvky od lidí, které sledujete, se budou objevovat v chronologickém pořadí ve vaší domovské ose. Nebojte se, že uděláte chybu, můžete lidi stejně snadno kdykoliv přestat sledovat!",
   "follow_request.authorize": "Autorizovat",
   "follow_request.reject": "Odmítnout",
-  "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, {domain} si myslí, že budete chtít následující požadavky na sledování zkontrolovat ručně.",
+  "follow_requests.unlocked_explanation": "Přestože váš účet není uzamčen, personál {domain} usoudil, že byste mohli chtít tyto požadavky na sledování zkontrolovat ručně.",
   "generic.saved": "Uloženo",
   "getting_started.developers": "Vývojáři",
   "getting_started.directory": "Adresář profilů",
@@ -309,7 +309,7 @@
   "navigation_bar.preferences": "Předvolby",
   "navigation_bar.public_timeline": "Federovaná časová osa",
   "navigation_bar.security": "Zabezpečení",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.sign_up": "Uživatel {name} se zaregistroval",
   "notification.favourite": "Uživatel {name} si oblíbil váš příspěvek",
   "notification.follow": "Uživatel {name} vás začal sledovat",
   "notification.follow_request": "Uživatel {name} požádal o povolení vás sledovat",
@@ -318,10 +318,10 @@
   "notification.poll": "Anketa, ve které jste hlasovali, skončila",
   "notification.reblog": "Uživatel {name} boostnul váš příspěvek",
   "notification.status": "Nový příspěvek od {name}",
-  "notification.update": "uživatel {name} upravil příspěvek",
-  "notifications.clear": "Smazat oznámení",
+  "notification.update": "Uživatel {name} upravil příspěvek",
+  "notifications.clear": "Vymazat oznámení",
   "notifications.clear_confirmation": "Opravdu chcete trvale smazat všechna vaše oznámení?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Nové registrace:",
   "notifications.column_settings.alert": "Oznámení na počítači",
   "notifications.column_settings.favourite": "Oblíbení:",
   "notifications.column_settings.filter_bar.advanced": "Zobrazit všechny kategorie",
@@ -378,32 +378,32 @@
   "regeneration_indicator.label": "Načítání…",
   "regeneration_indicator.sublabel": "Váš domovský kanál se připravuje!",
   "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.days": "před {number, plural, one {# dnem} few {# dny} many {# dny} other {# dny}}",
+  "relative_time.full.hours": "před {number, plural, one {# hodinou} few {# hodinami} many {# hodinami} other {# hodinami}}",
   "relative_time.full.just_now": "právě teď",
-  "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.minutes": "před {number, plural, one {# minutou} few {# minutami} many {# minutami} other {# minutami}}",
+  "relative_time.full.seconds": "před {number, plural, one {# sekundou} few {# sekundami} many {# sekundami} other {# sekundami}}",
   "relative_time.hours": "{number} h",
   "relative_time.just_now": "teď",
   "relative_time.minutes": "{number} m",
   "relative_time.seconds": "{number} s",
   "relative_time.today": "dnes",
   "reply_indicator.cancel": "Zrušit",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block": "Zablokovat",
+  "report.block_explanation": "Neuvidíte jejich příspěvky. Oni neuvidí vaše příspěvky ani vás nebudou moci sledovat. Poznají, že jsou blokováni.",
   "report.categories.other": "Ostatní",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Obsah porušuje jedno nebo více pravidel serveru",
   "report.category.subtitle": "Vyberte nejbližší možnost",
   "report.category.title": "Povězte nám, proč chcete {type} nahlásit",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.category.title_account": "profil",
+  "report.category.title_status": "příspěvek",
+  "report.close": "Hotovo",
+  "report.comment.title": "Ještě něco jiného, co myslíte, že bychom měli vědět?",
   "report.forward": "Přeposlat na {target}",
   "report.forward_hint": "Tento účet je z jiného serveru. Chcete na něj také poslat anonymizovanou kopii hlášení?",
-  "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.mute": "Skrýt",
+  "report.mute_explanation": "Neuvidíte jejich příspěvky. Oni vás mohou nadále sledovat i vidět vaše příspěvky a nebudou vědět, že jsou skryti.",
   "report.next": "Dále",
   "report.placeholder": "Dodatečné komentáře",
   "report.reasons.dislike": "Nelíbí se mi",
@@ -420,12 +420,12 @@
   "report.statuses.title": "Existují příspěvky dokládající toto hlášení?",
   "report.submit": "Odeslat",
   "report.target": "Nahlášení uživatele {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "Tady jsou vaše možnosti pro řízení toho, co na Mastodonu vidíte:",
+  "report.thanks.take_action_actionable": "Zatímco to posuzujeme, můžete podniknout kroky proti @{name}:",
+  "report.thanks.title": "Nechcete tohle vidět?",
+  "report.thanks.title_actionable": "Děkujeme za nahlášení, podíváme se na to.",
+  "report.unfollow": "Přestat sledovat @{name}",
+  "report.unfollow_explanation": "Tento účet sledujete. Abyste už neviděli jejich příspěvky ve své domácí časové ose, přestaňte je sledovat.",
   "search.placeholder": "Hledat",
   "search_popout.search_format": "Pokročilé hledání",
   "search_popout.tips.full_text": "Jednoduchý text vrací příspěvky, které jste napsali, oblíbili si, boostnuli, nebo vás v nich někdo zmínil, a také odpovídající přezdívky, zobrazovaná jména a hashtagy.",
@@ -434,9 +434,9 @@
   "search_popout.tips.text": "Jednoduchý text vrací odpovídající zobrazovaná jména, přezdívky a hashtagy",
   "search_popout.tips.user": "uživatel",
   "search_results.accounts": "Lidé",
-  "search_results.all": "All",
+  "search_results.all": "Vše",
   "search_results.hashtags": "Hashtagy",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Pro tyto hledané výrazy nebylo nic nenalezeno",
   "search_results.statuses": "Příspěvky",
   "search_results.statuses_fts_disabled": "Vyhledávání příspěvků podle jejich obsahu není na tomto Mastodon serveru povoleno.",
   "search_results.total": "{count, number} {count, plural, one {výsledek} few {výsledky} many {výsledků} other {výsledků}}",
@@ -450,14 +450,14 @@
   "status.delete": "Smazat",
   "status.detailed_status": "Podrobné zobrazení konverzace",
   "status.direct": "Poslat @{name} přímou zprávu",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.edit": "Upravit",
+  "status.edited": "Upraven {date}",
+  "status.edited_x_times": "Upraven {count, plural, one {{count}krát} few {{count}krát} many {{count}krát} other {{count}krát}}",
   "status.embed": "Vložit na web",
   "status.favourite": "Oblíbit",
   "status.filtered": "Filtrováno",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.history.created": "Uživatel {name} vytvořil {date}",
+  "status.history.edited": "Uživatel {name} upravil {date}",
   "status.load_more": "Zobrazit více",
   "status.media_hidden": "Média skryta",
   "status.mention": "Zmínit @{name}",
@@ -501,7 +501,7 @@
   "time_remaining.seconds": "{number, plural, one {Zbývá # sekunda} few {Zbývají # sekundy} many {Zbývá # sekund} other {Zbývá # sekund}}",
   "timeline_hint.remote_resource_not_displayed": "{resource} z jiných serveru se nezobrazuje.",
   "timeline_hint.resources.followers": "Sledující",
-  "timeline_hint.resources.follows": "Sleduje",
+  "timeline_hint.resources.follows": "Sledovaní",
   "timeline_hint.resources.statuses": "Starší příspěvky",
   "trends.counter_by_accounts": "zmiňuje {count, plural, one {{counter} člověk} few {{counter} lidé} many {{counter} lidí} other {{counter} lidí}}",
   "trends.trending_now": "Právě populární",
@@ -515,6 +515,7 @@
   "upload_error.poll": "U anket není nahrávání souborů povoleno.",
   "upload_form.audio_description": "Popis pro sluchově postižené",
   "upload_form.description": "Popis pro zrakově postižené",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Upravit",
   "upload_form.thumbnail": "Změnit miniaturu",
   "upload_form.undo": "Smazat",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index d3ac8d806..b220db1c5 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Nid oes modd uwchlwytho ffeiliau â phleidleisiau.",
   "upload_form.audio_description": "Disgrifio ar gyfer pobl sydd â cholled clyw",
   "upload_form.description": "Disgrifio i'r rheini a nam ar ei golwg",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Golygu",
   "upload_form.thumbnail": "Newid mân-lun",
   "upload_form.undo": "Dileu",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 12023bfb0..d029e6244 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -506,15 +506,16 @@
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} personer}} taler",
   "trends.trending_now": "Hot lige nu",
   "ui.beforeunload": "Dit udkast går tabt, hvis du lukker Mastodon.",
-  "units.short.billion": "{count} MIA",
-  "units.short.million": "{count} M",
-  "units.short.thousand": "{count} K",
+  "units.short.billion": "{count} mia.",
+  "units.short.million": "{count} mio.",
+  "units.short.thousand": "{count} tusind",
   "upload_area.title": "Træk og slip for at uploade",
   "upload_button.label": "Tilføj billed-, video- eller lydfil(er)",
   "upload_error.limit": "Grænse for filupload nået.",
   "upload_error.poll": "Filupload ikke tilladt for afstemninger.",
   "upload_form.audio_description": "Beskrivelse til hørehæmmede",
   "upload_form.description": "Beskrivelse til svagtseende",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Redigér",
   "upload_form.thumbnail": "Skift miniature",
   "upload_form.undo": "Slet",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 72c723e2e..03bfdcb5d 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Dateiuploads sind in Kombination mit Umfragen nicht erlaubt.",
   "upload_form.audio_description": "Beschreibe die Audiodatei für Menschen mit Hörschädigungen",
   "upload_form.description": "Für Menschen mit Sehbehinderung beschreiben",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Bearbeiten",
   "upload_form.thumbnail": "Miniaturansicht ändern",
   "upload_form.undo": "Löschen",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index ff69a8c51..6c260e35c 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -1442,6 +1442,10 @@
       {
         "defaultMessage": "Edit",
         "id": "upload_form.edit"
+      },
+      {
+        "defaultMessage": "No description added",
+        "id": "upload_form.description_missing"
       }
     ],
     "path": "app/javascript/mastodon/features/compose/components/upload.json"
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 3c797d47d..47b234785 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Στις δημοσκοπήσεις δεν επιτρέπεται η μεταφόρτωση αρχείου.",
   "upload_form.audio_description": "Περιγραφή για άτομα με προβλήματα ακοής",
   "upload_form.description": "Περιέγραψε για όσους & όσες έχουν προβλήματα όρασης",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Ενημέρωση",
   "upload_form.thumbnail": "Αλλαγή μικρογραφίας",
   "upload_form.undo": "Διαγραφή",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 30acb054e..0c265aed6 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -520,6 +520,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 7f999c34f..38eb02258 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -168,10 +168,10 @@
   "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!",
   "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
   "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!",
   "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis mesaĝon. Kiam vi stelumos iun, tiu aperos ĉi tie.",
   "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.",
-  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
+  "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.",
   "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.",
   "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.",
   "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.",
@@ -294,7 +294,7 @@
   "navigation_bar.discover": "Esplori",
   "navigation_bar.domain_blocks": "Blokitaj domajnoj",
   "navigation_bar.edit_profile": "Redakti profilon",
-  "navigation_bar.explore": "Explore",
+  "navigation_bar.explore": "Esplori",
   "navigation_bar.favourites": "Stelumoj",
   "navigation_bar.filters": "Silentigitaj vortoj",
   "navigation_bar.follow_requests": "Petoj de sekvado",
@@ -321,7 +321,7 @@
   "notification.update": "{name} redaktis afiŝon",
   "notifications.clear": "Forviŝi sciigojn",
   "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.sign_up": "Novaj registriĝoj:",
   "notifications.column_settings.alert": "Retumilaj sciigoj",
   "notifications.column_settings.favourite": "Stelumoj:",
   "notifications.column_settings.filter_bar.advanced": "Montri ĉiujn kategoriojn",
@@ -337,7 +337,7 @@
   "notifications.column_settings.sound": "Eligi sonon",
   "notifications.column_settings.status": "Novaj mesaĝoj:",
   "notifications.column_settings.unread_notifications.category": "Nelegitaj sciigoj",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
+  "notifications.column_settings.unread_notifications.highlight": "Marki nelegitajn sciigojn",
   "notifications.column_settings.update": "Redaktoj:",
   "notifications.filter.all": "Ĉiuj",
   "notifications.filter.boosts": "Diskonigoj",
@@ -394,8 +394,8 @@
   "report.categories.other": "Aliaj",
   "report.categories.spam": "Spamo",
   "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.subtitle": "Elektu la plej bonan kongruon",
+  "report.category.title": "Diru al ni kio okazas pri ĉi tiu {type}",
   "report.category.title_account": "profilo",
   "report.category.title_status": "afiŝo",
   "report.close": "Farita",
@@ -407,25 +407,25 @@
   "report.next": "Sekva",
   "report.placeholder": "Pliaj komentoj",
   "report.reasons.dislike": "Mi ne ŝatas ĝin",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
+  "report.reasons.dislike_description": "Ĝi ne estas io, kiun vi volas vidi",
+  "report.reasons.other": "Io alia",
+  "report.reasons.other_description": "La problemo ne taŭgas en aliaj kategorioj",
+  "report.reasons.spam": "Ĝi estas trudaĵo",
   "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
   "report.reasons.violation": "Ĝi malrespektas servilajn regulojn",
   "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
+  "report.rules.subtitle": "Elektu ĉiujn, kiuj validas",
   "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
+  "report.statuses.subtitle": "Elektu ĉiujn, kiuj validas",
   "report.statuses.title": "Are there any posts that back up this report?",
   "report.submit": "Sendi",
   "report.target": "Signali {target}",
   "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
+  "report.thanks.title": "Ĉu vi ne volas vidi ĉi tion?",
+  "report.thanks.title_actionable": "Dankon pro raporti, ni esploros ĉi tion.",
   "report.unfollow": "Malsekvi @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.unfollow_explanation": "Vi estas sekvanta ĉi tiun konton. Por ne plu vidi ties afiŝojn en via hejma templinio, malsekvu ilin.",
   "search.placeholder": "Serĉi",
   "search_popout.search_format": "Detala serĉo",
   "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.",
@@ -436,7 +436,7 @@
   "search_results.accounts": "Homoj",
   "search_results.all": "Ĉiuj",
   "search_results.hashtags": "Kradvortoj",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Povis trovi nenion por ĉi tiuj serĉaj terminoj",
   "search_results.statuses": "Mesaĝoj",
   "search_results.statuses_fts_disabled": "Serĉi mesaĝojn laŭ enhavo ne estas ebligita en ĉi tiu Mastodon-servilo.",
   "search_results.total": "{count, number} {count, plural, one {rezulto} other {rezultoj}}",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Alŝuto de dosiero ne permesita kun balotenketo.",
   "upload_form.audio_description": "Priskribi por homoj kiuj malfacile aŭdi",
   "upload_form.description": "Priskribi por misvidantaj homoj",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Redakti",
   "upload_form.thumbnail": "Ŝanĝi etigita bildo",
   "upload_form.undo": "Forigi",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index b239c69e6..8c2a2373f 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "No se permite la subida de archivos en encuestas.",
   "upload_form.audio_description": "Agregá una descripción para personas con dificultades auditivas",
   "upload_form.description": "Agregá una descripción para personas con dificultades visuales",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Cambiar miniatura",
   "upload_form.undo": "Eliminar",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index ccdca8d9c..4ad7249be 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Subida de archivos no permitida con encuestas.",
   "upload_form.audio_description": "Describir para personas con problemas auditivos",
   "upload_form.description": "Describir para los usuarios con dificultad visual",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Cambiar miniatura",
   "upload_form.undo": "Borrar",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index ba33d8a6c..97ed35bdd 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Subida de archivos no permitida con encuestas.",
   "upload_form.audio_description": "Describir para personas con problemas auditivos",
   "upload_form.description": "Describir para los usuarios con dificultad visual",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Cambiar miniatura",
   "upload_form.undo": "Borrar",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index e3bcdb521..bb10fd504 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Küsitlustes pole faili üleslaadimine lubatud.",
   "upload_form.audio_description": "Kirjelda kuulmispuudega inimeste jaoks",
   "upload_form.description": "Kirjelda vaegnägijatele",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Redigeeri",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Kustuta",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index a5cbf5128..6aca056d0 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Ez da inkestetan fitxategiak igotzea onartzen.",
   "upload_form.audio_description": "Deskribatu entzumen galera duten pertsonentzat",
   "upload_form.description": "Deskribatu ikusmen arazoak dituztenentzat",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editatu",
   "upload_form.thumbnail": "Aldatu koadro txikia",
   "upload_form.undo": "Ezabatu",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 73a65ed78..17399a01f 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "بارگذاری پرونده در نظرسنجی‌ها مجاز نیست.",
   "upload_form.audio_description": "برای ناشنوایان توصیفش کنید",
   "upload_form.description": "برای کم‌بینایان توصیفش کنید",
+  "upload_form.description_missing": "No description added",
   "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 39df81770..9bc176db4 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Tiedon lataaminen ei ole sallittua kyselyissä.",
   "upload_form.audio_description": "Kuvaile kuulovammaisille",
   "upload_form.description": "Anna kuvaus näkörajoitteisia varten",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Muokkaa",
   "upload_form.thumbnail": "Vaihda pikkukuva",
   "upload_form.undo": "Peru",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 13d89502b..794b3aafb 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "L’envoi de fichiers n’est pas autorisé avec les sondages.",
   "upload_form.audio_description": "Décrire pour les personnes ayant des difficultés d’audition",
   "upload_form.description": "Décrire pour les malvoyant·e·s",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Modifier",
   "upload_form.thumbnail": "Changer la vignette",
   "upload_form.undo": "Supprimer",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 5bf1681a8..e72e8bca0 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 9ca41b2f6..becbbaf04 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Chan fhaod thu faidhle a luchdadh suas an cois cunntais-bheachd.",
   "upload_form.audio_description": "Mìnich e dhan fheadhainn le èisteachd bheag",
   "upload_form.description": "Mìnich e dhan fheadhainn le cion-lèirsinne",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Deasaich",
   "upload_form.thumbnail": "Atharraich an dealbhag",
   "upload_form.undo": "Sguab às",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 56fd5ca7f..d5aff7d59 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Non se poden subir ficheiros nas enquisas.",
   "upload_form.audio_description": "Describir para persoas con problemas auditivos",
   "upload_form.description": "Describir para persoas con problemas visuais",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Cambiar a miniatura",
   "upload_form.undo": "Eliminar",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index db25a33fd..db192fa53 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "תיאור לכבדי ראיה",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edit",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "ביטול",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 8a464f7ec..ecc6898c3 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -515,6 +515,7 @@
   "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": "संशोधन करें",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "मिटाए",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index bbe62cf38..25bd26c8e 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Prijenos datoteka nije dopušten kod anketa.",
   "upload_form.audio_description": "Opišite za ljude sa slabim sluhom",
   "upload_form.description": "Opišite za ljude sa slabim vidom",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Uredi",
   "upload_form.thumbnail": "Promijeni pretpregled",
   "upload_form.undo": "Obriši",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index d121d6573..5eccf8fe0 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Szavazásnál nem lehet fájlt feltölteni.",
   "upload_form.audio_description": "Írja le a hallássérültek számára",
   "upload_form.description": "Leírás látáskorlátozottak számára",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Szerkesztés",
   "upload_form.thumbnail": "Előnézet megváltoztatása",
   "upload_form.undo": "Törlés",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index 2b7cdf5ac..a83fa31d5 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Հարցումների հետ նիշք կցել հնարաւոր չէ։",
   "upload_form.audio_description": "Նկարագրիր ձայնագրութեան բովանդակութիւնը լսողական խնդիրներով անձանց համար",
   "upload_form.description": "Նկարագիր՝ տեսողական խնդիրներ ունեցողների համար",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Խմբագրել",
   "upload_form.thumbnail": "Փոխել պատկերակը",
   "upload_form.undo": "Յետարկել",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index ee7810379..e9b2899c5 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Unggah berkas tak diizinkan di japat ini.",
   "upload_form.audio_description": "Penjelasan untuk orang dengan gangguan pendengaran",
   "upload_form.description": "Deskripsikan untuk mereka yang tidak bisa melihat dengan jelas",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Sunting",
   "upload_form.thumbnail": "Ubah gambar kecil",
   "upload_form.undo": "Undo",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 77c6871a4..2ffee1eb2 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Desfacar",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index bf1b892e6..75a73b430 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Innsending skráa er ekki leyfð í könnunum.",
   "upload_form.audio_description": "Lýstu þessu fyrir heyrnarskerta",
   "upload_form.description": "Lýstu þessu fyrir sjónskerta",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Breyta",
   "upload_form.thumbnail": "Skipta um smámynd",
   "upload_form.undo": "Eyða",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 1985450a5..02c8e2d89 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -148,7 +148,7 @@
   "embed.preview": "Ecco come apparirà:",
   "emoji_button.activity": "Attività",
   "emoji_button.custom": "Personalizzato",
-  "emoji_button.flags": "Segnalazioni",
+  "emoji_button.flags": "Bandiere",
   "emoji_button.food": "Cibo & Bevande",
   "emoji_button.label": "Inserisci emoji",
   "emoji_button.nature": "Natura",
@@ -483,7 +483,7 @@
   "status.show_less_all": "Mostra meno per tutti",
   "status.show_more": "Mostra di più",
   "status.show_more_all": "Mostra di più per tutti",
-  "status.show_thread": "Mostra thread",
+  "status.show_thread": "Mostra conversazione",
   "status.uncached_media_warning": "Non disponibile",
   "status.unmute_conversation": "Annulla silenzia conversazione",
   "status.unpin": "Non fissare in cima al profilo",
@@ -503,7 +503,7 @@
   "timeline_hint.resources.followers": "Follower",
   "timeline_hint.resources.follows": "Segue",
   "timeline_hint.resources.statuses": "Post meno recenti",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parla·no",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} persona} other {{counter} persone}} ne parlano",
   "trends.trending_now": "Di tendenza ora",
   "ui.beforeunload": "La bozza andrà persa se esci da Mastodon.",
   "units.short.billion": "{count}G",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Caricamento file non consentito nei sondaggi.",
   "upload_form.audio_description": "Descrizione per persone con difetti uditivi",
   "upload_form.description": "Descrizione per utenti con disabilità visive",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Modifica",
   "upload_form.thumbnail": "Cambia miniatura",
   "upload_form.undo": "Cancella",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index e08c8bb33..3a94c515b 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -520,6 +520,7 @@
   "upload_error.poll": "アンケートではファイルをアップロードできません。",
   "upload_form.audio_description": "聴取が難しいユーザーへの説明",
   "upload_form.description": "閲覧が難しいユーザーへの説明",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "編集",
   "upload_form.thumbnail": "サムネイルを変更",
   "upload_form.undo": "削除",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index f6f3f1e10..a0a2b821d 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "აღწერილობა ვიზუალურად უფასურისთვის",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edit",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "გაუქმება",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index d6fcc2c7b..b6628332e 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Ur ittusireg ara usali n ufaylu s tefranin.",
   "upload_form.audio_description": "Glem-d i yemdanen i yesɛan ugur deg tmesliwt",
   "upload_form.description": "Glem-d i yemdaneni yesɛan ugur deg yiẓri",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Ẓreg",
   "upload_form.thumbnail": "Beddel tugna",
   "upload_form.undo": "Kkes",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 28156f956..f8185fe95 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Сауалнамамен бірге файл жүктеуге болмайды.",
   "upload_form.audio_description": "Есту қабілеті нашар адамдарға сипаттама беріңіз",
   "upload_form.description": "Көру қабілеті нашар адамдар үшін сипаттаңыз",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Түзету",
   "upload_form.thumbnail": "Суретті өзгерту",
   "upload_form.undo": "Өшіру",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 450944dca..74b3992c7 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 454b3977a..ef2bb4939 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -131,7 +131,7 @@
   "confirmations.mute.explanation": "이 동작은 그의 게시물, 그를 멘션하는 게시물을 숨깁니다, 하지만 여전히 그가 당신의 게시물을 보고 팔로우 할 수 있습니다.",
   "confirmations.mute.message": "정말로 {name}를 뮤트하시겠습니까?",
   "confirmations.redraft.confirm": "삭제하고 다시 쓰기",
-  "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 포스트에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.",
+  "confirmations.redraft.message": "정말로 이 게시물을 삭제하고 다시 쓰시겠습니까? 해당 게시물에 대한 부스트와 즐겨찾기를 잃게 되고 원본에 대한 답장은 연결 되지 않습니다.",
   "confirmations.reply.confirm": "답글",
   "confirmations.reply.message": "답글을 달기 위해 현재 작성 중인 메시지가 덮어 씌워집니다. 진행하시겠습니까?",
   "confirmations.unfollow.confirm": "팔로우 해제",
@@ -365,7 +365,7 @@
   "poll.votes": "{votes} 표",
   "poll_button.add_poll": "투표 추가",
   "poll_button.remove_poll": "투표 삭제",
-  "privacy.change": "포스트의 프라이버시 설정을 변경",
+  "privacy.change": "게시물의 프라이버시 설정을 변경",
   "privacy.direct.long": "멘션한 사용자에게만 공개",
   "privacy.direct.short": "다이렉트",
   "privacy.private.long": "팔로워에게만 공개",
@@ -445,7 +445,7 @@
   "status.block": "@{name} 차단",
   "status.bookmark": "보관",
   "status.cancel_reblog_private": "부스트 취소",
-  "status.cannot_reblog": "이 포스트는 부스트 할 수 없습니다",
+  "status.cannot_reblog": "이 게시물은 부스트 할 수 없습니다",
   "status.copy": "게시물 링크 복사",
   "status.delete": "삭제",
   "status.detailed_status": "대화 자세히 보기",
@@ -515,6 +515,7 @@
   "upload_error.poll": "파일 업로드는 투표와 함께 첨부할 수 없습니다.",
   "upload_form.audio_description": "청각 장애인을 위한 설명",
   "upload_form.description": "시각장애인을 위한 설명",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "편집",
   "upload_form.thumbnail": "썸네일 변경",
   "upload_form.undo": "삭제",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 2bf8fc520..76a240faa 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Di rapirsîyan de mafê barkirina pelan nayê dayîn.",
   "upload_form.audio_description": "Ji bona kesên kêm dibihîsin re pênase bike",
   "upload_form.description": "Ji bona astengdarên dîtinê re vebêje",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Serrast bike",
   "upload_form.thumbnail": "Wêneyê biçûk biguherîne",
   "upload_form.undo": "Jê bibe",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index ca6eed5c1..8ca7c68c1 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Nyns yw gesys ughkarga restrennow gans sondyansow.",
   "upload_form.audio_description": "Deskrifewgh rag tus vodharek",
   "upload_form.description": "Deskrifewgh rag tus dhallek",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Golegi",
   "upload_form.thumbnail": "Chanjya avenik",
   "upload_form.undo": "Dilea",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index bb432a8af..d54fc64f0 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index f16df5423..889b45f0e 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Datņu augšupielādes aptaujās nav atļautas.",
   "upload_form.audio_description": "Aprakstiet cilvēkiem ar dzirdes zudumu",
   "upload_form.description": "Aprakstiet vājredzīgajiem",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Rediģēt",
   "upload_form.thumbnail": "Nomainīt sīktēlu",
   "upload_form.undo": "Dzēst",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index c6f097134..def8e718b 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 1a0f4ac38..adca25974 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "കേൾവിശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
   "upload_form.description": "കാഴ്ചശക്തി ഇല്ലാത്തവർക്ക് വേണ്ടി വിവരണം നൽകൂ",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "തിരുത്തുക",
   "upload_form.thumbnail": "ലഘുചിത്രം മാറ്റുക",
   "upload_form.undo": "ഇല്ലാതാക്കുക",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index a731ff87b..373b8b026 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 96d300492..f4cc1c7ba 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Tidak boleh memuat naik fail bersama undian.",
   "upload_form.audio_description": "Jelaskan untuk orang yang ada masalah pendengaran",
   "upload_form.description": "Jelaskan untuk orang yang ada masalah penglihatan",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Sunting",
   "upload_form.thumbnail": "Ubah gambar kecil",
   "upload_form.undo": "Padam",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index d1cfdd5f4..86a7b0023 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Het uploaden van bestanden is in polls niet toegestaan.",
   "upload_form.audio_description": "Omschrijf dit voor mensen met een auditieve beperking",
   "upload_form.description": "Omschrijf dit voor mensen met een visuele beperking",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Bewerken",
   "upload_form.thumbnail": "Miniatuurafbeelding wijzigen",
   "upload_form.undo": "Verwijderen",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 40a961c5e..491b24a40 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Filopplasting ikkje tillate med meiningsmålingar.",
   "upload_form.audio_description": "Grei ut for folk med nedsett høyrsel",
   "upload_form.description": "Skildr for synshemja",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Rediger",
   "upload_form.thumbnail": "Bytt miniatyrbilete",
   "upload_form.undo": "Slett",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index e4474f6d9..0a1286f7b 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Filopplasting inni avstemninger er ikke tillatt.",
   "upload_form.audio_description": "Beskriv det for folk med hørselstap",
   "upload_form.description": "Beskriv for synshemmede",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Rediger",
   "upload_form.thumbnail": "Endre miniatyrbilde",
   "upload_form.undo": "Angre",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index ff819e0fd..83cd3a632 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -106,7 +106,7 @@
   "compose_form.poll.switch_to_single": "Cambiar lo sondatge per permetre una sola causida",
   "compose_form.publish": "Tut",
   "compose_form.publish_loud": "{publish} !",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "Salvar los cambiaments",
   "compose_form.sensitive.hide": "Marcar coma sensible",
   "compose_form.sensitive.marked": "Lo mèdia es marcat coma sensible",
   "compose_form.sensitive.unmarked": "Lo mèdia es pas marcat coma sensible",
@@ -187,9 +187,9 @@
   "error.unexpected_crash.next_steps_addons": "Ensajatz de los desactivar o actualizatz la pagina. Se aquò ajuda pas, podètz ensajar d’utilizar Mastodon via un autre navigador o una aplicacion nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Copiar las traças al quichapapièrs",
   "errors.unexpected_crash.report_issue": "Senhalar un problèma",
-  "explore.search_results": "Search results",
+  "explore.search_results": "Resultats de recèrca",
   "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
+  "explore.title": "Explorar",
   "explore.trending_links": "News",
   "explore.trending_statuses": "Posts",
   "explore.trending_tags": "Hashtags",
@@ -362,7 +362,7 @@
   "poll.total_votes": "{count, plural, one {# vòte} other {# vòtes}}",
   "poll.vote": "Votar",
   "poll.voted": "Avètz votat per aquesta responsa",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
+  "poll.votes": "{votes, plural, one {# vòte} other {# vòtes}}",
   "poll_button.add_poll": "Ajustar un sondatge",
   "poll_button.remove_poll": "Levar lo sondatge",
   "privacy.change": "Ajustar la confidencialitat del messatge",
@@ -378,35 +378,35 @@
   "regeneration_indicator.label": "Cargament…",
   "regeneration_indicator.sublabel": "Sèm a preparar vòstre flux d’acuèlh !",
   "relative_time.days": "fa {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 {# jorn} other {# jorns}} ago",
+  "relative_time.full.hours": "fa {number, plural, one {# ora} other {# oras}}",
+  "relative_time.full.just_now": "ara",
+  "relative_time.full.minutes": "fa {number, plural, one {# minuta} other {# minutas}}",
+  "relative_time.full.seconds": "fa {number, plural, one {# segonda} other {# segondas}}",
   "relative_time.hours": "fa {number}h",
   "relative_time.just_now": "ara",
   "relative_time.minutes": "fa {number} min",
   "relative_time.seconds": "fa {number}s",
   "relative_time.today": "uèi",
   "reply_indicator.cancel": "Anullar",
-  "report.block": "Block",
+  "report.block": "Blocar",
   "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.category.title_account": "perfil",
+  "report.category.title_status": "publicacion",
+  "report.close": "Acabat",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Far sègre a {target}",
   "report.forward_hint": "Lo compte ven d’un autre servidor. Volètz mandar una còpia anonima del rapòrt enlai tanben ?",
-  "report.mute": "Mute",
+  "report.mute": "Amudir",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.next": "Seguent",
   "report.placeholder": "Comentaris addicionals",
-  "report.reasons.dislike": "I don't like it",
+  "report.reasons.dislike": "M’agrada pas",
   "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",
@@ -450,7 +450,7 @@
   "status.delete": "Escafar",
   "status.detailed_status": "Vista detalhada de la convèrsa",
   "status.direct": "Messatge per @{name}",
-  "status.edit": "Edit",
+  "status.edit": "Modificar",
   "status.edited": "Edited {date}",
   "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
   "status.embed": "Embarcar",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Lo mandadís de fichièr es pas autorizat pels sondatges.",
   "upload_form.audio_description": "Descriure per las personas amb pèrdas auditivas",
   "upload_form.description": "Descripcion pels mal vesents",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Modificar",
   "upload_form.thumbnail": "Cambiar la vinheta",
   "upload_form.undo": "Suprimir",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index 088b5ff36..4373287dd 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 445f919db..ea55b35b7 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -520,6 +520,7 @@
   "upload_error.poll": "Dołączanie plików nie dozwolone z głosowaniami.",
   "upload_form.audio_description": "Opisz dla osób niesłyszących i niedosłyszących",
   "upload_form.description": "Wprowadź opis dla niewidomych i niedowidzących",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edytuj",
   "upload_form.thumbnail": "Zmień miniaturę",
   "upload_form.undo": "Usuń",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index 2b9755c06..e6ee77212 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Mídias não podem ser anexadas em toots com enquetes.",
   "upload_form.audio_description": "Descrever para deficientes auditivos",
   "upload_form.description": "Descrever para deficientes visuais",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Alterar miniatura",
   "upload_form.undo": "Excluir",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index 4e06401ec..5514ad446 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Carregamento de ficheiros não é permitido em votações.",
   "upload_form.audio_description": "Descreva para pessoas com diminuição da acuidade auditiva",
   "upload_form.description": "Descrição da imagem para pessoas com dificuldades visuais",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Editar",
   "upload_form.thumbnail": "Alterar miniatura",
   "upload_form.undo": "Eliminar",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index bd91f19b9..49babba8b 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Încărcarea fișierului nu este permisă cu sondaje.",
   "upload_form.audio_description": "Descrie pentru persoanele cu deficiență a auzului",
   "upload_form.description": "Adaugă o descriere pentru persoanele cu deficiențe de vedere",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Modifică",
   "upload_form.thumbnail": "Schimbă miniatura",
   "upload_form.undo": "Șterge",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 79fac6eb5..c227150f9 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "К опросам нельзя прикреплять файлы.",
   "upload_form.audio_description": "Опишите аудиофайл для людей с нарушением слуха",
   "upload_form.description": "Добавьте описание для людей с нарушениями зрения:",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Изменить",
   "upload_form.thumbnail": "Изменить обложку",
   "upload_form.undo": "Отменить",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index e1910d283..ef06ba0b1 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 1c29dfb79..1375f2fb6 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Non si permitit s'imbiu de archìvios in is sondàgios.",
   "upload_form.audio_description": "Descritzione pro persones cun pèrdida auditiva",
   "upload_form.description": "Descritzione pro persones cun problemas visuales",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Modìfica",
   "upload_form.thumbnail": "Càmbia sa miniadura",
   "upload_form.undo": "Cantzella",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index a74105406..26c98ea35 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -515,6 +515,7 @@
   "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": "සංස්කරණය",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 860e65413..9bdbf15c3 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -515,6 +515,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.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 92a3ffcc9..f8bd9058b 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -46,10 +46,10 @@
   "account.unfollow": "Prenehaj slediti",
   "account.unmute": "Odtišaj @{name}",
   "account.unmute_notifications": "Vklopi obvestila od @{name}",
-  "account.unmute_short": "Unmute",
+  "account.unmute_short": "Odtišaj",
   "account_note.placeholder": "Click to add a note",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
+  "admin.dashboard.daily_retention": "Mera ohranjanja uporabnikov po dnevih od registracije",
+  "admin.dashboard.monthly_retention": "Mera ohranjanja uporabnikov po mesecih od registracije",
   "admin.dashboard.retention.average": "Povprečje",
   "admin.dashboard.retention.cohort": "Mesec prijave",
   "admin.dashboard.retention.cohort_size": "Novi uporabniki",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Prenos datoteke z anketami ni dovoljen.",
   "upload_form.audio_description": "Opiši za osebe z okvaro sluha",
   "upload_form.description": "Opišite za slabovidne",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Uredi",
   "upload_form.thumbnail": "Spremeni sličico",
   "upload_form.undo": "Izbriši",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index ce3cdabd0..8f0beacff 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Me pyetësorët s’lejohet ngarkim kartelash.",
   "upload_form.audio_description": "Përshkruajeni për persona me dëgjim të kufizuar",
   "upload_form.description": "Përshkruajeni për persona me probleme shikimi",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Përpunoni",
   "upload_form.thumbnail": "Ndryshoni miniaturën",
   "upload_form.undo": "Fshije",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index 332352cc1..7a0efa255 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Opiši za slabovide osobe",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edit",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Opozovi",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index e7f1e54cc..ea6dbb5ab 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "Опишите за особе са оштећеним видом",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Уреди",
   "upload_form.thumbnail": "Промени приказ слика",
   "upload_form.undo": "Обриши",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 65e547183..636591be8 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Filuppladdning tillåts inte med omröstningar.",
   "upload_form.audio_description": "Beskriv för personer med hörselnedsättning",
   "upload_form.description": "Beskriv för synskadade",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Redigera",
   "upload_form.thumbnail": "Ändra miniatyr",
   "upload_form.undo": "Radera",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index 088b5ff36..4373287dd 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 3c4bcb234..f79454e0b 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "கோப்பு பதிவேற்றம் அனுமதிக்கப்படவில்லை.",
   "upload_form.audio_description": "செவித்திறன் குறைபாடு உள்ளவர்களுக்காக விளக்குக‌",
   "upload_form.description": "பார்வையற்ற விவரிக்கவும்",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "தொகு",
   "upload_form.thumbnail": "சிறுபடத்தை மாற்ற",
   "upload_form.undo": "நீக்கு",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 2f8936a9c..888902b3f 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 05af59c6a..ce2fe0fda 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "File upload not allowed with polls.",
   "upload_form.audio_description": "Describe for people with hearing loss",
   "upload_form.description": "దృష్టి లోపమున్న వారి కోసం వివరించండి",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edit",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "తొలగించు",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index f8477e8fd..9f592fd83 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "ไม่อนุญาตให้อัปโหลดไฟล์กับการลงคะแนน",
   "upload_form.audio_description": "อธิบายสำหรับผู้สูญเสียการได้ยิน",
   "upload_form.description": "อธิบายสำหรับผู้บกพร่องทางการมองเห็น",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "แก้ไข",
   "upload_form.thumbnail": "เปลี่ยนภาพขนาดย่อ",
   "upload_form.undo": "ลบ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 96d6f83c3..959af5693 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "Anketlerde dosya yüklemesine izin verilmez.",
   "upload_form.audio_description": "İşitme kaybı olan kişiler için tarif edin",
   "upload_form.description": "Görme engelliler için açıklama",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Düzenle",
   "upload_form.thumbnail": "Küçük resmi değiştir",
   "upload_form.undo": "Sil",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 06936f110..e44106844 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -515,6 +515,7 @@
   "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": "Үзгәртү",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "Бетерү",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index 088b5ff36..4373287dd 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index e2e1386e6..b8f6bed42 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -412,9 +412,9 @@
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "Це спам",
   "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
+  "report.reasons.violation": "Порушує правила сервера",
+  "report.reasons.violation_description": "Ви впевнені, що це порушує певні правила",
+  "report.rules.subtitle": "Виберіть усі варіанти, що підходять",
   "report.rules.title": "Які правила порушено?",
   "report.statuses.subtitle": "Виберіть усі варіанти, що підходять",
   "report.statuses.title": "Are there any posts that back up this report?",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Не можна завантажувати файли до опитувань.",
   "upload_form.audio_description": "Опишіть для людей із вадами слуху",
   "upload_form.description": "Опишіть для людей з вадами зору",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Змінити",
   "upload_form.thumbnail": "Змінити мініатюру",
   "upload_form.undo": "Видалити",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index e5aad2355..47e06c3b2 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -515,6 +515,7 @@
   "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_form.undo": "Delete",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index d47033881..8da449cef 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -11,7 +11,7 @@
   "account.direct": "Nhắn riêng @{name}",
   "account.disable_notifications": "Không thông báo khi @{name} đăng tút",
   "account.domain_blocked": "Người đã chặn",
-  "account.edit_profile": "Chỉnh sửa trang cá nhân",
+  "account.edit_profile": "Sửa hồ sơ",
   "account.enable_notifications": "Thông báo khi @{name} đăng tút",
   "account.endorse": "Tôn vinh người này",
   "account.follow": "Theo dõi",
@@ -227,7 +227,7 @@
   "intervals.full.minutes": "{number, plural, other {# phút}}",
   "keyboard_shortcuts.back": "trở lại",
   "keyboard_shortcuts.blocked": "mở danh sách người đã chặn",
-  "keyboard_shortcuts.boost": "Đăng lại",
+  "keyboard_shortcuts.boost": "đăng lại",
   "keyboard_shortcuts.column": "mở các mục",
   "keyboard_shortcuts.compose": "mở khung soạn tút",
   "keyboard_shortcuts.description": "Mô tả",
@@ -244,11 +244,11 @@
   "keyboard_shortcuts.local": "mở máy chủ của bạn",
   "keyboard_shortcuts.mention": "nhắc đến ai đó",
   "keyboard_shortcuts.muted": "mở danh sách người đã ẩn",
-  "keyboard_shortcuts.my_profile": "mở trang cá nhân của bạn",
+  "keyboard_shortcuts.my_profile": "mở hồ sơ của bạn",
   "keyboard_shortcuts.notifications": "mở mục thông báo",
   "keyboard_shortcuts.open_media": "mở ảnh hoặc video",
   "keyboard_shortcuts.pinned": "mở danh sách tút ghim",
-  "keyboard_shortcuts.profile": "mở trang cá nhân của người viết tút",
+  "keyboard_shortcuts.profile": "mở hồ sơ của người viết tút",
   "keyboard_shortcuts.reply": "trả lời",
   "keyboard_shortcuts.requests": "mở danh sách yêu cầu theo dõi",
   "keyboard_shortcuts.search": "mở tìm kiếm",
@@ -293,7 +293,7 @@
   "navigation_bar.direct": "Tin nhắn",
   "navigation_bar.discover": "Khám phá",
   "navigation_bar.domain_blocks": "Máy chủ đã ẩn",
-  "navigation_bar.edit_profile": "Trang cá nhân",
+  "navigation_bar.edit_profile": "Sửa hồ sơ",
   "navigation_bar.explore": "Xu hướng",
   "navigation_bar.favourites": "Thích",
   "navigation_bar.filters": "Bộ lọc từ ngữ",
@@ -465,7 +465,7 @@
   "status.mute": "Ẩn @{name}",
   "status.mute_conversation": "Không quan tâm nữa",
   "status.open": "Xem nguyên văn",
-  "status.pin": "Ghim lên trang cá nhân",
+  "status.pin": "Ghim lên hồ sơ",
   "status.pinned": "Tút đã ghim",
   "status.read_more": "Đọc tiếp",
   "status.reblog": "Đăng lại",
@@ -486,7 +486,7 @@
   "status.show_thread": "Xem chuỗi tút này",
   "status.uncached_media_warning": "Uncached",
   "status.unmute_conversation": "Quan tâm",
-  "status.unpin": "Bỏ ghim trên trang cá nhân",
+  "status.unpin": "Bỏ ghim trên hồ sơ",
   "suggestions.dismiss": "Tắt đề xuất",
   "suggestions.header": "Có thể bạn quan tâm…",
   "tabs_bar.federated_timeline": "Thế giới",
@@ -515,6 +515,7 @@
   "upload_error.poll": "Không cho phép đính kèm tập tin.",
   "upload_form.audio_description": "Mô tả cho người mất thính giác",
   "upload_form.description": "Mô tả cho người khiếm thị",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "Biên tập",
   "upload_form.thumbnail": "Đổi ảnh thumbnail",
   "upload_form.undo": "Xóa bỏ",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index b321d1525..6e6b1cd86 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -515,6 +515,7 @@
   "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": "ⵙⵏⴼⵍ",
   "upload_form.thumbnail": "Change thumbnail",
   "upload_form.undo": "ⴽⴽⵙ",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 9e306688e..e49284653 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -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": "你目前没有屏蔽任何用户。",
@@ -515,6 +515,7 @@
   "upload_error.poll": "投票中不允许上传文件。",
   "upload_form.audio_description": "为听障人士添加文字描述",
   "upload_form.description": "为视觉障碍人士添加文字说明",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "编辑",
   "upload_form.thumbnail": "更改缩略图",
   "upload_form.undo": "删除",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index b60560cd1..462c05447 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -515,6 +515,7 @@
   "upload_error.poll": "不允許在投票上傳檔案。",
   "upload_form.audio_description": "簡單描述內容給聽障人士",
   "upload_form.description": "為視覺障礙人士添加文字說明",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "編輯",
   "upload_form.thumbnail": "更改預覽圖",
   "upload_form.undo": "刪除",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index f9366fe17..866fed93c 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -1,12 +1,12 @@
 {
   "account.account_note_header": "備註",
-  "account.add_or_remove_from_list": "從名單中新增或移除",
+  "account.add_or_remove_from_list": "從列表中新增或移除",
   "account.badges.bot": "機器人",
   "account.badges.group": "群組",
   "account.block": "封鎖 @{name}",
   "account.block_domain": "封鎖來自 {domain} 網域的所有內容",
   "account.blocked": "已封鎖",
-  "account.browse_more_on_origin_server": "在該伺服器的個人檔案頁上瀏覽更多",
+  "account.browse_more_on_origin_server": "於該伺服器的個人檔案頁上瀏覽更多",
   "account.cancel_follow_request": "取消跟隨請求",
   "account.direct": "傳私訊給 @{name}",
   "account.disable_notifications": "取消來自 @{name} 嘟文的通知",
@@ -53,7 +53,7 @@
   "admin.dashboard.retention.average": "平均",
   "admin.dashboard.retention.cohort": "註冊月份",
   "admin.dashboard.retention.cohort_size": "新使用者",
-  "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試",
+  "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試。",
   "alert.rate_limited.title": "已限速",
   "alert.unexpected.message": "發生了非預期的錯誤。",
   "alert.unexpected.title": "哎呀!",
@@ -76,7 +76,7 @@
   "column.favourites": "最愛",
   "column.follow_requests": "跟隨請求",
   "column.home": "首頁",
-  "column.lists": "名單",
+  "column.lists": "列表",
   "column.mutes": "已靜音的使用者",
   "column.notifications": "通知",
   "column.pins": "釘選的嘟文",
@@ -95,7 +95,7 @@
   "compose_form.direct_message_warning": "這條嘟文只有被提及的使用者才看得到。",
   "compose_form.direct_message_warning_learn_more": "了解更多",
   "compose_form.hashtag_warning": "由於這則嘟文設定為「不公開」,它將不會被列於任何主題標籤下。只有公開的嘟文才能藉由主題標籤找到。",
-  "compose_form.lock_disclaimer": "您的帳戶尚未{locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。",
+  "compose_form.lock_disclaimer": "您的帳戶尚未 {locked}。任何人都能關注您並看到您設定成只有跟隨者能看的嘟文。",
   "compose_form.lock_disclaimer.lock": "上鎖",
   "compose_form.placeholder": "正在想些什麼嗎?",
   "compose_form.poll.add_option": "新增選項",
@@ -116,26 +116,26 @@
   "confirmation_modal.cancel": "取消",
   "confirmations.block.block_and_report": "封鎖並檢舉",
   "confirmations.block.confirm": "封鎖",
-  "confirmations.block.message": "確定要封鎖 {name} 嗎?",
+  "confirmations.block.message": "您確定要封鎖 {name} ?",
   "confirmations.delete.confirm": "刪除",
   "confirmations.delete.message": "您確定要刪除這則嘟文?",
   "confirmations.delete_list.confirm": "刪除",
-  "confirmations.delete_list.message": "確定永久刪除此名單?",
+  "confirmations.delete_list.message": "您確定要永久刪除此列表?",
   "confirmations.discard_edit_media.confirm": "捨棄",
   "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
   "confirmations.domain_block.confirm": "隱藏整個域名",
   "confirmations.domain_block.message": "真的非常確定封鎖整個 {domain} 網域嗎?大部分情況下,您只需要封鎖或靜音少數特定的帳帳戶能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
   "confirmations.logout.confirm": "登出",
-  "confirmations.logout.message": "確定要登出嗎?",
+  "confirmations.logout.message": "您確定要登出嗎?",
   "confirmations.mute.confirm": "靜音",
   "confirmations.mute.explanation": "這將會隱藏來自他們的嘟文與通知,但是他們還是可以查閱您的嘟文與跟隨您。",
-  "confirmations.mute.message": "確定靜音 {name} ?",
+  "confirmations.mute.message": "您確定要靜音 {name} ?",
   "confirmations.redraft.confirm": "刪除並重新編輯",
-  "confirmations.redraft.message": "確定刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。",
+  "confirmations.redraft.message": "您確定要刪掉這則嘟文並重新編輯嗎?將會失去這則嘟文的轉嘟及最愛,且回覆這則的嘟文將會變成獨立的嘟文。",
   "confirmations.reply.confirm": "回覆",
   "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
   "confirmations.unfollow.confirm": "取消跟隨",
-  "confirmations.unfollow.message": "確定要取消跟隨 {name} 嗎?",
+  "confirmations.unfollow.message": "您確定要取消跟隨 {name} 嗎?",
   "conversation.delete": "刪除對話",
   "conversation.mark_as_read": "標記為已讀",
   "conversation.open": "檢視對話",
@@ -176,8 +176,8 @@
   "empty_column.hashtag": "這個主題標籤下什麼也沒有。",
   "empty_column.home": "您的首頁時間軸是空的!前往 {suggestions} 或使用搜尋功能來認識其他人。",
   "empty_column.home.suggestions": "檢視部份建議",
-  "empty_column.list": "這份名單還沒有東西。當此名單的成員嘟出了新的嘟文時,它們就會顯示於此。",
-  "empty_column.lists": "您還沒有建立任何名單。這裡將會顯示您所建立的名單。",
+  "empty_column.list": "這份列表下什麼也沒有。當此列表的成員嘟出了新的嘟文時,它們就會顯示於此。",
+  "empty_column.lists": "您還沒有建立任何列表。這裡將會顯示您所建立的列表。",
   "empty_column.mutes": "您尚未靜音任何使用者。",
   "empty_column.notifications": "您尚未收到任何通知,和別人互動開啟對話吧。",
   "empty_column.public": "這裡什麼都沒有!嘗試寫些公開的嘟文,或著自己跟隨其他伺服器的使用者後就會有嘟文出現了",
@@ -194,8 +194,8 @@
   "explore.trending_statuses": "嘟文",
   "explore.trending_tags": "主題標籤",
   "follow_recommendations.done": "完成",
-  "follow_recommendations.heading": "跟隨您想檢視其貼文的人!這裡有一些建議。",
-  "follow_recommendations.lead": "來自您跟隨的人的貼文將會按時間順序顯示在您的家 feed 上。不要害怕犯錯,您隨時都可以取消跟隨其他人!",
+  "follow_recommendations.heading": "跟隨您想檢視其嘟文的人!這裡有一些建議。",
+  "follow_recommendations.lead": "來自您跟隨的人之嘟文將會按時間順序顯示在您的首頁時間軸上。不要害怕犯錯,您隨時都可以取消跟隨其他人!",
   "follow_request.authorize": "授權",
   "follow_request.reject": "拒絕",
   "follow_requests.unlocked_explanation": "即便您的帳戶未被鎖定,{domain} 的管理員認為您可能想要自己審核這些帳戶的跟隨請求。",
@@ -232,10 +232,10 @@
   "keyboard_shortcuts.compose": "將焦點移至撰寫文字區塊",
   "keyboard_shortcuts.description": "說明",
   "keyboard_shortcuts.direct": "開啟私訊欄",
-  "keyboard_shortcuts.down": "在名單中往下移動",
+  "keyboard_shortcuts.down": "在列表中往下移動",
   "keyboard_shortcuts.enter": "檢視嘟文",
   "keyboard_shortcuts.favourite": "加到最愛",
-  "keyboard_shortcuts.favourites": "開啟最愛名單",
+  "keyboard_shortcuts.favourites": "開啟最愛列表",
   "keyboard_shortcuts.federated": "開啟聯邦時間軸",
   "keyboard_shortcuts.heading": "鍵盤快速鍵",
   "keyboard_shortcuts.home": "開啟首頁時間軸",
@@ -243,47 +243,47 @@
   "keyboard_shortcuts.legend": "顯示此圖例",
   "keyboard_shortcuts.local": "開啟本機時間軸",
   "keyboard_shortcuts.mention": "提及作者",
-  "keyboard_shortcuts.muted": "開啟靜音使用者名單",
+  "keyboard_shortcuts.muted": "開啟靜音使用者列表",
   "keyboard_shortcuts.my_profile": "開啟個人資料頁面",
   "keyboard_shortcuts.notifications": "開啟通知欄",
   "keyboard_shortcuts.open_media": "開啟媒體",
-  "keyboard_shortcuts.pinned": "開啟釘選的嘟文名單",
+  "keyboard_shortcuts.pinned": "開啟釘選的嘟文列表",
   "keyboard_shortcuts.profile": "開啟作者的個人資料頁面",
   "keyboard_shortcuts.reply": "回應嘟文",
-  "keyboard_shortcuts.requests": "開啟跟隨請求名單",
+  "keyboard_shortcuts.requests": "開啟跟隨請求列表",
   "keyboard_shortcuts.search": "將焦點移至搜尋框",
   "keyboard_shortcuts.spoilers": "顯示或隱藏被折疊的正文",
   "keyboard_shortcuts.start": "開啟「開始使用」欄位",
-  "keyboard_shortcuts.toggle_hidden": "顯示/隱藏在內容警告之後的正文",
-  "keyboard_shortcuts.toggle_sensitivity": "顯示 / 隱藏媒體",
+  "keyboard_shortcuts.toggle_hidden": "顯示或隱藏在內容警告之後的正文",
+  "keyboard_shortcuts.toggle_sensitivity": "顯示或隱藏媒體",
   "keyboard_shortcuts.toot": "開始發出新嘟文",
   "keyboard_shortcuts.unfocus": "取消輸入文字區塊 / 搜尋的焦點",
-  "keyboard_shortcuts.up": "在名單中往上移動",
+  "keyboard_shortcuts.up": "在列表中往上移動",
   "lightbox.close": "關閉",
   "lightbox.compress": "折疊圖片檢視框",
   "lightbox.expand": "展開圖片檢視框",
   "lightbox.next": "下一步",
   "lightbox.previous": "上一步",
-  "lists.account.add": "新增至名單",
-  "lists.account.remove": "從名單中移除",
-  "lists.delete": "刪除名單",
-  "lists.edit": "編輯名單",
+  "lists.account.add": "新增至列表",
+  "lists.account.remove": "從列表中移除",
+  "lists.delete": "刪除列表",
+  "lists.edit": "編輯列表",
   "lists.edit.submit": "變更標題",
-  "lists.new.create": "新增名單",
-  "lists.new.title_placeholder": "新名單標題",
+  "lists.new.create": "新增列表",
+  "lists.new.title_placeholder": "新列表標題",
   "lists.replies_policy.followed": "任何跟隨的使用者",
-  "lists.replies_policy.list": "名單成員",
+  "lists.replies_policy.list": "列表成員",
   "lists.replies_policy.none": "沒有人",
   "lists.replies_policy.title": "顯示回覆:",
   "lists.search": "搜尋您跟隨的使用者",
-  "lists.subheading": "您的名單",
+  "lists.subheading": "您的列表",
   "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}",
   "loading_indicator.label": "讀取中...",
   "media_gallery.toggle_visible": "切換可見性",
   "missing_indicator.label": "找不到",
   "missing_indicator.sublabel": "找不到此資源",
   "mute_modal.duration": "持續時間",
-  "mute_modal.hide_notifications": "隱藏來自這位使用者的通知?",
+  "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?",
   "mute_modal.indefinite": "無期限",
   "navigation_bar.apps": "行動應用程式",
   "navigation_bar.blocks": "封鎖使用者",
@@ -301,7 +301,7 @@
   "navigation_bar.follows_and_followers": "跟隨中與跟隨者",
   "navigation_bar.info": "關於此伺服器",
   "navigation_bar.keyboard_shortcuts": "快速鍵",
-  "navigation_bar.lists": "名單",
+  "navigation_bar.lists": "列表",
   "navigation_bar.logout": "登出",
   "navigation_bar.mutes": "靜音的使用者",
   "navigation_bar.personal": "個人",
@@ -320,7 +320,7 @@
   "notification.status": "{name} 剛剛嘟文",
   "notification.update": "{name} 編輯了嘟文",
   "notifications.clear": "清除通知",
-  "notifications.clear_confirmation": "確定要永久清除您的通知嗎?",
+  "notifications.clear_confirmation": "您確定要永久清除您的通知嗎?",
   "notifications.column_settings.admin.sign_up": "新註冊帳號:",
   "notifications.column_settings.alert": "桌面通知",
   "notifications.column_settings.favourite": "最愛:",
@@ -345,13 +345,13 @@
   "notifications.filter.follows": "跟隨的使用者",
   "notifications.filter.mentions": "提及",
   "notifications.filter.polls": "投票結果",
-  "notifications.filter.statuses": "已跟隨使用者的最新動態",
+  "notifications.filter.statuses": "您跟隨的使用者之最新動態",
   "notifications.grant_permission": "授予權限",
   "notifications.group": "{count} 條通知",
   "notifications.mark_as_read": "將所有通知都標記為已讀",
   "notifications.permission_denied": "由於之前拒絕了瀏覽器請求,因此桌面通知不可用",
-  "notifications.permission_denied_alert": "因為之前瀏覽器權限被拒絕,無法啟用桌面通知",
-  "notifications.permission_required": "因為尚未授予所需的權限,所以桌面通知不可用。",
+  "notifications.permission_denied_alert": "由於之前瀏覽器權限被拒絕,無法啟用桌面通知",
+  "notifications.permission_required": "由於尚未授予所需的權限,所以桌面通知不可用。",
   "notifications_permission_banner.enable": "啟用桌面通知",
   "notifications_permission_banner.how_to_control": "啟用桌面通知以在 Mastodon 沒有開啟的時候接收通知。在已經啟用桌面通知的時候,您可以透過上面的 {icon} 按鈕準確的控制哪些類型的互動會產生桌面通知。",
   "notifications_permission_banner.title": "不要錯過任何東西!",
@@ -372,20 +372,20 @@
   "privacy.private.short": "僅跟隨者",
   "privacy.public.long": "公開,且顯示於公開時間軸",
   "privacy.public.short": "公開",
-  "privacy.unlisted.long": "公開,但不會顯示在公開時間軸",
+  "privacy.unlisted.long": "公開,但不會顯示於公開時間軸",
   "privacy.unlisted.short": "不公開",
   "refresh": "重新整理",
   "regeneration_indicator.label": "載入中…",
-  "regeneration_indicator.sublabel": "您的主頁時間軸正在準備中!",
+  "regeneration_indicator.sublabel": "您的首頁時間軸正在準備中!",
   "relative_time.days": "{number} 天",
   "relative_time.full.days": "{number, plural, one {# 天} other {# 天}}前",
   "relative_time.full.hours": "{number, plural, one {# 小時} other {# 小時}}前",
   "relative_time.full.just_now": "剛剛",
   "relative_time.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}前",
   "relative_time.full.seconds": "{number, plural, one {# 秒} other {# 秒}}前",
-  "relative_time.hours": "{number}小時前",
+  "relative_time.hours": "{number} 小時前",
   "relative_time.just_now": "剛剛",
-  "relative_time.minutes": "{number} 分前",
+  "relative_time.minutes": "{number} 分鐘前",
   "relative_time.seconds": "{number} 秒",
   "relative_time.today": "今天",
   "reply_indicator.cancel": "取消",
@@ -401,7 +401,7 @@
   "report.close": "已完成",
   "report.comment.title": "有什麼其他您想讓我們知道的嗎?",
   "report.forward": "轉寄到 {target}",
-  "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?",
+  "report.forward_hint": "這個帳戶屬於其他伺服器。要像該伺服器發送匿名的檢舉訊息嗎?",
   "report.mute": "靜音",
   "report.mute_explanation": "您將不再看到他們的嘟文。他們仍能可以跟隨您以及察看您的嘟文,並且不會知道他們已被靜音。",
   "report.next": "繼續",
@@ -425,7 +425,7 @@
   "report.thanks.title": "不想再看到這個?",
   "report.thanks.title_actionable": "感謝您的檢舉,我們將會著手處理。",
   "report.unfollow": "取消跟隨 @{name}",
-  "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁再見到他們的嘟文,請取消跟隨。",
+  "report.unfollow_explanation": "您正在跟隨此帳號。如不欲於首頁時間軸再見到他們的嘟文,請取消跟隨。",
   "search.placeholder": "搜尋",
   "search_popout.search_format": "進階搜尋格式",
   "search_popout.tips.full_text": "輸入簡單的文字,搜尋由您撰寫、最愛、轉嘟或提您的嘟文,以及與關鍵詞匹配的使用者名稱、帳戶顯示名稱和主題標籤。",
@@ -472,7 +472,7 @@
   "status.reblog_private": "轉嘟給原有關注者",
   "status.reblogged_by": "{name} 轉嘟了",
   "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
-  "status.redraft": "刪除 & 編輯",
+  "status.redraft": "刪除並重新編輯",
   "status.remove_bookmark": "移除書籤",
   "status.reply": "回覆",
   "status.replyAll": "回覆討論串",
@@ -494,9 +494,9 @@
   "tabs_bar.local_timeline": "本機",
   "tabs_bar.notifications": "通知",
   "tabs_bar.search": "搜尋",
-  "time_remaining.days": "剩餘{number, plural, one {# 天} other {# 天}}",
-  "time_remaining.hours": "剩餘{number, plural, one {# 小時} other {# 小時}}",
-  "time_remaining.minutes": "剩餘{number, plural, one {# 分鐘} other {# 分鐘}}",
+  "time_remaining.days": "剩餘 {number, plural, one {# 天} other {# 天}}",
+  "time_remaining.hours": "剩餘 {number, plural, one {# 小時} other {# 小時}}",
+  "time_remaining.minutes": "剩餘 {number, plural, one {# 分鐘} other {# 分鐘}}",
   "time_remaining.moments": "剩餘時間",
   "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
   "timeline_hint.remote_resource_not_displayed": "不會顯示來自其他伺服器的 {resource}",
@@ -515,10 +515,11 @@
   "upload_error.poll": "不允許在投票中上傳檔案。",
   "upload_form.audio_description": "描述內容給聽障人士",
   "upload_form.description": "為視障人士增加文字說明",
+  "upload_form.description_missing": "No description added",
   "upload_form.edit": "編輯",
   "upload_form.thumbnail": "更改預覽圖",
   "upload_form.undo": "刪除",
-  "upload_form.video_description": "描述給聽障或視障人士",
+  "upload_form.video_description": "描述內容給聽障或視障人士",
   "upload_modal.analyzing_picture": "正在分析圖片…",
   "upload_modal.apply": "套用",
   "upload_modal.applying": "正在套用⋯⋯",
diff --git a/app/javascript/mastodon/reducers/timelines.js b/app/javascript/mastodon/reducers/timelines.js
index 53a644e47..d72109e69 100644
--- a/app/javascript/mastodon/reducers/timelines.js
+++ b/app/javascript/mastodon/reducers/timelines.js
@@ -171,6 +171,17 @@ const updateTop = (state, timeline, top) => {
   }));
 };
 
+const reconnectTimeline = (state, usePendingItems) => {
+  if (state.get('online')) {
+    return state;
+  }
+
+  return state.withMutations(mMap => {
+    mMap.update(usePendingItems ? 'pendingItems' : 'items', items => items.first() ? items.unshift(null) : items);
+    mMap.set('online', true);
+  });
+};
+
 export default function timelines(state = initialState, action) {
   switch(action.type) {
   case TIMELINE_LOAD_PENDING:
@@ -196,7 +207,7 @@ export default function timelines(state = initialState, action) {
   case TIMELINE_SCROLL_TOP:
     return updateTop(state, action.timeline, action.top);
   case TIMELINE_CONNECT:
-    return state.update(action.timeline, initialTimeline, map => map.set('online', true));
+    return state.update(action.timeline, initialTimeline, map => reconnectTimeline(map, action.usePendingItems));
   case TIMELINE_DISCONNECT:
     return state.update(
       action.timeline,
diff --git a/app/lib/user_settings_decorator.rb b/app/lib/user_settings_decorator.rb
index d8015e50d..d339e078c 100644
--- a/app/lib/user_settings_decorator.rb
+++ b/app/lib/user_settings_decorator.rb
@@ -43,6 +43,7 @@ class UserSettingsDecorator
     user.settings['use_pending_items']   = use_pending_items_preference if change?('setting_use_pending_items')
     user.settings['trends']              = trends_preference if change?('setting_trends')
     user.settings['crop_images']         = crop_images_preference if change?('setting_crop_images')
+    user.settings['always_send_emails']  = always_send_emails_preference if change?('setting_always_send_emails')
   end
 
   def merged_notification_emails
@@ -157,6 +158,10 @@ class UserSettingsDecorator
     boolean_cast_setting 'setting_crop_images'
   end
 
+  def always_send_emails_preference
+    boolean_cast_setting 'setting_always_send_emails'
+  end
+
   def boolean_cast_setting(key)
     ActiveModel::Type::Boolean.new.cast(settings[key])
   end
diff --git a/app/models/trends/base.rb b/app/models/trends/base.rb
index 7ed13228d..200f8d635 100644
--- a/app/models/trends/base.rb
+++ b/app/models/trends/base.rb
@@ -37,12 +37,12 @@ class Trends::Base
     Trends::Query.new(key_prefix, klass)
   end
 
-  def score(id)
-    redis.zscore("#{key_prefix}:all", id) || 0
+  def score(id, locale: nil)
+    redis.zscore([key_prefix, 'all', locale].compact.join(':'), id) || 0
   end
 
-  def rank(id)
-    redis.zrevrank("#{key_prefix}:allowed", id)
+  def rank(id, locale: nil)
+    redis.zrevrank([key_prefix, 'allowed', locale].compact.join(':'), id)
   end
 
   def currently_trending_ids(allowed, limit)
@@ -65,8 +65,8 @@ class Trends::Base
   end
 
   def trim_older_items
-    redis.zremrangebyscore("#{key_prefix}:all", '-inf', '(1')
-    redis.zremrangebyscore("#{key_prefix}:allowed", '-inf', '(1')
+    redis.zremrangebyscore("#{key_prefix}:all", '-inf', '(0.3')
+    redis.zremrangebyscore("#{key_prefix}:allowed", '-inf', '(0.3')
   end
 
   def score_at_rank(rank)
diff --git a/app/models/trends/links.rb b/app/models/trends/links.rb
index 62308e706..5f046643a 100644
--- a/app/models/trends/links.rb
+++ b/app/models/trends/links.rb
@@ -30,7 +30,6 @@ class Trends::Links < Trends::Base
   def refresh(at_time = Time.now.utc)
     preview_cards = PreviewCard.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq)
     calculate_scores(preview_cards, at_time)
-    trim_older_items
   end
 
   def request_review
@@ -101,6 +100,8 @@ class Trends::Links < Trends::Base
       })
     end
 
+    trim_older_items
+
     # Clean up localized sets by calculating the intersection with the main
     # set. We do this instead of just deleting the localized sets to avoid
     # having moments where the API returns empty results
@@ -108,7 +109,7 @@ class Trends::Links < Trends::Base
     redis.pipelined do
       Trends.available_locales.each do |locale|
         redis.zinterstore("#{key_prefix}:all:#{locale}", ["#{key_prefix}:all:#{locale}", "#{key_prefix}:all"], aggregate: 'max')
-        redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:all"], aggregate: 'max')
+        redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:allowed"], aggregate: 'max')
       end
     end
   end
diff --git a/app/models/trends/query.rb b/app/models/trends/query.rb
index 231b65228..cd5571bc6 100644
--- a/app/models/trends/query.rb
+++ b/app/models/trends/query.rb
@@ -14,8 +14,8 @@ class Trends::Query
     @records = []
     @loaded  = false
     @allowed = false
-    @limit   = -1
-    @offset  = 0
+    @limit   = nil
+    @offset  = nil
   end
 
   def allowed!
@@ -59,7 +59,7 @@ class Trends::Query
     @records
   end
 
-  delegate :each, :empty?, :first, :last, to: :records
+  delegate :each, :empty?, :first, :last, :size, to: :records
 
   def to_ary
     records.dup
@@ -73,7 +73,10 @@ class Trends::Query
     if tmp_ids.empty?
       klass.none
     else
-      klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering')
+      scope = klass.joins("join unnest(array[#{tmp_ids.join(',')}]) with ordinality as x (id, ordering) on #{klass.table_name}.id = x.id").reorder('x.ordering')
+      scope = scope.offset(@offset) if @offset.present?
+      scope = scope.limit(@limit) if @limit.present?
+      scope
     end
   end
 
@@ -93,7 +96,7 @@ class Trends::Query
   end
 
   def ids
-    redis.zrevrange(key, @offset, @limit.positive? ? @limit - 1 : @limit).map(&:to_i)
+    redis.zrevrange(key, 0, -1).map(&:to_i)
   end
 
   def perform_queries
diff --git a/app/models/trends/statuses.rb b/app/models/trends/statuses.rb
index e9c48a06b..0ebda0fe1 100644
--- a/app/models/trends/statuses.rb
+++ b/app/models/trends/statuses.rb
@@ -6,7 +6,7 @@ class Trends::Statuses < Trends::Base
   self.default_options = {
     threshold: 5,
     review_threshold: 3,
-    score_halflife: 2.hours.freeze,
+    score_halflife: 6.hours.freeze,
   }
 
   class Query < Trends::Query
@@ -22,25 +22,11 @@ class Trends::Statuses < Trends::Base
     private
 
     def apply_scopes(scope)
-      scope.includes(:account)
-    end
-
-    def perform_queries
-      return super if @account.nil?
-
-      statuses        = super
-      account_ids     = statuses.map(&:account_id)
-      account_domains = statuses.map(&:account_domain)
-
-      preloaded_relations = {
-        blocking: Account.blocking_map(account_ids, @account.id),
-        blocked_by: Account.blocked_by_map(account_ids, @account.id),
-        muting: Account.muting_map(account_ids, @account.id),
-        following: Account.following_map(account_ids, @account.id),
-        domain_blocking_by_domain: Account.domain_blocking_map_by_domain(account_domains, @account.id),
-      }
-
-      statuses.reject { |status| StatusFilter.new(status, @account, preloaded_relations).filtered? }
+      if @account.nil?
+        scope
+      else
+        scope.not_excluded_by_account(@account).not_domain_blocked_by_account(@account)
+      end
     end
   end
 
@@ -62,7 +48,6 @@ class Trends::Statuses < Trends::Base
   def refresh(at_time = Time.now.utc)
     statuses = Status.where(id: (recently_used_ids(at_time) + currently_trending_ids(false, -1)).uniq).includes(:account, :media_attachments)
     calculate_scores(statuses, at_time)
-    trim_older_items
   end
 
   def request_review
@@ -125,13 +110,15 @@ class Trends::Statuses < Trends::Base
         })
       end
 
+      trim_older_items
+
       # Clean up localized sets by calculating the intersection with the main
       # set. We do this instead of just deleting the localized sets to avoid
       # having moments where the API returns empty results
 
       Trends.available_locales.each do |locale|
         redis.zinterstore("#{key_prefix}:all:#{locale}", ["#{key_prefix}:all:#{locale}", "#{key_prefix}:all"], aggregate: 'max')
-        redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:all"], aggregate: 'max')
+        redis.zinterstore("#{key_prefix}:allowed:#{locale}", ["#{key_prefix}:allowed:#{locale}", "#{key_prefix}:allowed"], aggregate: 'max')
       end
     end
   end
diff --git a/app/models/user.rb b/app/models/user.rb
index 5dd93519c..5c1f9504a 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -130,7 +130,7 @@ class User < ApplicationRecord
            :reduce_motion, :system_font_ui, :noindex, :flavour, :skin, :display_media, :hide_followers_count,
            :expand_spoilers, :default_language, :aggregate_reblogs, :show_application,
            :advanced_layout, :use_blurhash, :use_pending_items, :trends, :crop_images,
-           :disable_swiping, :default_content_type, :system_emoji_font,
+           :disable_swiping, :always_send_emails, :default_content_type, :system_emoji_font,
            to: :settings, prefix: :setting, allow_nil: false
 
   attr_reader :invite_code
diff --git a/app/services/notify_service.rb b/app/services/notify_service.rb
index a90f17cfd..d30b33876 100644
--- a/app/services/notify_service.rb
+++ b/app/services/notify_service.rb
@@ -1,6 +1,8 @@
 # frozen_string_literal: true
 
 class NotifyService < BaseService
+  include Redisable
+
   def call(recipient, type, activity)
     @recipient    = recipient
     @activity     = activity
@@ -8,10 +10,15 @@ class NotifyService < BaseService
 
     return if recipient.user.nil? || blocked?
 
-    create_notification!
+    @notification.save!
+
+    # It's possible the underlying activity has been deleted
+    # between the save call and now
+    return if @notification.activity.nil?
+
     push_notification!
     push_to_conversation! if direct_message?
-    send_email! if email_enabled?
+    send_email! if email_needed?
   rescue ActiveRecord::RecordInvalid
     nil
   end
@@ -92,8 +99,8 @@ class NotifyService < BaseService
   end
 
   def blocked?
-    blocked   = @recipient.suspended?                            # Skip if the recipient account is suspended anyway
-    blocked ||= from_self? && @notification.type != :poll        # Skip for interactions with self
+    blocked   = @recipient.suspended?
+    blocked ||= from_self? && @notification.type != :poll
 
     return blocked if message? && from_staff?
 
@@ -117,38 +124,52 @@ class NotifyService < BaseService
     end
   end
 
-  def create_notification!
-    @notification.save!
+  def push_notification!
+    push_to_streaming_api! if subscribed_to_streaming_api?
+    push_to_web_push_subscriptions!
   end
 
-  def push_notification!
-    return if @notification.activity.nil?
+  def push_to_streaming_api!
+    redis.publish("timeline:#{@recipient.id}:notifications", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification)))
+  end
 
-    Redis.current.publish("timeline:#{@recipient.id}:notifications", Oj.dump(event: :notification, payload: InlineRenderer.render(@notification, @recipient, :notification)))
-    send_push_notifications!
+  def subscribed_to_streaming_api?
+    redis.exists?("subscribed:timeline:#{@recipient.id}") || redis.exists?("subscribed:timeline:#{@recipient.id}:notifications")
   end
 
   def push_to_conversation!
-    return if @notification.activity.nil?
     AccountConversation.add_status(@recipient, @notification.target_status)
   end
 
-  def send_push_notifications!
-    subscriptions_ids = ::Web::PushSubscription.where(user_id: @recipient.user.id)
-                                               .select { |subscription| subscription.pushable?(@notification) }
-                                               .map(&:id)
+  def push_to_web_push_subscriptions!
+    ::Web::PushNotificationWorker.push_bulk(web_push_subscriptions.select { |subscription| subscription.pushable?(@notification) }) { |subscription| [subscription.id, @notification.id] }
+  end
 
-    ::Web::PushNotificationWorker.push_bulk(subscriptions_ids) do |subscription_id|
-      [subscription_id, @notification.id]
-    end
+  def web_push_subscriptions
+    @web_push_subscriptions ||= ::Web::PushSubscription.where(user_id: @recipient.user.id).to_a
+  end
+
+  def subscribed_to_web_push?
+    web_push_subscriptions.any?
   end
 
   def send_email!
-    return if @notification.activity.nil?
-    NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes)
+    NotificationMailer.public_send(@notification.type, @recipient, @notification).deliver_later(wait: 2.minutes) if NotificationMailer.respond_to?(@notification.type)
+  end
+
+  def email_needed?
+    (!recipient_online? || always_send_emails?) && send_email_for_notification_type?
+  end
+
+  def recipient_online?
+    subscribed_to_streaming_api? || subscribed_to_web_push?
+  end
+
+  def always_send_emails?
+    @recipient.user.settings.always_send_emails
   end
 
-  def email_enabled?
+  def send_email_for_notification_type?
     @recipient.user.settings.notification_emails[@notification.type.to_s]
   end
 end
diff --git a/app/views/admin/trends/links/_preview_card.html.haml b/app/views/admin/trends/links/_preview_card.html.haml
index 2e6a0c62f..7d4897c7e 100644
--- a/app/views/admin/trends/links/_preview_card.html.haml
+++ b/app/views/admin/trends/links/_preview_card.html.haml
@@ -18,9 +18,9 @@
 
       = t('admin.trends.links.shared_by_over_week', count: preview_card.history.reduce(0) { |sum, day| sum + day.accounts })
 
-      - if preview_card.trendable? && (rank = Trends.links.rank(preview_card.id))
+      - if preview_card.trendable? && (rank = Trends.links.rank(preview_card.id, locale: params[:locale].presence))

-        %abbr{ title: t('admin.trends.tags.current_score', score: Trends.links.score(preview_card.id)) }= t('admin.trends.tags.trending_rank', rank: rank + 1)
+        %abbr{ title: t('admin.trends.tags.current_score', score: Trends.links.score(preview_card.id, locale: params[:locale].presence)) }= t('admin.trends.tags.trending_rank', rank: rank + 1)
 
         - if preview_card.decaying?

diff --git a/app/views/admin/trends/statuses/_status.html.haml b/app/views/admin/trends/statuses/_status.html.haml
index 0c463c6b1..e4d75bbb9 100644
--- a/app/views/admin/trends/statuses/_status.html.haml
+++ b/app/views/admin/trends/statuses/_status.html.haml
@@ -25,9 +25,9 @@
     - if status.trendable? && !status.account.discoverable?

       = t('admin.trends.statuses.not_discoverable')
-    - if status.trendable? && (rank = Trends.statuses.rank(status.id))
+    - if status.trendable? && (rank = Trends.statuses.rank(status.id, locale: params[:locale].presence))

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

       = t('admin.trends.pending_review')
diff --git a/app/views/settings/preferences/notifications/show.html.haml b/app/views/settings/preferences/notifications/show.html.haml
index e01cd077f..38e8b171e 100644
--- a/app/views/settings/preferences/notifications/show.html.haml
+++ b/app/views/settings/preferences/notifications/show.html.haml
@@ -28,6 +28,9 @@
         = ff.input :trending_status, as: :boolean, wrapper: :with_label
 
   .fields-group
+    = f.input :setting_always_send_emails, as: :boolean, wrapper: :with_label
+
+  .fields-group
     = f.simple_fields_for :notification_emails, hash_to_object(current_user.settings.notification_emails) do |ff|
       = ff.input :digest, as: :boolean, wrapper: :with_label
 
diff --git a/config/application.rb b/config/application.rb
index bed935ce3..a1ba71f61 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -40,7 +40,6 @@ require_relative '../lib/devise/two_factor_pam_authenticatable'
 require_relative '../lib/chewy/strategy/custom_sidekiq'
 require_relative '../lib/webpacker/manifest_extensions'
 require_relative '../lib/webpacker/helper_extensions'
-require_relative '../lib/action_dispatch/cookie_jar_extensions'
 require_relative '../lib/rails/engine_extensions'
 require_relative '../lib/active_record/database_tasks_extensions'
 require_relative '../lib/active_record/batches'
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index f41b8dfff..7139bcea7 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -60,6 +60,7 @@ ignore_unused:
   - 'admin.accounts.roles.*'
   - 'admin.action_logs.actions.*'
   - 'themes.*'
+  - 'admin_mailer.new_appeal.actions.*'
   - 'statuses.attached.*'
   - 'move_handler.carry_{mutes,blocks}_over_text'
   - 'notification_mailer.*'
diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb
index b434c68fa..c55bea7a7 100644
--- a/config/initializers/devise.rb
+++ b/config/initializers/devise.rb
@@ -8,7 +8,6 @@ Warden::Manager.after_set_user except: :fetch do |user, warden|
     value: session_id,
     expires: 1.year.from_now,
     httponly: true,
-    secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
     same_site: :lax,
   }
 end
@@ -23,7 +22,6 @@ Warden::Manager.after_fetch do |user, warden|
       value: session_id,
       expires: 1.year.from_now,
       httponly: true,
-      secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
       same_site: :lax,
     }
   else
@@ -265,7 +263,7 @@ Devise.setup do |config|
 
   # Options to be passed to the created cookie. For instance, you can set
   # secure: true in order to force SSL only cookies.
-  config.rememberable_options = { secure: true }
+  config.rememberable_options = {}
 
   # ==> Configuration for :validatable
   # Range for password length.
diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb
index 3d9bf96fd..210964b1f 100644
--- a/config/initializers/session_store.rb
+++ b/config/initializers/session_store.rb
@@ -2,5 +2,5 @@
 
 Rails.application.config.session_store :cookie_store,
   key: '_mastodon_session',
-  secure: (Rails.env.production? || ENV['LOCAL_HTTPS'] == 'true'),
+  secure: false, # All cookies have their secure flag set by the force_ssl option in production
   same_site: :lax
diff --git a/config/locales/ar.yml b/config/locales/ar.yml
index ba66c5749..e8db63f9d 100644
--- a/config/locales/ar.yml
+++ b/config/locales/ar.yml
@@ -209,7 +209,6 @@ ar:
       security_measures:
         only_password: كلمة المرور فقط
         password_and_2fa: كلمة المرور و 2FA
-        password_and_sign_in_token: كلمة المرور ورمز البريد الإلكتروني
       sensitive: حساس
       sensitized: مُعَين كمنشور حساس
       shared_inbox_url: رابط الصندوق المُشترَك للبريد الوارد
@@ -460,10 +459,22 @@ ar:
       title: اقتراحات المتابعة
       unsuppress: إستعادة إقتراحات المتابعة
     instances:
+      availability:
+        title: التوفر
       back_to_all: الكل
       back_to_limited: محدود
       back_to_warning: تحذير
       by_domain: النطاق
+      content_policies:
+        comment: ملاحظة داخلية
+        policies:
+          reject_media: رفض الوسائط
+          reject_reports: رفض الشكاوى
+        policy: القواعد
+        reason: السبب العلني
+        title: سياسات المحتوى
+      dashboard:
+        instance_languages_dimension: اللغات الأكثر استخدامًا
       delivery:
         all: الكل
         clear: مسح أخطاء التسليم
@@ -556,6 +567,7 @@ ar:
       forwarded: أُعيد توجيهه
       forwarded_to: أُعيد توجيهه إلى %{domain}
       mark_as_resolved: اعتبار الشكوى كمحلولة
+      mark_as_sensitive: تعيينه كمنشور حساس
       mark_as_unresolved: علم كغير محلولة
       no_one_assigned: لا أحد
       notes:
@@ -721,6 +733,12 @@ ar:
       preview_card_providers:
         title: الناشرون
       rejected: مرفوض
+      statuses:
+        allow: السماح بالمنشور
+        allow_account: السماح للناشر
+        disallow: رفض المنشور
+        disallow_account: رفض الناشر
+        title: المنشورات المتداولة
       tags:
         current_score: التقييم الحالي %{score}
         dashboard:
@@ -764,6 +782,8 @@ ar:
       body_remote: أبلغ شخص ما من %{domain} عن %{target}
       subject: تقرير جديد ل%{instance} (#%{id})
     new_trends:
+      new_trending_links:
+        title: الروابط المتداولة
       new_trending_statuses:
         title: المنشورات الشائعة
       new_trending_tags:
@@ -841,6 +861,7 @@ ar:
     status:
       account_status: حالة الحساب
       confirming: في انتظار اكتمال تأكيد البريد الإلكتروني.
+      functional: حسابك يعمل بشكل كامل.
       pending: إن طلبك قيد المراجعة من قبل فريقنا. قد يستغرق هذا بعض الوقت. سوف تتلقى بريدا إلكترونيا إذا تمت الموافقة على طلبك.
       redirecting_to: حسابك غير نشط لأنه تم تحويله حاليا إلى %{acct}.
     too_fast: تم إرسال النموذج بسرعة كبيرة، حاول مرة أخرى.
@@ -1121,12 +1142,12 @@ ar:
         two: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
         zero: رائع، لقد قام بمتابَعتك %{count} مُتابِعون جُدد أثناء فترة غيابك عن ماستدون!
       subject:
-        few: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        many: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        one: "إشعار واحد 1 منذ آخر زيارة لك لـ \U0001F418"
-        other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        two: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
-        zero: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى \U0001F418"
+        few: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى 🐘"
+        many: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى 🐘"
+        one: "إشعار واحد 1 منذ آخر زيارة لك لـ 🐘"
+        other: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى 🐘"
+        two: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى 🐘"
+        zero: "%{count} إشعارات جديدة منذ آخر زيارة لك إلى 🐘"
       title: أثناء فترة غيابك...
     favourite:
       body: 'أُعجب %{name} بمنشورك:'
@@ -1302,7 +1323,7 @@ ar:
     preferences: التفضيلات
     profile: الملف التعريفي
     relationships: المتابِعون والمتابَعون
-    statuses_cleanup: حذف المنشور الآلي
+    statuses_cleanup: الحذف الآلي للمنشورات
     two_factor_authentication: المُصادقة بخُطوَتَيْن
     webauthn_authentication: مفاتيح الأمان
   statuses:
@@ -1339,6 +1360,7 @@ ar:
       other: 'يحتوي على وسوم غير مسموح بها: %{tags}'
       two: 'يحتوي على وسوم غير مسموح بها: %{tags}'
       zero: 'يحتوي على وسوم غير مسموح بها: %{tags}'
+    edited_at_html: عُدّل في %{date}
     errors:
       in_reply_not_found: إنّ المنشور الذي تحاول الرد عليه غير موجود على ما يبدو.
     open_in_web: افتح في الويب
@@ -1405,7 +1427,7 @@ ar:
       '31556952': سنة واحدة
       '5259492': شهران
       '604800': أسبوع
-      '63113904': أسبوعان
+      '63113904': سنتان
       '7889238': 3 أشهر
     min_age_label: عتبة العمر
     min_favs: إبقاء المشاركات المفضلة أكثر من
@@ -1414,7 +1436,7 @@ ar:
     min_reblogs_hint: لن تُحذف أي من منشوراتك التي أعيد مشاركتها أكثر من هذا العدد من المرات. اتركه فارغاً لحذف المنشورات بغض النظر عن عدد إعادات المشاركة
   stream_entries:
     pinned: منشور مثبّت
-    reblogged: رقّاه
+    reblogged: شارَكَه
     sensitive_content: محتوى حساس
   tags:
     does_not_match_previous_name: لا يطابق الإسم السابق
@@ -1538,12 +1560,9 @@ ar:
       explanation: لقد قمت بطلب نسخة كاملة لحسابك على ماستدون. إنها متوفرة الآن للتنزيل!
       subject: نسخة بيانات حسابك جاهزة للتنزيل
       title: المغادرة بأرشيف الحساب
-    sign_in_token:
-      details: 'وفيما يلي تفاصيل المحاولة:'
-      explanation: 'اكتشفنا محاولة لتسجيل الدخول إلى حسابك من عنوان IP غير معروف. إذا كان هذا أنت ، يرجى إدخال رمز الأمان أدناه في صفحة تحدي تسجيل الدخول:'
-      further_actions: 'إذا لم يكن ذلك صادر منك، يرجى تغيير كلمتك السرية وتنشيط المصادقة الثنائية في حسابك. يمكنك القيام بذلك هنا:'
-      subject: الرجاء تأكيد محاولة الولوج
-      title: محاولة الولوج
+    suspicious_sign_in:
+      change_password: غيّر كلمتك السرية
+      subject: تم النفاذ عبر حسابك من خلال عنوان إيبي جديد
     warning:
       appeal: تقديم طعن
       appeal_description: إذا كنت تعتقد أن هذا خطأ، يمكنك تقديم طعن إلى فريق %{instance}.
@@ -1554,6 +1573,7 @@ ar:
         sensitive: من الآن فصاعدا، سيتم وضع علامة على جميع ملفات الوسائط التي يتم تحميلها على أنها حساسة وستكون مخفية خلف تحذير يُنقر.
         silence: لا يزال بإمكانك استخدام حسابك ولكن فقط الأشخاص الذين يتابعونك فقط يمكنهم رؤية منشوراتك على هذا الخادم، وقد يتم استبعادك من ميزات الاكتشاف المختلفة. قد يتبعك آخرون على كل حال يدوياً.
       reason: 'السبب:'
+      statuses: 'المنشورات المذكورة:'
       subject:
         disable: تم تجميد حسابك %{acct}
         none: تحذير إلى %{acct}
@@ -1586,13 +1606,10 @@ ar:
       title: أهلاً بك، %{name}!
   users:
     follow_limit_reached: لا يمكنك متابعة أكثر مِن %{limit} أشخاص
-    generic_access_help_html: صادفت مشكلة في الوصول إلى حسابك؟ اتصل بـ %{email} للحصول على المساعدة
     invalid_otp_token: رمز المصادقة بخطوتين غير صالح
-    invalid_sign_in_token: رمز الآمان غير صحيح
     otp_lost_help_html: إن فقدتَهُما ، يمكنك الاتصال بـ %{email}
     seamless_external_login: لقد قمت بتسجيل الدخول عبر خدمة خارجية، إنّ إعدادات الكلمة السرية و البريد الإلكتروني غير متوفرة.
     signed_in_as: 'تم تسجيل دخولك بصفة:'
-    suspicious_sign_in_confirmation: يبدو أنك لم تقم بتسجيل الدخول عبر هذا الجهاز من قبل، ولم تقم بتسجيل الدخول لفترة منذ مدة، لذلك نقوم بإرسال رمز الأمان إلى عنوان بريدك الإلكتروني للتأكد من أنه أنت من قام بالطلب.
   verification:
     explanation_html: 'يمكنك <strong>التحقق من نفسك كمالك لروابط البيانات التعريفية على صفحتك الشخصية</strong>. لذلك، يجب أن يحتوي الموقع المقترِن على رابط إلى صفحتك التعريفية الشخصية على ماستدون. الرابط الخلفي <strong>يجب أن</strong> يحتوي على رمز <code>rel="me"</code>. محتوى النص في الرابط غير مهم. على سبيل المثال:'
     verification: التحقق
diff --git a/config/locales/bg.yml b/config/locales/bg.yml
index e017dd0e2..4fd970308 100644
--- a/config/locales/bg.yml
+++ b/config/locales/bg.yml
@@ -243,8 +243,8 @@ bg:
         one: Имаш един нов последовател! Ура!
         other: Имаш %{count} нови последователи! Изумително!
       subject:
-        one: "1 ново известие от последното ти посещение \U0001F418"
-        other: "%{count} нови известия от последното ти посещение \U0001F418"
+        one: "1 ново известие от последното ти посещение 🐘"
+        other: "%{count} нови известия от последното ти посещение 🐘"
     favourite:
       body: 'Публикацията ти беше харесана от %{name}:'
       subject: "%{name} хареса твоята публикация"
diff --git a/config/locales/br.yml b/config/locales/br.yml
index 618ea48b5..07e12a531 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -314,7 +314,6 @@ br:
       title: Degemer mat e bourzh, %{name}!
   users:
     signed_in_as: 'Aet-tre evel:'
-    suspicious_sign_in_confirmation: N'ez aec'h ket tre d'ho kont deus ar benveg-se araok, neuze eo kaset deoc'h ur c'hod surentez d'ho postel evit bezañ sur c'hwi eo.
   verification:
     explanation_html: 'Gallout a rit <strong>gwiriañ c''hwi a zo perc''henn. ez liammoù metadata ho profil</strong>. Ret eo d''al lec''hienn web staget enderc''hel ul liamm evit mont d''ho profil Mastodon. <strong>Ret eo<strong> d''al liamm-se enderc''hel un doarenn <code>rel="me"</code>. Ne ra forzh an destenn a zo e-barzh al liamm. Setu ur skouer:'
     verification: Amprouadur
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index d7a8a4858..0cafd20d0 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -199,7 +199,6 @@ ca:
       security_measures:
         only_password: Només contrasenya
         password_and_2fa: Contrasenya i 2FA
-        password_and_sign_in_token: Contrasenya i token per correu
       sensitive: Sensible
       sensitized: marcar com a sensible
       shared_inbox_url: URL de la safata d'entrada compartida
@@ -1237,8 +1236,8 @@ ca:
         one: A més, has adquirit un nou seguidor durant la teva absència! Visca!
         other: A més, has adquirit %{count} nous seguidors mentre estaves fora! Increïble!
       subject:
-        one: "1 notificació nova des de la darrera visita \U0001F418"
-        other: "%{count} notificacions noves des de la darrera visita \U0001F418"
+        one: "1 notificació nova des de la darrera visita 🐘"
+        other: "%{count} notificacions noves des de la darrera visita 🐘"
       title: Durant la teva absència…
     favourite:
       body: "%{name} ha marcat com a favorit el teu estat:"
@@ -1633,12 +1632,13 @@ ca:
       explanation: Has sol·licitat una copia completa del teu compte Mastodon. Ara ja està a punt per a descàrrega!
       subject: El teu arxiu està preparat per a descàrrega
       title: Recollida del arxiu
-    sign_in_token:
-      details: 'Aquí es mostren els detalls del intent:'
-      explanation: 'Hem detectat un intent d’inici de sessió al teu compte des d’una IP desconeguda. Si ets tu, si us plau introdueix el codi de seguretat a sota, en la pàgina de desafiament d’inici de sessió:'
-      further_actions: 'Si no has estat tu, si us plau canvia la contrasenya i activa l’autenticació de dos factors del teu compte. Pots fer-ho aquí:'
-      subject: Si us plau confirma l’intent d’inici de sessió
-      title: Intent d’inici de sessió
+    suspicious_sign_in:
+      change_password: canvia la teva contrasenya
+      details: 'Aquí estan els detalls del inici de sessió:'
+      explanation: Hem detectat un inici de sessió del teu compte des d'una nova adreça IP.
+      further_actions_html: Si no has estat tu, recomanem que tu %{action} immediatament i activis l'autenticació de dos-factors per a mantenir el teu compte segur.
+      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}.
@@ -1689,13 +1689,10 @@ ca:
       title: Benvingut a bord, %{name}!
   users:
     follow_limit_reached: No pots seguir més de %{limit} persones
-    generic_access_help_html: Problemes accedint al teu compte? Pots contactar amb %{email} per a demanar assistència
     invalid_otp_token: El codi de dos factors no és correcte
-    invalid_sign_in_token: Codi de seguretat invàlid
     otp_lost_help_html: Si has perdut l'accés a tots dos pots contactar per %{email}
     seamless_external_login: Has iniciat sessió via un servei extern per tant els ajustos de contrasenya i correu electrònic no estan disponibles.
     signed_in_as: 'Sessió iniciada com a:'
-    suspicious_sign_in_confirmation: Aparentment no has iniciat sessió des d’aquest dispositiu abans i no ho has fet des de fa cert temps per tant t’enviarem un codi de seguretat al teu correu electrònic per a confirmar que ets tu.
   verification:
     explanation_html: 'Pots <strong>verificar-te com a propietari dels enllaços a les metadades del teu perfil</strong>. Per això, el lloc web enllaçat ha de contenir un enllaç al teu perfil de Mastodon. El vincle <strong>ha de</strong> tenir l''atribut <code>rel="me"</code>. El contingut del text de l''enllaç no importa. Aquí tens un exemple:'
     verification: Verificació
diff --git a/config/locales/ckb.yml b/config/locales/ckb.yml
index c7b26e23e..3ab2fc63d 100644
--- a/config/locales/ckb.yml
+++ b/config/locales/ckb.yml
@@ -837,8 +837,8 @@ ckb:
         one: لەکاتێک کە نەبوو ،شوێنکەوتوویێکی نوێت پەیداکرد،ئافەرم!
         other: کاتیک کە نەبووی %{count} شوێنکەوتوویێکی نوێت پەیدا کرد! چ باشە!
       subject:
-        one: "ئاگاداریێکی نووی لە دوایین سەردانی ئێوە\U0001F418"
-        other: "%{count} ئاگاداریێکی نوێ لە دوایین سەردانی ئێوە\U0001F418"
+        one: "ئاگاداریێکی نووی لە دوایین سەردانی ئێوە🐘"
+        other: "%{count} ئاگاداریێکی نوێ لە دوایین سەردانی ئێوە🐘"
       title: لە غیابی تۆدا...
     favourite:
       body: 'دۆخت پەسەندکراوە لەلایەن %{name}:'
@@ -1148,12 +1148,6 @@ ckb:
       explanation: ئێوە وشانێکی پاڵپشتی تەواوت لە هەژمارەکەی خۆت داوا کردووە، ئەم پاڵپشتییە ئێستا ئامادەی بارکردنە!
       subject: ئارشیڤی ئێوە ئامادەی داگرتنە
       title: وەرگرتنی ئارشیڤ
-    sign_in_token:
-      details: 'وردەکاریی هەوڵەکان:'
-      explanation: 'هەوڵێک بۆ هاتنە نێو هەژمارەکەتان لە ناونیسانێکی ئای‌پی پەیداکرا. گەر خۆتانن. تێپەڕوشەی پاراستن بۆ پەڕەی بەرنگاری دابین بکە:'
-      further_actions: 'گەر ئێوە نیین تکایە تێپەڕوشە بگۆڕە وە لێرەوە پەسەند بوونی دوو قۆناغی لە سەر هەژمارەکەتان چالاک بکەن:'
-      subject: تکایە دڵنیابە لە هەوڵدان بۆ چوونە ژوورەوە
-      title: هەوڵدان بۆ چوونە ژوورەوە
     warning:
       subject:
         disable: هەژمارەکەت %{acct} بەستراوە
@@ -1184,13 +1178,10 @@ ckb:
       title: بەخێربێیت، بەکارهێنەر %{name}!
   users:
     follow_limit_reached: ناتوانیت زیاتر لە %{limit} خەڵک پەیڕەو کەیت
-    generic_access_help_html: کێشەت هەیە لە گەیشتن بە هەژمارەکەت؟ دەتوانیت لەگەڵ %{email} بۆ یارمەتیدان پەیوەندی بگرن
     invalid_otp_token: کۆدی دوو-فاکتەر نادروستە
-    invalid_sign_in_token: کۆدی پاراستن دروست نیە
     otp_lost_help_html: گەر بەو دووڕێگا نەتوانی بچیتە ژوورەوە، لەوانەیە پەیوەندی بگری بە %{email} بۆ یارمەتی
     seamless_external_login: تۆ لە ڕێگەی خزمەتگوزاری دەرەکیەوە داخڵ بووی، بۆیە ڕێکبەندەکانی نهێنوشە و ئیمەیل بەردەست نین.
     signed_in_as: 'چوونە ژوورەوە وەک:'
-    suspicious_sign_in_confirmation: وادیارە تۆ پێشتر لەم ئامێرە نەچویتە ژوورەوە، و بۆ ماوەیەک نەچویتە ژوورەوە، بۆیە کۆدی پاراستن دەنێردرینە ناونیشانی ئیمەیڵەکەت بۆ دڵنیابوون لەوەی کە ئەوە تۆیت.
   verification:
     explanation_html: 'دەتوانیت <strong> خۆت بسەلمێنیت وەک خاوەنی لینکەکان لە مێتاداتای پرۆفایلەکەت</strong>. بۆ ئەمە، ماڵپەڕە لینککراوەکە پێویستە لینکێکی تێدا بێت بۆ پرۆفایلی ماستۆدۆنەکەت. بەستەری <strong> دەبێت </strong> هەبێت <code>="me"</code>. ناوەڕۆکی دەقی لینکەکە گرنگ نییە. ئەمە نموونەیەکە:'
     verification: ساغ کردنەوە
diff --git a/config/locales/co.yml b/config/locales/co.yml
index c09f4c24e..e39117e99 100644
--- a/config/locales/co.yml
+++ b/config/locales/co.yml
@@ -191,7 +191,6 @@ co:
       security_measures:
         only_password: Solu a chjave d'accessu
         password_and_2fa: Chjave d’accessu è A2F
-        password_and_sign_in_token: Chjave d’accessu è codice da l'e-mail
       sensitive: Sensibile
       sensitized: indicatu cum’è sensibile
       shared_inbox_url: URL di l’inbox spartuta
@@ -989,8 +988,8 @@ co:
         one: Avete ancu un’abbunatu novu!
         other: Avete ancu %{count} abbunati novi!
       subject:
-        one: "Una nutificazione nova dapoi à a vostr’ultima visita \U0001F418"
-        other: "%{count} nutificazione nove dapoi à a vostr’ultima visita \U0001F418"
+        one: "Una nutificazione nova dapoi à a vostr’ultima visita 🐘"
+        other: "%{count} nutificazione nove dapoi à a vostr’ultima visita 🐘"
       title: Dapoi l’ultima volta…
     favourite:
       body: "%{name} hà aghjuntu u vostru statutu à i so favuriti :"
@@ -1357,12 +1356,6 @@ co:
       explanation: Avete dumandatu un’archiviu cumpletu di u vostru contu Mastodon. Avà hè prontu per scaricà!
       subject: U vostru archiviu hè prontu à scaricà
       title: Archiviu prontu
-    sign_in_token:
-      details: 'Ditagli di u tentativu quì sottu:'
-      explanation: 'Avemu ditettatu un tentativu di cunnessione nant''à u vostru contu da un''indirizzu IP ch''ùn avemu micca ricunisciutu. S''ellu era voi, vi pricuremu d''entrà u codice di sicurità quì sottu nant''à a pagina di cunfirmazione di cunnessione:'
-      further_actions: 'S''ellu ùn era micca voi, duvete cambià a vostra chjave d''accessu è attivà l''identificazione à dui fattori nant''à u vostru contu. Pudete fà quessi quì:'
-      subject: Cunfirmate u tentativu di cunnessione
-      title: Tentativu di cunnessione
     warning:
       subject:
         disable: U vostru contu %{acct} hè statu ghjacciatu
@@ -1393,13 +1386,10 @@ co:
       title: Benvenutu·a, %{name}!
   users:
     follow_limit_reached: Ùn pidete seguità più di %{limit} conti
-    generic_access_help_html: Prublemi d'accessu à u vostru contu? Pudete cuntattà %{email} per ottene aiutu
     invalid_otp_token: U codice d’identificazione ùn hè currettu
-    invalid_sign_in_token: Codice di sicurità micca validu
     otp_lost_help_html: S’è voi avete persu i dui, pudete cuntattà %{email}
     seamless_external_login: Site cunnettatu·a dapoi un serviziu esternu, allora i parametri di chjave d’accessu è d’indirizzu e-mail ùn so micca dispunibili.
     signed_in_as: 'Cunnettatu·a cum’è:'
-    suspicious_sign_in_confirmation: Ci pare ch'ùn vi site mai cunnettatu·a da quess'apparechju, è ùn vi site micca cunnettatu·a dapoi una stonda, allora vi mandemu un codice di sicurità à u vostr'indirizzu e-mail per cunfirmà chì site voi.
   verification:
     explanation_html: 'Pudete <strong>verificavi cum''è u pruprietariu di i ligami in i metadati di u vostru prufile</strong>. Per quessa, u vostru situ deve avè un ligame versu a vostra pagina Mastodon. U ligame <strong>deve</strong> avè un''attributu <code>rel="me"</code>. U cuntenutu di u testu di u ligame ùn hè micca impurtante. Eccu un''esempiu:'
     verification: Verificazione
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 107aa9a0b..7cfc4f66f 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -16,6 +16,7 @@ cs:
     contact: Kontakt
     contact_missing: Nenastaveno
     contact_unavailable: Neuvedeno
+    continue_to_web: Pokračovat do webové aplikace
     discover_users: Objevujte uživatele
     documentation: Dokumentace
     federation_hint_html: S účtem na serveru %{instance} můžete sledovat lidi na jakémkoliv ze serverů Mastodon a dalších službách.
@@ -25,6 +26,8 @@ cs:
       Tento účet je virtuální aktér, který představuje server samotný, nikoliv účet jednotlivého uživatele.
       Používá se pro účely federace a nesmí být blokován, pokud nechcete blokovat celý server. V takovém případě použijte blokaci domény.
     learn_more: Zjistit více
+    logged_in_as_html: Aktuálně jste přihlášeni jako %{username}.
+    logout_before_registering: Již jste přihlášeni.
     privacy_policy: Zásady ochrany osobních údajů
     rules: Pravidla serveru
     rules_html: 'Níže je shrnutí pravidel, která musíte dodržovat, pokud chcete mít účet na tomto Mastodon serveru:'
@@ -119,6 +122,7 @@ cs:
       confirm: Potvrdit
       confirmed: Potvrzeno
       confirming: Potvrzuji
+      custom: Vlastní
       delete: Smazat data
       deleted: Smazáno
       demote: Degradovat
@@ -168,11 +172,12 @@ cs:
       not_subscribed: Neodebírá
       pending: Čeká na posouzení
       perform_full_suspension: Pozastavit
+      previous_strikes: Předchozí prohřešky
       previous_strikes_description_html:
-        few: Tento účet má <strong>%{count}</strong> strajky.
-        many: Tento účet má <strong>%{count}</strong> strajků.
-        one: Tento účet má <strong>jeden</strong> strajk.
-        other: Tento účet má <strong>%{count}</strong> strajků.
+        few: Tento účet má <strong>%{count}</strong> prohřešky.
+        many: Tento účet má <strong>%{count}</strong> prohřešků.
+        one: Tento účet má <strong>jeden</strong> prohřešek.
+        other: Tento účet má <strong>%{count}</strong> prohřešků.
       promote: Povýšit
       protocol: Protokol
       public: Veřejný
@@ -196,7 +201,7 @@ cs:
       roles:
         admin: Administrátor
         moderator: Moderátor
-        staff: Člen personálu
+        staff: Personál
         user: Uživatel
       search: Hledat
       search_same_email_domain: Ostatní uživatelé se stejnou e-mailovou doménou
@@ -204,7 +209,6 @@ cs:
       security_measures:
         only_password: Pouze heslo
         password_and_2fa: Heslo a 2FA
-        password_and_sign_in_token: Heslo a e-mailový token
       sensitive: Citlivý
       sensitized: označen jako citlivý
       shared_inbox_url: URL sdílené příchozí schránky
@@ -214,7 +218,9 @@ cs:
       silence: Omezit
       silenced: Omezen
       statuses: Příspěvky
+      strikes: Předchozí prohřešky
       subscribe: Odebírat
+      suspend: Pozastavit
       suspended: Uživatel pozastaven
       suspension_irreversible: Data tohoto účtu byla nevratně smazána. Účet můžete obnovit, aby byl použitelný, ale nebudou obnovena žádná jeho dřívější data.
       suspension_reversible_hint_html: Účet byl pozastaven a jeho data budou kompletně smazána %{date}. Do té doby může být tento účet kompletně obnoven do původního stavu. Chcete-li smazat všechna data účtu ihned, můžete tak učinit níže.
@@ -235,6 +241,7 @@ cs:
       whitelisted: Povoleno federovat
     action_logs:
       action_types:
+        approve_appeal: Schválit odvolání
         approve_user: Schválit uživatele
         assigned_to_self_report: Přiřadit hlášení
         change_email_user: Změnit uživateli e-mailovou adresu
@@ -242,16 +249,16 @@ cs:
         create_account_warning: Vytvořit varování
         create_announcement: Nové oznámení
         create_custom_emoji: Vytvořit vlastní emoji
-        create_domain_allow: Povolit doménu
-        create_domain_block: Zablokovat doménu
+        create_domain_allow: Vytvořit povolení domény
+        create_domain_block: Vytvořit blokaci domény
         create_email_domain_block: Zablokovat e-mailovou doménu
         create_ip_block: Vytvořit IP pravidlo
         create_unavailable_domain: Vytvořit nedostupnou doménu
         demote_user: Snížit roli uživatele
         destroy_announcement: Odstranit oznámení
         destroy_custom_emoji: Odstranit vlastní emoji
-        destroy_domain_allow: Odstranit povolenou doménu
-        destroy_domain_block: Odstranit blokování domény
+        destroy_domain_allow: Odstranit povolení domény
+        destroy_domain_block: Odstranit blokaci domény
         destroy_email_domain_block: Smazat blokaci e-mailové domény
         destroy_instance: Odmazat doménu
         destroy_ip_block: Smazat IP pravidlo
@@ -266,6 +273,7 @@ cs:
         enable_user: Povolit uživatele
         memorialize_account: Změna na „in memoriam“
         promote_user: Povýšit uživatele
+        reject_appeal: Zamítnout odvolání
         reject_user: Odmítnout uživatele
         remove_avatar_user: Odstranit avatar
         reopen_report: Znovu otevřít hlášení
@@ -284,11 +292,12 @@ cs:
         update_domain_block: Změnit blokaci domény
         update_status: Aktualizovat Příspěvek
       actions:
+        approve_appeal_html: Uživatel %{name} schválil odvolání proti rozhodnutí moderátora %{target}
         approve_user_html: "%{name} schválil registraci od %{target}"
         assigned_to_self_report_html: Uživatel %{name} si přidělil hlášení %{target}
         change_email_user_html: Uživatel %{name} změnil e-mailovou adresu uživatele %{target}
         confirm_user_html: Uživatel %{name} potvrdil e-mailovou adresu uživatele %{target}
-        create_account_warning_html: Uživatel %{name} poslal varování uživateli %{target}
+        create_account_warning_html: Uživatel %{name} poslal %{target} varování
         create_announcement_html: Uživatel %{name} vytvořil nové oznámení %{target}
         create_custom_emoji_html: Uživatel %{name} nahrál nové emoji %{target}
         create_domain_allow_html: Uživatel %{name} povolil federaci s doménou %{target}
@@ -303,7 +312,7 @@ cs:
         destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target}
         destroy_email_domain_block_html: Uživatel %{name} odblokoval e-mailovou doménu %{target}
         destroy_instance_html: Uživatel %{name} odmazal doménu %{target}
-        destroy_ip_block_html: "%{name} odstranil pravidlo pro IP %{target}"
+        destroy_ip_block_html: Uživatel %{name} odstranil pravidlo pro IP %{target}
         destroy_status_html: Uživatel %{name} odstranil příspěvek uživatele %{target}
         destroy_unavailable_domain_html: "%{name} obnovil doručování na doménu %{target}"
         disable_2fa_user_html: Uživatel %{name} vypnul dvoufázové ověřování pro uživatele %{target}
@@ -315,6 +324,7 @@ cs:
         enable_user_html: Uživatel %{name} povolil přihlašování pro uživatele %{target}
         memorialize_account_html: Uživatel %{name} změnil účet %{target} na „in memoriam“ stránku
         promote_user_html: Uživatel %{name} povýšil uživatele %{target}
+        reject_appeal_html: Uživatel %{name} zamítl odvolání proti rozhodnutí moderátora %{target}
         reject_user_html: "%{name} odmítl registraci od %{target}"
         remove_avatar_user_html: Uživatel %{name} odstranil avatar uživatele %{target}
         reopen_report_html: Uživatel %{name} znovu otevřel hlášení %{target}
@@ -336,7 +346,7 @@ cs:
       empty: Nebyly nalezeny žádné záznamy.
       filter_by_action: Filtrovat podle akce
       filter_by_user: Filtrovat podle uživatele
-      title: Auditovací protokol
+      title: Protokol auditu
     announcements:
       destroyed_msg: Oznámení bylo úspěšně odstraněno!
       edit:
@@ -393,6 +403,26 @@ cs:
       media_storage: Úložiště médií
       new_users: noví uživatelé
       opened_reports: podáno hlášení
+      pending_appeals_html:
+        few: "<strong>%{count}</strong> čekající odvolání"
+        many: "<strong>%{count}</strong> čekajících odvolání"
+        one: "<strong>%{count}</strong> čekající odvolání"
+        other: "<strong>%{count}</strong> čekajících odvolání"
+      pending_reports_html:
+        few: "<strong>%{count}</strong> čekající hlášení"
+        many: "<strong>%{count}</strong> čekajících hlášení"
+        one: "<strong>%{count}</strong> čekající hlášení"
+        other: "<strong>%{count}</strong> čekajících hlášení"
+      pending_tags_html:
+        few: "<strong>%{count}</strong> čekající hashtagy"
+        many: "<strong>%{count}</strong> čekajících hashtagů"
+        one: "<strong>%{count}</strong> čekající hashtag"
+        other: "<strong>%{count}</strong> čekajících hashtagů"
+      pending_users_html:
+        few: "<strong>%{count}</strong> čekající uživatelé"
+        many: "<strong>%{count}</strong> čekajících uživatelů"
+        one: "<strong>%{count}</strong> čekající uživatel"
+        other: "<strong>%{count}</strong> čekajících uživatelů"
       resolved_reports: vyřešeno hlášení
       software: Software
       sources: Zdroje registrací
@@ -401,6 +431,10 @@ cs:
       top_languages: Nejaktivnější jazyky
       top_servers: Nejaktivnější servery
       website: Webová stránka
+    disputes:
+      appeals:
+        empty: Nenalazena žádná odvolání.
+        title: Odvolání
     domain_allows:
       add_new: Povolit federaci s doménou
       created_msg: S doménou byla úspěšně povolena federace
@@ -409,9 +443,9 @@ cs:
     domain_blocks:
       add_new: Přidat novou blokaci domény
       created_msg: Blokace domény se právě vyřizuje
-      destroyed_msg: Blokace domény byla zrušena
+      destroyed_msg: Blokace domény byla vrácena
       domain: Doména
-      edit: Upravit doménovou blokaci
+      edit: Upravit blokaci domény
       existing_domain_block_html: Pro účet %{name} jste už nastavili přísnější omezení, nejprve jej <a href="%{unblock_url}">odblokujte</a>.
       new:
         create: Vytvořit blokaci
@@ -432,16 +466,28 @@ cs:
       reject_media_hint: Odstraní lokálně uložené mediální soubory a odmítne jejich stahování v budoucnosti. Nepodstatné pro pozastavení
       reject_reports: Odmítat hlášení
       reject_reports_hint: Ignorovat všechna hlášení pocházející z této domény. Nepodstatné pro pozastavení
-      undo: Odvolat blokaci domény
+      undo: Vrátit blokaci domény
       view: Zobrazit blokaci domény
     email_domain_blocks:
       add_new: Přidat
+      attempts_over_week:
+        few: "%{count} pokusy o registraci za poslední týden"
+        many: "%{count} pokusů o registraci za poslední týden"
+        one: "%{count} pokus o registraci za poslední týden"
+        other: "%{count} pokusů o registraci za poslední týden"
       created_msg: E-mailová doména úspěšně zablokována
       delete: Smazat
+      dns:
+        types:
+          mx: MX záznam
       domain: Doména
       new:
         create: Přidat doménu
+        resolve: Přeložit doménu
         title: Blokovat novou e-mailovou doménu
+      no_email_domain_block_selected: Žádné blokace e-mailové domény nebyly změněny, protože nebyly žádné vybrány
+      resolved_dns_records_hint_html: Doménové jméno vede na následující MX domény, které mají nakonec na starost přijímání e-mailů. Blokování MX domény zablokuje registrace z jakékoliv e-mailové adresy, která používá stejnou MX doménu, i když je viditelné doménové jméno jiné. <strong>Dejte si pozor, abyste nezablokovali velké e-mailové poskytovatele.</strong>
+      resolved_through_html: Přeložena přes %{domain}
       title: Blokované e-mailové domény
     follow_recommendations:
       description_html: "<strong>Doporučená sledování pomáhají novým uživatelům rychle najít zajímavý obsah</strong>. Pokud uživatel neinteragoval s ostatními natolik, aby mu byla vytvořena doporučená sledování na míru, jsou použity tyto účty. Jsou přepočítávány na denní bázi ze směsi účtů s největším nedávným zapojením a nejvyšším počtem místních sledovatelů pro daný jazyk."
@@ -453,12 +499,45 @@ cs:
       unsuppress: Obnovit doporučení sledování
     instances:
       availability:
+        description_html:
+          few: Pokud doručování na doménu selhává nepřerušeně ve <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
+          many: Pokud doručování na doménu selhává nepřerušeně v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
+          one: Pokud doručování na doménu selhává nepřerušeně <strong>%{count} den</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
+          other: Pokud doručování na doménu selhává nepřerušeně v <strong>%{count} různých dnech</strong>, nebudou činěny žádné další pokusy o doručení, dokud nedorazí doručení <em>od</em> domény.
+        failure_threshold_reached: Prahu selhání dosaženo %{date}.
+        failures_recorded:
+          few: Neúspěšné pokusy ve %{count} různých dnech.
+          many: Neúspěšné pokusy ve %{count} různých dnech.
+          one: Neúspěšný pokus v %{count} dni.
+          other: Neúspěšné pokusy ve %{count} různých dnech.
+        no_failures_recorded: Žádné zaznamenané selhání.
+        title: Dostupnost
         warning: Poslední pokus o připojení k tomuto serveru byl neúspěšný
       back_to_all: Vše
       back_to_limited: Omezený
       back_to_warning: Varování
       by_domain: Doména
       confirm_purge: Jste si jisti, že chcete nevratně smazat data z této domény?
+      content_policies:
+        comment: Interní poznámka
+        description_html: Můžete definovat politiky obsahu, které budou aplikovány na všechny účty z této domény i jakoukoliv z jejích subdomén.
+        policies:
+          reject_media: Odmítat média
+          reject_reports: Odmítat hlášení
+          silence: Omezit
+          suspend: Pozastavit
+        policy: Politika
+        reason: Veřejný důvod
+        title: Politiky obsahu
+      dashboard:
+        instance_accounts_dimension: Nejsledovanější účty
+        instance_accounts_measure: uložené účty
+        instance_followers_measure: sledujících nás tam
+        instance_follows_measure: sledujících je tady
+        instance_languages_dimension: Nejčastější jazyky
+        instance_media_attachments_measure: uložené mediální přílohy
+        instance_reports_measure: hlášení o nich
+        instance_statuses_measure: uložené příspěvky
       delivery:
         all: Vše
         clear: Vymazat chyby doručení
@@ -470,6 +549,11 @@ cs:
       delivery_error_hint: Není-li možné doručení po dobu %{count} dnů, bude automaticky označen za nedoručitelný.
       destroyed_msg: Data z %{domain} nyní čekají na smazání.
       empty: Nebyly nalezeny žádné domény.
+      known_accounts:
+        few: "%{count} známé účty"
+        many: "%{count} známých účtů"
+        one: "%{count} známý účet"
+        other: "%{count} známých účtů"
       moderation:
         all: Všechny
         limited: Omezený
@@ -477,12 +561,14 @@ cs:
       private_comment: Soukromý komentář
       public_comment: Veřejný komentář
       purge: Odmazat
+      purge_description_html: Pokud se domníváte, že tato doména je offline už navždy, můžete ze svého úložiště smazat všechny záznamy účtů a přidružená data z této domény. To může chvíli trvat.
       title: Federace
       total_blocked_by_us: Blokované námi
       total_followed_by_them: Sledované jimi
       total_followed_by_us: Sledované námi
       total_reported: Hlášení o nich
       total_storage: Mediální přílohy
+      totals_time_period_hint_html: Níže zobrazené součty zahrnují data za celou dobu.
     invites:
       deactivate_all: Deaktivovat vše
       filter:
@@ -527,6 +613,7 @@ cs:
     report_notes:
       created_msg: Poznámka o hlášení úspěšně vytvořena!
       destroyed_msg: Poznámka o hlášení úspěšně smazána!
+      today_at: Dnes v %{time}
     reports:
       account:
         notes:
@@ -534,7 +621,17 @@ cs:
           many: "%{count} poznámek"
           one: "%{count} poznámka"
           other: "%{count} poznámek"
+      action_log: Protokol auditu
       action_taken_by: Akci vykonal uživatel
+      actions:
+        delete_description_html: Nahlášené příspěvky budou smazány a prohřešek zaznamenán pro pomoc s eskalací v případě budoucích porušení stejným účtem.
+        mark_as_sensitive_description_html: Média v nahlášených příspěvcích budou označena jako citlivá a bude zaznamenán prohřešek pro pomoc s eskalací v případě budoucích porušení stejným účtem.
+        other_description_html: Podívejte se na další možnosti kontroly chování účtu a přizpůsobte komunikaci k nahlášenému účtu.
+        resolve_description_html: Nebudou učiněny žádné kroky proti nahlášenému účtu, žádný prohřešek zaznamenán a hlášení bude uzavřeno.
+        silence_description_html: Profil bude viditelný pouze těm, kdo ho již sledují nebo jej ručně vyhledají, což značně omezí jeho dosah. Lze vždy vrátit zpět.
+        suspend_description_html: Profil a veškerý jeho obsah se stane nedostupným, dokud nebude časem smazán. Interakce s účtem nebude možná. Vratné do 30 dnů.
+      actions_description_html: Rozhodněte, který krok učinit pro vyřešení tohoto hlášení. Pokud podniknete kárný krok proti nahlášenému účtu, bude mu zasláno e-mailové oznámení, s výjimkou případu, kdy je zvolena kategorie <strong>Spam</strong>.
+      add_to_report: Přidat do hlášení další
       are_you_sure: Jste si jisti?
       assign_to_self: Přidělit ke mně
       assigned: Přiřazený moderátor
@@ -545,10 +642,13 @@ cs:
         none: Žádné
       comment_description_html: 'Pro upřesnění uživatel %{name} napsal:'
       created_at: Nahlášené
+      delete_and_resolve: Smazat příspěvky
       forwarded: Přeposláno
       forwarded_to: Přeposláno na %{domain}
       mark_as_resolved: Označit jako vyřešené
+      mark_as_sensitive: Označit jako citlivé
       mark_as_unresolved: Označit jako nevyřešené
+      no_one_assigned: Nikdo
       notes:
         create: Přidat poznámku
         create_and_resolve: Vyřešit s poznámkou
@@ -557,9 +657,10 @@ cs:
         placeholder: Popište, jaké akce byly vykonány, nebo jakékoliv jiné související aktuality…
         title: Poznámky
       notes_description_html: Zobrazit a zanechat poznámky pro ostatní moderátory i sebe v budoucnu
+      quick_actions_description_html: 'Proveďte rychlou akci nebo skrolujte dolů pro nahlášený obsah:'
       remote_user_placeholder: vzdálený uživatel z %{instance}
       reopen: Znovu otevřít hlášení
-      report: 'Nahlásit #%{id}'
+      report: 'Hlášení #%{id}'
       reported_account: Nahlášený účet
       reported_by: Nahlášeno uživatelem
       resolved: Vyřešeno
@@ -573,6 +674,7 @@ cs:
       unassign: Odebrat
       unresolved: Nevyřešeno
       updated_at: Aktualizováno
+      view_profile: Zobrazit profil
     rules:
       add_new: Přidat pravidlo
       delete: Smazat
@@ -599,7 +701,7 @@ cs:
       domain_blocks:
         all: Všem
         disabled: Nikomu
-        title: Zobrazit blokované domény
+        title: Zobrazit blokace domén
         users: Přihlášeným místním uživatelům
       domain_blocks_rationale:
         title: Zobrazit odůvodnění
@@ -641,7 +743,7 @@ cs:
         desc_html: Je-li vypnuto, bude veřejná časová osa, na kterou odkazuje hlavní stránka serveru, omezena pouze na místní obsah
         title: Zahrnout federovaný obsah na neautentizované stránce veřejné časové osy
       show_staff_badge:
-        desc_html: Zobrazit na stránce uživatele odznak člena personálu
+        desc_html: Zobrazit na stránce uživatele odznak personálu
         title: Zobrazit odznak personálu
       site_description:
         desc_html: Úvodní odstavec v API. Popište, čím se tento server Mastodon odlišuje od ostatních, a cokoliv jiného, co je důležité. Můžete zde používat HTML značky, hlavně <code>&lt;a&gt;</code> a <code>&lt;em&gt;</code>.
@@ -674,12 +776,27 @@ cs:
       destroyed_msg: Upload stránky byl úspěšně smazán!
     statuses:
       back_to_account: Zpět na stránku účtu
+      back_to_report: Zpět na stránku hlášení
+      batch:
+        remove_from_report: Odebrat z hlášení
+        report: Nahlásit
       deleted: Smazáno
       media:
         title: Média
       no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány
       title: Příspěvky účtu
       with_media: S médii
+    strikes:
+      actions:
+        delete_statuses: Uživatel %{name} smazal příspěvky %{target}
+        disable: Uživatel %{name} zmrazil účet %{target}
+        mark_statuses_as_sensitive: Uživatel %{name} označil příspěvky %{target} jako citlivé
+        none: Uživatel %{name} poslal %{target} varování
+        sensitive: Uživatel %{name} označil účet %{target} jako citlivý
+        silence: Uživatel %{name} omezil účet %{target}
+        suspend: Uživatel %{name} pozastavil účet %{target}
+      appeal_approved: Podáno odvolání
+      appeal_pending: Čekající odvolání
     system_checks:
       database_schema_check:
         message_html: Na spuštění čekají databázové migrace. Nechte je prosím proběhnout pro zajištění očekávaného chování aplikace
@@ -704,16 +821,36 @@ cs:
       links:
         allow: Povolit odkaz
         allow_provider: Povolit vydavatele
+        description_html: Toto jsou odkazy, které jsou momentálně hojně sdíleny účty, jejichž příspěvky váš server vidí. To může pomoct vašim uživatelům zjistit, co se děje ve světě. Žádné odkazy se nezobrazují veřejně, dokud neschválíte vydavatele. Můžete také povolit nebo zamítnout jednotlivé odkazy.
         disallow: Zakázat odkaz
         disallow_provider: Zakázat vydavatele
+        shared_by_over_week:
+          few: Sdílený %{count} lidmi za poslední týden
+          many: Sdílený %{count} lidmi za poslední týden
+          one: Sdílený jedním člověkem za poslední týden
+          other: Sdílený %{count} lidmi za poslední týden
         title: Populární odkazy
         usage_comparison: Za dnešek %{today} sdílení, oproti %{yesterday} včera
       pending_review: Čeká na posouzení
       preview_card_providers:
         allowed: Odkazy z tohoto vydavatele se smí objevovat mezi populárními
+        description_html: Toto jsou domény, na které vedou odkazy často sdílené na vašem serveru. Odkazy se nezobrazí veřejně mezi populárními, pokud příslušné domény nebudou schváleny. Vaše schválení (nebo zamítnutí) se vztahuje i na subdomény.
         rejected: Odkazy z tohoto vydavatele se neobjeví mezi populárními
         title: Vydavatelé
-      rejected: Zamítnutí
+      rejected: Zamítnuté
+      statuses:
+        allow: Povolit příspěvek
+        allow_account: Povolit autora
+        description_html: Toto jsou příspěvky, o kterých váš server ví, že jsou momentálně hodně sdíleny a oblibovány. To může pomoci vašim novým i vracejícím se uživatelům najít další lidi ke sledování. Žádné příspěvky se nezobrazují veřejně, dokud neschválíte autora a tento autor nepovolí navrhování svého účtu ostatním. Můžete také povolit či zamítnout jednotlivé příspěvky.
+        disallow: Zakázat příspěvek
+        disallow_account: Zakázat autora
+        not_discoverable: Autor nepovolil navrhování svého účtu ostatním
+        shared_by:
+          few: "%{friendly_count} sdílení nebo oblíbení"
+          many: "%{friendly_count} sdílení nebo oblíbení"
+          one: Jednou sdílen nebo oblíben
+          other: "%{friendly_count} sdílení nebo oblíbení"
+        title: Populární příspěvky
       tags:
         current_score: Aktuální skóre %{score}
         dashboard:
@@ -722,6 +859,7 @@ cs:
           tag_servers_dimension: Nejčastější servery
           tag_servers_measure: různých serverů
           tag_uses_measure: použití celkem
+        description_html: Toto jsou hashtagy, které se momentálně objevují v mnoha příspěvcích, které váš server vidí. To může pomoci vašim uživatelům zjistit, o čem lidé zrovna nejvíce mluví. Žádné hashtagy se nezobrazují veřejně, dokud je neschválíte.
         listable: Může být navrhován
         not_listable: Nebude navrhován
         not_trendable: Neobjeví se mezi populárními
@@ -732,6 +870,11 @@ cs:
         trending_rank: 'Populární #%{rank}'
         usable: Může být používán
         usage_comparison: Za dnešek %{today} použití, oproti %{yesterday} včera
+        used_by_over_week:
+          few: Použit %{count} lidmi za poslední týden
+          many: Použit %{count} lidmi za poslední týden
+          one: Použit jedním člověkem za poslední týden
+          other: Použit %{count} lidmi za poslední týden
       title: Trendy
     warning_presets:
       add_new: Přidat nové
@@ -740,6 +883,18 @@ cs:
       empty: Zatím jste nedefinovali žádné předlohy varování.
       title: Spravovat předlohy pro varování
   admin_mailer:
+    new_appeal:
+      actions:
+        delete_statuses: smazání jeho příspěvků
+        disable: zmrazení jeho účtu
+        mark_statuses_as_sensitive: označení jeho příspěvků jako citlivých
+        none: varování
+        sensitive: označení jeho účtu jako citlivého
+        silence: omezení jeho účtu
+        suspend: pozastavení jeho účtu
+      body: 'Uživatel %{target} se odvolává proti rozhodnutí moderátora %{action_taken_by} z %{date}, kterým bylo %{type}. Napsal:'
+      next_steps: Můžete schválit odvolání pro vrácení rozhodnutí moderátora, nebo to ignorovat.
+      subject: Uživatel %{username} se odvolává proti rozhodnutí moderátora na %{instance}
     new_pending_account:
       body: Detaily nového účtu jsou uvedeny níže. Tuto žádost můžete schválit nebo zamítnout.
       subject: Nový účet na serveru %{instance} čekající na posouzení (%{username})
@@ -747,6 +902,21 @@ cs:
       body: Uživatel %{reporter} nahlásil uživatele %{target}
       body_remote: Někdo z domény %{domain} nahlásil uživatele %{target}
       subject: Nové hlášení pro %{instance} (#%{id})
+    new_trends:
+      body: 'Následující položky vyžadují posouzení, než mohou být zobrazeny veřejně:'
+      new_trending_links:
+        no_approved_links: Momentálně nejsou žádné schválené populární odkazy.
+        requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární odkaz #%{rank}, kterým je momentálně "%{lowest_link_title}" se skóre %{lowest_link_score}.'
+        title: Populární odkazy
+      new_trending_statuses:
+        no_approved_statuses: Momentálně nejsou žádné schválené populární příspěvky.
+        requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární příspěvek #%{rank}, kterým je momentálně %{lowest_status_url} se skóre %{lowest_status_score}.'
+        title: Populární příspěvky
+      new_trending_tags:
+        no_approved_tags: Momentálně nejsou žádné schválené populární hashtagy.
+        requirements: 'Kterýkoliv z těchto kandidátů by mohl předehnat schválený populární hashtag #%{rank}, kterým je momentálně #%{lowest_tag_name} se skóre %{lowest_tag_score}.'
+        title: Populární hashtagy
+      subject: Nové trendy k posouzení na %{instance}
   aliases:
     add_new: Vytvořit alias
     created_msg: Nový alias byl úspěšně vytvořen. Nyní můžete zahájit přesun ze starého účtu.
@@ -820,8 +990,10 @@ cs:
     status:
       account_status: Stav účtu
       confirming: Čeká na dokončení potvrzení e-mailu.
+      functional: Váš účet je plně funkční.
       pending: Vaše žádost čeká na posouzení naším personálem. To může nějakou dobu trvat. Pokud bude váš požadavek schválen, obdržíte e-mail.
       redirecting_to: Váš účet je neaktivní, protože je právě přesměrován na účet %{acct}.
+      view_strikes: Zobrazit minulé prohřešky vašeho účtu
     too_fast: Formulář byl odeslán příliš rychle, zkuste to znovu.
     trouble_logging_in: Problémy s přihlášením?
     use_security_key: Použít bezpečnostní klíč
@@ -885,6 +1057,34 @@ cs:
     directory: Adresář profilů
     explanation: Objevujte uživatele podle jejich zájmů
     explore_mastodon: Prozkoumejte %{title}
+  disputes:
+    strikes:
+      action_taken: Přijaté opatření
+      appeal: Odvolání
+      appeal_approved: Odvolání proti tomuto prohřešku bylo úspěšné a není tak už platný
+      appeal_rejected: Odvolání bylo zamítnuto
+      appeal_submitted_at: Odvolání podáno
+      appealed_msg: Vaše odvolání bylo podáno. Pokud bude schváleno, budete informováni.
+      appeals:
+        submit: Podat 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
+      status: 'Příspěvek #%{id}'
+      status_removed: Příspěvek už byl ze systému odstraněn
+      title: "%{action} ze dne %{date}"
+      title_actions:
+        delete_statuses: Odstranění příspěvku
+        disable: Zmrazení účtu
+        mark_statuses_as_sensitive: Označení příspěvků jako citlivých
+        none: Varování
+        sensitive: Označení účtu jako citlivého
+        silence: Omezení účtu
+        suspend: Pozastavení účtu
+      your_appeal_approved: Vaše odvolání bylo schváleno
+      your_appeal_pending: Podali jste odvolání
+      your_appeal_rejected: Vaše odvolání bylo zamítnuto
   domain_validator:
     invalid_domain: není platné doménové jméno
   errors:
@@ -916,10 +1116,10 @@ cs:
     blocks: Blokujete
     bookmarks: Záložky
     csv: CSV
-    domain_blocks: Blokování domén
+    domain_blocks: Doménové blokace
     lists: Seznamy
     mutes: Skrýváte
-    storage: Paměť médií
+    storage: Úložiště médií
   featured_tags:
     add_new: Přidat nový
     errors:
@@ -1076,10 +1276,10 @@ cs:
         one: Zatímco jste byli pryč jste navíc získali jednoho nového sledujícího! Hurá!
         other: Zatímco jste byli pryč jste navíc získali %{count} nových sledujících! Úžasné!
       subject:
-        few: "%{count} nová oznámení od vaší poslední návštěvy \U0001F418"
-        many: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
-        one: "1 nové oznámení od vaší poslední návštěvy \U0001F418"
-        other: "%{count} nových oznámení od vaší poslední návštěvy \U0001F418"
+        few: "%{count} nová oznámení od vaší poslední návštěvy 🐘"
+        many: "%{count} nových oznámení od vaší poslední návštěvy 🐘"
+        one: "1 nové oznámení od vaší poslední návštěvy 🐘"
+        other: "%{count} nových oznámení od vaší poslední návštěvy 🐘"
       title: Ve vaší nepřítomnosti…
     favourite:
       body: 'Váš příspěvek si oblíbil uživatel %{name}:'
@@ -1235,8 +1435,8 @@ cs:
       windows: Windows
       windows_mobile: Windows Mobile
       windows_phone: Windows Phone
-    revoke: Zrušit
-    revoke_success: Relace úspěšně zrušena
+    revoke: Odvolat
+    revoke_success: Relace úspěšně odvolána
     title: Relace
     view_authentication_history: Zobrazit historii přihlášení do vašeho účtu
   settings:
@@ -1259,6 +1459,7 @@ cs:
     profile: Profil
     relationships: Sledovaní a sledující
     statuses_cleanup: Automatické mazání příspěvků
+    strikes: Moderační prohřešky
     two_factor_authentication: Dvoufázové ověřování
     webauthn_authentication: Bezpečnostní klíče
   statuses:
@@ -1283,10 +1484,11 @@ cs:
     content_warning: 'Varování o obsahu: %{warning}'
     default_language: Stejný jako jazyk rozhraní
     disallowed_hashtags:
-      few: 'obsahoval nepovolené hashtagy: %{tags}'
-      many: 'obsahoval nepovolené hashtagy: %{tags}'
-      one: 'obsahoval nepovolený hashtag: %{tags}'
-      other: 'obsahoval nepovolené hashtagy: %{tags}'
+      few: 'obsahoval zakázané hashtagy: %{tags}'
+      many: 'obsahoval zakázané hashtagy: %{tags}'
+      one: 'obsahoval zakázaný hashtag: %{tags}'
+      other: 'obsahoval zakázané hashtagy: %{tags}'
+    edited_at_html: Upraven %{date}
     errors:
       in_reply_not_found: Příspěvek, na který se pokoušíte odpovědět, neexistuje.
     open_in_web: Otevřít na webu
@@ -1349,7 +1551,7 @@ cs:
       '2629746': 1 měsíc
       '31556952': 1 rok
       '5259492': 2 měsíce
-      '604800': 1 week
+      '604800': 1 týden
       '63113904': 2 roky
       '7889238': 3 měsíce
     min_age_label: Hranice stáří
@@ -1454,6 +1656,7 @@ cs:
     formats:
       default: "%d. %b %Y, %H:%M"
       month: "%b %Y"
+      time: "%H:%M"
   two_factor_authentication:
     add: Přidat
     disable: Vypnout 2FA
@@ -1470,27 +1673,55 @@ cs:
     recovery_instructions_html: Ztratíte-li někdy přístup ke svému telefonu, můžete k získání přístupu k účtu použít jeden ze záložních kódů. <strong>Uchovejte tyto kódy v bezpečí</strong>. Můžete si je například vytisknout a uložit je mezi jiné důležité dokumenty.
     webauthn: Bezpečnostní klíče
   user_mailer:
+    appeal_approved:
+      action: Přejít do vašeho účtu
+      explanation: Odvolání proti prohřešku vašeho účtu ze dne %{strike_date}, které jste podali %{appeal_date}, bylo schváleno. Váš účet je opět v pořádku.
+      subject: Vaše odvolání ze dne %{date} bylo schváleno
+      title: Odvolání schváleno
+    appeal_rejected:
+      explanation: Odvolání proti prohřešku vašeho účtu ze dne %{strike_date}, které jste podali %{appeal_date}, bylo zamítnuto.
+      subject: Vaše odvolání z %{date} bylo zamítnuto
+      title: Odvolání zamítnuto
     backup_ready:
       explanation: Vyžádali jste si úplnou zálohu svého účtu Mastodon. Nyní je připravena ke stažení!
       subject: Váš archiv je připraven ke stažení
       title: Stažení archivu
-    sign_in_token:
-      details: 'Zde jsou podrobnosti pokusu:'
-      explanation: 'Zjistili jsme, že se někdo pokusil k vašemu přihlásit z neznámé IP adresy. Pokud jste to vy, zadejte níže uvedený kód na přihlašovací stránce s výzvou:'
-      further_actions: 'Pokud jste to nebyli vy, změňte prosím své heslo a zapněte si dvoufázově ověřování svého účtu. Můžete tak učinit hned tady:'
-      subject: Potvrďte prosím pokus o přihlášení
-      title: Pokus o přihlášení
+    suspicious_sign_in:
+      change_password: změnit vaše heslo
+      details: 'Tady jsou detaily přihášení:'
+      explanation: Detekovali jsme přihlášení do vašeho účtu z nové IP adresy.
+      further_actions_html: Pokud jste to nebyli vy, doporučujeme pro zabezpečení vašeho účtu okamžitě %{action} a zapnout dvoufázové ověřování.
+      subject: Váš účet byl použit z nové IP adresy
+      title: Nové přihlášení
     warning:
+      appeal: Podat odvolání
+      appeal_description: Pokud se domníváte, že se jedná o chybu, můžete podat odvolání personálu %{instance}.
+      categories:
+        spam: Spam
+        violation: Obsah porušuje následující zásady komunity
       explanation:
         delete_statuses: Bylo shledáno, že některé vaše příspěvky porušují jednu nebo více zásad komunity a následně byly odstraněny moderátory %{instance}.
+        disable: Nemůžete už používat svůj účet, ale váš profil a další data zůstávají nedotčeny. Můžete si vyžádat zálohu svých dat, měnit nastavení účtu nebo ho smazat.
+        mark_statuses_as_sensitive: Některé vaše příspěvky byly označeny jako citlivé moderátory %{instance}. To znamená, že pro zobrazení náhledu médií v příspěvcích na ně budou muset lidé nejprve kliknout. Média můžete při psaní budoucích příspěvků označit jako citlivá sami.
+        sensitive: Odteď budou všechny vámi nahrané mediální soubory označeny jako citlivé a skryté za proklikávacím varováním.
+        silence: Můžete nadále používat svůj účet, ale pouze lidé, kteří vás již sledovali, uvidí vaše příspěvky na tomto serveru a můžete být vynecháni z různých doporučovacích funkcí. Ostatní vás však stále mohou začít ručně sledovat.
+        suspend: Nemůžete už používat svůj účet a váš profil a ostatní data již nejsou dostupná. Stále se můžete přihlásit pro vyžádání zálohy svých dat, dokud nebudou za přibližně 30 dnů zcela smazána, ale ponecháme si některé základní údaje, abychom vám zabránili v obcházení pozastavení.
+      reason: 'Důvod:'
+      statuses: 'Předmětné příspěvky:'
       subject:
+        delete_statuses: Vaše příspěvky na %{acct} byly odstraněny
         disable: Váš účet %{acct} byl zmrazen
+        mark_statuses_as_sensitive: Vaše příspěvky pod %{acct} byly označeny jako citlivé
         none: Varování pro %{acct}
+        sensitive: Vaše příspěvky pod %{acct} budou od nynějška označeny jako citlivé
         silence: Váš účet %{acct} byl omezen
         suspend: Váš účet %{acct} byl pozastaven
       title:
+        delete_statuses: Příspěvky odstraněny
         disable: Účet zmrazen
+        mark_statuses_as_sensitive: Příspěvky označeny jako citlivé
         none: Varování
+        sensitive: Účet označen jako citlivý
         silence: Účet omezen
         suspend: Účet pozastaven
     welcome:
@@ -1512,13 +1743,10 @@ cs:
       title: Vítejte na palubě, %{name}!
   users:
     follow_limit_reached: Nemůžete sledovat více než %{limit} lidí
-    generic_access_help_html: Máte potíže s přístupem ke svému účtu? Můžete nás kontaktovat pro pomoc na %{email}
     invalid_otp_token: Neplatný kód pro dvoufázové ověřování
-    invalid_sign_in_token: Neplatný bezpečnostní kód
     otp_lost_help_html: Pokud jste ztratili přístup k oběma, spojte se s %{email}
     seamless_external_login: Jste přihlášeni přes externí službu, nastavení hesla a e-mailu proto nejsou dostupná.
     signed_in_as: 'Přihlášeni jako:'
-    suspicious_sign_in_confirmation: Zdá se, že se z tohoto zařízení přihlašujete poprvé, proto pro ověření přihlášení na vaši e-mailovou adresu posíláme bezpečnostní kód.
   verification:
     explanation_html: 'Můžete se <strong>ověřit jako vlastník odkazů v metadatech profilu</strong>. Pro tento účel musí stránka v odkazu obsahovat odkaz zpět na váš profil na Mastodonu. Odkaz zpět <strong>musí</strong> mít atribut <code>rel="me"</code>. Na textu odkazu nezáleží. Zde je příklad:'
     verification: Ověření
diff --git a/config/locales/cy.yml b/config/locales/cy.yml
index 15de9ac76..3d12d4098 100644
--- a/config/locales/cy.yml
+++ b/config/locales/cy.yml
@@ -1151,12 +1151,6 @@ cy:
       explanation: Fe wnaethoch chi gais am gopi wrth gefn llawn o'ch cyfrif Mastodon. Mae nawr yn barod i'w lawrlwytho!
       subject: Mae eich archif yn barod i'w lawrlwytho
       title: Allfudo archif
-    sign_in_token:
-      details: 'Dyma''r manylion o''r ceisiad:'
-      explanation: 'Wnaethom ni synhwyro ceisiad i fewngofnodi i''ch cyfrif o gyfeiriad IP anabyddiedig. Os mae hyn yn chi, mewnbynnwch y cod diogelwch isod i fewn i''r dudalen herio mewngofnodiad:'
-      further_actions: 'Os nad oedd hyn yn chi, newidwch eich cyfrinair ac alluogi awdurdodi dauffactor ar eich cyfrif. Gallwch gwneud hyn fama:'
-      subject: Cadarnhewch yr ymgais mewngofnodi
-      title: Ymgais mewngofnodi
     warning:
       subject:
         disable: Mae'ch cyfrif %{acct} wedi'i rewi
@@ -1187,13 +1181,10 @@ cy:
       title: Croeso, %{name}!
   users:
     follow_limit_reached: Nid oes modd i chi ddilyn mwy na %{limit} o bobl
-    generic_access_help_html: Cael trafferth yn cyrchu eich cyfrif? Efallai hoffwch cysylltu â %{email} am gymorth
     invalid_otp_token: Côd dau-ffactor annilys
-    invalid_sign_in_token: Cod diogelwch annilys
     otp_lost_help_html: Os colloch chi fynediad i'r ddau, mae modd i chi gysylltu a %{email}
     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:'
-    suspicious_sign_in_confirmation: Mae'n edrych fel nad ydych wedi mewngofnodi o'r dyfais hyn o'r blaen, a nid ydych wedi mewngofnodi am sbel, felly rydym yn anfon cod diogelwch i'ch cyfeiriad ebost i gadarnhau bod chi yw hi.
   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:'
     verification: Dilysu
diff --git a/config/locales/da.yml b/config/locales/da.yml
index d3182ad7f..037530459 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -199,7 +199,6 @@ da:
       security_measures:
         only_password: Kun adgangskode
         password_and_2fa: Adgangskode og 2FA
-        password_and_sign_in_token: Adgangskode og e-mailtoken
       sensitive: Gennemtving sensitiv
       sensitized: Markeret som sensitiv
       shared_inbox_url: Delt indbakke-URL
@@ -1233,8 +1232,8 @@ da:
         one: Under dit fravær har du har også fået en ny følger! Sådan!
         other: Under dit fravær har du har også fået %{count} nye følgere! Sådan!
       subject:
-        one: "1 ny notifikation siden senest besøg \U0001F418"
-        other: "%{count} nye notifikationer siden senest besøg \U0001F418"
+        one: "1 ny notifikation siden senest besøg 🐘"
+        other: "%{count} nye notifikationer siden senest besøg 🐘"
       title: I dit fravær...
     favourite:
       body: "%{name} favoritmarkerede dit indlæg:"
@@ -1549,12 +1548,11 @@ da:
       explanation: Den anmodede fulde sikkerhedskopi af din Mastodon-konto er nu klar til download!
       subject: Dit arkiv er klar til download
       title: Arkiv download
-    sign_in_token:
-      details: 'Her er nogle detaljer om forsøget:'
-      explanation: 'Der er registreret et forsøg på at logge ind på din konto fra en ukendt IP-adresse. Er dette er dig, så angiv nedenstående sikkerhedskode på log ind-bekræftelsessiden:'
-      further_actions: 'Var dette ikke dig, så ændr adgangskoden og aktivér tofaktorgodkendelse på din konto, hvilket kan gøres hér:'
-      subject: Bekræft indlogningsforsøg
-      title: Indlogningsforsøg
+    suspicious_sign_in:
+      change_password: skift din adgangskode
+      explanation: Indlogning på din konto fra en ny IP-adresse detekteret.
+      subject: Din konto er blevet tilgået fra en ny IP-adresse
+      title: Ny indlogning
     warning:
       appeal: Indgiv appel
       appeal_description: Mener du, at dette er en fejl, kan der indgives en appel til %{instance}-personalet.
@@ -1605,13 +1603,10 @@ da:
       title: Velkommen ombord, %{name}!
   users:
     follow_limit_reached: Du kan maks. følge %{limit} personer
-    generic_access_help_html: Problemer med at tilgå din konto? Du kan kontakte %{email} for hjælp
     invalid_otp_token: Ugyldig tofaktorkode
-    invalid_sign_in_token: Ugyldig sikkerhedskode
     otp_lost_help_html: Har du mistet adgang til begge, kan du kontakte %{email}
     seamless_external_login: Du er logget ind via en ekstern tjeneste, så adgangskode- og e-mailindstillinger er utilgængelige.
     signed_in_as: 'Logget ind som:'
-    suspicious_sign_in_confirmation: Du lader ikke at have logget ind fra denne enhed før, og du har ikke logget ind i et stykke tid, så der sendes en sikkerhedskode til din e-mailadresse mhp. at bekræfte din identitet.
   verification:
     explanation_html: 'Du kan <strong>bekræfte dig selv som ejer af linkene i din profilmetadata</strong>. For at gøre det, skal det linkede websted indeholde et link pegende tilbage til din Mastodon-profil. Returlinket <strong>skal</strong> have en <code>rel="mig"</code>-attribut. Linkets tekstindhold betyder ikke noget. Her er et eksempel:'
     verification: Bekræftelse
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 78ba2c440..b5e63c79a 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -196,7 +196,6 @@ de:
       security_measures:
         only_password: Nur Passwort
         password_and_2fa: Passwort und 2FA
-        password_and_sign_in_token: Passwort und E-Mail-Token
       sensitive: NSFW
       sensitized: Als NSFW markieren
       shared_inbox_url: Geteilte Posteingang-URL
@@ -592,7 +591,7 @@ de:
       action_taken_by: Maßnahme ergriffen durch
       actions:
         delete_description_html: Der gemeldete Beitrag wird gelöscht und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen.
-        mark_as_sensitive_description_html: Der gemeldete Beitrag wird als NSFW markiert und ein Strike wird aufgezeichnet, um dir bei zukünftigen Verstößen des gleichen Accounts zu helfen.
+        mark_as_sensitive_description_html: The media in the reported posts will be marked as sensitive and a strike will be recorded to help you escalate on future infractions by the same account.
         other_description_html: Weitere Optionen zur Kontrolle des Kontoverhaltens und zur Anpassung der Kommunikation an das gemeldete Konto.
         resolve_description_html: Es wird keine Maßnahme gegen den gemeldeten Account ergriffen, es wird kein Strike verzeichnet und die Meldung wird geschlossen.
         silence_description_html: Das Profil wird nur für diejenigen sichtbar sein, die es bereits verfolgen oder manuell nachschlagen und die Reichweite wird stark begrenzt. Kann immer rückgängig gemacht werden.
@@ -767,6 +766,11 @@ de:
     system_checks:
       database_schema_check:
         message_html: Es gibt ausstehende Datenbankmigrationen. Bitte führen Sie sie aus, um sicherzustellen, dass sich die Anwendung wie erwartet verhält
+      elasticsearch_running_check:
+        message_html: Verbindung mit Elasticsearch konnte nicht hergestellt werden. Bitte prüfe ob Elasticsearch läuft oder deaktiviere die Volltextsuche
+      elasticsearch_version_check:
+        message_html: 'Inkompatible Elasticsearch-Version: %{value}'
+        version_comparison: Elasticsearch %{running_version} läuft, aber %{required_version} wird benötigt
       rules_check:
         action: Serverregeln verwalten
         message_html: Sie haben keine Serverregeln definiert.
@@ -1220,8 +1224,8 @@ de:
         one: Außerdem ist dir seit du weg warst ein weiteres Wesen gefolgt! Juhu!
         other: Außerdem sind dir seit du weg warst %{count} weitere Wesen gefolgt! Großartig!
       subject:
-        one: "1 neue Mitteilung seit deinem letzten Besuch \U0001F418"
-        other: "%{count} neue Mitteilungen seit deinem letzten Besuch \U0001F418"
+        one: "1 neue Mitteilung seit deinem letzten Besuch 🐘"
+        other: "%{count} neue Mitteilungen seit deinem letzten Besuch 🐘"
       title: In deiner Abwesenheit...
     favourite:
       body: 'Dein Beitrag wurde von %{name} favorisiert:'
@@ -1618,12 +1622,6 @@ de:
       explanation: Du hast ein vollständiges Backup von deinem Mastodon-Konto angefragt. Es kann jetzt heruntergeladen werden!
       subject: Dein Archiv ist bereit zum Download
       title: Archiv-Download
-    sign_in_token:
-      details: 'Hier sind die Details des Versuchs:'
-      explanation: 'Wir haben einen Versuch festgestellt, sich mit deinem Konto von einer nicht erkannten IP-Adresse anzumelden. Wenn du das bist, gib bitte den Sicherheitscode unten auf der Anmeldecode-Seite ein:'
-      further_actions: 'Wenn du das nicht warst, ändere bitte dein Passwort und aktiviere die Zwei-Faktor-Authentifizierung in deinem Konto. Du kannst das hier tun:'
-      subject: Bitte bestätige den Anmeldeversuch
-      title: Anmeldeversuch
     warning:
       appeal: Einspruch einsenden
       appeal_description: Wenn du glaubst, dass dies ein Fehler ist, kannst du einen Einspruch an die Mitarbeiter von %{instance} senden.
@@ -1674,13 +1672,10 @@ de:
       title: Willkommen an Bord, %{name}!
   users:
     follow_limit_reached: Du kannst nicht mehr als %{limit} Leuten folgen
-    generic_access_help_html: Probleme beim Zugriff auf dein Konto? Du kannst dich mit %{email} in Verbindung setzen, um Hilfe zu erhalten
     invalid_otp_token: Ungültiger Zwei-Faktor-Authentisierungs-Code
-    invalid_sign_in_token: Ungültiger Sicherheitscode
     otp_lost_help_html: Wenn Du beides nicht mehr weißt, melde Dich bei uns unter der E-Mailadresse %{email}
     seamless_external_login: Du bist angemeldet über einen Drittanbieter-Dienst, weswegen Passwort- und E-Maileinstellungen nicht verfügbar sind.
     signed_in_as: 'Angemeldet als:'
-    suspicious_sign_in_confirmation: Du hast dich anscheinend seit einer ganzen Weile noch nicht von diesem Gerät eingeloggt, also senden wir einen Sicherheitscode an deine E-Mail-Adresse, um zu bestätigen, dass du es bist.
   verification:
     explanation_html: 'Du kannst <strong>bestätigen, dass die Links in deinen Profil-Metadaten dir gehören</strong>. Dafür muss die verlinkte Website einen Link zurück auf dein Mastodon-Profil enthalten. Dieser Link <strong>muss</strong> ein <code>rel="me"</code>-Attribut enthalten. Der Linktext ist dabei egal. Hier ist ein Beispiel:'
     verification: Verifizierung
diff --git a/config/locales/doorkeeper.ar.yml b/config/locales/doorkeeper.ar.yml
index d35253c3c..0bd196d16 100644
--- a/config/locales/doorkeeper.ar.yml
+++ b/config/locales/doorkeeper.ar.yml
@@ -119,6 +119,20 @@ ar:
         admin/all: جميع المهام الإدارية
         admin/reports: إدارة التقارير
         all: كل شيء
+        bookmarks: الفواصل المرجعية
+        conversations: المحادثات
+        crypto: التشفير من الطرف إلى نهاية الطرف
+        favourites: المفضلة
+        filters: عوامل التصفية
+        follow: العلاقات
+        follows: الإشتراكات
+        lists: القوائم
+        media: الوسائط المرفقة
+        notifications: الإشعارات
+        push: الإخطارات المدفوعة
+        reports: الشكاوى
+        search: البحث
+        statuses: المنشورات
     layouts:
       admin:
         nav:
@@ -133,6 +147,7 @@ ar:
       admin:write: تعديل كافة البيانات على الخادم
       admin:write:accounts: اتخاذ إجراءات إشراف على الحسابات
       admin:write:reports: اتخاذ إجراءات إشراف على الإبلاغات
+      crypto: استخدم التشفير من الطرف إلى نهاية الطرف
       follow: تعديل علاقات الحساب
       push: تلقي إشعاراتك
       read: قراءة كافة بيانات حسابك
diff --git a/config/locales/doorkeeper.cs.yml b/config/locales/doorkeeper.cs.yml
index d47e1afac..5475114f6 100644
--- a/config/locales/doorkeeper.cs.yml
+++ b/config/locales/doorkeeper.cs.yml
@@ -60,22 +60,30 @@ cs:
       error:
         title: Vyskytla se chyba
       new:
+        prompt_html: "%{client_name} si přeje oprávnění pro přístup k vašemu účtu. Je to aplikace třetí strany. <strong>Pokud jí nedůvěřujete, pak byste ji neměli autorizovat.</strong>"
+        review_permissions: Zkontrolujte oprávnění
         title: Je vyžadována autorizace
       show:
         title: Zkopírujte tento autorizační kód a vložte ho do aplikace.
     authorized_applications:
       buttons:
-        revoke: Zamítnout
+        revoke: Odvolat
       confirmations:
         revoke: Opravdu?
       index:
+        authorized_at: Autorizována %{date}
+        description_html: Toto jsou aplikace, které mohou přistupovat k vašemu účtu s použitím API. Pokud jsou zde aplikace, které nepoznáváte, nebo se aplikace nechová správně, můžete odvolat její přístup.
+        last_used_at: Naposledy použito %{date}
+        never_used: Nikdy nepoužito
+        scopes: Oprávnění
+        superapp: Interní
         title: Vaše autorizované aplikace
     errors:
       messages:
         access_denied: Vlastník zdroje či autorizační server žádost zamítl.
         credential_flow_not_configured: Proud Resource Owner Password Credentials selhal, protože Doorkeeper.configure.resource_owner_from_credentials nebylo nakonfigurováno.
         invalid_client: Ověření klienta selhalo kvůli neznámému klientovi, chybějící klientské autentizaci či nepodporované autentizační metodě.
-        invalid_grant: Poskytnuté oprávnění je neplatné, vypršela jeho platnost, bylo zamítnuto, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu.
+        invalid_grant: Poskytnuté oprávnění je neplatné, vypršela jeho platnost, bylo odvoláno, neshoduje se s URI přesměrování použitým v požadavku o autorizaci, nebo bylo uděleno jinému klientu.
         invalid_redirect_uri: URI pro přesměrování není platné.
         invalid_request:
           missing_param: 'Chybí potřebný parametr: %{value}.'
@@ -85,7 +93,7 @@ cs:
         invalid_scope: Požadovaný rozsah je neplatný, neznámý, nebo špatně formulovaný.
         invalid_token:
           expired: Přístupový token vypršel
-          revoked: Přístupový token byl zamítnut
+          revoked: Přístupový token byl odvolán
           unknown: Přístupový token je neplatný
         resource_owner_authenticator_not_configured: Nález Resource Owner selhal, protože Doorkeeper.configure.resource_owner_authenticator nebylo nakonfigurováno.
         server_error: Autorizační server se setkal s neočekávanou chybou, která mu zabránila ve vykonání požadavku.
@@ -103,7 +111,34 @@ cs:
           notice: Aplikace aktualizována.
       authorized_applications:
         destroy:
-          notice: Aplikace zamítnuta.
+          notice: Aplikace odvolána.
+    grouped_scopes:
+      access:
+        read: Přístup pouze pro čtení
+        read/write: Přístup ke čtení a zápisu
+        write: Přístup pouze pro zápis
+      title:
+        accounts: Účty
+        admin/accounts: Správa účtů
+        admin/all: Všechny správcovské funkce
+        admin/reports: Správa hlášení
+        all: Všechno
+        blocks: Blokace
+        bookmarks: Záložky
+        conversations: Konverzace
+        crypto: End-to-end šifrování
+        favourites: Oblíbení
+        filters: Filtry
+        follow: Vztahy
+        follows: Sledovaní
+        lists: Seznamy
+        media: Mediální přílohy
+        mutes: Skrytí
+        notifications: Oznámení
+        push: Push oznámení
+        reports: Hlášení
+        search: Hledání
+        statuses: Příspěvky
     layouts:
       admin:
         nav:
@@ -118,6 +153,7 @@ cs:
       admin:write: měnit všechna data na serveru
       admin:write:accounts: provádět moderátorské akce s účty
       admin:write:reports: provádět moderátorské akce s hlášeními
+      crypto: používat end-to-end šifrování
       follow: upravovat vztahy mezi profily
       push: přijímat vaše push oznámení
       read: vidět všechna data vašeho účtu
@@ -137,6 +173,7 @@ cs:
       write:accounts: měnit váš profil
       write:blocks: blokovat účty a domény
       write:bookmarks: přidávat příspěvky do záložek
+      write:conversations: skrývat a mazat konverzace
       write:favourites: oblibovat si příspěvky
       write:filters: vytvářet filtry
       write:follows: sledovat lidi
diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml
index 7160ee5ac..692ecc3b7 100644
--- a/config/locales/doorkeeper.oc.yml
+++ b/config/locales/doorkeeper.oc.yml
@@ -104,6 +104,15 @@ oc:
       authorized_applications:
         destroy:
           notice: Aplicacion revocada.
+    grouped_scopes:
+      title:
+        accounts: Comptes
+        bookmarks: Marcadors
+        filters: Filtres
+        lists: Listas
+        media: Fichièrs junts
+        notifications: Notificacions
+        search: Recercar
     layouts:
       admin:
         nav:
diff --git a/config/locales/doorkeeper.vi.yml b/config/locales/doorkeeper.vi.yml
index ecd5cfc4c..d2071a1b4 100644
--- a/config/locales/doorkeeper.vi.yml
+++ b/config/locales/doorkeeper.vi.yml
@@ -170,7 +170,7 @@ vi:
       read:search: thay mặt bạn tìm kiếm
       read:statuses: xem toàn bộ tút
       write: sửa đổi mọi dữ liệu tài khoản của bạn
-      write:accounts: sửa đổi trang cá nhân của bạn
+      write:accounts: sửa đổi trang hồ sơ của bạn
       write:blocks: chặn người dùng và máy chủ
       write:bookmarks: sửa đổi những thứ bạn lưu
       write:conversations: ẩn và xóa thảo luận
diff --git a/config/locales/el.yml b/config/locales/el.yml
index f14420306..518fae886 100644
--- a/config/locales/el.yml
+++ b/config/locales/el.yml
@@ -930,8 +930,8 @@ el:
         one: Επίσης, απέκτησες έναν νέο ακόλουθο ενώ ήσουν μακριά!
         other: Επίσης, απέκτησες %{count} νέους ακόλουθους ενώ ήσουν μακριά! Εκπληκτικό!
       subject:
-        one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου \U0001F418"
-        other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου \U0001F418"
+        one: "1 νέα ειδοποίηση από την τελευταία επίσκεψή σου 🐘"
+        other: "%{count} νέες ειδοποιήσεις από την τελευταία επίσκεψή σου 🐘"
       title: Ενώ έλειπες...
     favourite:
       body: 'Η κατάστασή σου αγαπήθηκε από τον/την %{name}:'
@@ -1247,12 +1247,6 @@ el:
       explanation: Είχες ζητήσει εφεδρικό αντίγραφο του λογαριασμού σου στο Mastodon. Είναι έτοιμο για κατέβασμα!
       subject: Το εφεδρικό αντίγραφό σου είναι έτοιμο για κατέβασμα
       title: Λήψη εφεδρικού αρχείου
-    sign_in_token:
-      details: 'Οι λεπτομέρειες της απόπειρας:'
-      explanation: 'Εντοπίσαμε απόπειρα εισόδου στο λογαριασμό σου από άγνωστη διεύθυνση IP. Άν έγινε από εσένα, παρακαλούμε αντέγραψε τον παρακάτω κωδικό ασφαλείας στη σελίδα εισόδου:'
-      further_actions: 'Αν δεν ήσουν εσύ, παρακαλούμε άλλαξε το κωδικό ασφαλείας σου και ενεργοποίησε τον έλεγχο δύο παραγόντων (2FA) στο λογαριασμό σου. Αυτό το κάνεις εδώ:'
-      subject: Παρακαλούμε επιβεβαίωσε την απόπειρα εισόδου
-      title: Απόπειρα εισόδου
     warning:
       categories:
         spam: Ανεπιθύμητο
@@ -1286,13 +1280,10 @@ el:
       title: Καλώς όρισες, %{name}!
   users:
     follow_limit_reached: Δεν μπορείς να ακολουθήσεις περισσότερα από %{limit} άτομα
-    generic_access_help_html: Δυσκολεύεσαι να μπεις στο λογαριασμό σου; Μπορείς να επικοινωνήσεις στο %{email} για βοήθεια
     invalid_otp_token: Άκυρος κωδικός πιστοποίησης 2 παραγόντων (2FA)
-    invalid_sign_in_token: Άκυρος κωδικός ασφάλειας
     otp_lost_help_html: Αν χάσεις και τα δύο, μπορείς να επικοινωνήσεις με τον/την %{email}
     seamless_external_login: Επειδή έχεις συνδεθεί μέσω τρίτης υπηρεσίας, οι ρυθμίσεις συνθηματικού και email δεν είναι διαθέσιμες.
     signed_in_as: 'Έχεις συνδεθεί ως:'
-    suspicious_sign_in_confirmation: Φαίνεσαι να συνδέεσαι πρώτη φορά από αυτή τη συσκευή και δεν έχεις συνδεθεί εδώ και αρκετό καιρό. Για αυτό το λόγο σου στείλαμε έναν κωδικό ασφαλείας στο email σου για να σιγουρευτούμε πως είσαι όντως εσύ.
   verification:
     explanation_html: 'Μπορείς να <strong>πιστοποιήσεις τον εαυτό σου ως ιδιοκτήτη των συνδέσμων που εμφανίζεις στα μεταδεδομένα του προφίλ σου</strong>. Για να συμβεί αυτό, ο συνδεδεμένος ιστότοπος πρέπει να περιέχει ένα σύνδεσμο που να επιστρέφει προς το προφίλ σου στο Mastodon. Ο σύνδεσμος επιστροφής <strong>πρέπει</strong> περιέχει την ιδιότητα (attribute) <code>rel="me"</code>. Το περιεχόμενο του κειμένου δεν έχει σημασία. Για παράδειγμα:'
     verification: Πιστοποίηση
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 4fa9abc51..294747790 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -1236,8 +1236,8 @@ en:
         one: Also, you have acquired one new follower while being away! Yay!
         other: Also, you have acquired %{count} new followers while being away! Amazing!
       subject:
-        one: "1 new notification since your last visit \U0001F418"
-        other: "%{count} new notifications since your last visit \U0001F418"
+        one: "1 new notification since your last visit 🐘"
+        other: "%{count} new notifications since your last visit 🐘"
       title: In your absence...
     favourite:
       body: 'Your post was favourited by %{name}:'
diff --git a/config/locales/en_GB.yml b/config/locales/en_GB.yml
index a287810aa..2cba40da0 100644
--- a/config/locales/en_GB.yml
+++ b/config/locales/en_GB.yml
@@ -700,8 +700,8 @@ en_GB:
         one: Also, you have acquired one new follower while being away! Yay!
         other: Also, you have acquired %{count} new followers while being away! Amazing!
       subject:
-        one: "1 new notification since your last visit \U0001F418"
-        other: "%{count} new notifications since your last visit \U0001F418"
+        one: "1 new notification since your last visit 🐘"
+        other: "%{count} new notifications since your last visit 🐘"
       title: In your absence...
     favourite:
       body: 'Your status was favourited by %{name}:'
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index f9cc35533..d9ce89447 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -16,6 +16,7 @@ eo:
     contact: Kontakti
     contact_missing: Ne elektita
     contact_unavailable: Ne disponebla
+    continue_to_web: Daŭrigi al la retaplikaĵo
     discover_users: Malkovri uzantojn
     documentation: Dokumentado
     federation_hint_html: Per konto ĉe %{instance}, vi povos sekvi homojn ĉe iu ajn Mastodon nodo kaj preter.
@@ -174,7 +175,6 @@ eo:
       security_measures:
         only_password: Nur pasvorto
         password_and_2fa: Pasvorto kaj 2FA
-        password_and_sign_in_token: Pasvorto kaj retpoŝta ĵetono
       sensitive: Tikla
       sensitized: markita tikla
       shared_inbox_url: URL de kunhavigita leterkesto
@@ -199,7 +199,7 @@ eo:
       whitelisted: En la blanka listo
     action_logs:
       action_types:
-        approve_user: Aprobu Uzanton
+        approve_user: Aprobi Uzanton
         assigned_to_self_report: Atribui Raporton
         change_email_user: Ŝanĝi retadreson de uzanto
         confirm_user: Konfermi uzanto
@@ -226,6 +226,7 @@ eo:
         enable_user: Ebligi uzanton
         memorialize_account: Memorigu Konton
         promote_user: Promocii Uzanton
+        reject_user: Malakcepti Uzanton
         remove_avatar_user: Forigi profilbildon
         reopen_report: Remalfermi signalon
         reset_password_user: Restarigi pasvorton
@@ -234,6 +235,7 @@ eo:
         silence_account: Silentigi konton
         suspend_account: Haltigi konton
         unassigned_report: Malatribui Raporton
+        unblock_email_account: Malbloki retpoŝtadreson
         unsensitive_account: Malmarku la amaskomunikilojn en via konto kiel sentemaj
         unsilence_account: Malsilentigi konton
         unsuspend_account: Malhaltigi konton
@@ -242,6 +244,7 @@ eo:
         update_domain_block: Ĝigdatigi domajnan blokadon
         update_status: Ĝisdatigi staton
       actions:
+        approve_user_html: "%{name} aprobis registriĝon de %{target}"
         assigned_to_self_report_html: "%{name} asignis signalon %{target} al si mem"
         change_email_user_html: "%{name} ŝanĝis retadreson de uzanto %{target}"
         confirm_user_html: "%{name} konfirmis retadreson de uzanto %{target}"
@@ -267,8 +270,10 @@ eo:
         enable_user_html: "%{name} ebligis ensaluton por uzanto %{target}"
         memorialize_account_html: "%{name} ŝanĝis la konton de %{target} al memora paĝo"
         promote_user_html: "%{name} plirangigis uzanton %{target}"
+        reject_user_html: "%{name} malakceptis registriĝon de %{target}"
         remove_avatar_user_html: "%{name} forigis profilbildon de %{target}"
         reopen_report_html: "%{name} remalfermis signalon %{target}"
+        update_announcement_html: "%{name} ĝisdatigis anoncon %{target}"
       deleted_status: "(forigita mesaĝo)"
       empty: Neniu protokolo trovita.
       filter_by_action: Filtri per ago
@@ -328,6 +333,8 @@ eo:
       interactions: interago
       media_storage: Aŭdvidaĵa memorilo
       new_users: novaj uzantoj
+      opened_reports: raportoj malfermitaj
+      resolved_reports: raportoj solvitaj
       software: Programo
       space: Memorspaca uzado
       title: Kontrolpanelo
@@ -379,10 +386,22 @@ eo:
       suppressed: Subpremita
       title: Rekomendoj de sekvado
     instances:
+      availability:
+        title: Disponebleco
       back_to_all: Ĉiuj
       back_to_limited: Limigita
       back_to_warning: Averta
       by_domain: Domajno
+      content_policies:
+        policies:
+          reject_reports: Malakcepti raportojn
+      dashboard:
+        instance_accounts_dimension: Plej sekvataj kontoj
+        instance_accounts_measure: konservitaj kontoj
+        instance_followers_measure: niaj sekvantoj tie
+        instance_follows_measure: iliaj sekvantoj ĉi tie
+        instance_reports_measure: raportoj pri ili
+        instance_statuses_measure: konservitaj afiŝoj
       delivery:
         all: Ĉiuj
       delivery_available: Liverado disponeblas
@@ -442,36 +461,44 @@ eo:
     report_notes:
       created_msg: Signala noto sukcese kreita!
       destroyed_msg: Signala noto sukcese forigita!
+      today_at: Hodiaŭ je %{time}
     reports:
       account:
         notes:
           one: "%{count} noto"
           other: "%{count} notoj"
       action_taken_by: Ago farita de
+      add_to_report: Aldoni pli al raporto
       are_you_sure: Ĉu vi certas?
       assign_to_self: Asigni al mi
       assigned: Asignita kontrolanto
       by_target_domain: Domajno de la signalita konto
+      category: Kategorio
       comment:
         none: Nenio
       created_at: Signalita
+      delete_and_resolve: Forigi afiŝojn
       forwarded: Plusendita
       forwarded_to: Plusendita al %{domain}
       mark_as_resolved: Marki solvita
       mark_as_unresolved: Marki nesolvita
+      no_one_assigned: Neniu
       notes:
         create: Aldoni noton
         create_and_resolve: Solvi per noto
         create_and_unresolve: Remalfermi per noto
         delete: Forigi
         placeholder: Priskribu faritajn agojn, aŭ ajnan novan informon pri tiu signalo…
+        title: Notoj
       reopen: Remalfermi signalon
       report: 'Signalo #%{id}'
       reported_account: Signalita konto
       reported_by: Signalita de
       resolved: Solvitaj
       resolved_msg: Signalo sukcese solvita!
+      skip_to_actions: Salti al agoj
       status: Mesaĝoj
+      statuses: Raportita enhavo
       title: Signaloj
       unassign: Malasigni
       unresolved: Nesolvitaj
@@ -789,6 +816,7 @@ eo:
     delete: Forigi
     order_by: Ordigi de
     save_changes: Konservi ŝanĝojn
+    today: hodiaŭ
     validation_errors:
       one: Io mise okazis! Bonvolu konsulti la suban erar-raporton
       other: Io mise okazis! Bonvolu konsulti la subajn %{count} erar-raportojn
@@ -876,8 +904,8 @@ eo:
         one: Ankaŭ, vi ekhavis novan sekvanton en via foresto! Jej!
         other: Ankaŭ, vi ekhavis %{count} novajn sekvantojn en via foresto! Mirinde!
       subject:
-        one: "1 nova sciigo ekde via lasta vizito \U0001F418"
-        other: "%{count} novaj sciigoj ekde via lasta vizito \U0001F418"
+        one: "1 nova sciigo ekde via lasta vizito 🐘"
+        other: "%{count} novaj sciigoj ekde via lasta vizito 🐘"
       title: En via foresto…
     favourite:
       body: "%{name} stelumis vian mesaĝon:"
@@ -1174,7 +1202,6 @@ eo:
   users:
     follow_limit_reached: Vi ne povas sekvi pli ol %{limit} homo(j)
     invalid_otp_token: Nevalida kodo de dufaktora aŭtentigo
-    invalid_sign_in_token: Nevalida sekureca kodo
     otp_lost_help_html: Se vi perdas aliron al ambaŭ, vi povas kontakti %{email}
     seamless_external_login: Vi estas ensalutinta per ekstera servo, do pasvortaj kaj retadresaj agordoj ne estas disponeblaj.
     signed_in_as: 'Salutinta kiel:'
diff --git a/config/locales/es-AR.yml b/config/locales/es-AR.yml
index 36b46eb47..3ee4df6fd 100644
--- a/config/locales/es-AR.yml
+++ b/config/locales/es-AR.yml
@@ -199,7 +199,6 @@ es-AR:
       security_measures:
         only_password: Sólo contraseña
         password_and_2fa: Contraseña y 2FA
-        password_and_sign_in_token: Contraseña y token por correo electrónico
       sensitive: Forzar como sensible
       sensitized: Marcado como sensible
       shared_inbox_url: Dirección web de la bandeja de entrada compartida
@@ -598,7 +597,7 @@ es-AR:
       action_taken_by: Acción tomada por
       actions:
         delete_description_html: Los mensajes denunciados serán eliminados y se registrará un incumplimiento para ayudarte a escalar en futuras infracciones por la misma cuenta.
-        mark_as_sensitive_description_html: Los archivos de medios en los mensajes denunciados se marcarán como sensibles y se registrará un incumplimiento para ayudarte a escalar las futuras acciones de la misma cuenta.
+        mark_as_sensitive_description_html: Los archivos de medios en los mensajes denunciados se marcarán como sensibles y se registrará un incumplimiento para ayudarte a escalar las futuras infracciones de la misma cuenta.
         other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta denunciada.
         resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará el incumplimiento, y se cerrará la denuncia.
         silence_description_html: El perfil será visible sólo para aquellos que ya sigan esta cuenta o que la busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido.
@@ -1237,8 +1236,8 @@ es-AR:
         one: Además, ¡ganaste un nuevo seguidor mientras estabas ausente! ¡Esa!
         other: Además, ¡ganaste %{count} nuevos seguidores mientras estabas ausente! ¡Esssa!
       subject:
-        one: "1 nueva notificación desde tu última visita \U0001F418"
-        other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
+        one: "1 nueva notificación desde tu última visita 🐘"
+        other: "%{count} nuevas notificaciones desde tu última visita 🐘"
       title: En tu ausencia...
     favourite:
       body: 'Tu mensaje fue marcado como favorito por %{name}:'
@@ -1633,12 +1632,13 @@ es-AR:
       explanation: Solicitaste un resguardo completo de tu cuenta de Mastodon. ¡Ya está listo para descargar!
       subject: Tu archivo historial está listo para descargar
       title: Descargar archivo historial
-    sign_in_token:
-      details: 'Acá están los detalles del intento:'
-      explanation: 'Detectamos un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si fuiste vos, por favor, ingresá el código de seguridad de abajo en la página del desafío:'
-      further_actions: 'Si no eras vos, por favor, cambiá tu contraseña y habilitá la autenticación de dos factores en tu cuenta. Podés hacerlo acá:'
-      subject: Por favor, confirmá el intento de inicio de sesión
-      title: Intento de inicio de sesión
+    suspicious_sign_in:
+      change_password: cambiés tu contraseña
+      details: 'Acá están los detalles del inicio de sesión:'
+      explanation: Detectamos un inicio de sesión de tu cuenta desde una nueva dirección IP.
+      further_actions_html: Si no fuiste vos, te recomendamos que %{action} inmediatamente y habilités la autenticación de dos factores para mantener tu cuenta segura.
+      subject: Se accedió a tu cuenta desde una nueva dirección IP
+      title: Un nuevo inicio de sesión
     warning:
       appeal: Enviar una apelación
       appeal_description: Si creés que esto es un error, podés enviar una apelación al equipo de %{instance}.
@@ -1689,13 +1689,10 @@ es-AR:
       title: "¡Bienvenido a bordo, %{name}!"
   users:
     follow_limit_reached: No podés seguir a más de %{limit} cuentas
-    generic_access_help_html: "¿Tenés problemas para acceder a tu cuenta? Podés ponerte en contacto con %{email} para obtener ayuda"
     invalid_otp_token: Código de dos factores no válido
-    invalid_sign_in_token: Código de seguridad no válido
     otp_lost_help_html: Si perdiste al acceso a ambos, podés ponerte en contacto con %{email}
     seamless_external_login: Iniciaste sesión desde un servicio externo, así que la configuración de contraseña y correo electrónico no están disponibles.
     signed_in_as: 'Iniciaste sesión como:'
-    suspicious_sign_in_confirmation: Parece que no iniciaste sesión desde este dispositivo antes, y no iniciaste sesión durante un tiempo, así que te estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que sos vos.
   verification:
     explanation_html: 'Podés <strong>verificarte a vos mismo como el propietario de los enlaces en los metadatos de tu perfil</strong>. Para eso, el sitio web del enlace debe contener un enlace de vuelta a tu perfil de Mastodon. El enlace en tu sitio <strong>debe</strong> tener un atributo <code>rel="me"</code>. El contenido del texto del enlace no importa. Acá tenés un ejemplo:'
     verification: Verificación
diff --git a/config/locales/es-MX.yml b/config/locales/es-MX.yml
index 17af40f2c..5a3b9cea1 100644
--- a/config/locales/es-MX.yml
+++ b/config/locales/es-MX.yml
@@ -165,6 +165,9 @@ es-MX:
       pending: Revisión pendiente
       perform_full_suspension: Suspender
       previous_strikes: Amonestaciones anteriores
+      previous_strikes_description_html:
+        one: Esta cuenta tiene <strong>una</strong> amonestación.
+        other: Esta cuenta tiene <strong>%{count}</strong> amonestaciones.
       promote: Promocionar
       protocol: Protocolo
       public: Público
@@ -196,7 +199,6 @@ es-MX:
       security_measures:
         only_password: Sólo contraseña
         password_and_2fa: Contraseña y 2FA
-        password_and_sign_in_token: Contraseña y token de correo electrónico
       sensitive: Sensible
       sensitized: marcado como sensible
       shared_inbox_url: URL de bandeja compartida
@@ -523,6 +525,9 @@ es-MX:
       delivery_error_hint: Si la entrega no es posible a lo largo de %{count} días, se marcará automáticamente como no entregable.
       destroyed_msg: Los datos de %{domain} están ahora en cola para su inminente eliminación.
       empty: No se encontraron dominios.
+      known_accounts:
+        one: "%{count} cuenta conocida"
+        other: "%{count} cuentas conocidas"
       moderation:
         all: Todos
         limited: Limitado
@@ -592,7 +597,7 @@ es-MX:
       action_taken_by: Acción tomada por
       actions:
         delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta.
-        mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar futuras acciones sobre la misma cuenta.
+        mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar las futuras infracciones de la misma cuenta.
         other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada.
         resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe.
         silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido.
@@ -791,6 +796,9 @@ es-MX:
         description_html: Estos son enlaces que actualmente están siendo compartidos mucho por las cuentas desde las que tu servidor ve los mensajes. Pueden ayudar a tus usuarios a averiguar qué está pasando en el mundo. Ningún enlace se muestren públicamente hasta que autorice al dominio. También puede permitir o rechazar enlaces individuales.
         disallow: Rechazar enlace
         disallow_provider: Rechazar editor
+        shared_by_over_week:
+          one: Compartido por una persona durante la última semana
+          other: Compartido por %{count} personas durante la última semana
         title: Enlaces en tendencia
         usage_comparison: Compartido %{today} veces hoy, comparado a %{yesterday} ayer
       pending_review: Revisión pendiente
@@ -830,6 +838,9 @@ es-MX:
         trending_rank: Tendencia n.º %{rank}
         usable: Pueden usarse
         usage_comparison: Usada %{today} veces hoy, comparado con %{yesterday} ayer
+        used_by_over_week:
+          one: Usada por una persona durante la última semana
+          other: Usada por %{count} personas durante la última semana
       title: Tendencias
     warning_presets:
       add_new: Añadir nuevo
@@ -1225,8 +1236,8 @@ es-MX:
         one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!"
         other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!"
       subject:
-        one: "1 nueva notificación desde tu última visita \U0001F418"
-        other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
+        one: "1 nueva notificación desde tu última visita 🐘"
+        other: "%{count} nuevas notificaciones desde tu última visita 🐘"
       title: En tu ausencia…
     favourite:
       body: 'Tu estado fue marcado como favorito por %{name}:'
@@ -1621,12 +1632,6 @@ es-MX:
       explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar!
       subject: Tu archivo está preparado para descargar
       title: Descargar archivo
-    sign_in_token:
-      details: 'Aquí están los detalles del intento:'
-      explanation: 'Hemos detectado un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si has sido tú, por favor ingresa el siguiente código de seguridad en la página del desafío:'
-      further_actions: 'Si no has sido tú, por favor cambia tu contraseña y habilita la autenticación de dos factores en tu cuenta. Puedes hacerlo aquí:'
-      subject: Por favor, confirma el intento de inicio de sesión
-      title: Intento de inicio de sesión
     warning:
       appeal: Enviar una apelación
       appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}.
@@ -1677,13 +1682,10 @@ es-MX:
       title: Te damos la bienvenida a bordo, %{name}!
   users:
     follow_limit_reached: No puedes seguir a más de %{limit} personas
-    generic_access_help_html: "¿Tienes problemas para acceder a tu cuenta? Puedes ponerte en contacto con %{email} para conseguir ayuda"
     invalid_otp_token: Código de dos factores incorrecto
-    invalid_sign_in_token: Código de seguridad no válido
     otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email}
     seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles.
     signed_in_as: 'Sesión iniciada como:'
-    suspicious_sign_in_confirmation: Parece que no has iniciado sesión desde este dispositivo antes, y no has iniciado sesión durante un tiempo, así que estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que eres tú.
   verification:
     explanation_html: 'Puedes <strong> verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil </strong>. Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio <strong> debe </strong> tener un atributo <code> rel="me"</code>. El texto del vínculo no importa. Aquí un ejemplo:'
     verification: Verificación
diff --git a/config/locales/es.yml b/config/locales/es.yml
index 2ac09ea44..4f3a9e0da 100644
--- a/config/locales/es.yml
+++ b/config/locales/es.yml
@@ -199,7 +199,6 @@ es:
       security_measures:
         only_password: Sólo contraseña
         password_and_2fa: Contraseña y 2FA
-        password_and_sign_in_token: Contraseña y token de correo electrónico
       sensitive: Sensible
       sensitized: marcado como sensible
       shared_inbox_url: URL de bandeja compartida
@@ -598,7 +597,7 @@ es:
       action_taken_by: Acción tomada por
       actions:
         delete_description_html: Los mensajes denunciados serán eliminados y se registrará una amonestación para ayudarte a escalar en futuras infracciones por la misma cuenta.
-        mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar futuras acciones sobre la misma cuenta.
+        mark_as_sensitive_description_html: Los archivos multimedia en los mensajes informados se marcarán como sensibles y se aplicará una amonestación para ayudarte a escalar las futuras infracciones de la misma cuenta.
         other_description_html: Ver más opciones para controlar el comportamiento de la cuenta y personalizar la comunicación de la cuenta reportada.
         resolve_description_html: No se tomarán medidas contra la cuenta denunciada, no se registrará la amonestación, y se cerrará el informe.
         silence_description_html: El perfil será visible solo para aquellos que ya lo sigan o lo busquen manualmente, limitando seriamente su alcance. Siempre puede ser revertido.
@@ -1237,8 +1236,8 @@ es:
         one: "¡Ademas, has adquirido un nuevo seguidor mientras no estabas! ¡Hurra!"
         other: "¡Ademas, has adquirido %{count} nuevos seguidores mientras no estabas! ¡Genial!"
       subject:
-        one: "1 nueva notificación desde tu última visita \U0001F418"
-        other: "%{count} nuevas notificaciones desde tu última visita \U0001F418"
+        one: "1 nueva notificación desde tu última visita 🐘"
+        other: "%{count} nuevas notificaciones desde tu última visita 🐘"
       title: En tu ausencia…
     favourite:
       body: 'Tu estado fue marcado como favorito por %{name}:'
@@ -1633,12 +1632,13 @@ es:
       explanation: Has solicitado una copia completa de tu cuenta de Mastodon. ¡Ya está preparada para descargar!
       subject: Tu archivo está preparado para descargar
       title: Descargar archivo
-    sign_in_token:
-      details: 'Aquí están los detalles del intento:'
-      explanation: 'Hemos detectado un intento de inicio de sesión en tu cuenta desde una dirección IP no reconocida. Si has sido tú, por favor ingresa el siguiente código de seguridad en la página del desafío:'
-      further_actions: 'Si no has sido tú, por favor cambia tu contraseña y habilita la autenticación de dos factores en tu cuenta. Puedes hacerlo aquí:'
-      subject: Por favor, confirma el intento de inicio de sesión
-      title: Intento de inicio de sesión
+    suspicious_sign_in:
+      change_password: cambies tu contraseña
+      details: 'Aquí están los detalles del inicio de sesión:'
+      explanation: Hemos detectado un inicio de sesión en tu cuenta desde una nueva dirección IP.
+      further_actions_html: Si fuiste tú, te recomendamos que %{action} inmediatamente y habilites la autenticación de dos factores para mantener tu cuenta segura.
+      subject: Tu cuenta ha sido accedida desde una nueva dirección IP
+      title: Un nuevo inicio de sesión
     warning:
       appeal: Enviar una apelación
       appeal_description: Si crees que esto es un error, puedes enviar una apelación al equipo de %{instance}.
@@ -1689,13 +1689,10 @@ es:
       title: Te damos la bienvenida a bordo, %{name}!
   users:
     follow_limit_reached: No puedes seguir a más de %{limit} personas
-    generic_access_help_html: "¿Tienes problemas para acceder a tu cuenta? Puedes ponerte en contacto con %{email} para conseguir ayuda"
     invalid_otp_token: Código de dos factores incorrecto
-    invalid_sign_in_token: Código de seguridad no válido
     otp_lost_help_html: Si perdiste al acceso a ambos, puedes ponerte en contancto con %{email}
     seamless_external_login: Has iniciado sesión desde un servicio externo, así que los ajustes de contraseña y correo no están disponibles.
     signed_in_as: 'Sesión iniciada como:'
-    suspicious_sign_in_confirmation: Parece que no has iniciado sesión desde este dispositivo antes, y no has iniciado sesión durante un tiempo, así que estamos enviando un código de seguridad a tu dirección de correo electrónico para confirmar que eres tú.
   verification:
     explanation_html: 'Puedes <strong> verificarte a ti mismo como el dueño de los links en los metadatos de tu perfil </strong>. Para eso, el sitio vinculado debe contener un vínculo a tu perfil de Mastodon. El vínculo en tu sitio <strong> debe </strong> tener un atributo <code> rel="me"</code>. El texto del vínculo no importa. Aquí un ejemplo:'
     verification: Verificación
diff --git a/config/locales/et.yml b/config/locales/et.yml
index ac8404885..ddb206d12 100644
--- a/config/locales/et.yml
+++ b/config/locales/et.yml
@@ -792,8 +792,8 @@ et:
         one: Ja veel, Te saite ühe uue jälgija kui Te olite eemal! Jee!
         other: Ja veel, Te saite %{count} uut jälgijat kui Te olite eemal! Hämmastav!
       subject:
-        one: "1 uus teavitus peale Teie eelmist külastust \U0001F418"
-        other: "%{count} uut teavitust peale Teie eelmist külastust \U0001F418"
+        one: "1 uus teavitus peale Teie eelmist külastust 🐘"
+        other: "%{count} uut teavitust peale Teie eelmist külastust 🐘"
       title: Teie puudumisel...
     favourite:
       body: "%{name} lisas Teie staatuse lemmikutesse:"
diff --git a/config/locales/eu.yml b/config/locales/eu.yml
index a41a77baf..0dc5d88d6 100644
--- a/config/locales/eu.yml
+++ b/config/locales/eu.yml
@@ -163,6 +163,9 @@ eu:
       pending: Berrikusketa egiteke
       perform_full_suspension: Kanporatu
       previous_strikes: Aurreko abisuak
+      previous_strikes_description_html:
+        one: Kontu honek abisu <strong>bat</strong> dauka.
+        other: Kontu honek <strong>%{count}</strong> abisu dauzka.
       promote: Sustatu
       protocol: Protokoloa
       public: Publikoa
@@ -194,7 +197,6 @@ eu:
       security_measures:
         only_password: Soilik pasahitza
         password_and_2fa: Pasahitza eta 2FA
-        password_and_sign_in_token: Pasahitza eta e-posta tokena
       sensitive: Hunkigarria
       sensitized: hunkigarri gisa markatua
       shared_inbox_url: Partekatutako sarrera ontziaren URL-a
@@ -457,9 +459,13 @@ eu:
       unsuppress: Berrezarri jarraitzeko gomendioa
     instances:
       availability:
+        description_html:
+          one: Domeinura entregatzeak arrakastarik gabe huts egiten badu <strong>egun %{count} </strong>igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu <em>horretatik</em> entregarik jasotzen.
+          other: Domeinura entregatzeak arrakastarik gabe huts egiten badu <strong>%{count} egun</strong> igaro ondoren, ez da entregatzeko saiakera gehiago egingo, ez bada domeinu <em>horretatik</em> entregarik jasotzen.
         failure_threshold_reached: Hutsegite atalasera iritsi da %{date} datan.
         no_failures_recorded: Ez dago hutsegiterik erregistroan.
         title: Egoera
+        warning: Zerbitzari honetara konektatzeko azken saiakerak huts egin du
       back_to_all: Guztiak
       back_to_limited: Mugatua
       back_to_warning: Abisua
@@ -482,6 +488,9 @@ eu:
         instance_followers_measure: gure jarraitzaileak hemen
         instance_follows_measure: beren jarraitzaileak hemen
         instance_languages_dimension: Hizkuntza nagusiak
+        instance_media_attachments_measure: multimedia eranskin biltegiratuta
+        instance_reports_measure: txosten berari buruz
+        instance_statuses_measure: bidalketa gordeta
       delivery:
         all: Guztiak
         clear: Garbitu banaketa erroreak
@@ -493,6 +502,9 @@ eu:
       delivery_error_hint: Banaketa ezin bada %{count} egunean egin, banaezin bezala markatuko da automatikoki.
       destroyed_msg: "%{domain} domeinuko datuak berehala ezabatzeko ilaran daude orain."
       empty: Ez da domeinurik aurkitu.
+      known_accounts:
+        one: Kontu ezagun %{count}
+        other: "%{count} kontu ezagun"
       moderation:
         all: Denak
         limited: Mugatua
@@ -500,12 +512,14 @@ eu:
       private_comment: Iruzkin pribatua
       public_comment: Iruzkin publikoa
       purge: Ezabatu betiko
+      purge_description_html: Domeinu hau behin betiko lineaz kanpo dagoela uste baduzu, domeinuko kontu guztien erregistroak eta erlazionatutako datuak ezabatu ditzakezu biltegitik. Honek luze jo dezake.
       title: Federazioa
       total_blocked_by_us: Guk blokeatuta
       total_followed_by_them: Haiek jarraitua
       total_followed_by_us: Guk jarraitua
       total_reported: Heiei buruzko txostenak
       total_storage: Multimedia eranskinak
+      totals_time_period_hint_html: Behean bistaratutako guztizkoek datu guztiak hartzen dituzte barne.
     invites:
       deactivate_all: Desgaitu guztiak
       filter:
@@ -559,7 +573,9 @@ eu:
       action_log: Auditoria-egunkaria
       action_taken_by: Neurrien hartzailea
       actions:
+        delete_description_html: Salatutako bidalketak ezabatuko dira eta abisu bat gordeko da, etorkizunean kontu berarekin elkarrekintzarik baduzu kontuan izan dezazun.
         other_description_html: Ikusi kontuaren portaera kontrolatzeko eta salatutako kontuarekin komunikazioa pertsonalizatzeko aukera gehiago.
+        resolve_description_html: Ez da neurririk hartuko salatutako kontuaren aurka, ez da abisurik gordeko eta salaketa itxiko da.
         silence_description_html: Profila dagoeneko jarraitzen dutenei edo eskuz bilatzen dutenei bakarrik agertuko zaie, bere irismena asko mugatuz. Beti bota daiteke atzera.
         suspend_description_html: Profila eta bere eduki guztiak iritsiezinak bihurtuko dira, ezabatzen den arte. Kontuarekin ezin da interakziorik eduki. Atzera bota daiteke 30 eguneko epean.
       actions_description_html: Erabaki txosten hau konpontzeko ze ekintza hartu. Salatutako kontuaren aurka zigor ekintza bat hartzen baduzu, eposta jakinarazpen bat bidaliko zaie, <strong>Spam</strong> kategoria hautatzean ezik.
@@ -578,6 +594,7 @@ eu:
       forwarded: Birbidalia
       forwarded_to: 'Hona birbidalia: %{domain}'
       mark_as_resolved: Markatu konpondutako gisa
+      mark_as_sensitive: Markatu hunkigarri gisa
       mark_as_unresolved: Markatu konpondu gabeko gisa
       no_one_assigned: Inor ez
       notes:
@@ -589,6 +606,7 @@ eu:
         title: Oharrak
       notes_description_html: Ikusi eta idatzi oharrak beste moderatzaileentzat eta zuretzat etorkizunerako
       quick_actions_description_html: 'Hartu ekintza azkar bat edo korritu behera salatutako edukia ikusteko:'
+      remote_user_placeholder: "%{instance} instantziako urruneko erabiltzailea"
       reopen: Berrireki salaketa
       report: 'Salaketa #%{id}'
       reported_account: Salatutako kontua
@@ -720,10 +738,21 @@ eu:
       actions:
         delete_statuses: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak ezabatu ditu"
         disable: "%{name} erabiltzailea %{target} erabiltzailearen kontua izoztu du"
+        mark_statuses_as_sensitive: "%{name} erabiltzaileak %{target} erabiltzailearen bidalketak hunkigarri bezala markatu ditu"
         none: "%{name} erabiltzaileak abisua bidali dio %{target} erabiltzaileari"
+        sensitive: "%{name} erabiltzaileak %{target} erabiltzailearen kontua hunkigarri bezala markatu ditu"
+        silence: "%{name} erabiltzaileak %{target} kontua mugatu du"
+        suspend: "%{name} erabiltzaileak %{target} kontua kanporatu du"
+      appeal_approved: Apelatua
+      appeal_pending: Apelazioa zain
     system_checks:
       database_schema_check:
         message_html: Aplikatu gabeko datu-basearen migrazioak daude. Exekutatu aplikazioak esperotako portaera izan dezan
+      elasticsearch_running_check:
+        message_html: Ezin izan da Elasticsearch-era konektatu. Egiaztatu martxan dagoela edo desgaitu testu osoko bilaketa
+      elasticsearch_version_check:
+        message_html: 'Elasticsearch bertsio bateraezina: %{value}'
+        version_comparison: Elasticsearch %{running_version} exekutatzen ari da, baina %{required_version} behar da
       rules_check:
         action: Kudeatu zerbitzariaren arauak
         message_html: Ez duzu zerbitzariaren araurik definitu.
@@ -740,8 +769,12 @@ eu:
       links:
         allow: Onartu esteka
         allow_provider: Onartu argitaratzailea
+        description_html: Esteka hauek zure zerbitzariak ikusten dituen kontuek asko zabaltzen ari diren estekak dira. Zure erabiltzaileei munduan ze berri den jakiteko lagungarriak izan daitezke. Ez da estekarik bistaratzen argitaratzaileak onartu arte. Esteka bakoitza onartu edo baztertu dezakezu.
         disallow: Ukatu esteka
         disallow_provider: Ukatu argitaratzailea
+        shared_by_over_week:
+          one: Pertsona batek partekatua azken astean
+          other: "%{count} pertsonak partekatua azken astean"
         title: Esteken joerak
         usage_comparison: "%{today} aldiz partekatua gaur, atzo %{yesterday} aldiz"
       pending_review: Berrikusketaren zain
@@ -750,6 +783,11 @@ eu:
         rejected: Argitaratzaile honen estekek ezin dute joera izan
         title: Argitaratzaileak
       rejected: Ukatua
+      statuses:
+        allow: Onartu bidalketa
+        allow_account: Onartu egilea
+        disallow: Ez onartu bidalketa
+        disallow_account: Ez onartu egilea
       tags:
         current_score: Uneko emaitza%{score}
         dashboard:
@@ -783,6 +821,11 @@ eu:
       body: "%{reporter}(e)k %{target} salatu du"
       body_remote: "%{domain} domeinuko norbaitek %{target} salatu du"
       subject: Salaketa berria %{instance} instantzian (#%{id})
+    new_trends:
+      new_trending_links:
+        title: Esteken joerak
+      new_trending_tags:
+        title: Traolak joeran
   aliases:
     add_new: Sortu ezizena
     created_msg: Ongi sortu da ezizena. Orain kontu zaharretik migratzen hasi zaitezke.
@@ -834,6 +877,7 @@ eu:
     invalid_reset_password_token: Pasahitza berrezartzeko token-a baliogabea da edo iraungitu du. Eskatu beste bat.
     link_to_otp: Erabili zure mugikorreko bi faktoreko kodea edo berreskuratze kode bat
     link_to_webauth: Erabili zure segurtasun gako gailua
+    log_in_with: 'Saioa hasi honekin:'
     login: Hasi saioa
     logout: Amaitu saioa
     migrate_account: Migratu beste kontu batera
@@ -855,6 +899,7 @@ eu:
     status:
       account_status: Kontuaren egoera
       confirming: E-mail baieztapena osatu bitartean zain.
+      functional: Zure kontua guztiz erabilgarri dago.
       pending: Zure eskaera gainbegiratzeko dago oraindik. Honek denbora behar lezake. Zure eskaera onartzen bada e-mail bat jasoko duzu.
       redirecting_to: Zure kontua ez dago aktibo orain %{acct} kontura birbideratzen duelako.
     too_fast: Formularioa azkarregi bidali duzu, saiatu berriro.
@@ -920,6 +965,12 @@ eu:
     directory: Profilen direktorioa
     explanation: Deskubritu erabiltzaileak interesen arabera
     explore_mastodon: Esploratu %{title}
+  disputes:
+    strikes:
+      appeal: Apelazioa
+      appeals:
+        submit: Bidali apelazioa
+      recipient: Honi zuzendua
   domain_validator:
     invalid_domain: ez da domeinu izen baliogarria
   errors:
@@ -1102,8 +1153,8 @@ eu:
         one: Kanpoan zeundela jarraitzaile berri bat gehitu zaizu!
         other: Kanpoan zeundela %{count} jarraitzaile berri bat gehitu zaizkizu!
       subject:
-        one: "Jakinarazpen berri bat azken bisitatik \U0001F418"
-        other: "%{count} jakinarazpen berri azken bisitatik \U0001F418"
+        one: "Jakinarazpen berri bat azken bisitatik 🐘"
+        other: "%{count} jakinarazpen berri azken bisitatik 🐘"
       title: Kanpoan zeundela...
     favourite:
       body: "%{name}(e)k zure bidalketa gogoko du:"
@@ -1479,12 +1530,6 @@ eu:
       explanation: Zure Mastodon kontuaren babes-kopia osoa eskatu duzu. Deskargatzeko prest dago!
       subject: Zure artxiboa deskargatzeko prest dago
       title: Artxiboa jasotzea
-    sign_in_token:
-      details: 'Hemen daude saiakeraren xehetasunak:'
-      explanation: 'IP helbide ezezagun batetik zure kontuan saioa hasteko saiakera bat detektatu dugu. Zu bazara, sartu beheko segurtasun kodea saioa hasteko erronkaren orrian:'
-      further_actions: 'Ez bazara zu, aldatu zure pasahitza eta gaitu bi faktoreko autentifikazioa zure kontuan. Hemen egin dezakezu:'
-      subject: Berretsi saioa hasteko saiakera
-      title: Saioa hasteko saiakera
     warning:
       subject:
         disable: Zure  %{acct} kontua izoztu da
@@ -1515,13 +1560,10 @@ eu:
       title: Ongi etorri, %{name}!
   users:
     follow_limit_reached: Ezin dituzu %{limit} pertsona baino gehiago jarraitu
-    generic_access_help_html: Arazoak dituzu zure kontura sartzeko? Jarri harremanetan %{email} helbidearekin laguntzarako
     invalid_otp_token: Bi faktoreetako kode baliogabea
-    invalid_sign_in_token: Segurtasun kode baliogabea
     otp_lost_help_html: 'Bietara sarbidea galdu baduzu, jarri kontaktuan hemen: %{email}'
     seamless_external_login: Kanpo zerbitzu baten bidez hasi duzu saioa, beraz pasahitza eta e-mail ezarpenak ez daude eskuragarri.
     signed_in_as: 'Saioa honela hasita:'
-    suspicious_sign_in_confirmation: Dirudienez inoiz ez duzu saioa hasi gailu honetatik eta aspaldian ez duzu saiorik hasi. Horregatik, segurtasun kode bat bidaliko dizugu zure e-posta helbidera zu zarela egiaztatzeko.
   verification:
     explanation_html: 'Ezin duzu <strong>zure burua zure profileko metadatuen esteken jabe gisa egiaztatu</strong>. Horretarako, estekatutako webgunean zure Mastodon profilera daraman esteka bat egon behar du. Mastodonera daraman esteka horrek<strong>derrigorrez</strong> <code>rel="me"</code> artibutua izan behar du . Estekaren testuak ez du axola. Hona adibide bat:'
     verification: Egiaztaketa
diff --git a/config/locales/fa.yml b/config/locales/fa.yml
index 2379e63da..020b21287 100644
--- a/config/locales/fa.yml
+++ b/config/locales/fa.yml
@@ -196,7 +196,6 @@ fa:
       security_measures:
         only_password: فقط گذرواژه
         password_and_2fa: گذرواژه و ۲عاملی
-        password_and_sign_in_token: گذرواژه و ژتون رایانامه‌ای
       sensitive: حساس
       sensitized: علامت‌زده به عنوان حساس
       shared_inbox_url: نشانی صندوق ورودی مشترک
@@ -1091,8 +1090,8 @@ fa:
         one: در ضمن، وقتی که نبودید یک پیگیر تازه پیدا کردید! ای ول!
         other: در ضمن، وقتی که نبودید %{count} پیگیر تازه پیدا کردید! چه عالی!
       subject:
-        one: "یک اعلان تازه از زمان آخرین بازدید شما \U0001F418"
-        other: "%{count} آگاهی جدید از آخرین بازدیدتان \U0001F418"
+        one: "یک اعلان تازه از زمان آخرین بازدید شما 🐘"
+        other: "%{count} آگاهی جدید از آخرین بازدیدتان 🐘"
       title: در مدتی که نبودید...
     favourite:
       body: "%{name} این نوشتهٔ شما را پسندید:"
@@ -1478,12 +1477,6 @@ fa:
       explanation: شما یک نسخهٔ پشتیبان کامل از حساب خود را درخواست کردید. این پشتیبان الان آمادهٔ بارگیری است!
       subject: بایگانی شما آمادهٔ دریافت است
       title: گرفتن بایگانی
-    sign_in_token:
-      details: 'جزییات تلاش‌ها:'
-      explanation: 'تلاشی برای ورود به حسابتان از یک نشانی آی‌پی ناشناخته کشف کردیم. اگر خودتان بودید، لطفاً رمز امنیتی زیر را در صفحهٔ چالش وارد کنید:'
-      further_actions: 'اگر خودتان نیودید، لطفاً گذرواژه‌تان را عوض کرده و از این‌جا تأیید هویت دو مرحله‌ای را روی حسابتان به کار بیندازید:'
-      subject: لطفاً تلاش برای ورود را تأیید کنید
-      title: تلاش برای ورود
     warning:
       appeal: فرستادن یک درخواست تجدیدنظر
       appeal_description: اگر فکر می‌کنید این یک خطا است، می‌توانید یک درخواست تجدیدنظر به کارکنان %{instance} ارسال کنید.
@@ -1520,13 +1513,10 @@ fa:
       title: خوش آمدید، کاربر %{name}!
   users:
     follow_limit_reached: شما نمی‌توانید بیش از %{limit} نفر را پی بگیرید
-    generic_access_help_html: مشکل در دسترسی به حسابتان؟ می‌توانید برای کمک با %{email} تکاس بگیرید
     invalid_otp_token: کد ورود دومرحله‌ای نامعتبر است
-    invalid_sign_in_token: کد امنیتی نادرست
     otp_lost_help_html: اگر شما دسترسی به هیچ‌کدامشان ندارید، باید با ایمیل %{email} تماس بگیرید
     seamless_external_login: شما با یک سرویس خارج از مجموعه وارد شده‌اید، به همین دلیل تنظیمات ایمیل و رمز برای شما در دسترس نیست.
     signed_in_as: 'واردشده به نام:'
-    suspicious_sign_in_confirmation: به نظر می‌رسد پیش‌تر از این افزاره وارد نشده بودید و مدتی می‌شود که وارد نشده‌اید. داریم برای تأیید، یک رمز امنیتی به نشانی رایانامه‌تان می‌فرستیم.
   verification:
     explanation_html: 'شما می‌توانید <strong>خود را به عنوان مالک صفحه‌ای که در نمایه‌تان به آن پیوند داده‌اید تأیید کنید.</strong> برای این کار، صفحه‌ای که به آن پیوند داده‌اید، خودش باید پیوندی به نمایهٔ ماستودون شما داشته باشد. پیوند در آن صفحه <strong>باید</strong> عبارت <code>rel="me"‎</code> را به عنوان مشخّصهٔ (attribute) در خود داشته باشد. محتوای متن پیوند اهمتی ندارد. یک نمونه از چنین پیوندی:'
     verification: تأیید
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 1cdaed6ef..f671bd20f 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -196,7 +196,6 @@ fi:
       security_measures:
         only_password: Vain salasana
         password_and_2fa: Salasana ja kaksivaiheinen tunnistautuminen
-        password_and_sign_in_token: Salasana ja sähköpostitunnus
       sensitive: Pakotus arkaluontoiseksi
       sensitized: Merkitty arkaluontoiseksi
       shared_inbox_url: Jaetun saapuvan postilaatikon osoite
@@ -558,7 +557,6 @@ fi:
       action_taken_by: Toimenpiteen tekijä
       actions:
         delete_description_html: Ilmoitetut viestit poistetaan ja kirjataan varoitus, joka auttaa sinua saman tilin tulevista rikkomuksista.
-        mark_as_sensitive_description_html: Ilmoitettujen viestien media merkitään arkaluonteisiksi ja varoitus tallennetaan, jotta voit lisätä saman tilin tulevia rikkomuksia.
         other_description_html: Katso lisää vaihtoehtoja tilin käytöksen hallitsemiseksi ja ilmoitetun tilin viestinnän mukauttamiseksi.
         resolve_description_html: Ilmoitettua tiliä vastaan ei ryhdytä toimenpiteisiin, varoitusta ei kirjata ja raportti suljetaan.
         silence_description_html: Profiili näkyy vain niille, jotka jo seuraavat sitä tai etsivät sen manuaalisesti, mikä rajoittaa merkittävästi kattavuutta. Se voidaan aina palauttaa.
@@ -1186,8 +1184,8 @@ fi:
         one: Olet myös saanut yhden uuden seuraajan! Juhuu!
         other: Olet myös saanut %{count} uutta seuraajaa! Aivan mahtavaa!
       subject:
-        one: "1 uusi ilmoitus viime käyntisi jälkeen \U0001F418"
-        other: "%{count} uutta ilmoitusta viime käyntisi jälkeen \U0001F418"
+        one: "1 uusi ilmoitus viime käyntisi jälkeen 🐘"
+        other: "%{count} uutta ilmoitusta viime käyntisi jälkeen 🐘"
       title: Poissaollessasi…
     favourite:
       body: "%{name} tykkäsi tilastasi:"
@@ -1500,12 +1498,6 @@ fi:
       explanation: Pyysit täydellistä varmuuskopiota Mastodon-tilistäsi. Voit nyt ladata sen!
       subject: Arkisto on valmiina ladattavaksi
       title: Arkiston tallennus
-    sign_in_token:
-      details: 'Tässä yrityksen yksityiskohtia:'
-      explanation: 'Tunnistimme sisäänkirjautumisyrityksen tunnistamattomasta IP-osoitteesta. Jos se olit sinä, syötä alla oleva turvakoodi sisäänkirjautumissivulle:'
-      further_actions: 'Jos tämä et ollut sinä, vaihda salasanasi ja ota käyttöön kaksivaiheinen todennus tililläsi. Voit tehdä sen täällä:'
-      subject: Ole hyvä ja vahvista sisäänkirjautumisyritys
-      title: Sisäänkirjautumisyritys
     warning:
       appeal: Lähetä valitus
       appeal_description: Jos uskot, että tämä on virhe, voit hakea muutosta henkilökunnalta %{instance}.
@@ -1556,13 +1548,10 @@ fi:
       title: Tervetuloa mukaan, %{name}!
   users:
     follow_limit_reached: Et voi seurata yli %{limit} henkilöä
-    generic_access_help_html: Onko sinulla pääsy tiliisi? Voit ottaa yhteyttä %{email} saadaksesi apua
     invalid_otp_token: Virheellinen kaksivaiheisen todentamisen koodi
-    invalid_sign_in_token: Virheellinen turvakoodi
     otp_lost_help_html: Jos sinulla ei ole pääsyä kumpaankaan, voit ottaa yhteyttä osoitteeseen %{email}
     seamless_external_login: Olet kirjautunut ulkoisen palvelun kautta, joten salasana- ja sähköpostiasetukset eivät ole käytettävissä.
     signed_in_as: 'Kirjautunut henkilönä:'
-    suspicious_sign_in_confirmation: Et ilmeisesti ole kirjautunut sisään tältä laitteelta aikaisemmin, joten lähetämme sähköpostiisi turvakoodin vahvistaaksesi, että se olet sinä.
   verification:
     explanation_html: 'Voit <strong>vahvistaa itsesi profiilisi metatietojen linkkien omistajaksi.</strong>. Tätä varten linkitetyn verkkosivuston on sisällettävä linkki takaisin Mastodon -profiiliisi. Palauttavalla linkillä <strong>täytyy</strong> olla <code>rel="minä"</code> tuntomerkki. Linkin tekstisisällöllä ei ole väliä. Tässä on esimerkki:'
     verification: Vahvistus
diff --git a/config/locales/fr.yml b/config/locales/fr.yml
index bc1902cf8..2cfbc5c86 100644
--- a/config/locales/fr.yml
+++ b/config/locales/fr.yml
@@ -199,7 +199,6 @@ fr:
       security_measures:
         only_password: Mot de passe uniquement
         password_and_2fa: Mot de passe et 2FA
-        password_and_sign_in_token: Mot de passe et jeton par courriel
       sensitive: Sensible
       sensitized: marqué comme sensible
       shared_inbox_url: URL de la boite de réception partagée
@@ -1234,8 +1233,8 @@ fr:
         one: De plus, vous avez un·e nouvel·le abonné·e ! Youpi !
         other: De plus, vous avez %{count} abonné·e·s de plus ! Incroyable !
       subject:
-        one: "Une nouvelle notification depuis votre dernière visite \U0001F418"
-        other: "%{count} nouvelles notifications depuis votre dernière visite \U0001F418"
+        one: "Une nouvelle notification depuis votre dernière visite 🐘"
+        other: "%{count} nouvelles notifications depuis votre dernière visite 🐘"
       title: Pendant votre absence…
     favourite:
       body: "%{name} a ajouté votre message à ses favoris :"
@@ -1630,12 +1629,11 @@ fr:
       explanation: Vous avez demandé une sauvegarde complète de votre compte Mastodon. Elle est maintenant prête à être téléchargée !
       subject: Votre archive est prête à être téléchargée
       title: Récupération de l’archive
-    sign_in_token:
-      details: 'Voici les détails de la tentative :'
-      explanation: 'Nous avons détecté une tentative de connexion à votre compte à partir d’une adresse IP non reconnue. Si c’est vous, veuillez entrer le code de sécurité ci-dessous sur la page de négociation de connexion :'
-      further_actions: 'S’il ne s’agit pas de vous, veuillez changer votre mot de passe et activer l’authentification à deux facteurs sur votre compte. Vous pouvez le faire ici :'
-      subject: Veuillez confirmer la tentative de connexion
-      title: Tentative de connexion
+    suspicious_sign_in:
+      change_password: changer votre mot de passe
+      explanation: Nous avons détecté une connexion à votre compte à partir d’une nouvelle adresse IP.
+      further_actions_html: Si ce n’était pas vous, nous vous recommandons de %{action} immédiatement et d’activer l’authentification à deux facteurs afin de garder votre compte sécurisé.
+      title: Une nouvelle connexion
     warning:
       appeal: Faire appel
       appeal_description: Si vous pensez qu'il s'agit d'une erreur, vous pouvez faire appel auprès de l'équipe de %{instance}.
@@ -1686,13 +1684,10 @@ fr:
       title: Bienvenue à bord, %{name} !
   users:
     follow_limit_reached: Vous ne pouvez pas suivre plus de %{limit} personnes
-    generic_access_help_html: Rencontrez-vous des difficultés d’accès à votre compte ? Vous pouvez contacter %{email} pour obtenir de l’aide
     invalid_otp_token: Le code d’authentification à deux facteurs est invalide
-    invalid_sign_in_token: Code de sécurité non valide
     otp_lost_help_html: Si vous perdez accès aux deux, vous pouvez contacter %{email}
     seamless_external_login: Vous êtes connecté via un service externe, donc les paramètres concernant le mot de passe et le courriel ne sont pas disponibles.
     signed_in_as: 'Connecté·e en tant que :'
-    suspicious_sign_in_confirmation: Il semblerait que vous ne vous êtes pas connecté depuis cet appareil auparavant et que vous ne vous êtes pas connecté depuis un moment, alors nous envoyons un code de sécurité à votre adresse courriel pour confirmer qu’il s’agit bien de vous.
   verification:
     explanation_html: 'Vous pouvez <strong>vous vérifier en tant que propriétaire des liens dans les métadonnées de votre profil</strong>. Pour cela, le site web lié doit contenir un lien vers votre profil Mastodon. Le lien de retour <strong>doit</strong> avoir un attribut <code>rel="me"</code> . Le texte du lien n’a pas d’importance. Voici un exemple :'
     verification: Vérification
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index 0f6524fbd..767faff6e 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -173,6 +173,11 @@ gd:
       pending: A’ feitheamh air lèirmheas
       perform_full_suspension: Cuir à rèim
       previous_strikes: Rabhaidhean roimhe
+      previous_strikes_description_html:
+        few: Fhuair an cunntas seo <strong>%{count}</strong> rabhaidhean.
+        one: Fhuair an cunntas seo <strong>%{count}</strong> rabhadh.
+        other: Fhuair an cunntas seo <strong>%{count}</strong> rabhadh.
+        two: Fhuair an cunntas seo <strong>%{count}</strong> rabhadh.
       promote: Àrdaich
       protocol: Pròtacal
       public: Poblach
@@ -204,7 +209,6 @@ gd:
       security_measures:
         only_password: Facal-faire a-mhàin
         password_and_2fa: Facal-faire ’s dà-cheumnach
-        password_and_sign_in_token: Facal-faire ’s tòcan puist-d
       sensitive: Spàrr an fhrionasachd air
       sensitized: Chaidh comharradh gu bheil e frionasach
       shared_inbox_url: URL a’ bhogsa a-steach cho-roinnte
@@ -545,6 +549,11 @@ gd:
       delivery_error_hint: Mura gabh a lìbhrigeadh fad %{count} là(ithean), thèid comharra a chur ris gu fèin-obrachail a dh’innseas nach gabh a lìbhrigeadh.
       destroyed_msg: Tha an dàta o %{domain} air ciutha an sguabaidh às aithghearr.
       empty: Cha deach àrainn a lorg.
+      known_accounts:
+        few: "%{count} cunntasan as aithne dhuinn"
+        one: "%{count} chunntas as aithne dhuinn"
+        other: "%{count} cunntas as aithne dhuinn"
+        two: "%{count} chunntas as aithne dhuinn"
       moderation:
         all: Na h-uile
         limited: Cuingichte
@@ -616,7 +625,6 @@ gd:
       action_taken_by: Chaidh an gnìomh a ghabhail le
       actions:
         delete_description_html: Thèid na postaichean le gearan orra a sguabadh às agus rabhadh a chlàradh gus do chuideachadh ach am bi thu nas teinne le droch-ghiùlan on aon chunntas sam àm ri teachd.
-        mark_as_sensitive_description_html: Thèid comharra an fhrionasachd a chur ris na meadhanan sna postaichean le gearan orra agus rabhadh a chlàradh gus do chuideachadh ach am bi thu nas teinne le droch-ghiùlan on aon chunntas sam àm ri teachd.
         other_description_html: Seall barrachd roghainnean airson giùlan a’ chunntais a stiùireadh agus an conaltradh leis a’ chunntas a chaidh gearan a dhèanamh mu dhèidhinn a ghnàthachadh.
         resolve_description_html: Cha dèid gnìomh sam bith a ghabhail an aghaidh a’ chunntais le gearan air agus thèid an gearan a dhùnadh gun rabhadh a chlàradh.
         silence_description_html: Chan fhaic ach an fheadhainn a tha a’ leantainn oirre mu thràth no a lorgas a làimh i a’ phròifil seo agus cuingichidh seo uiread nan daoine a ruigeas i gu mòr. Gabhaidh seo a neo-dhèanamh uair sam bith.
@@ -815,6 +823,11 @@ gd:
         description_html: Seo na ceanglaichean a tha ’gan co-roinneadh le iomadh cunntas on a chì am frithealaiche agad na postaichean. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ach am faigh iad a-mach dè tha tachairt air an t-saoghal. Cha dèid ceanglaichean a shealltainn gu poblach gus an aontaich thu ris an fhoillsichear. ’S urrainn dhut ceanglaichean àraidh a cheadachadh no a dhiùltadh cuideachd.
         disallow: Na ceadaich an ceangal
         disallow_provider: Na ceadaich am foillsichear
+        shared_by_over_week:
+          few: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh
+          one: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh
+          other: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh
+          two: Chaidh a cho-roinneadh le %{count} rè na seachdain seo chaidh
         title: Ceanglaichean a’ treandadh
         usage_comparison: Chaidh a cho-roinneadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè
       pending_review: A’ feitheamh air lèirmheas
@@ -856,6 +869,11 @@ gd:
         trending_rank: 'A’ treandadh #%{rank}'
         usable: Gabhaidh a chleachdadh
         usage_comparison: Chaidh a chleachdadh %{today} tura(i)s an-diugh an coimeas ri %{yesterday} an-dè
+        used_by_over_week:
+          few: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh
+          one: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh
+          other: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh
+          two: Chaidh a chleachdadh le %{count} rè na seachdain seo chaidh
       title: Treandaichean
     warning_presets:
       add_new: Cuir fear ùr ris
@@ -1257,10 +1275,10 @@ gd:
         other: Cuideachd, bhuannaich thu %{count} luchd-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
         two: Cuideachd, bhuannaich thu %{count} neach-leantainn ùr on àm a bha thu air falbh! Nach ma sin!
       subject:
-        few: "%{count} brathan ùra on tadhal mu dheireadh agad \U0001F418"
-        one: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418"
-        other: "%{count} brath ùr on tadhal mu dheireadh agad \U0001F418"
-        two: "%{count} bhrath ùr on tadhal mu dheireadh agad \U0001F418"
+        few: "%{count} brathan ùra on tadhal mu dheireadh agad 🐘"
+        one: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘"
+        other: "%{count} brath ùr on tadhal mu dheireadh agad 🐘"
+        two: "%{count} bhrath ùr on tadhal mu dheireadh agad 🐘"
       title: Fhad ’s a bha thu air falbh…
     favourite:
       body: 'Is annsa le %{name} am post agad:'
@@ -1589,12 +1607,6 @@ gd:
       explanation: Dh’iarr thu lethbhreac-glèidhidh slàn dhen chunntas Mastodon agad. Tha e deis ri luchdadh a-nuas a-nis!
       subject: Tha an tasg-lann agad deis ri luchdadh a-nuas
       title: Tasg-lann dhut
-    sign_in_token:
-      details: 'Seo mion-fhiosrachadh mun oidhirp:'
-      explanation: 'Mhothaich sinn do dh’oidhirp clàraidh a-steach dhan chunntas agad o sheòladh IP nach aithne dhuinn. Mas e tusa a bh’ ann, cuir a-steach an còd tèarainteachd gu h-ìosal air duilleag dùbhlan a’ chlàraidh a-steach:'
-      further_actions: 'Mur e tusa a bh’ ann, atharraich am facal-faire agad agus cuir an comas an dearbhadh dà-cheumnach air a’ chunntas agad. ’S urrainn dhut sin a dhèanamh an-seo:'
-      subject: Dearbh an oidhirp air clàradh a-steach
-      title: Oidhirp clàraidh a-steach
     warning:
       appeal: Cuir ath-thagradh a-null
       appeal_description: Ma tha thu dhen bheachd gur e mearachd a th’ ann, ’s urrainn dhut ath-thagradh a chur a-null gun sgioba aig %{instance}.
@@ -1645,13 +1657,10 @@ gd:
       title: Fàilte air bòrd, %{name}!
   users:
     follow_limit_reached: Chan urrainn dhut leantainn air còrr is %{limit} daoine
-    generic_access_help_html: A bheil trioblaid agad le inntrigeadh a’ chunntais agad? ’S urrainn dhut fios a chur gu %{email} airson taic
     invalid_otp_token: Còd dà-cheumnach mì-dhligheach
-    invalid_sign_in_token: Còd tèarainteachd mì-dhligheach
     otp_lost_help_html: Ma chaill thu an t-inntrigeadh dhan dà chuid diubh, ’s urrainn dhut fios a chur gu %{email}
     seamless_external_login: Rinn thu clàradh a-steach le seirbheis on taobh a-muigh, mar sin chan eil roghainnean an fhacail-fhaire ’s a’ phuist-d ri làimh dhut.
     signed_in_as: 'Chlàraich thu a-steach mar:'
-    suspicious_sign_in_confirmation: Tha coltas nach do rinn thu clàradh a-steach on uidheam seo cheana. Air an adhbhar sin, cuiridh sinn còd tèarainteachd dhan t-seòladh puist-d agad ach an dearbhamaid gur e tusa a th’ ann.
   verification:
     explanation_html: '’S urrainn dhut <strong>dearbhadh gur e seilbheadair nan ceanglaichean ann am meata-dàta na pròifil agad a th’ annad</strong>. Airson sin a dhèanamh, feumaidh ceangal air ais dhan phròifil Mastodon a bhith aig an làrach-lìn cheangailte. <strong>Feumaidh</strong> buadh <code>rel="me"</code> a bhith aig a’ cheangal air ais. Chan eil e gu diofar dè an t-susbaint a tha ann an teacsa a’ cheangail. Seo ball-eisimpleir dhut:'
     verification: Dearbhadh
diff --git a/config/locales/gl.yml b/config/locales/gl.yml
index e28d9e018..d642ee4e1 100644
--- a/config/locales/gl.yml
+++ b/config/locales/gl.yml
@@ -165,6 +165,9 @@ gl:
       pending: Revisión pendente
       perform_full_suspension: Suspender
       previous_strikes: Accións previas
+      previous_strikes_description_html:
+        one: Esta conta ten <strong>un</strong> aviso.
+        other: Esta conta ten <strong>%{count}</strong> avisos.
       promote: Promocionar
       protocol: Protocolo
       public: Público
@@ -196,7 +199,6 @@ gl:
       security_measures:
         only_password: Só contrasinal
         password_and_2fa: Contrasinal e 2FA
-        password_and_sign_in_token: Contrasinal e token nun email
       sensitive: Forzar como sensible
       sensitized: Marcado como sensible
       shared_inbox_url: URL da caixa de entrada compartida
@@ -523,6 +525,9 @@ gl:
       delivery_error_hint: Se non é posible a entrega durante %{count} días, será automáticamente marcado como non entregable.
       destroyed_msg: Os datos desde %{domain} están na cola para o borrado inminente.
       empty: Non se atopan dominios.
+      known_accounts:
+        one: "%{count} conta coñecida"
+        other: "%{count} contas coñecidas"
       moderation:
         all: Todo
         limited: Limitado
@@ -592,7 +597,7 @@ gl:
       action_taken_by: Acción tomada por
       actions:
         delete_description_html: As publicacións denunciadas van ser eliminadas e gárdase un aviso para axudarche a xestionar futuras infraccións desta conta.
-        mark_as_sensitive_description_html: O multimedia das publicacións denunciadas vai ser marcado como sensible e apúntase un aviso para axudarche a facer seguimento das infraccións da mesma conta.
+        mark_as_sensitive_description_html: Os multimedia das publicacións denunciadas serán marcados como sensibles e engadirase un aviso para axudarche a xestionar futuras infraccións da mesma conta.
         other_description_html: Mira máis opcións para controlar o comportamento da conta e personalizar as comunicacións coa conta denunciada.
         resolve_description_html: Non se van tomar accións contra a conta denunciada, nin se gardan avisos, e a denuncia arquivada.
         silence_description_html: O perfil será visible só para quen xa o está a seguir ou quen o buscou manualmente, limitando moito o seu alcance. Pódese cambiar.
@@ -791,6 +796,9 @@ gl:
         description_html: Estas son ligazóns que actualmente están sendo compartidas por moitas contas das que o teu servidor recibe publicación. Pode ser de utilidade para as túas usuarias para saber o que acontece polo mundo. Non se mostran ligazóns de xeito público a non ser que autorices a quen as publica. Tamén podes permitir ou rexeitar ligazóns de xeito individual.
         disallow: Denegar ligazón
         disallow_provider: Denegar orixe
+        shared_by_over_week:
+          one: Compartido por unha persoa na última semana
+          other: Compartido por %{count} persoas na última semana
         title: Ligazóns en voga
         usage_comparison: Compartido %{today} veces hoxe, comparado con %{yesterday} onte
       pending_review: Revisión pendente
@@ -830,6 +838,9 @@ gl:
         trending_rank: 'En voga #%{rank}'
         usable: Pode ser usado
         usage_comparison: Utilizado %{today} veces hoxe, comparado coas %{yesterday} de onte
+        used_by_over_week:
+          one: Utilizado por unha persoa na última semana
+          other: Utilizado por %{count} persoas na última semana
       title: Tendencias
     warning_presets:
       add_new: Engadir novo
@@ -1225,8 +1236,8 @@ gl:
         one: Ademáis, ten unha nova seguidora desde entón! Ben!
         other: Ademáis, obtivo %{count} novas seguidoras desde entón! Tremendo!
       subject:
-        one: "1 nova notificación desde a súa última visita \U0001F418"
-        other: "%{count} novas notificacións desde a súa última visita \U0001F418"
+        one: "1 nova notificación desde a súa última visita 🐘"
+        other: "%{count} novas notificacións desde a súa última visita 🐘"
       title: Na súa ausencia...
     favourite:
       body: 'A túa publicación foi marcada como favorita por %{name}:'
@@ -1621,12 +1632,13 @@ gl:
       explanation: Solicitaches os datos completos da túa conta de Mastodon. Xa está preparados para descargar!
       subject: O teu ficheiro xa está preparado para descargar
       title: Leve o ficheiro
-    sign_in_token:
-      details: 'Detalles sobre o intento:'
-      explanation: 'Detectamos un intento de acceso coa túa conta desde un enderezo IP descoñecido. Se es ti, escribe o código de seguridade inferior na páxina de desafío de conexión:'
-      further_actions: 'Se non foches ti, cambia agora o contrasinal e activa o segundo factor de autenticación para a túa conta. Pódelo facer aquí:'
-      subject: Por favor confirma o intento de conexión
-      title: Intento de conexión
+    suspicious_sign_in:
+      change_password: cambia o teu contrasinal
+      details: 'Estos son os detalles do acceso:'
+      explanation: Detectamos que accedeches á conta desde un novo enderezo IP.
+      further_actions_html: Se non foches ti, recomendámosche %{action} inmediatamente e activa o segundo factor de autenticación para manter conta segura.
+      subject: Accedeuse á túa conta desde novos enderezos IP
+      title: Novo acceso
     warning:
       appeal: Enviar unha apelación
       appeal_description: Se cres que esto é un erro, podes enviar un recurso á administración de %{instance}.
@@ -1677,13 +1689,10 @@ gl:
       title: Benvida, %{name}!
   users:
     follow_limit_reached: Non pode seguir a máis de %{limit} persoas
-    generic_access_help_html: Problemas para acceder a conta? Podes contactar con %{email} para obter axuda
     invalid_otp_token: O código do segundo factor non é válido
-    invalid_sign_in_token: Código de seguridade non válido
     otp_lost_help_html: Se perdes o acceso a ambos, podes contactar con %{email}
     seamless_external_login: Accedeches a través dun servizo externo, polo que os axustes de contrasinal e correo-e non están dispoñibles.
     signed_in_as: 'Rexistrada como:'
-    suspicious_sign_in_confirmation: Semella que non entraches antes usando este dispositivo, así que ímosche enviar un código de seguridade ao teu enderezo de email para confirmar que es ti.
   verification:
     explanation_html: 'Podes <strong>validarte a ti mesma como a dona das ligazóns nos metadatos do teu perfil</strong>. Para esto, o sitio web ligado debe conter unha ligazón de retorno ao perfil de Mastodon. Esta ligazón de retorno <strong>ten que</strong> ter un atributo <code>rel="me"</code>. O texto da ligazón non importa. Aquí tes un exemplo:'
     verification: Validación
diff --git a/config/locales/hr.yml b/config/locales/hr.yml
index 2e6af8cda..dd3b99dcc 100644
--- a/config/locales/hr.yml
+++ b/config/locales/hr.yml
@@ -267,7 +267,6 @@ hr:
       tips: Savjeti
   users:
     invalid_otp_token: Nevažeći dvo-faktorski kôd
-    invalid_sign_in_token: Nevažeći sigurnosni kôd
     signed_in_as: 'Prijavljeni kao:'
   verification:
     verification: Verifikacija
diff --git a/config/locales/hu.yml b/config/locales/hu.yml
index abe5baf48..c28cc7bae 100644
--- a/config/locales/hu.yml
+++ b/config/locales/hu.yml
@@ -201,7 +201,6 @@ hu:
       security_measures:
         only_password: Csak jelszó
         password_and_2fa: Jelszó és kétlépcsős hitelesítés
-        password_and_sign_in_token: Jelszó és e-mail token
       sensitive: Kényes
       sensitized: kényesnek jelölve
       shared_inbox_url: Megosztott bejövő üzenetek URL
@@ -1239,8 +1238,8 @@ hu:
         one: Sőt, egy új követőd is lett, amióta nem jártál itt. Hurrá!
         other: Sőt, %{count} új követőd is lett, amióta nem jártál itt. Hihetetlen!
       subject:
-        one: "Egy új értesítésed érkezett legutóbbi látogatásod óta \U0001F418"
-        other: "%{count} új értesítésed érkezett legutóbbi látogatásod óta \U0001F418"
+        one: "Egy új értesítésed érkezett legutóbbi látogatásod óta 🐘"
+        other: "%{count} új értesítésed érkezett legutóbbi látogatásod óta 🐘"
       title: Amíg távol voltál…
     favourite:
       body: 'A bejegyzésedet kedvencnek jelölte %{name}:'
@@ -1635,12 +1634,13 @@ hu:
       explanation: A Mastodon fiókod teljes mentését kérted. A mentés kész ás letölthető!
       subject: Az adataidról készült archív letöltésre kész
       title: Archiválás
-    sign_in_token:
-      details: 'Itt vannak a kísérlet részletei:'
-      explanation: 'Fiókodba történő belépési kísérletet fogtunk ismeretlen IP címről. Ha te vagy az, kérlek az alábbi biztonsági kódot írd be a bejelentkező oldal ezt kérő részén:'
-      further_actions: 'Ha nem te voltál, változtasd meg a jelszavadat és engedélyezd a két-faktoros azonosítást a fiókodban. Itt megteheted:'
-      subject: Erősítsd meg a megkísérelt belépést
-      title: Belépési kísérlet
+    suspicious_sign_in:
+      change_password: módosítsd a jelszavad
+      details: 'Itt vannak a bejelentkezés részletei:'
+      explanation: Egy új IP-címről történő bejelentkezést észleltünk.
+      further_actions_html: Ha nem te voltál, akkor azt javasoljuk, hogy azonnal %{action} és engedélyezd a kétlépcsős hitelesítést, hogy biztonságban tudd a fiókodat.
+      subject: A fiókodat egy új IP-címről érték el
+      title: Új bejelentkezés
     warning:
       appeal: Fellebbezés beküldése
       appeal_description: Ha azt gondolod, hogy ez hibás, beküldhetsz egy fellebbezést a(z) %{instance} szerver csapatának.
@@ -1691,13 +1691,10 @@ hu:
       title: Üdv a fedélzeten, %{name}!
   users:
     follow_limit_reached: Nem követhetsz több, mint %{limit} embert
-    generic_access_help_html: Nem tudod elérni a fiókodat? Segítségért lépj kapcsolatba velünk ezen %{email}
     invalid_otp_token: Érvénytelen ellenőrző kód
-    invalid_sign_in_token: Érvénytelen biztonsági kód
     otp_lost_help_html: Ha mindkettőt elvesztetted, kérhetsz segítséget itt %{email}
     seamless_external_login: Külső szolgáltatáson keresztül jelentkeztél be, így a jelszó és e-mail beállítások nem elérhetőek.
     signed_in_as: Bejelentkezve mint
-    suspicious_sign_in_confirmation: Úgy tűnik, erről az eszközről még sosem léptél be és egy ideje már nem láttunk, ezért egy biztonsági kódot küldünk az email címedre, hogy megerősítsd, tényleg te vagy az.
   verification:
     explanation_html: 'A profilodon <strong>hitelesítheted magad, mint az itt található linkek tulajdonosa</strong>. Ehhez a linkelt weboldalnak tartalmaznia kell egy linket vissza a Mastodon profilodra. Ennek <strong>tartalmaznia kell</strong> a <code>rel="me"</code> attribútumot. A link szövege bármi lehet. Itt egy példa:'
     verification: Hitelesítés
diff --git a/config/locales/hy.yml b/config/locales/hy.yml
index e7d8bd414..50d2ec535 100644
--- a/config/locales/hy.yml
+++ b/config/locales/hy.yml
@@ -187,7 +187,6 @@ hy:
       security_measures:
         only_password: Միայն ծածկագիր
         password_and_2fa: Ծածկագիր եւ 2FA
-        password_and_sign_in_token: ծածկագիր եւ էլ. նամակով բանալի
       sensitive: Զգայուն
       sensitized: նշուեց որպէս դիւրազգաց
       shared_inbox_url: Ընդհանուր մուտքային URL
@@ -1016,8 +1015,6 @@ hy:
     recovery_codes_regenerated: Վերականգման կոդերը հաջողութեամբ ստեղծուել են
     webauthn: Անվտանգութեան բանալիներ
   user_mailer:
-    sign_in_token:
-      title: Մուտքի փորձ
     warning:
       subject:
         disable: Քո %{acct} հաշիւը սառեցուել է
@@ -1040,7 +1037,6 @@ hy:
       title: Բարի գալուստ նաւամատոյց, %{name}
   users:
     invalid_otp_token: Անվաւեր 2F կոդ
-    invalid_sign_in_token: Անվաւեր անվտանգութեան կոդ
     signed_in_as: Մոտք գործել որպէս․
   verification:
     explanation_html: Պիտակների յղումների հեղինակութիւնը կարելի է վաւերացնել։ Անհրաժեշտ է որ յղուած կայքը պարունակի յետադարձ յղում ձեր մաստադոնի էջին, որը <strong>պէտք է</strong> ունենայ <code>rel="me"</code> նիշքը։ Յղման բովանդակութիւնը կարևոր չէ։ Օրինակ՝
diff --git a/config/locales/id.yml b/config/locales/id.yml
index ccb71ebdd..32996de45 100644
--- a/config/locales/id.yml
+++ b/config/locales/id.yml
@@ -192,7 +192,6 @@ id:
       security_measures:
         only_password: Hanya kata sandi
         password_and_2fa: Kata sandi dan 2FA
-        password_and_sign_in_token: Kata sandi dan token email
       sensitive: Sensitif
       sensitized: ditandai sebagai sensitif
       shared_inbox_url: URL kotak masuk bersama
@@ -1215,7 +1214,7 @@ id:
       new_followers_summary:
         other: Anda mendapatkan %{count} pengikut baru! Luar biasa!
       subject:
-        other: "%{count} notifikasi baru sejak kunjungan terakhir anda pada \U0001F418"
+        other: "%{count} notifikasi baru sejak kunjungan terakhir anda pada 🐘"
       title: Saat Anda tidak muncul...
     favourite:
       body: 'Status anda disukai oleh %{name}:'
@@ -1604,12 +1603,6 @@ id:
       explanation: Cadangan penuh akun Mastodon Anda sudah dapat diunduh!
       subject: Arsip Anda sudah siap diunduh
       title: Ambil arsip
-    sign_in_token:
-      details: 'Ini dia rincian usaha masuk akun:'
-      explanation: 'Kami mendeteksi usaha masuk ke akun Anda dari alamat IP tak dikenal. Jika ini Anda, mohon masukkan kode keamanan di bawah pada halaman masuk:'
-      further_actions: 'Jika ini bukan Anda, mohon ganti kata sandi dan aktifkan autentikasi dua-faktor pada akun Anda. Anda bisa melakukannya di sini:'
-      subject: Harap konfirmasi usaha masuk akun
-      title: Usaha masuk akun
     warning:
       appeal: Ajukan banding
       appeal_description: Jika Anda yakin ini galat, Anda dapat mengajukan banding ke staf %{instance}.
@@ -1660,13 +1653,10 @@ id:
       title: Selamat datang, %{name}!
   users:
     follow_limit_reached: Anda tidak dapat mengikuti lebih dari %{limit} orang
-    generic_access_help_html: Mengalami masalah saat akses akun? Anda mungkin perlu menghubungi %{email} untuk mencari bantuan
     invalid_otp_token: Kode dua faktor tidak cocok
-    invalid_sign_in_token: Kode keamanan tidak valid
     otp_lost_help_html: Jika Anda kehilangan akses keduanya, Anda dapat menghubungi %{email}
     seamless_external_login: Anda masuk via layanan eksternal, sehingga pengaturan kata sandi dan email tidak tersedia.
     signed_in_as: 'Masuk sebagai:'
-    suspicious_sign_in_confirmation: Anda terlihat belum pernah masuk dari perangkat ini, dan sudah lama Anda tidak masuk akun, sehingga kami mengirim kode keamanan ke alamat email Anda untuk mengonfirmasi bahwa ini adalah Anda.
   verification:
     explanation_html: 'Anda dapat <strong>memverifikasi diri Anda sebagai pemiliki tautan pada metadata profil</strong>. Situsweb yang ditautkan haruslah berisi tautan ke profil Mastodon Anda. Tautan tersebut <strong>harus</strong> memiliki atribut <code>rel="me"</code>. Isi teks tautan tidaklah penting. Ini contohnya:'
     verification: Verifikasi
diff --git a/config/locales/io.yml b/config/locales/io.yml
index 4360d804e..c6e39ea2a 100644
--- a/config/locales/io.yml
+++ b/config/locales/io.yml
@@ -102,8 +102,8 @@ io:
         one: Tu obtenis nova sequanto! Yey!
         other: Tu obtenis %{count} nova sequanti! Astonive!
       subject:
-        one: "1 nova savigo depos tua lasta vizito \U0001F418"
-        other: "%{count} nova savigi depos tua lasta vizito \U0001F418"
+        one: "1 nova savigo depos tua lasta vizito 🐘"
+        other: "%{count} nova savigi depos tua lasta vizito 🐘"
     favourite:
       body: "%{name} favoris tua mesajo:"
       subject: "%{name} favoris tua mesajo"
diff --git a/config/locales/is.yml b/config/locales/is.yml
index 910ae0b79..a3570fec2 100644
--- a/config/locales/is.yml
+++ b/config/locales/is.yml
@@ -199,7 +199,6 @@ is:
       security_measures:
         only_password: Aðeins lykilorð
         password_and_2fa: Lykilorð og 2-þátta auðkenning
-        password_and_sign_in_token: Lykilorð og teikn í tölvupósti
       sensitive: Viðkvæmt
       sensitized: merkt sem viðkvæmt
       shared_inbox_url: Slóð á sameiginlegt innhólf
@@ -1237,8 +1236,8 @@ is:
         one: Að auki, þú hefur fengið einn nýjan fylgjanda á meðan þú varst fjarverandi! Húh!
         other: Að auki, þú hefur fengið %{count} nýja fylgjendur á meðan þú varst fjarverandi! Frábært!
       subject:
-        one: "1 ný tilkynning síðan þú leist inn síðast \U0001F418"
-        other: "%{count} nýjar tilkynningar síðan þú leist inn síðast \U0001F418"
+        one: "1 ný tilkynning síðan þú leist inn síðast 🐘"
+        other: "%{count} nýjar tilkynningar síðan þú leist inn síðast 🐘"
       title: Á meðan þú varst fjarverandi...
     favourite:
       body: 'Færslan þín var sett í eftirlæti af %{name}:'
@@ -1633,12 +1632,13 @@ is:
       explanation: Þú baðst um fullt öryggisafrit af Mastodon notandaaðgangnum þínum. Það er núna tilbúið til niðurhals!
       subject: Safnskráin þín er tilbúin til niðurhals
       title: Taka út í safnskrá
-    sign_in_token:
-      details: 'Hér eru nánari upplýsingar um atvikið:'
-      explanation: 'Við sjáum að reynt hefur verið að skrá sig inn á aðganginn þinn frá óþekktu IP-vistfangi. Ef það varst þú, skaltu setja inn öryggiskóðann neðst á staðfestingarsíðu innskráningar:'
-      further_actions: 'Ef þetta varst ekki þú, skaltu endilega skipta um lykilorð og virkja tveggja-þrepa auðkenningu fyrir aðganginn þinn. Þú getur gert það hér:'
-      subject: Endilega staðfestu tilraun til innskráningar
-      title: Tilraun til innskráningar
+    suspicious_sign_in:
+      change_password: breytir lykilorðinu þínu
+      details: 'Hér eru nánari upplýsingar um innskráninguna:'
+      explanation: Við greindum innskráningu inn á aðganginn þinn frá nýju IP-vistfangi.
+      further_actions_html: Ef þetta varst ekki þú, þá mælum við með að þú %{action} strax og virkjir tveggja-þátta auðkenningu til að halda aðgangnum þínum öruggum.
+      subject: Skráð hefur verið inn á aðganginn þinn frá nýju IP-vistfangi
+      title: Ný innskráning
     warning:
       appeal: Ssenda inn áfrýjun
       appeal_description: Ef þú álítur að um mistök sé að ræða, geturðu sent áfrýjun til umsjónarmanna %{instance}.
@@ -1689,13 +1689,10 @@ is:
       title: Velkomin/n um borð, %{name}!
   users:
     follow_limit_reached: Þú getur ekki fylgst með fleiri en %{limit} aðilum
-    generic_access_help_html: Vandamál við að tengjast aðgangnum þínum? Þú getur sett þig í samband við %{email} til að fá aðstoð
     invalid_otp_token: Ógildur tveggja-þátta kóði
-    invalid_sign_in_token: Ógildur öryggiskóði
     otp_lost_help_html: Ef þú hefur misst aðganginn að hvoru tveggja, geturðu sett þig í samband við %{email}
     seamless_external_login: Innskráning þín er í gegnum utanaðkomandi þjónustu, þannig að stillingar fyrir lykilorð og tölvupóst eru ekki aðgengilegar.
     signed_in_as: 'Skráð inn sem:'
-    suspicious_sign_in_confirmation: Það virðist sem þú hafir ekki skráð þig inn af þessu tæki áður og að nokkur tími sé liðinn frá því þú hefur skráð þig inn, þannig að við erum að senda þér öryggiskóða á tölvupóstfangið þitt til að staðfesta að þetta sért þú.
   verification:
     explanation_html: 'Þú getur <strong>vottað að þú sért eigandi og ábyrgur fyrir tenglunum í lýsigögnum notandasniðsins þíns</strong>. Til að það virki, þurfa vefsvæðin sem vísað er í að innihalda tengil til baka í Mastodon-notandasniðið. Tengillinn sem vísar til baka <strong>verður</strong> að vera með <code>rel="me"</code> eigindi. Textinn í tenglinum skiptir ekki máli. Hérna er dæmi:'
     verification: Sannprófun
diff --git a/config/locales/it.yml b/config/locales/it.yml
index 92cd18d1a..cada5a48c 100644
--- a/config/locales/it.yml
+++ b/config/locales/it.yml
@@ -199,7 +199,6 @@ it:
       security_measures:
         only_password: Solo password
         password_and_2fa: Password e autenticazione a due fattori
-        password_and_sign_in_token: Password e codice via email
       sensitive: Sensibile
       sensitized: contrassegnato come sensibile
       shared_inbox_url: URL Inbox Condiviso
@@ -598,7 +597,7 @@ it:
       action_taken_by: Azione intrapresa da
       actions:
         delete_description_html: I post segnalati saranno eliminati e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account.
-        mark_as_sensitive_description_html: I media nei post segnalati saranno segnati come sensibili e la violazione sarà registrata per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account.
+        mark_as_sensitive_description_html: I contenuti nei post segnalati saranno segnati come sensibili e verrà registrata una violazione per aiutarti a prendere ulteriori provvedimenti sulle future infrazioni dello stesso account.
         other_description_html: Vedi altre opzioni per controllare il comportamento dell'account e personalizzare la comunicazione all'account segnalato.
         resolve_description_html: Nessuna azione sarà intrapresa contro l'account segnalato, nessuna violazione registrata, e la segnalazione sarà chiusa.
         silence_description_html: Il profilo sarà visibile solo a coloro che lo seguono o lo cercano manualmente, limitandone fortemente la raggiungibilità. Può sempre essere annullato.
@@ -1239,8 +1238,8 @@ it:
         one: E inoltre hai ricevuto un nuovo seguace mentre eri assente! Urrà!
         other: Inoltre, hai acquisito %{count} nuovi seguaci mentre eri assente! Incredibile!
       subject:
-        one: "1 nuova notifica dalla tua ultima visita \U0001F418"
-        other: "%{count} nuove notifiche dalla tua ultima visita \U0001F418"
+        one: "1 nuova notifica dalla tua ultima visita 🐘"
+        other: "%{count} nuove notifiche dalla tua ultima visita 🐘"
       title: In tua assenza…
     favourite:
       body: 'Il tuo status è stato apprezzato da %{name}:'
@@ -1638,12 +1637,13 @@ it:
       explanation: Hai richiesto un backup completo del tuo account Mastodon. È pronto per essere scaricato!
       subject: Il tuo archivio è pronto per essere scaricato
       title: Esportazione archivio
-    sign_in_token:
-      details: 'Questi sono i dettagli del tentativo:'
-      explanation: 'Abbiamo rilevato un tentativo di accedere al tuo account da un indirizzo IP non riconosciuto. Se sei tu, inserisci il codice di sicurezza qui sotto nella pagina di controllo dell''accesso:'
-      further_actions: 'Se non sei stato tu, cambia la password e abilita l''autenticazione a due fattori sul tuo account. Puoi farlo qui:'
-      subject: Conferma il tentativo di accesso
-      title: Tentativo di accesso
+    suspicious_sign_in:
+      change_password: cambia la tua password
+      details: 'Questi sono i dettagli del tentativo di accesso:'
+      explanation: Abbiamo rilevato un accesso al tuo account da un nuovo indirizzo IP.
+      further_actions_html: Se non eri tu, ti consigliamo di %{action} subito e di abilitare l'autenticazione a due fattori per mantenere il tuo account al sicuro.
+      subject: C'è stato un accesso al tuo account da un nuovo indirizzo IP
+      title: Un nuovo accesso
     warning:
       appeal: Presenta un appello
       appeal_description: Se credi che si tratti di un errore, puoi presentare un appello allo staff di %{instance}.
@@ -1694,13 +1694,10 @@ it:
       title: Benvenuto a bordo, %{name}!
   users:
     follow_limit_reached: Non puoi seguire più di %{limit} persone
-    generic_access_help_html: Problemi nell'accesso al tuo account? Puoi contattare %{email} per assistenza
     invalid_otp_token: Codice d'accesso non valido
-    invalid_sign_in_token: Codice di sicurezza non valido
     otp_lost_help_html: Se perdessi l'accesso ad entrambi, puoi entrare in contatto con %{email}
     seamless_external_login: Hai effettuato l'accesso tramite un servizio esterno, quindi le impostazioni di password e e-mail non sono disponibili.
     signed_in_as: 'Hai effettuato l''accesso come:'
-    suspicious_sign_in_confirmation: Sembra che tu non abbia effettuato l'accesso da questo dispositivo prima d'ora, e non hai effettuato l'accesso per un po', quindi inviamo un codice di sicurezza al tuo indirizzo e-mail per confermare che sei proprio tu.
   verification:
     explanation_html: 'Puoi <strong>certificare te stesso come proprietario dei link nei metadati del tuo profilo</strong>. Per farlo, il sito a cui punta il link deve contenere un link che punta al tuo profilo Mastodon. Il link di ritorno <strong>deve</strong> avere l''attributo <code>rel="me"</code>. Il testo del link non ha importanza. Ecco un esempio:'
     verification: Verifica
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 84559e499..e98dc0cd8 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -189,7 +189,6 @@ ja:
       security_measures:
         only_password: パスワードのみ
         password_and_2fa: パスワードと 2FA
-        password_and_sign_in_token: パスワードとメールトークン
       sensitive: 閲覧注意
       sensitized: 閲覧注意としてマーク済み
       shared_inbox_url: Shared inbox URL
@@ -1115,7 +1114,7 @@ ja:
       new_followers_summary:
         other: また、離れている間に%{count} 人の新たなフォロワーを獲得しました!
       subject:
-        other: "新しい%{count}件の通知 \U0001F418"
+        other: "新しい%{count}件の通知 🐘"
       title: 不在の間に…
     favourite:
       body: "%{name} さんにお気に入り登録された、あなたの投稿があります:"
@@ -1493,12 +1492,6 @@ ja:
       explanation: Mastodonアカウントのアーカイブを受け付けました。今すぐダウンロードできます!
       subject: アーカイブの準備ができました
       title: アーカイブの取り出し
-    sign_in_token:
-      details: '検出したログインの詳細は以下のとおりです:'
-      explanation: '認識できないIPアドレスから、あなたのアカウントへのログインを検出しました。あなたがログインしようとしている場合は、ログインページに以下のセキュリティコードを入力してください:'
-      further_actions: '心当たりがない場合、パスワードを変更し二段階認証を有効にしてください。こちらから設定できます:'
-      subject: ログイン試行を確認してください
-      title: ログインを検出しました
     warning:
       appeal: 抗議を送信
       categories:
@@ -1544,13 +1537,10 @@ ja:
       title: ようこそ、%{name}!
   users:
     follow_limit_reached: あなたは現在 %{limit} 人以上フォローできません
-    generic_access_help_html: アクセスできませんか? %{email} に問い合わせることができます。
     invalid_otp_token: 二段階認証コードが間違っています
-    invalid_sign_in_token: 無効なセキュリティコードです
     otp_lost_help_html: どちらも使用できない場合、%{email} に連絡を取ると解決できるかもしれません
     seamless_external_login: あなたは外部サービスを介してログインしているため、パスワードとメールアドレスの設定は利用できません。
     signed_in_as: '下記でログイン中:'
-    suspicious_sign_in_confirmation: おかえりなさい。このデバイスからのアクセスは初めてなので、セキュリティ確保のためにメールでセキュリティーコードを送信しました。
   verification:
     explanation_html: <strong>プロフィール内のリンクの所有者であることを認証することができます</strong>。そのためにはリンクされたウェブサイトにMastodonプロフィールへのリンクが含まれている必要があります。リンクには<code>rel="me"</code>属性を<strong>必ず</strong>与えなければなりません。リンクのテキストについては重要ではありません。以下は例です:
     verification: 認証
diff --git a/config/locales/ka.yml b/config/locales/ka.yml
index 29b3715bc..859f20b24 100644
--- a/config/locales/ka.yml
+++ b/config/locales/ka.yml
@@ -463,8 +463,8 @@ ka:
         one: ასევე, არყოფნისას შეგეძინათ ერთი ახალი მიმდევარი! იეი!
         other: ასევე, არყოფნისას შეგეძინათ %{count} ახალი მიმდევარი! შესანიშნავია!
       subject:
-        one: "1 ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
-        other: "%{count} ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ \U0001F418"
+        one: "1 ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ 🐘"
+        other: "%{count} ახალი შეტყობინება თქვენი ბოლო სტუმრობის შემდეგ 🐘"
       title: თქვენს არყოფნაში...
     favourite:
       body: 'თქვენი სტატუსი ფავორიტი გახადა %{name}-მა:'
diff --git a/config/locales/kab.yml b/config/locales/kab.yml
index 99e178512..8c10e6358 100644
--- a/config/locales/kab.yml
+++ b/config/locales/kab.yml
@@ -165,7 +165,6 @@ kab:
       security_measures:
         only_password: Awal uffir kan
         password_and_2fa: Awal uffir d 2FA
-        password_and_sign_in_token: Ajiṭun n wawal uffir d yimayl
       shared_inbox_url: Bḍu URL n tbewwaḍt
       show:
         created_reports: Eg ineqqisen
@@ -650,8 +649,8 @@ kab:
       action: Wali akk tilγa
       mention: 'Yuder-ik-id %{name} deg:'
       subject:
-        one: "1 wulɣu seg tirza-inek·inm taneqqarut ar tura \U0001F418"
-        other: "%{count} ilɣa imaynuten seg tirza-nek·inem taneggarut ar tura \U0001F418"
+        one: "1 wulɣu seg tirza-inek·inm taneqqarut ar tura 🐘"
+        other: "%{count} ilɣa imaynuten seg tirza-nek·inem taneggarut ar tura 🐘"
     favourite:
       subject: "%{name} yesmenyaf addad-ik·im"
     follow:
diff --git a/config/locales/kk.yml b/config/locales/kk.yml
index 9055b531f..79f29dc41 100644
--- a/config/locales/kk.yml
+++ b/config/locales/kk.yml
@@ -711,8 +711,8 @@ kk:
         one: Сондай-ақ, сіз бір жаңа оқырман таптыңыз! Алақай!
         other: Сондай-ақ, сіз %{count} жаңа оқырман таптыңыз! Керемет!
       subject:
-        one: "Соңғы кіруіңізден кейін 1 ескертпе келіпті \U0001F418"
-        other: "Соңғы кіруіңізден кейін %{count} ескертпе келіпті \U0001F418"
+        one: "Соңғы кіруіңізден кейін 1 ескертпе келіпті 🐘"
+        other: "Соңғы кіруіңізден кейін %{count} ескертпе келіпті 🐘"
       title: Сіз жоқ кезде...
     favourite:
       body: 'Жазбаңызды ұнатып, таңдаулыға қосты %{name}:'
diff --git a/config/locales/ko.yml b/config/locales/ko.yml
index a8e8e3622..ced74277f 100644
--- a/config/locales/ko.yml
+++ b/config/locales/ko.yml
@@ -194,7 +194,6 @@ ko:
       security_measures:
         only_password: 암호만
         password_and_2fa: 암호와 2단계 인증
-        password_and_sign_in_token: 암호와 이메일 토큰
       sensitive: 민감함
       sensitized: 민감함으로 설정됨
       shared_inbox_url: 공유된 inbox URL
@@ -290,7 +289,7 @@ ko:
         create_domain_block_html: "%{name} 님이 도메인 %{target}를 차단했습니다"
         create_email_domain_block_html: "%{name} 님이 이메일 도메인 %{target}를 차단했습니다"
         create_ip_block_html: "%{name} 님이 IP 규칙 %{target}을 만들었습니다"
-        create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지"
+        create_unavailable_domain_html: "%{name} 님이 도메인 %{target}에 대한 전달을 중지했습니다"
         demote_user_html: "%{name} 님이 사용자 %{target} 님을 강등했습니다"
         destroy_announcement_html: "%{name} 님이 공지 %{target}을 삭제했습니다"
         destroy_custom_emoji_html: "%{name} 님이 %{target} 에모지를 삭제했습니다"
@@ -1219,7 +1218,7 @@ ko:
       new_followers_summary:
         other: 게다가, 접속하지 않은 동안 %{count} 명의 팔로워가 생겼습니다!
       subject:
-        other: "%{count}건의 새로운 알림 \U0001F418"
+        other: "%{count}건의 새로운 알림 🐘"
       title: 당신이 없는 동안에...
     favourite:
       body: '당신의 게시물을 %{name} 님이 즐겨찾기에 등록했습니다:'
@@ -1411,7 +1410,7 @@ ko:
         other: "%{count} 이미지"
       video:
         other: "%{count}개의 영상"
-    boosted_from_html: "%{acct_link} 님으로부터 부스트"
+    boosted_from_html: "%{acct_link}의 글을 부스트"
     content_warning: '열람 주의: %{warning}'
     default_language: 화면 표시 언어와 동일하게
     disallowed_hashtags:
@@ -1564,7 +1563,7 @@ ko:
 
       <h3 id="changes">개인정보 정책의 변경</h3>
 
-      <p>만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 포스트 됩니다.</p>
+      <p>만약 우리의 개인정보 정책이 바뀐다면, 이 페이지에 바뀐 정책이 게시됩니다.</p>
 
       <p>이 문서는 CC-BY-SA 라이센스입니다. 마지막 업데이트는 2018년 3월 7일입니다.</p>
 
@@ -1608,12 +1607,13 @@ ko:
       explanation: 당신이 요청한 계정의 풀 백업이 이제 다운로드 가능합니다!
       subject: 당신의 아카이브를 다운로드 가능합니다
       title: 아카이브 테이크 아웃
-    sign_in_token:
-      details: '시도에 대한 상세 내용입니다:'
-      explanation: '알 수 없는 IP로부터 당신의 계정에 대한 로그인 시도를 감지했습니다. 이것이 당신이라면, 아래의 보안 코드를 로그인 시도 페이지에 입력하세요:'
-      further_actions: '이것이 당신이 아니라면 암호를 바꾸고 계정의 2-factor 인증을 활성화 하세요. 여기에서 할 수 있습니다:'
-      subject: 로그인 시도를 확인해 주십시오
-      title: 로그인 시도
+    suspicious_sign_in:
+      change_password: 암호 변경
+      details: '로그인에 대한 상세 정보입니다:'
+      explanation: 새로운 IP 주소에서 내 계정에 로그인한 것을 감지했습니다.
+      further_actions_html: 직접 로그인한 것이 아니라면, 지금 바로 %{action}과 2단계 인증을 활성화하여 계정을 안전하게 보호하시길 권해드립니다.
+      subject: 계정이 새로운 IP에서 접근됨
+      title: 새로운 로그인
     warning:
       appeal: 이의 제출하기
       appeal_description: 이것이 오류라고 생각한다면, %{instance}의 중재자에게 이의신청을 할 수 있습니다.
@@ -1664,13 +1664,10 @@ ko:
       title: 환영합니다 %{name} 님!
   users:
     follow_limit_reached: 당신은 %{limit}명의 사람을 넘어서 팔로우 할 수 없습니다
-    generic_access_help_html: 계정 로그인에 문제가 있나요? %{email} 로 도움을 요청할 수 있습니다
     invalid_otp_token: 2단계 인증 코드가 올바르지 않습니다
-    invalid_sign_in_token: 잘못된 보안 코드
     otp_lost_help_html: 만약 양쪽 모두를 잃어버렸다면 %{email}을 통해 복구할 수 있습니다
     seamless_external_login: 외부 서비스를 이용해 로그인 했습니다, 패스워드와 이메일 설정을 할 수 없습니다.
     signed_in_as: '다음과 같이 로그인 중:'
-    suspicious_sign_in_confirmation: 이 기기에서 로그인 한 적이 없거나, 로그인 한 지 오래된 것으로보입니다. 본인임을 확인하기 위해 이메일 주소로 보안 코드를 보냈습니다.
   verification:
     explanation_html: '당신은 <strong>프로필 메타데이터의 링크 소유자임을 검증할 수 있습니다</strong>. 이것을 하기 위해서는, 링크 된 웹사이트에서 당신의 마스토돈 프로필을 역으로 링크해야 합니다. 역링크는 <strong>반드시</strong> <code>rel="me"</code> 속성을 가지고 있어야 합니다. 링크의 텍스트는 상관이 없습니다. 여기 예시가 있습니다:'
     verification: 검증
diff --git a/config/locales/ku.yml b/config/locales/ku.yml
index 1f5554f4b..8a3fe91ce 100644
--- a/config/locales/ku.yml
+++ b/config/locales/ku.yml
@@ -199,7 +199,6 @@ ku:
       security_measures:
         only_password: Têne borînpeyv
         password_and_2fa: Borînpeyv û 2FA
-        password_and_sign_in_token: Borînpeyv û navnîşana e-nameyê
       sensitive: Hêz-hestiyar
       sensitized: Wek hestiyar hatiye nîşankirin
       shared_inbox_url: URLya wergirtiyên parvekirî
@@ -1239,8 +1238,8 @@ ku:
         one: Herwiha, dema tu dûr bûyî te şopînerek nû bi dest xist! Bijî!
         other: Herwiha, dema tu dûr bûyî te %{count} şopînerek nû bi dest xist! Bijî!
       subject:
-        one: "1 agahdarî ji serdana te ya herî dawî ji \U0001F418"
-        other: "%{count} agahdarî ji serdana te ya herî dawî ji \U0001F418"
+        one: "1 agahdarî ji serdana te ya herî dawî ji 🐘"
+        other: "%{count} agahdarî ji serdana te ya herî dawî ji 🐘"
       title: Di tunebûna te de...
     favourite:
       body: 'Şandiya te hate bijartin ji alî %{name} ve:'
@@ -1635,12 +1634,10 @@ ku:
       explanation: Te yedekîya tijê ya ajimêrê xwe Mastodonê xwest. Niha ji daxistinê re amade ye!
       subject: Arşîva te amede ye bo daxistinê
       title: Pakêtkirina arşîvan
-    sign_in_token:
-      details: 'Li vir hûrgiliyên hewldanê hene:'
-      explanation: 'Me hewildanek têketina ajimêra te ji navnîşana IP ya nenas destnîşan kir. Ger ev tu bî, ji kerema xwe koda ewlehiyê ya jêr binivîsîne di rûpela jêpirsînê de:'
-      further_actions: 'Ku ev ne tu bî, ji kerema xwe re borînpeyva xwe biguherîne û li ser ajimêra xwe rastkirina du-gavî çalak bike. Tu dikarî wê ji vê derê çê bikî:'
-      subject: Ji kerema xwe re hewldanên têketinê piştrast bike
-      title: Hewldanên têketinê
+    suspicious_sign_in:
+      change_password: borînpeyva xwe biguherîne
+      details: 'Li vir hûrgiliyên hewldanên têketinê hene:'
+      title: Têketineke nû
     warning:
       appeal: Îtîrazekê bişîne
       appeal_description: Heke tu bawer dikî ku ev şaşetiyeke, tu dikarî îtîrazekê ji karmendên %{instance} re bişînî.
@@ -1691,13 +1688,10 @@ ku:
       title: Bi xêr hatî, %{name}!
   users:
     follow_limit_reached: Tu nikarî zêdetirî %{limit} kesan bişopînî
-    generic_access_help_html: Di gihîştina ajimêrê te de pirsgirêk heye? Tu dikarî ji bo alîkariyê bi %{email} re têkilî deyne
     invalid_otp_token: Koda du-gavî ya nelê
-    invalid_sign_in_token: Kilîda ewlehiyê a nelê
     otp_lost_help_html: Heke te gihîştina herduyan ji dest da, dibe ku tu bi %{email} re têkilî deyne
     seamless_external_login: Te bi rajekarke biyanî re têketina xwe kir, ji ber vê yekê borînpeyv û e-name nayê bikaranîn.
     signed_in_as: 'Têketin wekî:'
-    suspicious_sign_in_confirmation: Xuya dike ku te berê têketin ji vê amûrê nekiriye, ji ber vê yekê em kodeke ewlehiyê ji navnîşana e-nameya te re dişînin da ku piştrast bikî ku tu ye an na.
   verification:
     explanation_html: 'Tu dikarî <strong>xwe wekî xwediyê girêdanên li daneyê meta profîla xwe piştrast bikî</strong>. Ji bo vê, hewceye girêda malperê di nav profîla te ya mastodonê de girêdanekî paş hebe. Girêdana paş<strong>hewceye</strong> taybetîyek <code>rel="me"</code>hebe. Naveroka nivîsa girêdanê ne girîng e. Ev jî mînakek e:'
     verification: Piştrastkirin
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index d695c5191..1655883c1 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -169,6 +169,10 @@ lv:
       pending: Gaida pārskatīšanu
       perform_full_suspension: Apturēt
       previous_strikes: Iepriekšējie brīdinājumi
+      previous_strikes_description_html:
+        one: Šim kontam ir <strong>viens</strong> brīdinājums.
+        other: Šim kontam ir <strong>%{count}</strong> brīdinājumi.
+        zero: Šim kontam ir <strong>%{count}</strong> brīdinājumi.
       promote: Veicināt
       protocol: Protokols
       public: Publisks
@@ -200,7 +204,6 @@ lv:
       security_measures:
         only_password: Tikai parole
         password_and_2fa: Parole un 2FA
-        password_and_sign_in_token: Parole un e-pasta marķieris
       sensitive: Sensitīvs
       sensitized: Atzīmēts kā sensitīvs
       shared_inbox_url: Koplietotās iesūtnes URL
@@ -534,6 +537,10 @@ lv:
       delivery_error_hint: Ja piegāde nav iespējama %{count} dienas, tā tiks automātiski atzīmēta kā nepiegādājama.
       destroyed_msg: Dati no %{domain} tagad ir gaidīšanas rindā, lai tos drīzumā dzēstu.
       empty: Domēni nav atrasti.
+      known_accounts:
+        one: "%{count} zināms konts"
+        other: "%{count} zināmi konti"
+        zero: "%{count} zināmu kontu"
       moderation:
         all: Visas
         limited: Ierobežotās
@@ -604,7 +611,7 @@ lv:
       action_taken_by: Veiktā darbība
       actions:
         delete_description_html: Raksti, par kurām ziņots, tiks dzēsti, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākos pārkāpumus saistībā ar to pašu kontu.
-        mark_as_sensitive_description_html: Mediju faili ziņojumos, par kuriem ziņots, tiks atzīmēti kā sensitīvi, un tiks reģistrēts brīdinājums, lai palīdzētu tev palielināt tā paša konta turpmākās refrakcijas.
+        mark_as_sensitive_description_html: Mediju faili ziņojumos, par kuriem ziņots, tiks atzīmēti kā sensitīvi, un tiks reģistrēts brīdinājums, lai palīdzētu tev izvērst turpmākus pārkāpumus saistībā ar to pašu kontu.
         other_description_html: Skatīt vairāk iespēju kontrolēt konta uzvedību un pielāgot saziņu ar paziņoto kontu.
         resolve_description_html: Pret norādīto kontu netiks veiktas nekādas darbības, netiks reģistrēts brīdinājums, un ziņojums tiks slēgts.
         silence_description_html: Profils būs redzams tikai tiem, kas jau tam seko vai manuāli apskata, stingri ierobežojot tās sasniedzamību. Šo vienmēr var atgriezt.
@@ -803,6 +810,10 @@ lv:
         description_html: Šīs ir saites, kuras pašlaik bieži koplieto konti, no kuriem tavs serveris redz ziņas. Tas var palīdzēt taviem lietotājiem uzzināt, kas notiek pasaulē. Kamēr tu neapstiprini izdevēju, neviena saite netiek rādīta publiski. Vari arī atļaut vai noraidīt atsevišķas saites.
         disallow: Neatļaut saiti
         disallow_provider: Neatļaut publicētāju
+        shared_by_over_week:
+          one: Pēdējās nedēļas laikā kopīgoja viena persona
+          other: Pēdējās nedēļas laikā kopīgoja %{count} personas
+          zero: Pēdējās nedēļas laikā kopīgoja %{count} personas
         title: Populārākās saites
         usage_comparison: Šodien kopīgots %{today} reizes, salīdzinot ar %{yesterday} vakar
       pending_review: Gaida pārskatīšanu
@@ -843,6 +854,10 @@ lv:
         trending_rank: 'Populārākie #%{rank}'
         usable: Var tikt lietots
         usage_comparison: Šodien lietots %{today} reizes, salīdzinot ar %{yesterday} vakar
+        used_by_over_week:
+          one: Pēdējās nedēļas laikā izmantoja viens cilvēks
+          other: Pēdējās nedēļas laikā izmantoja %{count} personas
+          zero: Pēdējās nedēļas laikā izmantoja %{count} personas
       title: Tendences
     warning_presets:
       add_new: Pievienot jaunu
@@ -1241,8 +1256,8 @@ lv:
         other: Turklāt, atrodoties prom, esi ieguvis %{count} jaunus sekotājus! Apbrīnojami!
         zero: "%{count} jaunu sekotāju!"
       subject:
-        one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma \U0001F418"
-        other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma \U0001F418"
+        one: "1 jauns paziņojums kopš tava pēdējā apmeklējuma 🐘"
+        other: "%{count} jauni paziņojumi kopš tava pēdējā apmeklējuma 🐘"
         zero: "%{count} jaunu paziņojumu"
       title: Tavas prombūtnes laikā...
     favourite:
@@ -1656,12 +1671,13 @@ lv:
       explanation: Tu pieprasīji pilnu sava Mastodon konta dublējumu. Tagad tas ir gatavs lejupielādei!
       subject: Tavs arhīvs ir gatavs lejupielādei
       title: Arhīva līdzņemšana
-    sign_in_token:
-      details: 'Šeit ir sīkāka informācija par mēģinājumu:'
-      explanation: 'Mēs atklājām mēģinājumu pierakstīties tavā kontā no neatpazītas IP adreses. Ja tas esi tu, lūdzu, ievadi zemāk esošo drošības kodu pierakstīšanās izaicinājumu lapā:'
-      further_actions: 'Ja tas nebiji tu, lūdzu, nomaini paroli un savā kontā iespējo divfaktoru autentifikāciju. To var izdarīt šeit:'
-      subject: Lūdzu, apstiprini pierakstīšanās mēģinājumu
-      title: Pierakstīšanās mēģinājums
+    suspicious_sign_in:
+      change_password: mainīt paroli
+      details: 'Šeit ir detalizēta informācija par pierakstīšanos:'
+      explanation: Esam konstatējuši pierakstīšanos tavā kontā no jaunas IP adreses.
+      further_actions_html: Ja tas nebiji tu, iesakām nekavējoties %{action} un iespējot divu faktoru autentifikāciju, lai tavs konts būtu drošībā.
+      subject: Tavam kontam ir piekļūts no jaunas IP adreses
+      title: Jauna pierakstīšanās
     warning:
       appeal: Iesniegt apelāciju
       appeal_description: Ja uzskatāt, ka tā ir kļūda, varat iesniegt apelāciju %{instance} darbiniekiem.
@@ -1712,13 +1728,10 @@ lv:
       title: Laipni lūgts uz borta, %{name}!
   users:
     follow_limit_reached: Tu nevari sekot vairāk par %{limit} cilvēkiem
-    generic_access_help_html: Vai nevari piekļūt savam kontam? Lai saņemtu palīdzību, tu vari sazināties ar %{email}
     invalid_otp_token: Nederīgs divfaktora kods
-    invalid_sign_in_token: Nederīgs drošības kods
     otp_lost_help_html: Ja esi zaudējis piekļuvi abiem, tu vari sazināties ar %{email}
     seamless_external_login: Tu esi pieteicies, izmantojot ārēju pakalpojumu, tāpēc paroles un e-pasta iestatījumi nav pieejami.
     signed_in_as: 'Pierakstījies kā:'
-    suspicious_sign_in_confirmation: Šķiet, ka tu iepriekš neesi pieteicies no šīs ierīces, tāpēc mēs nosūtām drošības kodu uz tavu e-pasta adresi, lai apstiprinātu, ka tas esi tu.
   verification:
     explanation_html: 'Tu vari <strong>apstiprināt sevi kā sava profila metadatos esošo saišu īpašnieku</strong>. Lai to izdarītu, saistītajā vietnē ir jābūt saitei uz tavu Mastodon profilu. Atpakaļsaitē <strong>jābūt</strong> atribūtam <code>rel="me"</code>. Saites teksta saturam nav nozīmes. Šeit ir piemērs:'
     verification: Pārbaude
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 276fdb9b2..b3157ebaf 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -950,8 +950,8 @@ nl:
         one: Je hebt trouwens sinds je weg was er ook een nieuwe volger bijgekregen! Hoera!
         other: Je hebt trouwens sinds je weg was er ook %{count} nieuwe volgers bijgekregen! Fantastisch!
       subject:
-        one: "1 nieuwe melding sinds jouw laatste bezoek \U0001F418"
-        other: "%{count} nieuwe meldingen sinds jouw laatste bezoek \U0001F418"
+        one: "1 nieuwe melding sinds jouw laatste bezoek 🐘"
+        other: "%{count} nieuwe meldingen sinds jouw laatste bezoek 🐘"
       title: Tijdens jouw afwezigheid...
     favourite:
       body: 'Jouw bericht werd door %{name} aan diens favorieten toegevoegd:'
@@ -1290,12 +1290,6 @@ nl:
       explanation: Je hebt een volledige back-up van jouw Mastodon-account opgevraagd. Het staat nu klaar om te worden gedownload!
       subject: Jouw archief staat klaar om te worden gedownload
       title: Archief ophalen
-    sign_in_token:
-      details: 'Hier zijn details van de poging:'
-      explanation: 'We hebben een inlogpoging op je account ontdekt vanaf een onbekend IP-adres. Als jij dit bent, vul dan de beveiligingscode hieronder in op de inlog-uitdagingspagina:'
-      further_actions: 'Als jij dit niet was, verander dan je wachtwoord en schakel tweestapsverificatie voor je account in. Dat kun je hier doen:'
-      subject: Bevestig de inlogpoging
-      title: Inlogpoging
     warning:
       subject:
         disable: Jouw account %{acct} is bevroren
@@ -1326,13 +1320,10 @@ nl:
       title: Welkom aan boord %{name}!
   users:
     follow_limit_reached: Je kunt niet meer dan %{limit} accounts volgen
-    generic_access_help_html: Problemen met toegang tot je account? Neem dan contact op met %{email} voor assistentie
     invalid_otp_token: Ongeldige tweestaps-toegangscode
-    invalid_sign_in_token: Ongeldige beveiligingscode
     otp_lost_help_html: Als je toegang tot beiden kwijt bent geraakt, neem dan contact op via %{email}
     seamless_external_login: Je bent ingelogd via een externe dienst, daarom zijn wachtwoorden en e-mailinstellingen niet beschikbaar.
     signed_in_as: 'Ingelogd als:'
-    suspicious_sign_in_confirmation: Het lijkt er op dat je nog niet eerder op dit apparaat bent ingelogd, dus sturen we een beveiligingscode naar jouw e-mailadres om te bevestigen dat jij het bent.
   verification:
     explanation_html: 'Je kunt <strong>jezelf verifiëren als de eigenaar van de links in de metadata van jouw profiel</strong>. Hiervoor moet op de gelinkte website een link terug naar jouw Mastodonprofiel staan. Deze link <strong>moet</strong> het <code>rel="me"</code>-attribuut bevatten. De omschrijving van de link maakt niet uit. Hier is een voorbeeld:'
     verification: Verificatie
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 3af989a14..9275804e2 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -189,7 +189,6 @@ nn:
       security_measures:
         only_password: Bare passord
         password_and_2fa: Passord og 2FA
-        password_and_sign_in_token: Passord og e-post token
       sensitized: Merket som følsom
       shared_inbox_url: Delt Innboks URL
       show:
@@ -910,8 +909,8 @@ nn:
         one: Du har forresten fått deg ein ny fylgjar mens du var borte! Hurra!
         other: Du har forresten fått deg %{count} nye fylgjarar mens du var borte! Hurra!
       subject:
-        one: "1 nytt varsel sidan siste gong du var innom \U0001F418"
-        other: "%{count} nye varsel sidan siste gong du var innom \U0001F418"
+        one: "1 nytt varsel sidan siste gong du var innom 🐘"
+        other: "%{count} nye varsel sidan siste gong du var innom 🐘"
       title: Mens du var borte...
     favourite:
       body: 'Statusen din vart merkt som favoritt av %{name}:'
@@ -1249,12 +1248,6 @@ nn:
     backup_ready:
       explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting!
       subject: Arkivet ditt er klart til å lastes ned
-    sign_in_token:
-      details: 'Her er forsøksdetaljane:'
-      explanation: 'Vi oppdaget et forsøk på å logge på kontoen fra en ukjent IP-adresse. Hvis dette er deg, vennligst skriv inn sikkerhetskoden nedenfor på påloggingssiden:'
-      further_actions: 'Om dette ikkje var deg, so venlegast endra passordet ditt og skruv på tostegsgodkjenning på kontoen din. Du kan gjera det her:'
-      subject: Venlegast stadfest forsøket på å logga inn
-      title: Forsøk på å logga inn
     warning:
       subject:
         disable: Kontoen din, %{acct}, har blitt fryst
@@ -1285,13 +1278,10 @@ nn:
       title: Velkomen om bord, %{name}!
   users:
     follow_limit_reached: Du kan ikkje fylgja fleire enn %{limit} folk
-    generic_access_help_html: Har du vanskar med tilgjenge til kontoen din? Tak gjerne kontakt med %{email}
     invalid_otp_token: Ugyldig tostegskode
-    invalid_sign_in_token: Ugild trygdenykel
     otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
     seamless_external_login: Du er logga inn gjennom eit eksternt reiskap, so passord og e-postinstillingar er ikkje tilgjengelege.
     signed_in_as: 'Logga inn som:'
-    suspicious_sign_in_confirmation: Det verkar ikkje som du har logga inn frå dette reiskapet før, og du har ikkje logga inn på ei stund, difor sender me deg ein trygdekode til e-post-addressa di for å stadfesta at det er deg.
   verification:
     explanation_html: 'Du kan <strong>bekrefte at du selv er eieren av lenkene i din profilmetadata</strong>. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake <strong>må</strong> ha en <code>rel="me"</code>-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:'
     verification: Stadfesting
diff --git a/config/locales/no.yml b/config/locales/no.yml
index a7ba74063..3d4ce5056 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -189,7 +189,6 @@
       security_measures:
         only_password: Bare passord
         password_and_2fa: Passord og 2FA
-        password_and_sign_in_token: Passord og e-post token
       sensitized: Merket som følsom
       shared_inbox_url: Delt Innboks URL
       show:
@@ -894,8 +893,8 @@
         one: I tillegg har du fått en ny følger mens du var borte. Hurra!
         other: I tillegg har du har fått %{count} nye følgere mens du var borte! Imponerende!
       subject:
-        one: "1 ny hendelse siden ditt siste besøk \U0001F418"
-        other: "%{count} nye hendelser siden ditt siste besøk \U0001F418"
+        one: "1 ny hendelse siden ditt siste besøk 🐘"
+        other: "%{count} nye hendelser siden ditt siste besøk 🐘"
       title: I ditt fravær…
     favourite:
       body: 'Statusen din ble likt av %{name}:'
@@ -1230,12 +1229,6 @@
     backup_ready:
       explanation: Du ba om en fullstendig sikkerhetskopi av Mastodon-kontoen din. Den er nå klar for nedlasting!
       subject: Arkivet ditt er klart til å lastes ned
-    sign_in_token:
-      details: 'Her er detaljene om forsøket:'
-      explanation: 'Vi oppdaget et forsøk på å logge på kontoen fra en ukjent IP-adresse. Hvis dette er deg, vennligst skriv inn sikkerhetskoden nedenfor på påloggingssiden:'
-      further_actions: 'Hvis dette ikke var deg, vennligst endre passordet ditt og aktivere to-faktor autentisering på kontoen din. Du kan gjøre det her:'
-      subject: Bekreft forsøk på å logge inn
-      title: Påloggingsforsøk
     warning:
       subject:
         disable: Kontoen din, %{acct}, har blitt fryst
@@ -1266,13 +1259,10 @@
       title: Velkommen ombord, %{name}!
   users:
     follow_limit_reached: Du kan ikke følge mer enn %{limit} personer
-    generic_access_help_html: Problemer med å få tilgang til din konto? Du kan kontakte %{email} for assistanse
     invalid_otp_token: Ugyldig to-faktorkode
-    invalid_sign_in_token: Ugyldig sikkerhetskode
     otp_lost_help_html: Hvis du mistet tilgangen til begge deler, kan du komme i kontakt med %{email}
     seamless_external_login: Du er logget inn via en ekstern tjeneste, så passord og e-post innstillinger er ikke tilgjengelige.
     signed_in_as: 'Innlogget som:'
-    suspicious_sign_in_confirmation: Du ser ikke ut til å ha logget inn fra denne enheten før, og du har ikke logget inn en stund, så vi sender en sikkerhetskode til din e-postadresse for å bekrefte at det er deg.
   verification:
     explanation_html: 'Du kan <strong>bekrefte at du selv er eieren av lenkene i din profilmetadata</strong>. For å gjøre det, må det tillenkede nettstedet inneholde en lenke som fører tilbake til Mastodon-profilen din. Lenken tilbake <strong>må</strong> ha en <code>rel="me"</code>-attributt. Tekstinnholdet til lenken er irrelevant. Her er et eksempel:'
     verification: Bekreftelse
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 4654d5e27..2a005f405 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -172,7 +172,6 @@ oc:
       security_measures:
         only_password: Sonque senhal
         password_and_2fa: Senhal e 2FA
-        password_and_sign_in_token: Senhal e geton via mail
       sensitive: Sensible
       sensitized: marcar coma sensible
       shared_inbox_url: URL de recepcion partejada
@@ -814,8 +813,8 @@ oc:
         one: Avètz un nòu seguidor dempuèi vòstra darrièra visita ! Ouà !
         other: Avètz %{count} nòus seguidors dempuèi vòstra darrièra visita ! Qué crane !
       subject:
-        one: "Una nòva notificacion dempuèi vòstra darrièra visita \U0001F418"
-        other: "%{count} nòvas notificacions dempuèi vòstra darrièra visita \U0001F418"
+        one: "Una nòva notificacion dempuèi vòstra darrièra visita 🐘"
+        other: "%{count} nòvas notificacions dempuèi vòstra darrièra visita 🐘"
       title: Pendent vòstra abséncia…
     favourite:
       body: "%{name} a mes vòstre estatut en favorit :"
@@ -1183,7 +1182,6 @@ oc:
   users:
     follow_limit_reached: Podètz pas sègre mai de %{limit} personas
     invalid_otp_token: Còdi d’autentificacion en dos temps invalid
-    invalid_sign_in_token: Còdi de seguretat invalid
     otp_lost_help_html: Se perdatz l’accès al dos, podètz benlèu contactar %{email}
     seamless_external_login: Sètz connectat via un servici extèrn, los paramètres de senhal e de corrièl son doncas pas disponibles.
     signed_in_as: 'Session a :'
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 15755bde7..ed0253227 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -201,7 +201,6 @@ pl:
       security_measures:
         only_password: Tylko hasło
         password_and_2fa: Hasło i 2FA
-        password_and_sign_in_token: Hasło i token e-mail
       sensitive: Wrażliwe
       sensitized: oznaczono jako wrażliwe
       shared_inbox_url: Adres udostępnianej skrzynki
@@ -570,7 +569,7 @@ pl:
       action_taken_by: Działanie podjęte przez
       actions:
         delete_description_html: Zgłoszone posty zostaną usunięte, a zdarzenie zostanie zapisane, aby pomóc w eskalacji przyszłych wykroczeń na tym samym koncie.
-        mark_as_sensitive_description_html: Media w zgłaszanych postach zostaną oznaczone jako wrażliwe, a ostrzeżenie zostanie nagane, aby pomóc w eskalacji przyszłych przewinień na tym samym koncie.
+        mark_as_sensitive_description_html: Media w zgłaszanych postach zostaną oznaczone jako wrażliwe, a ostrzeżenie zostanie nagrane, aby pomóc w eskalacji przyszłych przewinień na tym samym koncie.
         other_description_html: Zobacz więcej opcji do kontrolowania zachowania konta i dostosuj komunikację do zgłoszonego konta.
         resolve_description_html: Nie zostaną podjęte żadne działania przeciwko zgłoszonemu sprawozdaniu, zdarzenie nie zostanie zarejestrowane, a zgłoszenie zostanie zamknięte.
         silence_description_html: Profil będzie widoczny tylko dla tych, którzy go już obserwują lub szukaj ręcznie, poważnie ograniczając jego zasięg. Może być zawsze cofnięty.
@@ -1187,10 +1186,10 @@ pl:
         one: Dodatkowo, w czasie nieobecności zaczęła śledzić Cię jedna osoba Gratulacje!
         other: Dodatkowo, zaczęło Cię śledzić %{count} nowych osób! Wspaniale!
       subject:
-        few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty \U0001F418"
-        many: "%{count} nowych powiadomień od Twojej ostatniej wizyty \U0001F418"
-        one: "1 nowe powiadomienie od Twojej ostatniej wizyty \U0001F418"
-        other: "%{count} nowych powiadomień od Twojej ostatniej wizyty \U0001F418"
+        few: "%{count} nowe powiadomienia od Twojej ostatniej wizyty 🐘"
+        many: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘"
+        one: "1 nowe powiadomienie od Twojej ostatniej wizyty 🐘"
+        other: "%{count} nowych powiadomień od Twojej ostatniej wizyty 🐘"
       title: W trakcie Twojej nieobecności…
     favourite:
       body: 'Twój wpis został polubiony przez %{name}:'
@@ -1586,12 +1585,13 @@ pl:
       explanation: Zażądałeś pełnej kopii zapasowej konta na Mastodonie. Jest ona dostępna do pobrania!
       subject: Twoje archiwum jest gotowe do pobrania
       title: Odbiór archiwum
-    sign_in_token:
-      details: 'Oto szczegóły próby:'
-      explanation: 'Wykryliśmy próbę zalogowania na Twoje konto z adresu IP którego nie możemy rozpoznać. Jeżeli to Ty, wprowadź poniższy kod na stronie logowania:'
-      further_actions: 'Jeśli to nie Ty, zmień swoje hasło i włącz weryfikację dwuetapową na swoim koncie. Możesz to zrobić tutaj:'
-      subject: Potwierdź próbę zalogowania
-      title: Próba logowania
+    suspicious_sign_in:
+      change_password: zmień hasło
+      details: 'Oto szczegóły logowania:'
+      explanation: Wykryliśmy logowanie na Twoje konto z nowego adresu IP.
+      further_actions_html: Jeśli to nie Ty, zalecamy %{action} natychmiastowo i włącz uwierzytelnianie dwuetapowe, aby Twoje konto było bezpieczne.
+      subject: Uzyskano dostęp do twojego konta z nowego adresu IP
+      title: Nowe logowanie
     warning:
       categories:
         spam: Spam
@@ -1639,13 +1639,10 @@ pl:
       title: Witaj na pokładzie, %{name}!
   users:
     follow_limit_reached: Nie możesz śledzić więcej niż %{limit} osób
-    generic_access_help_html: Nie możesz uzyskać dostępu do konta? Skontaktuj się z %{email} aby uzyskać pomoc
     invalid_otp_token: Kod uwierzytelniający jest niepoprawny
-    invalid_sign_in_token: Nieprawidłowy kod zabezpieczający
     otp_lost_help_html: Jeżeli utracisz dostęp do obu, możesz skontaktować się z %{email}
     seamless_external_login: Zalogowano z użyciem zewnętrznej usługi, więc ustawienia hasła i adresu e-mail nie są dostępne.
     signed_in_as: 'Zalogowany jako:'
-    suspicious_sign_in_confirmation: Wygląda na to, że nie logowałeś się wcześniej z tego urządzenia i przez jakiś czas nie logowałeś się, więc wysłaliśmy na Twój adres e-mail kod zabezpieczający, aby potwierdzić, że to Ty.
   verification:
     explanation_html: 'Możesz <strong>zweryfikować siebie jako właściciela stron, do których odnośniki znajdują się w metadanych</strong>. Aby to zrobić, strona musi zawierać odnośnik do Twojego profilu na Mastodonie. Odnośnik <strong>musi</strong> zawierać atrybut <code>rel="me"</code>. Jego zawartość nie ma znaczenia. Przykład:'
     verification: Weryfikacja
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index 1d0de0d4a..453dca9bc 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -193,7 +193,6 @@ pt-BR:
       security_measures:
         only_password: Somente senha
         password_and_2fa: Senha e 2FA
-        password_and_sign_in_token: Token de senha e e-mail
       sensitive: Sensíveis
       sensitized: marcadas como sensíveis
       shared_inbox_url: Link da caixa de entrada compartilhada
@@ -1065,8 +1064,8 @@ pt-BR:
         one: Você tem um novo seguidor! Uia!
         other: Você tem %{count} novos seguidores! AÊÊÊ!
       subject:
-        one: "Uma nova notificação desde o seu último acesso \U0001F418"
-        other: "%{count} novas notificações desde o seu último acesso \U0001F418"
+        one: "Uma nova notificação desde o seu último acesso 🐘"
+        other: "%{count} novas notificações desde o seu último acesso 🐘"
       title: Enquanto você estava ausente...
     favourite:
       body: "%{name} favoritou seu toot:"
@@ -1448,12 +1447,6 @@ pt-BR:
       explanation: Você pediu um backup completo da sua conta no Mastodon. E agora está pronto para ser baixado!
       subject: Seu arquivo está pronto para ser baixado
       title: Baixar arquivo
-    sign_in_token:
-      details: 'Aqui estão os detalhes da tentativa:'
-      explanation: 'Detectamos uma tentativa de acessar sua conta a partir de um endereço IP não reconhecido. Se for você, insira o código de segurança abaixo na página de desafio:'
-      further_actions: 'Se não foi você, por favor mude sua senha e ative a autenticação de dois fatores em sua conta. Você pode fazê-lo aqui:'
-      subject: Por favor, confirme a tentativa de acesso
-      title: Tentativa de acesso
     warning:
       appeal: Enviar uma contestação
       categories:
@@ -1494,13 +1487,10 @@ pt-BR:
       title: Boas vindas, %{name}!
   users:
     follow_limit_reached: Você não pode seguir mais de %{limit} pessoas
-    generic_access_help_html: Problemas para acessar sua conta? Você pode entrar em contato com %{email} para obter ajuda
     invalid_otp_token: Código de dois fatores inválido
-    invalid_sign_in_token: Cógido de segurança inválido
     otp_lost_help_html: Se você perder o acesso à ambos, você pode entrar em contato com %{email}
     seamless_external_login: Você entrou usando um serviço externo, então configurações de e-mail e senha não estão disponíveis.
     signed_in_as: 'Entrou como:'
-    suspicious_sign_in_confirmation: Parece que você não fez login deste dispositivo antes, e você não fez login por um tempo. Portanto, estamos enviando um código de segurança para o seu endereço de e-mail para confirmar que é você.
   verification:
     explanation_html: 'Você pode <strong>verificar os links nos metadados do seu perfil</strong>. Para isso, o site citado deve conter um link de volta para o seu perfil do Mastodon. O link de volta <strong>deve</strong> conter um atributo <code>rel="me"</code>. O conteúdo ou texto do link não importa. Aqui está um exemplo:'
     verification: Verificação
diff --git a/config/locales/pt-PT.yml b/config/locales/pt-PT.yml
index 05f6ebf07..648a7b402 100644
--- a/config/locales/pt-PT.yml
+++ b/config/locales/pt-PT.yml
@@ -165,6 +165,9 @@ pt-PT:
       pending: Pendente de revisão
       perform_full_suspension: Fazer suspensão completa
       previous_strikes: Punições anteriores
+      previous_strikes_description_html:
+        one: Esta conta tem <strong>1</strong> punição.
+        other: Esta conta tem <strong>%{count}</strong> punições.
       promote: Promover
       protocol: Protocolo
       public: Público
@@ -196,7 +199,6 @@ pt-PT:
       security_measures:
         only_password: Apenas palavra-passe
         password_and_2fa: Palavra-passe e 2FA
-        password_and_sign_in_token: Palavra-passe e token por e-mail
       sensitive: Marcar como sensível
       sensitized: marcada como sensível
       shared_inbox_url: URL da caixa de entrada compartilhada
@@ -523,6 +525,9 @@ pt-PT:
       delivery_error_hint: Se a entrega não for possível durante %{count} dias, será automaticamente marcada como não realizável.
       destroyed_msg: Dados de %{domain} estão agora na fila para iminente eliminação.
       empty: Não foram encontrados domínios.
+      known_accounts:
+        one: "%{count} conta conhecida"
+        other: "%{count} contas conhecidas"
       moderation:
         all: Todas
         limited: Limitadas
@@ -791,6 +796,9 @@ pt-PT:
         description_html: Estes são links que atualmente estão a ser frequentemente partilhados por contas visiveis pelo seu servidor. Eles podem ajudar os seus utilizador a descobrir o que está a acontecer no mundo. Nenhum link é exibido publicamente até que aprove o editor. Também pode permitir ou rejeitar links individualmente.
         disallow: Não permitir link
         disallow_provider: Não permitir editor
+        shared_by_over_week:
+          one: Partilhado por uma pessoa na última semana
+          other: Partilhado por %{count} pessoas na última semana
         title: Links em destaque
         usage_comparison: Partilhado %{today} vezes hoje, em comparação com %{yesterday} ontem
       pending_review: Pendente de revisão
@@ -830,6 +838,9 @@ pt-PT:
         trending_rank: 'Tendência #%{rank}'
         usable: Pode ser utilizada
         usage_comparison: Utilizada %{today} vezes hoje, em comparação com %{yesterday} ontem
+        used_by_over_week:
+          one: Utilizada por uma pessoa na última semana
+          other: Utilizada por %{count} pessoas na última semana
       title: Tendências
     warning_presets:
       add_new: Adicionar novo
@@ -1225,8 +1236,8 @@ pt-PT:
         one: Tens um novo seguidor! Boa!
         other: Tens %{count} novos seguidores! Fantástico!
       subject:
-        one: "1 nova notificação desde o último acesso \U0001F418"
-        other: "%{count} novas notificações desde o  último acesso \U0001F418"
+        one: "1 nova notificação desde o último acesso 🐘"
+        other: "%{count} novas notificações desde o  último acesso 🐘"
       title: Enquanto estiveste ausente…
     favourite:
       body: 'O teu post foi adicionado aos favoritos por %{name}:'
@@ -1621,12 +1632,6 @@ pt-PT:
       explanation: Pediste uma cópia completa da tua conta Mastodon. Ela já está pronta para descarregares!
       subject: O teu arquivo está pronto para descarregar
       title: Arquivo de ficheiros
-    sign_in_token:
-      details: 'Aqui estão os detalhes da tentativa:'
-      explanation: 'Detectamos uma tentativa de entrar na sua conta a partir de um endereço IP não reconhecido. Se é você, por favor, insira o código de segurança abaixo na página de acesso:'
-      further_actions: 'Se não foi você, por favor altere a sua palavra-passe e ative a autenticação em duas etapzs na sua conta. Pode fazê-lo aqui:'
-      subject: Por favor, confirme a tentativa de acesso
-      title: Tentativa de acesso
     warning:
       appeal: Submeter um recurso
       appeal_description: Se acredita que isso é um erro, pode submeter um recurso para a equipa de %{instance}.
@@ -1677,13 +1682,10 @@ pt-PT:
       title: Bem-vindo a bordo, %{name}!
   users:
     follow_limit_reached: Não podes seguir mais do que %{limit} pessoas
-    generic_access_help_html: Problemas para aceder à sua conta? Pode entrar em contacto com %{email} para obter ajuda
     invalid_otp_token: Código de autenticação inválido
-    invalid_sign_in_token: Cógido de segurança inválido
     otp_lost_help_html: Se perdeu acesso a ambos, pode entrar em contacto com %{email}
     seamless_external_login: Tu estás ligado via um serviço externo. Por isso, as configurações da palavra-passe e do e-mail não estão disponíveis.
     signed_in_as: 'Registado como:'
-    suspicious_sign_in_confirmation: Parece que não iniciou sessão através deste dispositivo antes, e não acede à sua conta há algum tempo. Portanto, enviámos um código de segurança para o seu endereço de e-mail para confirmar que é você.
   verification:
     explanation_html: 'Pode <strong>comprovar que é o dono dos links nos metadados do seu perfil</strong>. Para isso, o website para o qual o link aponta tem de conter um link para o seu perfil do Mastodon. Esse link <strong>tem</strong> de ter um atributo <code>rel="me"</code>. O conteúdo do texto não é relevante. Aqui está um exemplo:'
     verification: Verificação
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index d6a37f8c4..4f3861b00 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -196,7 +196,6 @@ ro:
       security_measures:
         only_password: Doar parola
         password_and_2fa: Parolă și Conectarea în 2 pași
-        password_and_sign_in_token: Parola și token-ul e-mail
       sensitive: Sensibil
       sensitized: Marcat ca sensibil
       shared_inbox_url: URL inbox distribuit
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index d6eab2a99..10420f860 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -209,7 +209,6 @@ ru:
       security_measures:
         only_password: Только пароль
         password_and_2fa: Пароль и 2FA
-        password_and_sign_in_token: Пароль и e-mail код
       sensitive: Отметить как «деликатного содержания»
       sensitized: отмечено как «деликатного характера»
       shared_inbox_url: URL общих входящих
@@ -1187,10 +1186,10 @@ ru:
         one: Также, пока вас не было, у вас появился новый подписчик! Ура!
         other: Также, пока вас не было, у вас появилось %{count} новых подписчиков! Отлично!
       subject:
-        few: "%{count} новых уведомления с вашего последнего захода \U0001F418"
-        many: "%{count} новых уведомлений с вашего последнего захода \U0001F418"
-        one: "%{count} новое уведомление с вашего последнего захода \U0001F418"
-        other: "%{count} новых уведомлений с вашего последнего захода \U0001F418"
+        few: "%{count} новых уведомления с вашего последнего захода 🐘"
+        many: "%{count} новых уведомлений с вашего последнего захода 🐘"
+        one: "%{count} новое уведомление с вашего последнего захода 🐘"
+        other: "%{count} новых уведомлений с вашего последнего захода 🐘"
       title: В ваше отсутствие…
     favourite:
       body: "%{name} добавил(а) ваш пост в избранное:"
@@ -1590,12 +1589,13 @@ ru:
       explanation: Вы запросили архив всех данных вашей учётной записи Mastodon. Что ж, он готов к скачиванию.
       subject: Ваш архив готов к загрузке
       title: Архив ваших данных готов
-    sign_in_token:
-      details: 'Вот подробная информация о попытке:'
-      explanation: 'Мы обнаружили попытку войти в вашу учётную запись с нераспознанного IP-адреса. Если это вы, введите код безопасности ниже на странице вызова:'
-      further_actions: 'Если это были не вы, пожалуйста, смените пароль и включите двухфакторную аутентификацию для вашей учётной записи. Вы можете сделать это здесь:'
-      subject: Пожалуйста, подтвердите попытку входа
-      title: Попытка входа
+    suspicious_sign_in:
+      change_password: сменить пароль
+      details: 'Подробности о новом входе:'
+      explanation: Мы заметили вход в вашу учётную запись с нового IP-адреса.
+      further_actions_html: Если это были не вы, рекомендуем вам немедленно %{action} и включить двухфакторную авторизацию, чтобы обезопасить свою учётную запись.
+      subject: В вашу учётную запись был выполнен вход с нового IP-адреса
+      title: Выполнен вход
     warning:
       appeal: Обжаловать
       categories:
@@ -1642,13 +1642,10 @@ ru:
       title: Добро пожаловать на борт, %{name}!
   users:
     follow_limit_reached: Вы не можете подписаться больше, чем на %{limit} человек
-    generic_access_help_html: Не можете войти в свою учётную запись? Свяжитесь с %{email} для помощи
     invalid_otp_token: Введен неверный код двухфакторной аутентификации
-    invalid_sign_in_token: Неверный код безопасности
     otp_lost_help_html: Если Вы потеряли доступ к обоим, свяжитесь с %{email}
     seamless_external_login: Вы залогинены через сторонний сервис, поэтому настройки e-mail и пароля недоступны.
     signed_in_as: 'Выполнен вход под именем:'
-    suspicious_sign_in_confirmation: Похоже, вы раньше не входили с этого устройства, и давно не осуществляли вход, поэтому мы отправили вам код безопасности на почту, чтобы подтвердить, что это действительно вы.
   verification:
     explanation_html: 'Владение ссылками в профиле <strong>можно подтвердить</strong>. Для этого на указанном сайте должна содержаться ссылка на ваш профиль Mastodon, а у самой ссылки <strong>должен</strong> быть атрибут <code>rel="me"</code>. Что внутри ссылки — значения не имеет. Вот вам пример ссылки:'
     verification: Верификация ссылок
diff --git a/config/locales/sc.yml b/config/locales/sc.yml
index aab2e6134..9c3ef007b 100644
--- a/config/locales/sc.yml
+++ b/config/locales/sc.yml
@@ -936,8 +936,8 @@ sc:
         one: In prus, %{count} persone noa ti sighit dae cando fias assente. Incredìbile!
         other: In prus, %{count} persones noas ti sighint dae cando fias assente. Incredìbile!
       subject:
-        one: "1 notìfica noa dae s'ùrtima visita tua \U0001F418"
-        other: "%{count} notìficas noas dae s'ùrtima visita tua \U0001F418"
+        one: "1 notìfica noa dae s'ùrtima visita tua 🐘"
+        other: "%{count} notìficas noas dae s'ùrtima visita tua 🐘"
       title: Durante s'ausèntzia tua...
     favourite:
       body: "%{name} at marcadu comente a preferidu s'istadu tuo:"
@@ -1286,12 +1286,6 @@ sc:
       explanation: As pedidu una còpia de seguresa totale de su contu de Mastodon tuo. Immoe est pronta pro s'iscarrigamentu!
       subject: S'archìviu tuo est prontu pro èssere iscarrigadu
       title: Collida dae s'archìviu
-    sign_in_token:
-      details: 'Custos sunt is detàllios de su tentativu:'
-      explanation: 'Amus rilevadu unu tentativu de identificatzione in su contu tuo dae un''indiritzu IP non reconnotu. Si fias tue, inserta su còdighe de seguresa in bàsciu in sa pàgina de disafiu de identificatzione:'
-      further_actions: 'Si non fias tue, càmbia sa crae tua e ativa s''autenticatzione in duos passos in su contu tuo. Ddu podes fàghere inoghe:'
-      subject: Cunfirma su tentativu de identificatzione
-      title: Tentativu de identificatzione
     warning:
       subject:
         disable: Su contu tuo %{acct} est istadu cungeladu
@@ -1322,13 +1316,10 @@ sc:
       title: Ti donamus su benebènnidu, %{name}!
   users:
     follow_limit_reached: Non podes sighire prus de %{limit} persones
-    generic_access_help_html: Tenes problemas a intrare in su contu tuo? Podes cuntatare a %{email} pro retzire agiudu
     invalid_otp_token: Còdighe a duas fases non vàlidu
-    invalid_sign_in_token: Còdighe de seguresa non vàlidu
     otp_lost_help_html: Si as pèrdidu s'atzessu a ambos, podes cuntatare a %{email}
     seamless_external_login: As abertu sa sessione pro mèdiu de unu servìtziu esternu, e pro custa resone is cunfiguratziones de sa crae de intrada e de posta eletrònica non sunt a disponimentu.
     signed_in_as: 'Sessione aberta comente:'
-    suspicious_sign_in_confirmation: Paret chi no as mai abertu sa sessione dae custu dispositivu e est dae unu pagu de tempus chi no intras in Mastodon, duncas ti semus imbiende unu còdighe de seguresa a s'indiritzu de posta eletrònica tuo pro cunfirmare chi ses tue.
   verification:
     explanation_html: 'Ti podes <strong>verificare a sa sola comente mere de is ligòngios in is metadatos de su profilu tuo</strong>. Pro ddu fàghere su situ ligadu depet cuntènnere unu ligòngiu chi torret a su profilu de Mastodon tuo. Su ligòngiu in su situ <strong>depet</strong> tènnere un''atributu <code>rel="me"</code>. Su testu cuntenutu in su ligòngiu no est de importu. Custu est un''esèmpiu:'
     verification: Verìfica
diff --git a/config/locales/simple_form.cs.yml b/config/locales/simple_form.cs.yml
index 233a9f6ee..2a55c57b9 100644
--- a/config/locales/simple_form.cs.yml
+++ b/config/locales/simple_form.cs.yml
@@ -27,6 +27,8 @@ cs:
         scheduled_at: Pro okamžité zveřejnění ponechte prázdné
         starts_at: Volitelné. Jen pokud je oznámení vázáno na konkrétní časové období
         text: Můžete použít syntax příspěvků. Mějte prosím na paměti, kolik prostoru oznámení zabere na obrazovce uživatele
+      appeal:
+        text: Proti prohřešku se můžete odvolat jen jednou
       defaults:
         autofollow: Lidé, kteří se zaregistrují na základě pozvánky, vás budou automaticky sledovat
         avatar: PNG, GIF či JPG. Maximálně %{size}. Bude zmenšen na %{dimensions} px
@@ -61,6 +63,7 @@ cs:
       domain_allow:
         domain: Tato doména bude moci stahovat data z tohoto serveru a příchozí data z ní budou zpracována a uložena
       email_domain_block:
+        domain: Toto může být doménové jméno, které je v e-mailové adrese nebo MX záznam, který používá. Budou zkontrolovány při registraci.
         with_dns_records: Dojde k pokusu o překlad DNS záznamů dané domény a výsledky budou rovněž zablokovány
       featured_tag:
         name: 'Nejspíš budete chtít použít jeden z těchto:'
@@ -105,11 +108,11 @@ cs:
         text: Vlastní varování
         type: Akce
         types:
-          disable: Deaktivovat přihlašování
+          disable: Zmrazit
           none: Nic nedělat
           sensitive: Citlivý
-          silence: Ztišit
-          suspend: Pozastavit účet a nenávratně smazat jeho data
+          silence: Omezit
+          suspend: Pozastavit
         warning_preset_id: Použít předlohu pro varování
       announcement:
         all_day: Celodenní událost
@@ -117,6 +120,8 @@ cs:
         scheduled_at: Naplánovat zveřejnění
         starts_at: Začátek události
         text: Oznámení
+      appeal:
+        text: Vysvětlete proč by toto rozhodnutí mělo být vráceno
       defaults:
         autofollow: Pozvat ke sledování vašeho účtu
         avatar: Avatar
@@ -195,6 +200,7 @@ cs:
           sign_up_requires_approval: Omezit registrace
         severity: Pravidlo
       notification_emails:
+        appeal: Někdo se odvolává proti rozhodnutí moderátora
         digest: Posílat e-maily s přehledem
         favourite: Někdo si oblíbil váš příspěvek
         follow: Někdo vás začal sledovat
@@ -202,6 +208,8 @@ cs:
         mention: Někdo vás zmínil
         pending_account: Je třeba posoudit nový účet
         reblog: Někdo boostnul váš příspěvek
+        report: Je odesláno nové hlášení
+        trending_tag: Nový trend vyžaduje posouzení
       rule:
         text: Pravidlo
       tag:
diff --git a/config/locales/simple_form.en.yml b/config/locales/simple_form.en.yml
index b19b7891f..b784b1da7 100644
--- a/config/locales/simple_form.en.yml
+++ b/config/locales/simple_form.en.yml
@@ -49,6 +49,7 @@ en:
         phrase: Will be matched regardless of casing in text or content warning of a post
         scopes: Which APIs the application will be allowed to access. If you select a top-level scope, you don't need to select individual ones.
         setting_aggregate_reblogs: Do not show new boosts for posts that have been recently boosted (only affects newly-received boosts)
+        setting_always_send_emails: Normally e-mail notifications won't be sent when you are actively using Mastodon
         setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
         setting_display_media_default: Hide media marked as sensitive
         setting_display_media_hide_all: Always hide media
@@ -151,6 +152,7 @@ en:
         phrase: Keyword or phrase
         setting_advanced_layout: Enable advanced web interface
         setting_aggregate_reblogs: Group boosts in timelines
+        setting_always_send_emails: Always send e-mail notifications
         setting_auto_play_gif: Auto-play animated GIFs
         setting_boost_modal: Show confirmation dialog before boosting
         setting_crop_images: Crop images in non-expanded posts to 16x9
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index e120c2c8b..dd5c6264e 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -66,7 +66,7 @@ gl:
         domain: Este pode ser o nome de dominio que aparece no enderezo de email ou o rexistro MX que utiliza. Será comprobado no momento do rexistro.
         with_dns_records: Vaise facer un intento de resolver os rexistros DNS proporcionados e os resultados tamén irán a lista de bloqueo
       featured_tag:
-        name: 'Poderías usar algunha destas:'
+        name: 'Poderías usar algún destos:'
       form_challenge:
         current_password: Estás entrando nun área segura
       imports:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index 7e44489b5..17cf652a4 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -151,7 +151,7 @@ it:
         phrase: Parola chiave o frase
         setting_advanced_layout: Abilita interfaccia web avanzata
         setting_aggregate_reblogs: Raggruppa condivisioni in timeline
-        setting_auto_play_gif: Play automatico GIF animate
+        setting_auto_play_gif: Riproduci automaticamente le GIF animate
         setting_boost_modal: Mostra dialogo di conferma prima del boost
         setting_crop_images: Ritaglia immagini in post non espansi a 16x9
         setting_default_language: Lingua dei post
@@ -169,7 +169,7 @@ it:
         setting_reduce_motion: Riduci movimento nelle animazioni
         setting_show_application: Rendi pubblica l'applicazione usata per inviare i post
         setting_system_font_ui: Usa il carattere predefinito del sistema
-        setting_theme: Tema sito
+        setting_theme: Tema del sito
         setting_trends: Mostra tendenze di oggi
         setting_unfollow_modal: Chiedi conferma prima di smettere di seguire qualcuno
         setting_use_blurhash: Mostra i gradienti colorati per i media nascosti
diff --git a/config/locales/simple_form.uk.yml b/config/locales/simple_form.uk.yml
index 339af8ffb..1d4512597 100644
--- a/config/locales/simple_form.uk.yml
+++ b/config/locales/simple_form.uk.yml
@@ -116,6 +116,8 @@ uk:
         scheduled_at: Відкладена публікація
         starts_at: Час початку
         text: Оголошення
+      appeal:
+        text: Поясніть, чому це рішення слід скасувати
       defaults:
         autofollow: Запросити слідкувати за вашим обліковим записом
         avatar: Аватар
@@ -194,6 +196,7 @@ uk:
           sign_up_requires_approval: Обмеження реєстрації
         severity: Правило
       notification_emails:
+        appeal: Хтось подає апеляцію на рішення модератора
         digest: Надсилати дайджест електронною поштою
         favourite: Надсилати листа, коли комусь подобається Ваш статус
         follow: Надсилати листа, коли хтось підписується на Вас
@@ -202,6 +205,7 @@ uk:
         pending_account: Надсилати електронного листа, коли новий обліковий запис потребує розгляду
         reblog: Надсилати листа, коли хтось передмухує Ваш статус
         report: Нову скаргу надіслано
+        trending_tag: Нове популярне вимагає розгляду
       rule:
         text: Правило
       tag:
diff --git a/config/locales/simple_form.vi.yml b/config/locales/simple_form.vi.yml
index 033209456..3a42a33a6 100644
--- a/config/locales/simple_form.vi.yml
+++ b/config/locales/simple_form.vi.yml
@@ -39,7 +39,7 @@ vi:
         digest: Chỉ gửi sau một thời gian dài không hoạt động hoặc khi bạn nhận được tin nhắn (trong thời gian vắng mặt)
         discoverable: Cho phép tài khoản của bạn xuất hiện trong gợi ý theo dõi, xu hướng và những tính năng khác
         email: Bạn sẽ được gửi một email xác nhận
-        fields: Được phép tạo tối đa 4 mục trên trang cá nhân của bạn
+        fields: Được phép thêm tối đa 4 mục trên trang hồ sơ của bạn
         header: PNG, GIF hoặc JPG. Kích cỡ tối đa %{size}. Sẽ bị nén xuống %{dimensions}px
         inbox_url: Sao chép URL của máy chủ mà bạn muốn dùng
         irreversible: Các tút đã lọc sẽ không thể phục hồi, kể cả sau khi xóa bộ lọc
@@ -48,16 +48,16 @@ vi:
         password: Dùng ít nhất 8 ký tự
         phrase: Sẽ được hiện thị trong văn bản hoặc cảnh báo nội dung của một tút
         scopes: API nào ứng dụng sẽ được phép truy cập. Nếu bạn chọn quyền hạn cấp cao nhất, bạn không cần chọn từng phạm vi.
-        setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiển thị trên bảng tin nữa
-        setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiển thị nếu nhấn vào
+        setting_aggregate_reblogs: Nếu một tút đã được đăng lại thì những lượt đăng lại sau sẽ không hiện trên bảng tin nữa
+        setting_default_sensitive: Mặc định là nội dung nhạy cảm và chỉ hiện nếu nhấn vào
         setting_display_media_default: Làm mờ những thứ được đánh dấu là nhạy cảm
         setting_display_media_hide_all: Không hiển thị
-        setting_display_media_show_all: Luôn luôn hiển thị
-        setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang cá nhân
+        setting_display_media_show_all: Luôn hiển thị
+        setting_hide_network: Ẩn những người bạn theo dõi và những người theo dõi bạn trên trang hồ sơ
         setting_noindex: Ảnh hưởng đến trang cá nhân và tút của bạn
-        setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết bài đăng
+        setting_show_application: Tên ứng dụng bạn dùng để đăng tút sẽ hiện trong chi tiết của tút
         setting_use_blurhash: Lớp phủ mờ dựa trên màu sắc của hình ảnh nhạy cảm
-        setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấp chuột vào
+        setting_use_pending_items: Dồn lại toàn bộ tút mới và chỉ hiển thị khi nhấn vào
         username: Tên người dùng của bạn sẽ là duy nhất trên %{domain}
         whole_word: Khi từ khóa hoặc cụm từ là chữ và số, nó sẽ chỉ hiện ra những từ chính xác như vậy
       domain_allow:
@@ -132,7 +132,7 @@ vi:
         context: Áp dụng
         current_password: Mật khẩu hiện tại
         data: Dữ liệu
-        discoverable: Liệt kê tài khoản trên danh sách thành viên
+        discoverable: Đề xuất tài khoản
         display_name: Tên hiển thị
         email: Địa chỉ email
         expires_in: Hết hạn sau
@@ -149,7 +149,7 @@ vi:
         otp_attempt: Xác thực hai bước
         password: Mật khẩu
         phrase: Từ khóa hoặc cụm từ
-        setting_advanced_layout: Bật giao diện nhiều cột
+        setting_advanced_layout: Bật bố cục nhiều cột
         setting_aggregate_reblogs: Không hiện lượt đăng lại trùng lặp
         setting_auto_play_gif: Tự động phát ảnh GIF
         setting_boost_modal: Yêu cầu xác nhận trước khi đăng lại tút
@@ -163,7 +163,7 @@ vi:
         setting_display_media_default: Mặc định
         setting_display_media_hide_all: Ẩn toàn bộ
         setting_display_media_show_all: Hiện toàn bộ
-        setting_expand_spoilers: Luôn hiển thị đầy đủ nội dung tút
+        setting_expand_spoilers: Luôn hiển thị tút có nội dung ẩn
         setting_hide_network: Ẩn quan hệ của bạn
         setting_noindex: Không xuất hiện trong công cụ tìm kiếm
         setting_reduce_motion: Giảm chuyển động ảnh GIF
@@ -171,7 +171,7 @@ vi:
         setting_system_font_ui: Dùng phông chữ mặc định của hệ thống
         setting_theme: Giao diện
         setting_trends: Hiển thị xu hướng hôm nay
-        setting_unfollow_modal: Yêu cầu xác nhận trước khi hủy theo dõi ai đó
+        setting_unfollow_modal: Yêu cầu xác nhận trước khi ngưng theo dõi ai đó
         setting_use_blurhash: Làm mờ trước ảnh/video nhạy cảm
         setting_use_pending_items: Không tự động cập nhật bảng tin
         severity: Mức độ nghiêm trọng
diff --git a/config/locales/sk.yml b/config/locales/sk.yml
index 687f4d40d..322fa1611 100644
--- a/config/locales/sk.yml
+++ b/config/locales/sk.yml
@@ -895,10 +895,10 @@ sk:
         one: A ešte, kým si bol/a preč, si získal/a jedného nového následovateľa! Hurá!
         other: A ešte, kým si bol/a preč, si získal/a %{count} nových následovateľov! Hurá!
       subject:
-        few: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418"
-        many: "%{count} nových oboznámení od tvojej poslednej návštevy \U0001F418"
-        one: "Jedno nové oboznámenie od tvojej poslednej návštevy \U0001F418"
-        other: "%{count} nové oboznámenia od tvojej poslednej návštevy \U0001F418"
+        few: "%{count} nových oboznámení od tvojej poslednej návštevy 🐘"
+        many: "%{count} nových oboznámení od tvojej poslednej návštevy 🐘"
+        one: "Jedno nové oboznámenie od tvojej poslednej návštevy 🐘"
+        other: "%{count} nové oboznámenia od tvojej poslednej návštevy 🐘"
       title: Zatiaľ čo si bol/a preč…
     favourite:
       body: 'Tvoj príspevok bol uložený medzi obľúbené užívateľa %{name}:'
@@ -1144,9 +1144,6 @@ sk:
       explanation: Vyžiadal/a si si úplnú zálohu svojho Mastodon účtu. Táto záloha je teraz pripravená na stiahnutie!
       subject: Tvoj archív je pripravený na stiahnutie
       title: Odber archívu
-    sign_in_token:
-      subject: Prosím potvrď pokus o prihlásenie
-      title: Pokus o prihlásenie
     warning:
       subject:
         disable: Tvoj účet %{acct} bol zamrazený
@@ -1181,7 +1178,6 @@ sk:
     otp_lost_help_html: Pokiaľ si stratil/a prístup k obom, môžeš dať vedieť %{email}
     seamless_external_login: Si prihlásená/ý cez externú službu, takže nastavenia hesla a emailu ti niesú prístupné.
     signed_in_as: 'Prihlásená/ý ako:'
-    suspicious_sign_in_confirmation: Vyzerá to, že si sa predtým z tohto zariadenia ešte neprihlasoval/a, takže ti na tvoju emailovú adresu pošleme bezpečnostný kód, aby sa potvrdilo, že si to ty.
   verification:
     explanation_html: 'Môžeš sa <strong>overiť ako majiteľ odkazov v metadátach tvojho profilu</strong>. Na to ale musí odkazovaná stránka obsahovať odkaz späť na tvoj Mastodon profil. Tento spätný odkaz <strong>musí</strong> mať prívlastok <code>rel="me"</code>. Na texte odkazu nezáleží. Tu je príklad:'
     verification: Overenie
diff --git a/config/locales/sl.yml b/config/locales/sl.yml
index 6de760dbc..3b10c53f0 100644
--- a/config/locales/sl.yml
+++ b/config/locales/sl.yml
@@ -799,10 +799,10 @@ sl:
         other: Prav tako ste pridobili %{count} novih sledilcev, ko ste bili odsotni! Juhu!
         two: Prav tako ste pridobili %{count} nova sledilca, ko ste bili odsotni! Juhu!
       subject:
-        few: "%{count} nova obvestila od vašega zadnjega obiska \U0001F418"
-        one: "1 novo obvestilo od vašega zadnjega obiska \U0001F418"
-        other: "%{count} novih obvestil od vašega zadnjega obiska \U0001F418"
-        two: "%{count} novi obvestili od vašega zadnjega obiska \U0001F418"
+        few: "%{count} nova obvestila od vašega zadnjega obiska 🐘"
+        one: "1 novo obvestilo od vašega zadnjega obiska 🐘"
+        other: "%{count} novih obvestil od vašega zadnjega obiska 🐘"
+        two: "%{count} novi obvestili od vašega zadnjega obiska 🐘"
       title: V vaši odsotnosti...
     favourite:
       body: "%{name} je vzljubil/a vaše stanje:"
@@ -1116,8 +1116,6 @@ sl:
       explanation: Zahtevali ste popolno varnostno kopijo računa Mastodon. Zdaj je pripravljen za prenos!
       subject: Vaš arhiv je pripravljen za prenos
       title: Prevzem arhiva
-    sign_in_token:
-      title: Poskus prijave
     warning:
       reason: 'Razlog:'
       subject:
@@ -1151,7 +1149,6 @@ sl:
   users:
     follow_limit_reached: Ne morete spremljati več kot %{limit} ljudi
     invalid_otp_token: Neveljavna dvofaktorska koda
-    invalid_sign_in_token: Neveljavna varnostna koda
     otp_lost_help_html: Če ste izgubili dostop do obeh, stopite v stik z %{email}
     seamless_external_login: Prijavljeni ste prek zunanje storitve, tako da nastavitve gesla in e-pošte niso na voljo.
     signed_in_as: 'Vpisani kot:'
diff --git a/config/locales/sq.yml b/config/locales/sq.yml
index 560f4bff7..8c61d1d0c 100644
--- a/config/locales/sq.yml
+++ b/config/locales/sq.yml
@@ -199,7 +199,6 @@ sq:
       security_measures:
         only_password: Vetëm fjalëkalim
         password_and_2fa: Fjalëkalim dhe 2FA
-        password_and_sign_in_token: Fjalëkalim dhe token email-i
       sensitive: Rezervat
       sensitized: iu vu shenjë si rezervat
       shared_inbox_url: URL kutie të përbashkët mesazhesh
@@ -597,7 +596,6 @@ sq:
       action_taken_by: Veprimi i ndërmarrë nga
       actions:
         delete_description_html: Postimet e raportuara do të fshihen dhe do të regjistrohet një paralajmërim, për t’ju ndihmuar të përshkallëzoni hapat në rast shkeljesh të ardhme nga e njëjta llogari.
-        mark_as_sensitive_description_html: Media në postimet e raportuar do të shënohet si rezervat dhe do të regjistrohet një paralajmërim për t’ju ndihmuar ta shpini çështjen më tej, në rast shkeljesh të ardhshme nga e njëjta llogari.
         other_description_html: Shihni më tepër mundësi për kontroll të sjelljes së një llogari dhe përshtatni komunikimin me llogarinë e raportuar.
         resolve_description_html: Ndaj llogarisë së raportuar nuk do të ndërmerret ndonjë veprim, s’do të regjistrohet ndonjë paralajmërim dhe raporti do të mbyllet.
         silence_description_html: Profili do të jetë i dukshëm vetëm për ata që e ndjekin tashmë, ose që e kërkojnë dorazi, duke reduktuar rëndë përhapjen e tij. Mundet përherë të prapakthehet.
@@ -1231,8 +1229,8 @@ sq:
         one: Veç kësaj, u bëtë me një ndjekës të ri, teksa s’ishit këtu! Ëhë!
         other: Veç kësaj, u bëtë me %{count} ndjekës të rinj, teksa s’ishit këtu! Shkëlqyeshëm!
       subject:
-        one: "1 njoftim i ri që nga vizita juaj e fundit \U0001F418"
-        other: "%{count} njoftime të reja që nga vizita juaj e fundit \U0001F418"
+        one: "1 njoftim i ri që nga vizita juaj e fundit 🐘"
+        other: "%{count} njoftime të reja që nga vizita juaj e fundit 🐘"
       title: Gjatë mungesës tuaj…
     favourite:
       body: 'Gjendja juaj u parapëlqye nga %{name}:'
@@ -1627,12 +1625,6 @@ sq:
       explanation: Kërkuat një kopjeruajtje të plotë të llogarisë tuaj Mastodon. E keni gati për shkarkim!
       subject: Arkivi juaj është gati për shkarkim
       title: Marrje arkivi me vete
-    sign_in_token:
-      details: 'Ja hollësitë e përpjekjes:'
-      explanation: 'Pikasëm një përpjekje për të bërë hyrje në llogarinë tuaj nga një adresë IP jo e pranuar. Nëse ky jeni ju, ju lutemi jepni kodin e sigurisë më poshtë te faqja e pyetjes për hyrje:'
-      further_actions: 'Nëse ky s’qetë ju, ju lutemi, ndryshoni fjalëkalimin tuaj dhe aktivizoni në llogarinë tuaj mirëfilltësim dyfaktorësh. Këtë mund ta bëni këtu:'
-      subject: Ju lutemi, ripohoni përpjekje hyrjeje
-      title: Përpjekje hyrjeje
     warning:
       appeal: Parashtroni një apelim
       appeal_description: Nëse besoni se është gabim, mund t’i parashtroni një apelim stafit të %{instance}.
@@ -1683,13 +1675,10 @@ sq:
       title: Mirë se vini, %{name}!
   users:
     follow_limit_reached: S’mund të ndiqni më tepër se %{limit} persona
-    generic_access_help_html: Problem me hyrjen në llogarinë tuaj? Për asistencë mund të lidheni me %{email}
     invalid_otp_token: Kod dyfaktorësh i pavlefshëm
-    invalid_sign_in_token: Kod sigurie i pavlefshëm
     otp_lost_help_html: Nëse humbët hyrjen te të dy, mund të lidheni me %{email}
     seamless_external_login: Jeni futur përmes një shërbimi të jashtëm, ndaj s’ka rregullime fjalëkalimi dhe email.
     signed_in_as: 'I futur si:'
-    suspicious_sign_in_confirmation: Duket se s’keni hyrë më parë nga kjo pajisje, dhe se keni kohë pa bërë hyrje, ndaj po ju dërgojmë një kod sigurie te adresa juaj email, që të ripohoni se jeni ju.
   verification:
     explanation_html: 'Mundeni <strong>të verifikoni veten si i zoti i lidhjeve te tejtëdhënat e profilit tuaj</strong>. Për këtë, sajti i lidhur duhet të përmbajë një lidhje për te profili juaj Mastodon. Lidhje për te ajo <strong>duhet</strong> të ketë një atribut <code>rel="me"</code>. Lënda tekst e lidhjes nuk ngre peshë. Ja një shembull:'
     verification: Verifikim
diff --git a/config/locales/sr-Latn.yml b/config/locales/sr-Latn.yml
index 7dcff987b..283cfe28e 100644
--- a/config/locales/sr-Latn.yml
+++ b/config/locales/sr-Latn.yml
@@ -337,9 +337,9 @@ sr-Latn:
         one: Dobili ste jednog novog pratioca! Jeee!
         other: Dobili ste %{count} novih pratioca! Sjajno!
       subject:
-        few: "%{count} nova obaveštenja od poslednje posete \U0001F418"
-        one: "1 novo obaveštenje od poslednje posete \U0001F418"
-        other: "%{count} novih obaveštenja od poslednje posete \U0001F418"
+        few: "%{count} nova obaveštenja od poslednje posete 🐘"
+        one: "1 novo obaveštenje od poslednje posete 🐘"
+        other: "%{count} novih obaveštenja od poslednje posete 🐘"
     favourite:
       body: "%{name} je postavio kao omiljen Vaš status:"
       subject: "%{name} je postavio kao omiljen Vaš status"
diff --git a/config/locales/sr.yml b/config/locales/sr.yml
index e89e43879..e8e44a651 100644
--- a/config/locales/sr.yml
+++ b/config/locales/sr.yml
@@ -530,9 +530,9 @@ sr:
         one: Добили сте једног новог пратиоца! Јеее!
         other: Добили сте %{count} нових пратиоца! Сјајно!
       subject:
-        few: "%{count} нова обавештења од последње посете \U0001F418"
-        one: "1 ново обавештење од последње посете \U0001F418"
-        other: "%{count} нових обавештења од последње посете \U0001F418"
+        few: "%{count} нова обавештења од последње посете 🐘"
+        one: "1 ново обавештење од последње посете 🐘"
+        other: "%{count} нових обавештења од последње посете 🐘"
       title: Док нисте били ту...
     favourite:
       body: "%{name} је поставио као омиљен Ваш статус:"
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index c8424e5f5..b1e3ddd4d 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -187,7 +187,6 @@ sv:
       security_measures:
         only_password: Endast lösenord
         password_and_2fa: Lösenord och 2FA
-        password_and_sign_in_token: Lösenord och e-post token
       sensitive: Känsligt
       sensitized: markerad som känsligt
       shared_inbox_url: Delad inkorg URL
@@ -907,8 +906,8 @@ sv:
         one: Du har också förvärvat en ny följare! Jippie!
         other: Du har också fått %{count} nya följare medans du var iväg! Otroligt!
       subject:
-        one: "1 nytt meddelande sedan ditt senaste besök \U0001F418"
-        other: "%{count} nya meddelanden sedan ditt senaste besök \U0001F418"
+        one: "1 nytt meddelande sedan ditt senaste besök 🐘"
+        other: "%{count} nya meddelanden sedan ditt senaste besök 🐘"
       title: I din frånvaro...
     favourite:
       body: 'Din status favoriserades av %{name}:'
@@ -1263,10 +1262,8 @@ sv:
       explanation: Du begärde en fullständig säkerhetskopiering av ditt Mastodon-konto. Det är nu klart för nedladdning!
       subject: Ditt arkiv är klart för nedladdning
       title: Arkivuttagning
-    sign_in_token:
-      details: 'Här är detaljerna för försöket:'
-      further_actions: 'Om det inte var du, vänligen ändra ditt lösenord och aktivera tvåfaktor-autentisering i ditt konto. Du kan göra det här:'
-      title: Inloggningsförsök
+    suspicious_sign_in:
+      change_password: Ändra ditt lösenord
     warning:
       reason: 'Anledning:'
       subject:
@@ -1298,9 +1295,7 @@ sv:
       title: Välkommen ombord, %{name}!
   users:
     follow_limit_reached: Du kan inte följa fler än %{limit} personer
-    generic_access_help_html: Har du problem med att komma åt ditt konto? Du kan komma i kontakt med %{email} för assistans
     invalid_otp_token: Ogiltig tvåfaktorskod
-    invalid_sign_in_token: Ogiltig säkerhetskod
     otp_lost_help_html: Om du förlorat åtkomst till båda kan du komma i kontakt med %{email}
     seamless_external_login: Du är inloggad via en extern tjänst, så lösenord och e-postinställningar är inte tillgängliga.
     signed_in_as: 'Inloggad som:'
diff --git a/config/locales/ta.yml b/config/locales/ta.yml
index d5ba7603d..e3b61a487 100644
--- a/config/locales/ta.yml
+++ b/config/locales/ta.yml
@@ -300,14 +300,3 @@ ta:
     errors:
       in_reply_not_found: நீங்கள் மறுமொழி அளிக்க முயலும் பதிவு இருப்பதுபோல் தெரியவில்லை.
     show_thread: தொடரைக் காட்டு
-  user_mailer:
-    sign_in_token:
-      details: 'அம்முயற்சி பற்றிய விவரங்கள் இங்கே:'
-      explanation: 'அங்கீகரிக்கப்படாத ஓர் IP முகவரியிலிருந்து உங்கள் கணக்கிற்குள் நுழையும் முயற்சி நடந்துள்ளது. இது நீங்கள்தான் என்றால், தயவுசெய்து பாதுகாப்பு குறியீட்டைக் கீழே உள்ளிடவும்:'
-      further_actions: 'இது நீங்கள் இல்லை என்றால், தயவுசெய்து உங்கள் கடவுச்சொல்லை மாற்றவும். மேலும், உங்கள் கணக்கிற்கு இரண்டு கட்ட அங்கீகாரத்தை (two-factor authentication) செயலாக்கவும். அதை இங்கு செய்ய இயலும்:'
-      subject: உள்நுழைய முயற்சித்ததை தயவுசெய்து உறுதிபடுத்தவும்
-      title: உள்நுழைய முயற்சி
-  users:
-    generic_access_help_html: உங்கள் கணக்கை அணுகுவதில் சிக்கலா? உதவிக்கு %{email} -உடன் தொடர்பு கொள்ளவும்
-    invalid_sign_in_token: தவறான பாதுகாப்புக் குறியீடு
-    suspicious_sign_in_confirmation: இதற்கு முன்பு இந்த சாதனத்திலிருந்து நீங்கள் உள்நுழைந்ததுபோல் தெரியவில்லை. மேலும், நீங்கள் உள்நுழைந்தே சில காலம் ஆகிறது. எனவே, இது நீங்கள்தானா என்பதை உறுதிப்படுத்த உங்கள் மின்னஞ்சல் முகவரிக்கு ஒரு பாதுகாப்புக் குறியீட்டை அனுப்புகிறோம்.
diff --git a/config/locales/th.yml b/config/locales/th.yml
index ce40b9517..a5f8a86df 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -156,6 +156,8 @@ th:
       pending: การตรวจทานที่รอดำเนินการ
       perform_full_suspension: ระงับ
       previous_strikes: การดำเนินการก่อนหน้านี้
+      previous_strikes_description_html:
+        other: บัญชีนี้มี <strong>%{count}</strong> การดำเนินการ
       promote: เลื่อนขั้น
       protocol: โปรโตคอล
       public: สาธารณะ
@@ -186,7 +188,6 @@ th:
       security_measures:
         only_password: รหัสผ่านเท่านั้น
         password_and_2fa: รหัสผ่านและ 2FA
-        password_and_sign_in_token: รหัสผ่านและโทเคนอีเมล
       sensitive: บังคับให้ละเอียดอ่อน
       sensitized: ทำเครื่องหมายว่าละเอียดอ่อนแล้ว
       shared_inbox_url: URL กล่องขาเข้าที่แบ่งปัน
@@ -486,6 +487,8 @@ th:
       delivery_available: มีการจัดส่ง
       delivery_error_days: วันที่มีข้อผิดพลาดการจัดส่ง
       empty: ไม่พบโดเมน
+      known_accounts:
+        other: "%{count} บัญชีที่รู้จัก"
       moderation:
         all: ทั้งหมด
         limited: จำกัดอยู่
@@ -729,6 +732,8 @@ th:
         allow_provider: อนุญาตผู้เผยแพร่
         disallow: ไม่อนุญาตลิงก์
         disallow_provider: ไม่อนุญาตผู้เผยแพร่
+        shared_by_over_week:
+          other: แบ่งปันโดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา
         title: ลิงก์ที่กำลังนิยม
         usage_comparison: แบ่งปัน %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้
       pending_review: การตรวจทานที่รอดำเนินการ
@@ -763,6 +768,8 @@ th:
         trending_rank: 'กำลังนิยม #%{rank}'
         usable: สามารถใช้
         usage_comparison: ใช้ %{today} ครั้งวันนี้ เทียบกับ %{yesterday} เมื่อวานนี้
+        used_by_over_week:
+          other: ใช้โดย %{count} คนในช่วงสัปดาห์ที่ผ่านมา
       title: แนวโน้ม
     warning_presets:
       add_new: เพิ่มใหม่
@@ -1120,7 +1127,7 @@ th:
       new_followers_summary:
         other: นอกจากนี้คุณยังได้รับ %{count} ผู้ติดตามใหม่ขณะที่ไม่อยู่! มหัศจรรย์!
       subject:
-        other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ \U0001F418"
+        other: "%{count} การแจ้งเตือนใหม่นับตั้งแต่การเยี่ยมชมล่าสุดของคุณ 🐘"
       title: เมื่อคุณไม่อยู่...
     favourite:
       body: 'โพสต์ของคุณได้รับการชื่นชอบโดย %{name}:'
@@ -1412,12 +1419,6 @@ th:
       explanation: คุณได้ขอข้อมูลสำรองแบบเต็มของบัญชี Mastodon ของคุณ ตอนนี้ข้อมูลสำรองพร้อมสำหรับการดาวน์โหลดแล้ว!
       subject: การเก็บถาวรของคุณพร้อมสำหรับการดาวน์โหลดแล้ว
       title: การส่งออกการเก็บถาวร
-    sign_in_token:
-      details: 'นี่คือรายละเอียดของความพยายาม:'
-      explanation: 'เราตรวจพบความพยายามลงชื่อเข้าบัญชีของคุณจากที่อยู่ IP ที่ไม่รู้จัก หากนี่คือคุณ โปรดป้อนรหัสความปลอดภัยด้านล่างในหน้าตรวจสอบการลงชื่อเข้า:'
-      further_actions: 'หากนี่ไม่ใช่คุณ โปรดเปลี่ยนรหัสผ่านของคุณและเปิดใช้งานการรับรองความถูกต้องด้วยสองปัจจัยในบัญชีของคุณ คุณสามารถทำได้ที่นี่:'
-      subject: โปรดยืนยันการลงชื่อเข้าที่พยายาม
-      title: ความพยายามลงชื่อเข้า
     warning:
       appeal: ส่งการอุทธรณ์
       appeal_description: หากคุณเชื่อว่านี่เป็นข้อผิดพลาด คุณสามารถส่งการอุทธรณ์ไปยังพนักงานของ %{instance}
@@ -1468,13 +1469,10 @@ th:
       title: ยินดีต้อนรับ %{name}!
   users:
     follow_limit_reached: คุณไม่สามารถติดตามมากกว่า %{limit} คน
-    generic_access_help_html: มีปัญหาในการเข้าถึงบัญชีของคุณ? คุณสามารถติดต่อ %{email} สำหรับความช่วยเหลือ
     invalid_otp_token: รหัสสองปัจจัยไม่ถูกต้อง
-    invalid_sign_in_token: รหัสความปลอดภัยไม่ถูกต้อง
     otp_lost_help_html: หากคุณสูญเสียการเข้าถึงทั้งสองอย่าง คุณสามารถติดต่อ %{email}
     seamless_external_login: คุณได้เข้าสู่ระบบผ่านบริการภายนอก ดังนั้นจึงไม่มีการตั้งค่ารหัสผ่านและอีเมล
     signed_in_as: 'ลงชื่อเข้าเป็น:'
-    suspicious_sign_in_confirmation: ดูเหมือนว่าคุณไม่เคยเข้าสู่ระบบจากอุปกรณ์นี้มาก่อน ดังนั้นเราจึงส่งรหัสความปลอดภัยไปยังที่อยู่อีเมลของคุณเพื่อยืนยันว่าเป็นคุณ
   verification:
     verification: การตรวจสอบ
   webauthn_credentials:
diff --git a/config/locales/tr.yml b/config/locales/tr.yml
index 2733f5eba..fcfa49524 100644
--- a/config/locales/tr.yml
+++ b/config/locales/tr.yml
@@ -165,6 +165,9 @@ tr:
       pending: Bekleyen yorum
       perform_full_suspension: Askıya al
       previous_strikes: Önceki eylemler
+      previous_strikes_description_html:
+        one: Bu hesap için <strong>bir</strong> eylem yapılmış.
+        other: Bu hesap için <strong>%{count}</strong> eylem yapılmış.
       promote: Yükselt
       protocol: Protokol
       public: Herkese açık
@@ -196,7 +199,6 @@ tr:
       security_measures:
         only_password: Sadece parola
         password_and_2fa: Parola ve İki aşamalı doğrulama
-        password_and_sign_in_token: Parola ve e-posta tokeni
       sensitive: Hassas
       sensitized: Hassas olarak işaretlendi
       shared_inbox_url: Paylaşılan gelen kutusu bağlantısı
@@ -523,6 +525,9 @@ tr:
       delivery_error_hint: Eğer teslimat %{count} gün boyunca mümkün olmazsa, otomatik olarak teslim edilemiyor olarak işaretlenecek.
       destroyed_msg: "%{domain} alan adından veriler hemen silinmek üzere kuyruğa alındı."
       empty: Alan adı bulunamadı.
+      known_accounts:
+        one: "%{count} bilinen hesap"
+        other: "%{count} bilinen hesap"
       moderation:
         all: Tümü
         limited: Sınırlı
@@ -592,7 +597,6 @@ tr:
       action_taken_by: tarafından gerçekleştirilen eylem
       actions:
         delete_description_html: Bildirilen gönderiler silinecek ve aynı hesapla ileride yaşabileceğiniz etkileşimlerde çoğaltmanız için bir eylem kaydedilecek.
-        mark_as_sensitive_description_html: Bildirilen gönderilerdeki medya dosyaları hassas olarak işaretlenecek ve aynı hesapla ileride yaşayabileceğiniz etkileşimlerde kullanabilmeniz için bir eylem kaydedilecek.
         other_description_html: Hesabın davranışını denetlemek ve bildirilen hesabın iletişimini yapılandırmak için daha fazla seçenek görün.
         resolve_description_html: Bildirilen hesap için bir şey yapılmayacak, eylem kaydedilmeyecek ve bildirim kapatılacak.
         silence_description_html: Profil sadece halihazırda takip edenler ve elle bakanlarca görünecek, böylece erişimi ciddi bir şekilde kısıtlanacak. Her zaman geri alınabilir.
@@ -767,6 +771,11 @@ tr:
     system_checks:
       database_schema_check:
         message_html: Beklemede olan veritabanı güncellemeleri mevcut. Uygulamanın beklenildiği gibi çalışması için lütfen onları çalıştırın
+      elasticsearch_running_check:
+        message_html: Elasticsearch'e bağlanılamıyor. Çalıştığından emin olun veya tüm metin aramayı devre dışı bırakın
+      elasticsearch_version_check:
+        message_html: 'Uyumsuz Elasticsearch sürümü: %{value}'
+        version_comparison: Elasticsearch %{running_version} sürümü çalışıyor, ancak %{required_version} sürümü gerekiyor
       rules_check:
         action: Sunucu kurallarını yönet
         message_html: Herhangi bir sunucu kuralı belirlemediniz.
@@ -786,6 +795,9 @@ tr:
         description_html: Bu bağlantılar şu anda sunucunuzun gönderilerini gördüğü hesaplarca bolca paylaşılıyor. Kullanıcılarınızın dünyada neler olduğunu görmesine yardımcı olabilir. Yayıncıyı onaylamadığınız sürece hiçbir bağlantı herkese açık yayınlanmaz. Tekil bağlantıları onaylayabilir veya reddedebilirsiniz.
         disallow: Bağlantıya izin verme
         disallow_provider: Yayıncıya izin verme
+        shared_by_over_week:
+          one: Geçen hafta bir kişi paylaştı
+          other: Geçen hafta %{count} kişi paylaştı
         title: Öne çıkan bağlantılar
         usage_comparison: Bugün %{today} kere paylaşıldı, dün %{yesterday} kere paylaşılmıştı
       pending_review: İnceleme bekliyor
@@ -825,6 +837,9 @@ tr:
         trending_rank: 'Öne çıkanlar #%{rank}'
         usable: Kullanılabilir
         usage_comparison: Bugün %{today} kere kullanıldı, dün %{yesterday} kere kullanılmıştı
+        used_by_over_week:
+          one: Geçen hafta bir kişi tarafından kullanıldı
+          other: Geçen hafta %{count} kişi tarafından kullanıldı
       title: Öne çıkanlar
     warning_presets:
       add_new: Yeni ekle
@@ -1220,8 +1235,8 @@ tr:
         one: Ayrıca, uzaktayken yeni bir takipçi kazandınız! Yaşasın!
         other: Ayrıca, uzaktayken %{count} yeni takipçi kazandınız! İnanılmaz!
       subject:
-        one: "Son ziyaretinizden bu yana 1 yeni bildirim \U0001F418"
-        other: "Son ziyaretinizden bu yana %{count} yeni bildirim \U0001F418"
+        one: "Son ziyaretinizden bu yana 1 yeni bildirim 🐘"
+        other: "Son ziyaretinizden bu yana %{count} yeni bildirim 🐘"
       title: Senin yokluğunda...
     favourite:
       body: "%{name} durumunu beğendi:"
@@ -1616,12 +1631,13 @@ tr:
       explanation: Mastodon hesabınızın tam yedeğini istemiştiniz. Şimdi indirilebilir durumda!
       subject: Arşiviniz indirilmeye hazır
       title: Arşiv paketlemesi
-    sign_in_token:
-      details: 'İşte bu girişimin ayrıntıları:'
-      explanation: 'Tanınmayan bir IP adresinden hesabınızda oturum açma denemesi tespit ettik. Bu sizseniz, lütfen oturum açma sorgulama sayfasına aşağıdaki güvenlik kodunu girin:'
-      further_actions: 'Bu siz değildiyseniz, lütfen şifrenizi değiştirin ve hesabınızda iki faktörlü kimlik doğrulamayı etkinleştirin. Bunu buradan yapabilirsiniz:'
-      subject: Lütfen oturum açma girişimini onaylayın
-      title: Oturum açma girişimi
+    suspicious_sign_in:
+      change_password: parolanızı değiştirin
+      details: 'Oturum açma ayrıntıları şöyledir:'
+      explanation: Hesabınıza yeni bir IP adresinden oturum açıldığını farkettik.
+      further_actions_html: Eğer oturum açan siz değildiyseniz, hesabınızı güvenli tutmanız için hemen %{action} yapmanızı ve iki aşamalı yetkilendirmeyi etkinleştirmenizi öneriyoruz.
+      subject: Hesabınıza yeni bir IP adresinden erişim oldu
+      title: Yeni bir oturum açma
     warning:
       appeal: Bir itiraz gönder
       appeal_description: Bunun bir hata olduğunu düşünüyorsanız, %{instance} sunucusunun personeline bir itiraz gönderebilirsiniz.
@@ -1672,13 +1688,10 @@ tr:
       title: Gemiye hoşgeldin, %{name}!
   users:
     follow_limit_reached: "%{limit} kişiden daha fazlasını takip edemezsiniz"
-    generic_access_help_html: Hesabınıza erişirken sorun mu yaşıyorsunuz? Yardım için %{email} ile iletişime geçebilirsiniz
     invalid_otp_token: Geçersiz iki adımlı doğrulama kodu
-    invalid_sign_in_token: Geçersiz güvenlik kodu
     otp_lost_help_html: Her ikisine de erişiminizi kaybettiyseniz, %{email} ile irtibata geçebilirsiniz
     seamless_external_login: Harici bir servis aracılığıyla oturum açtınız, bu nedenle parola ve e-posta ayarları mevcut değildir.
     signed_in_as: 'Oturum açtı:'
-    suspicious_sign_in_confirmation: Bu cihazdan daha önce oturum açmamış gibi görünüyorsunuz ve bir süredir oturum açmamışsınız, bu yüzden kimliğinizi doğrulamak için e-posta adresinize bir güvenlik kodu gönderiyoruz.
   verification:
     explanation_html: '<strong>Profil meta verisindeki bağlantıların sahibi olarak kendinizi doğrulayabilirsiniz</strong>. Bunun için, link verilen web sitesi Mastodon profilinize geri bir link içermelidir. Geri link bir <code>rel="me"</code> özelliğine sahip <strong>olmalıdır</strong>. Bağlantının metin içeriği önemli değildir. İşte bir örnek:'
     verification: Doğrulama
diff --git a/config/locales/uk.yml b/config/locales/uk.yml
index a42f048d6..c35f941b0 100644
--- a/config/locales/uk.yml
+++ b/config/locales/uk.yml
@@ -199,7 +199,6 @@ uk:
       security_measures:
         only_password: Лише пароль
         password_and_2fa: Пароль та 2FA
-        password_and_sign_in_token: Пароль та токен з е-пошти
       sensitive: Делікатне
       sensitized: позначено делікатним
       shared_inbox_url: URL спільного вхідного кошика
@@ -459,12 +458,15 @@ uk:
       title: Поради щодо підписок
       unsuppress: Відновити поради щодо підписок
     instances:
+      availability:
+        title: Доступність
       back_to_all: Усі
       back_to_limited: Обмежені
       back_to_warning: Попередження
       by_domain: Домен
       confirm_purge: Ви впевнені, що хочете видалити ці дані з цього домену?
       content_policies:
+        comment: Внутрішня примітка
         policies:
           reject_media: Відхилити медіа
           reject_reports: Відхилити скарги
@@ -486,6 +488,11 @@ uk:
       delivery_error_hint: Якщо доставляння неможливе впродовж %{count} днів, воно автоматично позначиться недоставленим.
       destroyed_msg: Дані з %{domain} тепер у черзі на видалення.
       empty: Доменів не знайдено.
+      known_accounts:
+        few: "%{count} відомі облікові записи"
+        many: "%{count} відомих облікових записів"
+        one: "%{count} відомий обліковий запис"
+        other: "%{count} відомих облікових записів"
       moderation:
         all: Усі
         limited: Обмежені
@@ -583,6 +590,7 @@ uk:
         placeholder: Опишіть, які дії були виконані, або інші зміни, що стосуються справи...
         title: Примітки
       notes_description_html: Переглядайте та залишайте примітки для інших модераторів та для себе на майбутнє
+      remote_user_placeholder: віддалений користувач із %{instance}
       reopen: Перевідкрити скаргу
       report: 'Скарга #%{id}'
       reported_account: Обліковий запис порушника
@@ -715,6 +723,14 @@ uk:
     strikes:
       actions:
         delete_statuses: "%{name} видаляє допис від %{target}"
+        disable: "%{name} заморожує обліковий запис %{target}"
+        mark_statuses_as_sensitive: "%{name} позначає допис від %{target} делікатним"
+        none: "%{name} надсилає попередження до %{target}"
+        sensitive: "%{name} позначає обліковий запис %{target} делікатним"
+        silence: "%{name} обмежує обліковий запис %{target}"
+        suspend: "%{name} заморожує обліковий запис %{target}"
+      appeal_approved: Оскаржено
+      appeal_pending: Оскарження в очікуванні
     system_checks:
       database_schema_check:
         message_html: Існують відкладені перенесення бази даних. Запустіть їх, щоб забезпечити очікувану роботу програми
@@ -749,6 +765,7 @@ uk:
         allow_account: Дозволити автора
         disallow: Заборонити допис
         disallow_account: Заборонити автора
+        title: Популярні дописи
       tags:
         current_score: Поточний результат %{score}
         dashboard:
@@ -767,6 +784,11 @@ uk:
         trending_rank: 'Популярність #%{rank}'
         usable: Може бути використано
         usage_comparison: Сьогодні використано %{today} разів, у порівнянні з %{yesterday} вчора
+        used_by_over_week:
+          few: Використали %{count} людини за минулий тиждень
+          many: Використали %{count} людей за минулий тиждень
+          one: Використала одна людина за минулий тиждень
+          other: Використали %{count} людей за минулий тиждень
       title: Популярні
     warning_presets:
       add_new: Додати новий
@@ -779,6 +801,7 @@ uk:
       actions:
         delete_statuses: щоб видалити їхні дописи
         disable: щоб заморозити їхній обліковий запис
+        mark_statuses_as_sensitive: позначати їхні повідомлення делікатними
         none: попередження
         sensitive: щоб позначати їхній обліковий запис делікатним
         silence: щоб обмежити їхній обліковий запис
@@ -792,6 +815,16 @@ uk:
       body: "%{reporter} поскаржився(-лася) на %{target}"
       body_remote: Хтось з домену %{domain} поскаржився(-лася) на %{target}
       subject: Нова скарга до %{instance} (#%{id})
+    new_trends:
+      new_trending_links:
+        title: Популярні посилання
+      new_trending_statuses:
+        no_approved_statuses: На цей час немає схвалених популярних дописів.
+        title: Популярні дописи
+      new_trending_tags:
+        no_approved_tags: На цей час немає схвалених популярних хештегів.
+        title: Популярні хештеги
+      subject: Нове популярне до розгляду на %{instance}
   aliases:
     add_new: Створити псевдонім
     created_msg: Новий псевдонім успішно створено. Тепер ви можете починати переміщення зі старого облікового запису.
@@ -1148,10 +1181,10 @@ uk:
         one: Також, у Вас з'явився новий підписник, коли ви були відсутні! Ура!
         other: Також, у Вас з'явилось %{count} нових підписників, поки ви були відсутні! Чудово!
       subject:
-        few: "%{count} нові сповіщення з Вашого останнього входу \U0001F418"
-        many: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
-        one: "1 нове сповіщення з Вашого останнього входу \U0001F418"
-        other: "%{count} нових сповіщень з Вашого останнього входу \U0001F418"
+        few: "%{count} нові сповіщення з Вашого останнього входу 🐘"
+        many: "%{count} нових сповіщень з Вашого останнього входу 🐘"
+        one: "1 нове сповіщення з Вашого останнього входу 🐘"
+        other: "%{count} нових сповіщень з Вашого останнього входу 🐘"
       title: Поки ви були відсутні...
     favourite:
       body: 'Ваш статус подобається %{name}:'
@@ -1474,12 +1507,6 @@ uk:
       explanation: Ви робили запит повної резервної копії вашого облікового запису Mastodon. Вона вже готова для завантаження!
       subject: Ваш архів готовий до завантаження
       title: Винесення архіву
-    sign_in_token:
-      details: 'Детальніше про спробу входу:'
-      explanation: 'Ми виявили спробу входу до вашого облікового запису з невідомої IP-адреси. Якщо це ви, будь ласка, введіть наведений нижче код безпеки на сторінці входу:'
-      further_actions: 'Якщо це були не ви, будь ласка, змініть свій пароль та увімкніть двофакторну автентифікацію для вашого облікового запису. Ви можете зробити це тут:'
-      subject: Будь ласка, підтвердіть спробу входу
-      title: Спроба входу
     warning:
       appeal: Подати апеляцію
       categories:
@@ -1522,13 +1549,10 @@ uk:
       title: Ласкаво просимо, %{name}!
   users:
     follow_limit_reached: Не можна слідкувати більш ніж за %{limit} людей
-    generic_access_help_html: Не вдається отримати доступ до облікового запису? Ви можете зв'язатися з %{email} для допомоги
     invalid_otp_token: Введено неправильний код
-    invalid_sign_in_token: Хибний код безпеки
     otp_lost_help_html: Якщо ви втратили доступ до обох, ви можете отримати доступ з %{email}
     seamless_external_login: Ви увійшли за допомогою зовнішнього сервісу, тому налаштування паролю та електронної пошти недоступні.
     signed_in_as: 'Ви увійшли як:'
-    suspicious_sign_in_confirmation: Здається, ви не входили до цього облікового запису з цього пристрою, а також не входили взагалі деякий час, таким чином ми надсилаємо код безпеки на вашу адресу електронної пошти, щоб підтвердити, що це ви.
   verification:
     explanation_html: 'Володіння посиланнями у профілі <strong>можна підтвердити</strong>. Для цього на зазначеному сайті повинна міститися посилання на ваш профіль Mastodon, а у самому посиланні <strong>повинен</strong> бути атрибут <code>rel="me"</code>. Що всередині посилання - значення не має. Ось вам приклад посилання:'
     verification: Підтвердження
diff --git a/config/locales/vi.yml b/config/locales/vi.yml
index 14e6c1c3b..e2b4ef7ef 100644
--- a/config/locales/vi.yml
+++ b/config/locales/vi.yml
@@ -165,7 +165,7 @@ vi:
       protocol: Giao thức
       public: Công khai
       push_subscription_expires: Đăng ký PuSH hết hạn
-      redownload: Làm mới trang cá nhân
+      redownload: Làm mới trang hồ sơ
       redownloaded_msg: Đã tiếp nhận tài khoản %{username} thành công
       reject: Từ chối
       rejected_msg: Đã từ chối đăng ký tài khoản %{username}
@@ -192,13 +192,12 @@ vi:
       security_measures:
         only_password: Chỉ mật khẩu
         password_and_2fa: Mật khẩu và 2FA
-        password_and_sign_in_token: Mật khẩu và email
       sensitive: Nhạy cảm
       sensitized: Đánh dấu nhạy cảm
       shared_inbox_url: Hộp thư của máy chủ người này
       show:
-        created_reports: Lượt báo cáo
-        targeted_reports: Báo cáo bởi người khác
+        created_reports: Gửi báo cáo
+        targeted_reports: Bị báo cáo
       silence: Ẩn
       silenced: Hạn chế
       statuses: Tút
@@ -225,8 +224,8 @@ vi:
       whitelisted: Danh sách trắng
     action_logs:
       action_types:
-        approve_appeal: Phê duyệt kháng cáo
-        approve_user: Phê duyệt người dùng
+        approve_appeal: Chấp nhận kháng cáo
+        approve_user: Chấp nhận người dùng
         assigned_to_self_report: Tự xử lý báo cáo
         change_email_user: Đổi email người dùng
         confirm_user: Xác thực người dùng
@@ -252,7 +251,7 @@ vi:
         disable_custom_emoji: Vô hiệu hóa emoji
         disable_sign_in_token_auth_user: Tắt xác thực bằng email cho người dùng
         disable_user: Vô hiệu hóa đăng nhập
-        enable_custom_emoji: Cho phép Emoji
+        enable_custom_emoji: Cho phép emoji
         enable_sign_in_token_auth_user: Bật xác thực bằng email cho người dùng
         enable_user: Bỏ vô hiệu hóa đăng nhập
         memorialize_account: Đánh dấu tưởng niệm
@@ -272,11 +271,11 @@ vi:
         unsilence_account: Bỏ hạn chế
         unsuspend_account: Bỏ vô hiệu hóa
         update_announcement: Cập nhật thông báo
-        update_custom_emoji: Cập nhật Emoji
+        update_custom_emoji: Cập nhật emoji
         update_domain_block: Cập nhật máy chủ chặn
         update_status: Cập nhật tút
       actions:
-        approve_appeal_html: "%{name} đã phê duyệt quyết định kiểm duyệt từ %{target}"
+        approve_appeal_html: "%{name} đã chấp nhận kháng cáo của %{target}"
         approve_user_html: "%{name} đã chấp nhận đăng ký từ %{target}"
         assigned_to_self_report_html: "%{name} tự xử lý báo cáo %{target}"
         change_email_user_html: "%{name} đã thay đổi địa chỉ email của %{target}"
@@ -582,11 +581,11 @@ vi:
       action_taken_by: Hành động được thực hiện bởi
       actions:
         delete_description_html: Những tút bị báo cáo sẽ được xóa và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn lưu ý về tài khoản này trong tương lai.
-        mark_as_sensitive_description_html: Media trong báo cáo sẽ bị đánh dấu nhạy cảm và họ nhận 1 lần cảnh cáo.
+        mark_as_sensitive_description_html: Media trong các tút bị báo cáo sẽ được đánh dấu là nhạy cảm và 1 lần cảnh cáo sẽ được ghi lại để giúp bạn nắm bắt nhanh những vi phạm của cùng một tài khoản.
         other_description_html: Những tùy chọn để kiểm soát tài khoản và giao tiếp với tài khoản bị báo cáo.
         resolve_description_html: Không có hành động nào áp dụng đối với tài khoản bị báo cáo, không có cảnh cáo, và báo cáo sẽ được đóng.
-        silence_description_html: Trang cá nhân sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau.
-        suspend_description_html: Trang cá nhân và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày.
+        silence_description_html: Trang hồ sơ sẽ chỉ hiển thị với những người đã theo dõi hoặc tìm kiếm thủ công, hạn chế tối đa tầm ảnh hưởng của nó. Có thể đổi lại bình thường sau.
+        suspend_description_html: Trang hồ sơ và tất cả các nội dung sẽ không thể truy cập cho đến khi nó bị xóa hoàn toàn. Không thể tương tác với tài khoản. Đảo ngược trong vòng 30 ngày.
       actions_description_html: Hướng xử lý báo cáo này. Nếu áp đặt trừng phạt, một email thông báo sẽ được gửi cho họ, ngoại trừ <strong>Spam</strong>.
       add_to_report: Bổ sung báo cáo
       are_you_sure: Bạn có chắc không?
@@ -631,7 +630,7 @@ vi:
       unassign: Bỏ qua
       unresolved: Chờ xử lý
       updated_at: Cập nhật lúc
-      view_profile: Xem trang cá nhân
+      view_profile: Xem trang hồ sơ
     rules:
       add_new: Thêm quy tắc
       delete: Xóa bỏ
@@ -874,7 +873,7 @@ vi:
     remove: Bỏ liên kết bí danh
   appearance:
     advanced_web_interface: Bố cục
-    advanced_web_interface_hint: 'Giao diện nhiều cột cho phép bạn chuyển bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Rất thích hợp nếu bạn đang dùng màn hình rộng.'
+    advanced_web_interface_hint: 'Bố cục nhiều cột cho phép bạn chuyển bố cục hiển thị thành nhiều cột khác nhau. Bao gồm: Bảng tin, thông báo, thế giới, cũng như danh sách và hashtag. Thích hợp nếu bạn đang dùng màn hình rộng.'
     animations_and_accessibility: Bảng tin
     confirmation_dialogs: Hộp thoại xác nhận
     discovery: Khám phá
@@ -889,7 +888,7 @@ vi:
     salutation: "%{name},"
     settings: 'Thay đổi tùy chọn email: %{link}'
     view: 'Chi tiết:'
-    view_profile: Xem trang cá nhân
+    view_profile: Xem trang hồ sơ
     view_status: Xem tút
   applications:
     created: Đơn đăng ký được tạo thành công
@@ -920,7 +919,7 @@ vi:
     login: Đăng nhập
     logout: Đăng xuất
     migrate_account: Chuyển sang tài khoản khác
-    migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể <a href="%{path}">thiết lập nó ở đây</a>.
+    migrate_account_html: Nếu bạn muốn bỏ tài khoản này để dùng một tài khoản khác, bạn có thể <a href="%{path}">thiết lập tại đây</a>.
     or_log_in_with: Hoặc đăng nhập bằng
     providers:
       cas: CAS
@@ -954,7 +953,7 @@ vi:
     following: Chúc mừng! Bạn đã trở thành người theo dõi
     post_follow:
       close: Bạn có thể đóng cửa sổ này rồi.
-      return: Xem trang cá nhân
+      return: Xem trang hồ sơ
       web: Mở trong Mastodon
     title: Theo dõi %{acct}
   challenge:
@@ -1007,7 +1006,7 @@ vi:
     explore_mastodon: Thành viên %{title}
   disputes:
     strikes:
-      action_taken: Hành động đã thực hiện
+      action_taken: Hành động thực hiện
       appeal: Khiếu nại
       appeal_approved: Khiếu nại đã được chấp nhận và cảnh cáo không còn giá trị
       appeal_rejected: Khiếu nại bị từ chối
@@ -1061,21 +1060,21 @@ vi:
       in_progress: Đang tổng hợp dữ liệu của bạn...
       request: Tải về dữ liệu của bạn
       size: Dung lượng
-    blocks: Người bạn chặn
+    blocks: Người chặn
     bookmarks: Tút đã lưu
     csv: CSV
-    domain_blocks: Máy chủ bạn chặn
+    domain_blocks: Máy chủ chặn
     lists: Danh sách
-    mutes: Người bạn ẩn
+    mutes: Người ẩn
     storage: Tập tin
   featured_tags:
     add_new: Thêm mới
     errors:
       limit: Bạn đã đạt tới số lượng hashtag tối đa
-    hint_html: "<strong>Hashtag thường dùng</strong> là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang cá nhân của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể dùng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn."
+    hint_html: "<strong>Hashtag thường dùng</strong> là gì? Chúng là những hashtag sẽ được hiển thị nổi bật trên trang hồ sơ của bạn, cho phép mọi người tìm kiếm các bài đăng công khai của bạn có chứa các hashtag đó. Tính năng này có thể dùng để đánh dấu chuỗi tác phẩm sáng tạo hoặc dự án dài hạn."
   filters:
     contexts:
-      account: Trang cá nhân
+      account: Trang hồ sơ
       home: Bảng tin
       notifications: Thông báo
       public: Tin công khai
@@ -1195,9 +1194,9 @@ vi:
       cooldown: Bạn sẽ bị hạn chế chuyển sang tài khoản mới trong thời gian sắp tới
       disabled_account: Tài khoản này sẽ không thể tiếp tục dùng nữa. Tuy nhiên, bạn có quyền truy cập để xuất dữ liệu cũng như kích hoạt lại.
       followers: Hành động này sẽ chuyển tất cả người theo dõi từ tài khoản hiện tại sang tài khoản mới
-      only_redirect_html: Ngoài ra, bạn có thể <a href="%{path}">đặt chuyển hướng trên trang cá nhân của bạn</a>.
+      only_redirect_html: Ngoài ra, bạn có thể <a href="%{path}">đặt chuyển hướng trên trang hồ sơ của bạn</a>.
       other_data: Dữ liệu khác sẽ không được di chuyển tự động
-      redirect: Trang cá nhân hiện tại của bạn sẽ hiển thị thông báo chuyển hướng và bị loại khỏi kết quả tìm kiếm
+      redirect: Trang hồ sơ hiện tại của bạn sẽ hiển thị thông báo chuyển hướng và bị loại khỏi kết quả tìm kiếm
   moderation:
     title: Kiểm duyệt
   move_handler:
@@ -1215,7 +1214,7 @@ vi:
       new_followers_summary:
         other: Ngoài ra, bạn đã có %{count} người theo dõi mới trong khi đi chơi! Ngạc nhiên chưa!
       subject:
-        other: "%{count} thông báo mới kể từ lần truy cập trước \U0001F418"
+        other: "%{count} thông báo mới kể từ lần truy cập trước 🐘"
       title: Khi bạn offline...
     favourite:
       body: Tút của bạn vừa được thích bởi %{name}
@@ -1287,7 +1286,7 @@ vi:
   preferences:
     other: Khác
     posting_defaults: Mặc định cho tút
-    public_timelines: Bảng tin máy chủ
+    public_timelines: Bảng tin
   reactions:
     errors:
       limit_reached: Bạn không nên thao tác liên tục
@@ -1384,7 +1383,7 @@ vi:
     back: Quay lại Mastodon
     delete: Xóa tài khoản
     development: Lập trình
-    edit_profile: Trang cá nhân
+    edit_profile: Sửa hồ sơ
     export: Xuất dữ liệu
     featured_tags: Hashtag thường dùng
     import: Nhập dữ liệu
@@ -1392,7 +1391,7 @@ vi:
     migrate: Chuyển tài khoản sang máy chủ khác
     notifications: Thông báo
     preferences: Chung
-    profile: Trang cá nhân
+    profile: Hồ sơ
     relationships: Quan hệ
     statuses_cleanup: Tự động xóa tút cũ
     strikes: Lần cảnh cáo
@@ -1490,7 +1489,7 @@ vi:
 
       <ul>
       <li><em>Thông tin tài khoản cơ bản</em>: Nếu bạn đăng ký trên máy chủ này, bạn phải cung cấp tên người dùng, địa chỉ email và mật khẩu. Bạn cũng có thể tùy chọn bổ sung tên hiển thị, tiểu sử, ảnh đại diện, ảnh bìa. Tên người dùng, tên hiển thị, tiểu sử, ảnh hồ sơ và ảnh bìa luôn được hiển thị công khai.</li>
-      <li><em>Tút, lượt theo dõi và nội dung công khai khác</em>: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang cá nhân của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.</li>
+      <li><em>Tút, lượt theo dõi và nội dung công khai khác</em>: Danh sách những người bạn theo dõi được liệt kê công khai, cũng tương tự như danh sách những người theo dõi bạn. Khi bạn đăng tút, ngày giờ và ứng dụng sử dụng được lưu trữ. Tút có thể chứa tệp đính kèm hình ảnh và video. Tút công khai và tút mở sẽ hiển thị công khai. Khi bạn đăng một tút trên trang hồ sơ của bạn, đó là nội dung công khai. Tút của bạn sẽ gửi đến những người theo dõi của bạn, đồng nghĩa với việc sẽ có các bản sao được lưu trữ ở máy chủ của họ. Khi bạn xóa bài viết, bản sao từ những người theo dõi của bạn cũng bị xóa theo. Hành động chia sẻ hoặc thích một tút luôn luôn là công khai.</li>
       <li><em>Tin nhắn và tút dành cho người theo dõi</em>: Toàn bộ tút được lưu trữ và xử lý trên máy chủ. Các tút dành cho người theo dõi được gửi đến những người theo dõi và những người được gắn thẻ trong tút. Còn các tin nhắn chỉ được gửi đến cho người nhận. Điều đó có nghĩa là chúng được gửi đến các máy chủ khác nhau và có các bản sao được lưu trữ ở đó. Chúng tôi đề nghị chỉ cho những người được ủy quyền truy cập vào đó, nhưng không phải máy chủ nào cũng làm như vậy. Do đó, điều quan trọng là phải xem xét kỹ máy chủ của người theo dõi của bạn. Bạn có thể thiết lập tự mình phê duyệt và từ chối người theo dõi mới trong cài đặt. <em>Xin lưu ý rằng quản trị viên máy chủ của bạn và bất kỳ máy chủ của người nhận nào cũng có thể xem các tin nhắn</em>. Người nhận tin nhắn có thể chụp màn hình, sao chép hoặc chia sẻ lại chúng. <em>Không nên chia sẻ bất kỳ thông tin rủi ro nào trên Mastodon.</em></li>
       <li> <em>Địa chỉ IP và siêu dữ liệu khác</em>: Khi bạn đăng nhập, chúng tôi ghi nhớ địa chỉ IP đăng nhập cũng như tên trình duyệt của bạn. Tất cả các phiên đăng nhập sẽ để bạn xem xét và hủy bỏ trong phần cài đặt. Địa chỉ IP sử dụng được lưu trữ tối đa 12 tháng. Chúng tôi cũng có thể giữ lại nhật ký máy chủ bao gồm địa chỉ IP của những lượt đăng ký tài khoản trên máy chủ của chúng tôi. </li>
       </ul><hr class="spacer" />
@@ -1521,7 +1520,7 @@ vi:
       <h3 id="disclose">Chúng tôi có tiết lộ bất cứ thông tin nào ra ngoài không?</h3>
       <p>Chúng tôi không bán, trao đổi hoặc chuyển nhượng thông tin nhận dạng cá nhân của bạn cho bên thứ ba. Trừ khi bên thứ ba đó đang hỗ trợ chúng tôi điều hành Mastodon, tiến hành kinh doanh hoặc phục vụ bạn, miễn là các bên đó đồng ý giữ bí mật thông tin này. Chúng tôi cũng có thể tiết lộ thông tin của bạn nếu việc công bố là để tuân thủ luật pháp, thực thi quy tắc máy chủ của chúng tôi hoặc bảo vệ quyền, tài sản hợp pháp hoặc sự an toàn của chúng tôi hoặc bất kỳ ai.</p>
       <p>Nội dung công khai của bạn có thể được tải xuống bởi các máy chủ khác trong mạng liên hợp. Các tút công khai hay dành cho người theo dõi được gửi đến các máy chủ nơi người theo dõi của bạn là thành viên và tin nhắn được gửi đến máy chủ của người nhận, cho đến khi những người theo dõi hoặc người nhận đó chuyển sang một máy chủ khác.</p>
-      <p>Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang cá nhân, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.</p>
+      <p>Nếu bạn cho phép một ứng dụng sử dụng tài khoản của mình, tùy thuộc vào phạm vi quyền bạn phê duyệt, ứng dụng có thể truy cập thông tin trang hồ sơ, danh sách người theo dõi, danh sách của bạn, tất cả tút và lượt thích của bạn. Các ứng dụng không bao giờ có thể truy cập địa chỉ e-mail hoặc mật khẩu của bạn.</p>
       <hr class="spacer" />
       <h3 id="children">Cấm trẻ em sử dụng</h3>
       <p>Nếu máy chủ này ở EU hoặc EEA: Trang web của chúng tôi, các sản phẩm và dịch vụ đều dành cho những người trên 16 tuổi. Nếu bạn dưới 16 tuổi, xét theo GDPR (<a href="https://en.wikipedia.org/wiki/General_Data_Protection_Regulation">Quy định bảo vệ dữ liệu chung</a>) thì không được sử dụng trang web này. </p>
@@ -1559,7 +1558,7 @@ vi:
     webauthn: Khóa bảo mật
   user_mailer:
     appeal_approved:
-      action: Đến trang cá nhân của bạn
+      action: Đến trang hồ sơ của bạn
       explanation: Khiếu nại về tài khoản của bạn vào %{strike_date}, được gửi lúc %{appeal_date} đã được chấp nhận. Tài khoản của bạn đã có thể sử dụng bình thường.
       subject: Khiếu nại của bạn từ %{date} đã được chấp nhận
       title: Khiếu nại đã được chấp nhận
@@ -1571,12 +1570,13 @@ vi:
       explanation: Bạn đã yêu cầu sao lưu toàn bộ tài khoản Mastodon của mình. Bây giờ có thể tải về!
       subject: Dữ liệu cá nhân của bạn đã sẵn sàng để tải về
       title: Nhận dữ liệu cá nhân
-    sign_in_token:
-      details: 'Chi tiết cụ thể:'
-      explanation: 'Tài khoản của bạn vừa đăng nhập từ một địa chỉ IP lạ. Nếu thật là bạn, hãy nhập mã an toàn bên dưới vào trang đăng nhập:'
-      further_actions: 'Nếu không phải là bạn, hãy lập tức thay đổi mật khẩu và kích hoạt xác thực hai bước ở đây:'
-      subject: Xác nhận đăng nhập
-      title: Đăng nhập
+    suspicious_sign_in:
+      change_password: đổi mật khẩu của bạn
+      details: 'Chi tiết thông tin đăng nhập:'
+      explanation: Chúng tôi phát hiện lần đăng nhập bất thường tài khoản của bạn từ một địa chỉ IP mới.
+      further_actions_html: Nếu đó không phải là bạn, chúng tôi khuyến nghị %{action} lập tức và bật xác thực hai bước để giữ tài khoản được an toàn.
+      subject: Đăng nhập tài khoản từ địa chỉ IP mới
+      title: Lần đăng nhập mới
     warning:
       appeal: Gửi khiếu nại
       appeal_description: Nếu bạn nghĩ đây chỉ là nhầm lẫn, hãy gửi một khiếu nại cho %{instance}.
@@ -1601,7 +1601,7 @@ vi:
         silence: Tài khoản %{acct} của bạn đã bị hạn chế
         suspend: Tài khoản %{acct} của bạn đã bị vô hiệu hóa
       title:
-        delete_statuses: Tút đã bị xóa
+        delete_statuses: Xóa tút
         disable: Tài khoản bị đóng băng
         mark_statuses_as_sensitive: Tút đã bị đánh dấu nhạy cảm
         none: Cảnh báo
@@ -1609,8 +1609,8 @@ vi:
         silence: Tài khoản bị hạn chế
         suspend: Tài khoản bị vô hiệu hóa
     welcome:
-      edit_profile_action: Cài đặt trang cá nhân
-      edit_profile_step: Bạn có thể tùy chỉnh trang cá nhân của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn những người theo dõi mới phải được phê duyệt, hãy chuyển tài khoản sang trạng thái khóa.
+      edit_profile_action: Cài đặt trang hồ sơ
+      edit_profile_step: Bạn có thể chỉnh sửa trang hồ sơ của mình bằng cách tải lên ảnh đại diện, ảnh bìa, thay đổi tên hiển thị và hơn thế nữa. Nếu bạn muốn tự phê duyệt những người theo dõi mới, hãy chuyển tài khoản sang trạng thái khóa.
       explanation: Dưới đây là một số mẹo để giúp bạn bắt đầu
       final_action: Viết tút mới
       final_step: 'Viết tút mới! Ngay cả khi chưa có người theo dõi, người khác vẫn có thể xem tút công khai của bạn trên bảng tin máy chủ và trong hashtag. Hãy giới thiệu bản thân với hashtag #introduction.'
@@ -1627,15 +1627,12 @@ vi:
       title: Xin chào %{name}!
   users:
     follow_limit_reached: Bạn chỉ có thể theo dõi tối đa %{limit} người
-    generic_access_help_html: Gặp trục trặc với tài khoản? Liên hệ %{email} để được trợ giúp
     invalid_otp_token: Mã xác thực hai bước không hợp lệ
-    invalid_sign_in_token: Mã an toàn không hợp lệ
     otp_lost_help_html: Nếu bạn mất quyền truy cập vào cả hai, bạn có thể đăng nhập bằng %{email}
     seamless_external_login: Bạn đã đăng nhập thông qua một dịch vụ bên ngoài, vì vậy mật khẩu và email không khả dụng.
     signed_in_as: 'Đăng nhập với tư cách là:'
-    suspicious_sign_in_confirmation: Đây là lần đầu tiên bạn đăng nhập trên thiết bị này. Vì vậy, chúng tôi sẽ gửi một mã an toàn đến email của bạn để xác thực danh tính.
   verification:
-    explanation_html: 'Bạn có thể <strong>xác minh mình là chủ sở hữu của các trang web</strong> ở đầu trang cá nhân của bạn. Để xác minh, trang web <strong>phải chèn mã</strong> <code>rel="me"</code>. Văn bản thay thế cho liên kết không quan trọng. Đây là một ví dụ:'
+    explanation_html: 'Bạn có thể <strong>xác minh mình là chủ sở hữu của các trang web</strong> ở đầu trang hồ sơ của bạn. Để xác minh, trang web <strong>phải chèn mã</strong> <code>rel="me"</code>. Văn bản thay thế cho liên kết không quan trọng. Đây là một ví dụ:'
     verification: Xác minh
   webauthn_credentials:
     add: Thêm khóa bảo mật mới
diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml
index 48c2ec09a..6be97eb59 100644
--- a/config/locales/zh-CN.yml
+++ b/config/locales/zh-CN.yml
@@ -48,7 +48,7 @@ zh-CN:
       silenced: 来自这些服务器上的帖子将不会出现在公共时间轴和会话中,通知功能也不会提醒这些用户的动态;只有你关注了这些用户,才会收到用户互动的通知消息。
       silenced_title: 已隐藏的服务器
       suspended: 这些服务器的数据将不会被处理、存储或者交换,本站也将无法和来自这些服务器的用户互动或者交流。
-      suspended_title: 已封禁的服务器
+      suspended_title: 已被封禁的服务器
     unavailable_content_html: 通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但是某些站点上不排除会有例外。
     user_count_after:
       other: 位用户
@@ -62,7 +62,7 @@ zh-CN:
     followers:
       other: 关注者
     following: 正在关注
-    instance_actor_flash: 这个账户是虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该封禁。
+    instance_actor_flash: 这个账户是一个虚拟账户,用来代表服务器自身,不代表任何实际用户。它用于互通功能,不应该被封禁。
     joined: 加入于 %{date}
     last_active: 最近活动
     link_verified_on: 此链接的所有权已在 %{date} 检查
@@ -161,6 +161,8 @@ zh-CN:
       pending: 待审核
       perform_full_suspension: 封禁
       previous_strikes: 既往处罚
+      previous_strikes_description_html:
+        other: 此账号已有<strong>%{count}</strong>次处罚。
       promote: 升任
       protocol: 协议
       public: 公开页面
@@ -192,7 +194,6 @@ zh-CN:
       security_measures:
         only_password: 仅密码
         password_and_2fa: 密码和双重认证
-        password_and_sign_in_token: 密码和电子邮件令牌
       sensitive: 敏感内容
       sensitized: 已标记为敏感内容
       shared_inbox_url: 公用收件箱(Shared Inbox)URL
@@ -321,7 +322,7 @@ zh-CN:
         unblock_email_account_html: "%{name} 取消屏蔽了 %{target} 的邮件地址"
         unsensitive_account_html: "%{name} 去除了 %{target} 的媒体的敏感内容标记"
         unsilence_account_html: "%{name} 解除了用户 %{target} 的隐藏状态"
-        unsuspend_account_html: "%{name} 解除了用户 %{target} 的封禁状态"
+        unsuspend_account_html: "%{name} 解封了用户 %{target}"
         update_announcement_html: "%{name} 更新了公告 %{target}"
         update_custom_emoji_html: "%{name} 更新了自定义表情 %{target}"
         update_domain_block_html: "%{name} 更新了对 %{target} 的域名屏蔽"
@@ -512,6 +513,8 @@ zh-CN:
       delivery_error_hint: 如果投递已不可用 %{count} 天,它将被自动标记为无法投递。
       destroyed_msg: "%{domain} 中的数据现在正在排队等待被立刻删除。"
       empty: 暂无域名。
+      known_accounts:
+        other: "%{count} 个已知账号"
       moderation:
         all: 全部
         limited: 受限的
@@ -580,7 +583,6 @@ zh-CN:
       action_taken_by: 操作执行者
       actions:
         delete_description_html: 被举报的嘟文将被删除,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。
-        mark_as_sensitive_description_html: 被举报的嘟文将被标记为敏感内容,同时该账号将被标记一次处罚,以供未来同一账号再次违规时参考。
         other_description_html: 查看更多控制该账号行为的选项,并自定义编写与被举报账号的通信。
         resolve_description_html: 不会对被举报账号采取任何动作,举报将被关闭,也不会留下处罚记录。
         silence_description_html: 只有关注或手工搜索此账号才能查看其资料,将严重限制其触达范围。可随时撤销。
@@ -755,6 +757,11 @@ zh-CN:
     system_checks:
       database_schema_check:
         message_html: 有待处理的数据库迁移。请运行它们以确保应用程序正常运行。
+      elasticsearch_running_check:
+        message_html: 无法连接到 Elasticsearch。请检查它是否正在运行,或禁用全文搜索
+      elasticsearch_version_check:
+        message_html: '不兼容的 Elasticsearch 版本: %{value}'
+        version_comparison: Elasticsearch 最低版本要求 %{required_version},正在运行的版本是 %{running_version}
       rules_check:
         action: 管理服务器规则
         message_html: 你没有定义任何服务器规则。
@@ -774,6 +781,8 @@ zh-CN:
         description_html: 这些是当前此服务器可见账号的嘟文中被大量分享的链接。它可以帮助用户了解正在发生的事情。发布者获得批准前不会公开显示任何链接。你也可以批准或拒绝单个链接。
         disallow: 不允许链接
         disallow_provider: 不允许发布者
+        shared_by_over_week:
+          other: 过去一周内被 %{count} 个人分享过
         title: 热门链接
         usage_comparison: 今日被分享 %{today} 次,前一日为 %{yesterday} 次
       pending_review: 待审核
@@ -812,6 +821,8 @@ zh-CN:
         trending_rank: '热门 #%{rank}'
         usable: 可以使用
         usage_comparison: 今日被使用 %{today} 次,前一日为 %{yesterday} 次
+        used_by_over_week:
+          other: 过去一周内被 %{count} 个人使用过
       title: 流行趋势
     warning_presets:
       add_new: 添加新条目
@@ -1204,7 +1215,7 @@ zh-CN:
       new_followers_summary:
         other: 而且,你不在的时候,有 %{count} 个人关注了你!好棒!
       subject:
-        other: "自从上次访问后,有 %{count} 条新通知 \U0001F418"
+        other: "自从上次访问后,有 %{count} 条新通知 🐘"
       title: 在你不在的这段时间……
     favourite:
       body: 你的嘟文被 %{name} 喜欢了:
@@ -1593,12 +1604,6 @@ zh-CN:
       explanation: 你请求了一份 Mastodon 帐户的完整备份。现在你可以下载了!
       subject: 你的存档已经准备完毕
       title: 存档导出
-    sign_in_token:
-      details: 该尝试详情如下:
-      explanation: 我们检查到有来自未经识别的 IP 地址的登录请求。如果这确实是你,请在登录确认页面输入下方的安全码:
-      further_actions: 如果这不是你,请更换你的密码并且在你的账号上开启双重认证。你可以在这里设置:
-      subject: 请确认登录请求:
-      title: 登录请求
     warning:
       appeal: 提交申诉
       appeal_description: 如果你认为此结果有误,可以向 %{instance} 的工作人员提交申诉。
@@ -1629,7 +1634,7 @@ zh-CN:
         none: 警示
         sensitive: 账户已被标记为敏感内容
         silence: 帐户被隐藏
-        suspend: 账号被封禁
+        suspend: 账号被挂起
     welcome:
       edit_profile_action: 设置个人资料
       edit_profile_step: 你可以自定义你的个人资料,包括上传头像、横幅图片、更改昵称等等。如果你想在新的关注者关注你之前对他们进行审核,你也可以选择为你的帐户开启保护。
@@ -1649,13 +1654,10 @@ zh-CN:
       title: "%{name},欢迎你的加入!"
   users:
     follow_limit_reached: 你不能关注超过 %{limit} 个人
-    generic_access_help_html: 登录账号出现问题?你可以向 %{email} 寻求帮助
     invalid_otp_token: 输入的双重认证代码无效
-    invalid_sign_in_token: 无效安全码
     otp_lost_help_html: 如果你不慎丢失了所有的代码,请联系 %{email} 寻求帮助
     seamless_external_login: 因为你是通过外部服务登录的,所以密码和电子邮件地址设置都不可用。
     signed_in_as: 当前登录的帐户:
-    suspicious_sign_in_confirmation: 你似乎没有在这台设备上登录过,并且你也有很久没有登录过了,所以我们给你的电子邮箱发了封邮件,想确认一下确实是你。
   verification:
     explanation_html: 你可以 <strong>验证自己是个人资料元数据中的某个链接的所有者</strong>。 为此,被链接网站必须包含一个到你的 Mastodon 主页的链接。链接中 <strong>必须</strong> 包括 <code>rel="me"</code> 属性。链接的文本内容可以随意填写。例如:
     verification: 验证
diff --git a/config/locales/zh-HK.yml b/config/locales/zh-HK.yml
index f85291b2c..76c051587 100644
--- a/config/locales/zh-HK.yml
+++ b/config/locales/zh-HK.yml
@@ -187,7 +187,6 @@ zh-HK:
       security_measures:
         only_password: 僅密碼
         password_and_2fa: 密碼和兩步認證
-        password_and_sign_in_token: 密碼與 e-mail 驗證碼
       sensitive: 敏感内容
       sensitized: 已標記為敏感內容
       shared_inbox_url: 公共收件箱(Shared Inbox)URL
@@ -595,7 +594,7 @@ zh-HK:
         desc_html: 本站詳細資訊頁的內文<br/>你可以在此使用 HTML
         title: 本站詳細資訊
       site_short_description:
-        desc_html: 顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫\U000294D9而出。
+        desc_html: "顯示在側邊欄和網頁標籤(meta tags)。以一句話描述Mastodon是甚麼,有甚麼令這個伺服器脫𩓙而出。"
         title: 伺服器短描述
       site_terms:
         desc_html: 可以填寫自己的隱私權政策、使用條款或其他法律文本。可以使用 HTML 標籤
@@ -965,7 +964,7 @@ zh-HK:
       new_followers_summary:
         other: 你新獲得了 %{count} 位關注者了!好厲害!
       subject:
-        other: "自從上次登入以來,你收到 %{count} 則新的通知 \U0001F418"
+        other: "自從上次登入以來,你收到 %{count} 則新的通知 🐘"
       title: 在你不在的這段時間……
     favourite:
       body: 你的文章被 %{name} 喜愛:
@@ -1335,12 +1334,6 @@ zh-HK:
       explanation: 你要求的 Mastodon 帳號完整備份檔案現已就緒,可供下載。
       subject: 你的備份檔已可供下載
       title: 檔案匯出
-    sign_in_token:
-      details: 這是嘗試的詳細資訊
-      explanation: 我們發現有人嘗試以未使用過的 IP 位址登入到你的帳號。 如果這個登入的人是你,請在「登入請求」頁面上輸入以下安全代碼:
-      further_actions: 如果這不是你,請到這裏更改你的密碼,並啟用雙重認證:
-      subject: 請確認登入請求
-      title: 登入請求
     warning:
       subject:
         disable: 你的帳號 %{acct} 已經被涷結
@@ -1371,13 +1364,10 @@ zh-HK:
       title: 歡迎 %{name} 加入!
   users:
     follow_limit_reached: 你不能關注多於%{limit} 人
-    generic_access_help_html: 不能登入?你可以寄電郵至 %{email} 尋求協助
     invalid_otp_token: 雙重認證碼不正確
-    invalid_sign_in_token: 無效的安全碼
     otp_lost_help_html: 如果這兩者你均無法登入,你可以聯繫 %{email}
     seamless_external_login: 因為你正在使用第三方服務登入,所以不能設定密碼和電郵。
     signed_in_as: 目前登入的帳戶:
-    suspicious_sign_in_confirmation: 你似乎未曾從此設備登入,而你又有一段時間沒有登入了。我們剛剛把安全碼傳送到你的電郵地址,請查看你的電郵信箱,以確認你是帳號擁有者本人。
   verification:
     explanation_html: 你可以<strong>認證個人資料頁面的元數據 (Metadata) 連結是屬於你的</strong>。要認證,那些連結的目的地網站必須有一條回到你 Mastodon 個人頁面的連結,而且連結<strong>必須</strong>具有<code>rel="me"</code>屬性。連結的文字內容都不會影響認證。這裏有一個例子:
     verification: 驗證
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index 90625c5fd..f2b55d7a3 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -192,7 +192,6 @@ zh-TW:
       security_measures:
         only_password: 僅使用密碼
         password_and_2fa: 密碼及二重因素驗證
-        password_and_sign_in_token: 密碼及電子信箱 token 驗證
       sensitive: 敏感内容
       sensitized: 已標記為敏感內容
       shared_inbox_url: 共享收件箱網址
@@ -1217,7 +1216,7 @@ zh-TW:
       new_followers_summary:
         other: 此外,您在離開時獲得了 %{count} 位新的追蹤者!超棒的!
       subject:
-        other: "從您上次造訪以來有 %{count} 個新通知 \U0001F418"
+        other: "從您上次造訪以來有 %{count} 個新通知 🐘"
       title: 你不在的時候...
     favourite:
       body: '你的嘟文被 %{name} 加入了最愛:'
@@ -1604,12 +1603,13 @@ zh-TW:
       explanation: 你要求的 Mastodon 帳戶完整備份檔案現已就緒,可供下載!
       subject: 你的備份檔已可供下載
       title: 檔案匯出
-    sign_in_token:
-      details: 以下是嘗試登入的詳細資訊:
-      explanation: 我們偵測到有人試圖從陌生的 IP 位置登入您的帳號。如果這是您,請在「登入確認」頁面輸入安全碼:
-      further_actions: 如果這不是你,請立即到這裡變更你的密碼,並啟用兩步驟驗證:
-      subject: 請確認登入嘗試
-      title: 登入嘗試
+    suspicious_sign_in:
+      change_password: 變更密碼
+      details: 以下是該登入之詳細資訊:
+      explanation: 我們偵測到有新 IP 地址登入您的帳號
+      further_actions_html: 如果這個不是您,我們建議您立即 %{action} ,並且啟用二階段驗證 (2FA) 以確保帳號安全。
+      subject: 您的帳號已被新 IP 地址存取
+      title: 新登入
     warning:
       appeal: 遞交申訴
       appeal_description: 若您認為這是錯誤,您可以向 %{instance} 的工作人員提出申訴。
@@ -1660,13 +1660,10 @@ zh-TW:
       title: "%{name} 歡迎你的加入!"
   users:
     follow_limit_reached: 您無法追蹤多於 %{limit} 個人
-    generic_access_help_html: 存取您的帳號時遇到困難?您可以透過 %{email} 取得協助
     invalid_otp_token: 兩階段認證碼不正確
-    invalid_sign_in_token: 安全碼無效
     otp_lost_help_html: 如果你無法訪問這兩者,可以通過 %{email} 與我們聯繫
     seamless_external_login: 由於你是從外部系統登入,所以不能設定密碼與電子郵件。
     signed_in_as: 目前登入的帳戶:
-    suspicious_sign_in_confirmation: 您之前似乎未從此裝置登入過,再加上您也有一段時間沒有登入了,因此我們剛剛傳送了安全碼到您的電子郵件地址以確認真的是您。
   verification:
     explanation_html: 您在 Mastodon 個人資料頁上所列出的連結,可以用此方式<strong>驗證您確實掌控該連結網頁的內容</strong>。您可以在連結的網頁上加上一個連回 Mastodon 個人資料頁的連結,該連結的原始碼 <strong>必須</strong>包含<code>rel="me"</code>屬性。連結的顯示文字可自由發揮,以下為範例:
     verification: 驗證連結
diff --git a/config/settings.yml b/config/settings.yml
index 51016d322..bb2720ec2 100644
--- a/config/settings.yml
+++ b/config/settings.yml
@@ -43,10 +43,10 @@ defaults: &defaults
   trending_status_cw: true
   crop_images: true
   notification_emails:
-    follow: false
+    follow: true
     reblog: false
     favourite: false
-    mention: false
+    mention: true
     follow_request: true
     digest: true
     report: true
@@ -55,6 +55,7 @@ defaults: &defaults
     trending_link: false
     trending_status: false
     appeal: true
+  always_send_emails: false
   interactions:
     must_be_follower: false
     must_be_following: false
diff --git a/lib/action_dispatch/cookie_jar_extensions.rb b/lib/action_dispatch/cookie_jar_extensions.rb
deleted file mode 100644
index 1be9053ba..000000000
--- a/lib/action_dispatch/cookie_jar_extensions.rb
+++ /dev/null
@@ -1,25 +0,0 @@
-# frozen_string_literal: true
-
-module ActionDispatch
-  module CookieJarExtensions
-    private
-
-    # Monkey-patch ActionDispatch to serve secure cookies to Tor Hidden Service
-    # users. Otherwise, ActionDispatch would drop the cookie over HTTP.
-    def write_cookie?(*)
-      request.host.end_with?('.onion') || super
-    end
-  end
-end
-
-ActionDispatch::Cookies::CookieJar.prepend(ActionDispatch::CookieJarExtensions)
-
-module Rack
-  module SessionPersistedExtensions
-    def security_matches?(request, options)
-      request.host.end_with?('.onion') || super
-    end
-  end
-end
-
-Rack::Session::Abstract::Persisted.prepend(Rack::SessionPersistedExtensions)
diff --git a/lib/mastodon/migration_helpers.rb b/lib/mastodon/migration_helpers.rb
index e920ff88f..2ab8150ec 100644
--- a/lib/mastodon/migration_helpers.rb
+++ b/lib/mastodon/migration_helpers.rb
@@ -812,7 +812,10 @@ module Mastodon
     # removing the old one
     def update_index(table_name, index_name, columns, **index_options)
       if index_name_exists?(table_name, "#{index_name}_new") && index_name_exists?(table_name, index_name)
-        remove_index table_name, "#{index_name}_new"
+        remove_index table_name, name: "#{index_name}_new"
+      elsif index_name_exists?(table_name, "#{index_name}_new")
+        # Very unlikely case where the script has been interrupted during/after removal but before renaming
+        rename_index table_name, "#{index_name}_new", index_name
       end
 
       begin