about summary refs log tree commit diff
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2022-11-10 13:27:40 +0100
committerGitHub <noreply@github.com>2022-11-10 13:27:40 +0100
commitee7e49d1b1323618e16026bc8db8ab7f9459cc2d (patch)
tree86d51ac7c13d2b08fae534a44524c2ef8b131315
parentb2a25d446a9f4368ad9d1240b9da30bc33942da5 (diff)
parentc4d2c729245fab1dda31d0de73be9bc03217b06a (diff)
Merge pull request #1910 from ClearlyClaire/glitch-soc/merge-upstream
Merge upstream changes
-rw-r--r--CHANGELOG.md4
-rw-r--r--app/controllers/api/v1/accounts/pins_controller.rb2
-rw-r--r--app/controllers/api/v1/lists_controller.rb4
-rw-r--r--app/controllers/api/v1/tags_controller.rb2
-rw-r--r--app/controllers/api/v1/timelines/public_controller.rb1
-rw-r--r--app/helpers/languages_helper.rb8
-rw-r--r--app/javascript/flavours/glitch/components/animated_number.js6
-rw-r--r--app/javascript/flavours/glitch/components/column_header.js1
-rw-r--r--app/javascript/flavours/glitch/components/icon_button.js3
-rw-r--r--app/javascript/flavours/glitch/components/status_action_bar.js29
-rw-r--r--app/javascript/flavours/glitch/containers/timeline_container.js62
-rw-r--r--app/javascript/flavours/glitch/features/account/components/header.js28
-rw-r--r--app/javascript/flavours/glitch/features/account_timeline/components/header.js6
-rw-r--r--app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js7
-rw-r--r--app/javascript/flavours/glitch/features/hashtag_timeline/index.js2
-rw-r--r--app/javascript/flavours/glitch/features/home_timeline/index.js1
-rw-r--r--app/javascript/flavours/glitch/features/interaction_modal/index.js2
-rw-r--r--app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js4
-rw-r--r--app/javascript/flavours/glitch/features/status/components/action_bar.js24
-rw-r--r--app/javascript/flavours/glitch/features/status/index.js2
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/image_modal.js59
-rw-r--r--app/javascript/flavours/glitch/features/ui/components/modal_root.js2
-rw-r--r--app/javascript/flavours/glitch/styles/components/status.scss1
-rw-r--r--app/javascript/flavours/glitch/styles/mastodon-light/diff.scss2
-rw-r--r--app/javascript/mastodon/components/animated_number.js6
-rw-r--r--app/javascript/mastodon/components/column_header.js1
-rw-r--r--app/javascript/mastodon/components/icon_button.js3
-rw-r--r--app/javascript/mastodon/components/status_action_bar.js29
-rw-r--r--app/javascript/mastodon/containers/timeline_container.js62
-rw-r--r--app/javascript/mastodon/features/account/components/header.js28
-rw-r--r--app/javascript/mastodon/features/account_timeline/components/header.js6
-rw-r--r--app/javascript/mastodon/features/account_timeline/containers/header_container.js7
-rw-r--r--app/javascript/mastodon/features/hashtag_timeline/index.js2
-rw-r--r--app/javascript/mastodon/features/home_timeline/index.js1
-rw-r--r--app/javascript/mastodon/features/interaction_modal/index.js2
-rw-r--r--app/javascript/mastodon/features/picture_in_picture/components/footer.js4
-rw-r--r--app/javascript/mastodon/features/status/components/action_bar.js24
-rw-r--r--app/javascript/mastodon/features/status/index.js2
-rw-r--r--app/javascript/mastodon/features/ui/components/image_modal.js59
-rw-r--r--app/javascript/mastodon/features/ui/components/modal_root.js2
-rw-r--r--app/javascript/mastodon/locales/af.json42
-rw-r--r--app/javascript/mastodon/locales/ar.json4
-rw-r--r--app/javascript/mastodon/locales/bg.json268
-rw-r--r--app/javascript/mastodon/locales/br.json114
-rw-r--r--app/javascript/mastodon/locales/ca.json50
-rw-r--r--app/javascript/mastodon/locales/cs.json8
-rw-r--r--app/javascript/mastodon/locales/cy.json140
-rw-r--r--app/javascript/mastodon/locales/da.json8
-rw-r--r--app/javascript/mastodon/locales/de.json24
-rw-r--r--app/javascript/mastodon/locales/el.json4
-rw-r--r--app/javascript/mastodon/locales/en-GB.json20
-rw-r--r--app/javascript/mastodon/locales/en.json2
-rw-r--r--app/javascript/mastodon/locales/eo.json66
-rw-r--r--app/javascript/mastodon/locales/es-AR.json8
-rw-r--r--app/javascript/mastodon/locales/es-MX.json2
-rw-r--r--app/javascript/mastodon/locales/es.json8
-rw-r--r--app/javascript/mastodon/locales/fi.json12
-rw-r--r--app/javascript/mastodon/locales/fr.json10
-rw-r--r--app/javascript/mastodon/locales/ga.json162
-rw-r--r--app/javascript/mastodon/locales/gd.json72
-rw-r--r--app/javascript/mastodon/locales/gl.json30
-rw-r--r--app/javascript/mastodon/locales/he.json258
-rw-r--r--app/javascript/mastodon/locales/hu.json8
-rw-r--r--app/javascript/mastodon/locales/id.json2
-rw-r--r--app/javascript/mastodon/locales/ig.json4
-rw-r--r--app/javascript/mastodon/locales/is.json8
-rw-r--r--app/javascript/mastodon/locales/it.json8
-rw-r--r--app/javascript/mastodon/locales/ja.json8
-rw-r--r--app/javascript/mastodon/locales/ko.json8
-rw-r--r--app/javascript/mastodon/locales/ku.json18
-rw-r--r--app/javascript/mastodon/locales/lv.json22
-rw-r--r--app/javascript/mastodon/locales/mk.json32
-rw-r--r--app/javascript/mastodon/locales/nl.json14
-rw-r--r--app/javascript/mastodon/locales/nn.json8
-rw-r--r--app/javascript/mastodon/locales/no.json344
-rw-r--r--app/javascript/mastodon/locales/oc.json56
-rw-r--r--app/javascript/mastodon/locales/pl.json10
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json88
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json8
-rw-r--r--app/javascript/mastodon/locales/ru.json8
-rw-r--r--app/javascript/mastodon/locales/sl.json8
-rw-r--r--app/javascript/mastodon/locales/sq.json8
-rw-r--r--app/javascript/mastodon/locales/sv.json18
-rw-r--r--app/javascript/mastodon/locales/th.json20
-rw-r--r--app/javascript/mastodon/locales/tr.json8
-rw-r--r--app/javascript/mastodon/locales/uk.json8
-rw-r--r--app/javascript/mastodon/locales/vi.json16
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json10
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json294
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json10
-rw-r--r--app/javascript/styles/mastodon-light/diff.scss2
-rw-r--r--app/javascript/styles/mastodon/components.scss1
-rw-r--r--app/lib/hashtag_normalizer.rb2
-rw-r--r--app/lib/request.rb3
-rw-r--r--app/models/account.rb47
-rw-r--r--app/models/account/field.rb87
-rw-r--r--app/models/custom_emoji.rb3
-rw-r--r--app/models/featured_tag.rb2
-rw-r--r--app/models/public_feed.rb11
-rw-r--r--app/models/tag.rb13
-rw-r--r--app/models/tag_feed.rb1
-rw-r--r--app/policies/ip_block_policy.rb4
-rw-r--r--app/serializers/nodeinfo/serializer.rb2
-rw-r--r--app/serializers/rest/admin/account_serializer.rb6
-rw-r--r--app/serializers/rest/report_serializer.rb8
-rw-r--r--app/services/account_search_service.rb4
-rw-r--r--app/services/activitypub/fetch_remote_actor_service.rb2
-rw-r--r--app/services/activitypub/process_account_service.rb2
-rw-r--r--app/services/report_service.rb2
-rw-r--r--app/services/resolve_url_service.rb4
-rw-r--r--app/services/update_account_service.rb2
-rw-r--r--app/views/accounts/show.html.haml3
-rw-r--r--app/workers/admin/account_deletion_worker.rb2
-rw-r--r--app/workers/scheduler/suspended_user_cleanup_scheduler.rb38
-rw-r--r--app/workers/scheduler/user_cleanup_scheduler.rb7
-rw-r--r--app/workers/verify_account_links_worker.rb5
-rw-r--r--chart/Chart.yaml2
-rw-r--r--chart/templates/cronjob-media-remove.yaml4
-rw-r--r--chart/templates/deployment-sidekiq.yaml14
-rw-r--r--chart/templates/deployment-streaming.yaml4
-rw-r--r--chart/templates/deployment-web.yaml12
-rw-r--r--chart/templates/ingress.yaml6
-rw-r--r--chart/templates/job-assets-precompile.yaml4
-rw-r--r--chart/templates/job-chewy-upgrade.yaml4
-rw-r--r--chart/templates/job-create-admin.yaml4
-rw-r--r--chart/templates/job-db-migrate.yaml4
-rw-r--r--chart/templates/secrets.yaml2
-rw-r--r--chart/templates/service-streaming.yaml1
-rw-r--r--chart/templates/service-web.yaml1
-rw-r--r--chart/values.yaml8
-rw-r--r--config/application.rb1
-rw-r--r--config/deploy.rb2
-rw-r--r--config/locales/activerecord.cy.yml29
-rw-r--r--config/locales/activerecord.en-GB.yml54
-rw-r--r--config/locales/activerecord.fy.yml31
-rw-r--r--config/locales/activerecord.ga.yml12
-rw-r--r--config/locales/activerecord.he.yml6
-rw-r--r--config/locales/activerecord.no.yml39
-rw-r--r--config/locales/br.yml55
-rw-r--r--config/locales/ca.yml24
-rw-r--r--config/locales/cs.yml10
-rw-r--r--config/locales/da.yml2
-rw-r--r--config/locales/de.yml2
-rw-r--r--config/locales/devise.eo.yml14
-rw-r--r--config/locales/devise.gd.yml4
-rw-r--r--config/locales/devise.no.yml66
-rw-r--r--config/locales/devise.pl.yml2
-rw-r--r--config/locales/devise.zh-TW.yml8
-rw-r--r--config/locales/doorkeeper.en-GB.yml118
-rw-r--r--config/locales/doorkeeper.eo.yml3
-rw-r--r--config/locales/doorkeeper.fr.yml2
-rw-r--r--config/locales/doorkeeper.fy.yml162
-rw-r--r--config/locales/doorkeeper.ga.yml6
-rw-r--r--config/locales/doorkeeper.gd.yml14
-rw-r--r--config/locales/doorkeeper.he.yml10
-rw-r--r--config/locales/doorkeeper.no.yml99
-rw-r--r--config/locales/doorkeeper.pt-BR.yml2
-rw-r--r--config/locales/eo.yml91
-rw-r--r--config/locales/fi.yml2
-rw-r--r--config/locales/fy.yml104
-rw-r--r--config/locales/ga.yml77
-rw-r--r--config/locales/gd.yml54
-rw-r--r--config/locales/he.yml280
-rw-r--r--config/locales/ja.yml2
-rw-r--r--config/locales/lv.yml20
-rw-r--r--config/locales/nl.yml17
-rw-r--r--config/locales/nn.yml13
-rw-r--r--config/locales/no.yml79
-rw-r--r--config/locales/oc.yml16
-rw-r--r--config/locales/pt-BR.yml151
-rw-r--r--config/locales/ro.yml3
-rw-r--r--config/locales/ru.yml15
-rw-r--r--config/locales/simple_form.ca.yml6
-rw-r--r--config/locales/simple_form.en-GB.yml10
-rw-r--r--config/locales/simple_form.eo.yml4
-rw-r--r--config/locales/simple_form.ga.yml12
-rw-r--r--config/locales/simple_form.gd.yml20
-rw-r--r--config/locales/simple_form.gl.yml2
-rw-r--r--config/locales/simple_form.he.yml93
-rw-r--r--config/locales/simple_form.it.yml2
-rw-r--r--config/locales/simple_form.lv.yml10
-rw-r--r--config/locales/simple_form.nl.yml8
-rw-r--r--config/locales/simple_form.nn.yml98
-rw-r--r--config/locales/simple_form.oc.yml2
-rw-r--r--config/locales/simple_form.pt-BR.yml24
-rw-r--r--config/locales/simple_form.th.yml14
-rw-r--r--config/locales/simple_form.tr.yml2
-rw-r--r--config/locales/sv.yml10
-rw-r--r--config/locales/th.yml2
-rw-r--r--config/locales/zh-TW.yml8
-rw-r--r--config/routes.rb3
-rw-r--r--config/sidekiq.yml4
-rw-r--r--dist/nginx.conf2
-rw-r--r--spec/lib/webfinger_resource_spec.rb2
-rw-r--r--spec/models/account/field_spec.rb138
-rw-r--r--spec/models/account_spec.rb8
196 files changed, 3397 insertions, 1987 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 777a83790..2bd22438c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -276,7 +276,7 @@ Some of the features in this release have been funded through the [NGI0 Discover
 
 ### Fixed
 
-- Fix error resposes for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963))
+- Fix error responses for `from` search prefix ([single-right-quote](https://github.com/mastodon/mastodon/pull/17963))
 - Fix dangling language-specific trends ([Gargron](https://github.com/mastodon/mastodon/pull/17997))
 - Fix extremely rare race condition when deleting a status or account ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17994))
 - Fix trends returning less results per page when filtered in REST API ([Gargron](https://github.com/mastodon/mastodon/pull/17996))
@@ -411,7 +411,7 @@ Some of the features in this release have been funded through the [NGI0 Discover
 - Remove profile directory link from main navigation panel in web UI ([Gargron](https://github.com/mastodon/mastodon/pull/17688))
 - **Remove language detection through cld3** ([Gargron](https://github.com/mastodon/mastodon/pull/17478), [ykzts](https://github.com/mastodon/mastodon/pull/17539), [Gargron](https://github.com/mastodon/mastodon/pull/17496), [Gargron](https://github.com/mastodon/mastodon/pull/17722))
   - cld3 is very inaccurate on short-form content even with unique alphabets
-  - Post language can be overriden individually using `language` param
+  - Post language can be overridden individually using `language` param
   - Otherwise, it defaults to the user's interface language
 - Remove support for `OAUTH_REDIRECT_AT_SIGN_IN` ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/17287))
   - Use `OMNIAUTH_ONLY` instead
diff --git a/app/controllers/api/v1/accounts/pins_controller.rb b/app/controllers/api/v1/accounts/pins_controller.rb
index 3915b5669..73f845c61 100644
--- a/app/controllers/api/v1/accounts/pins_controller.rb
+++ b/app/controllers/api/v1/accounts/pins_controller.rb
@@ -8,7 +8,7 @@ class Api::V1::Accounts::PinsController < Api::BaseController
   before_action :set_account
 
   def create
-    AccountPin.create!(account: current_account, target_account: @account)
+    AccountPin.find_or_create_by!(account: current_account, target_account: @account)
     render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships_presenter
   end
 
diff --git a/app/controllers/api/v1/lists_controller.rb b/app/controllers/api/v1/lists_controller.rb
index e5ac45fef..843ca2ec2 100644
--- a/app/controllers/api/v1/lists_controller.rb
+++ b/app/controllers/api/v1/lists_controller.rb
@@ -7,6 +7,10 @@ class Api::V1::ListsController < Api::BaseController
   before_action :require_user!
   before_action :set_list, except: [:index, :create]
 
+  rescue_from ArgumentError do |e|
+    render json: { error: e.to_s }, status: 422
+  end
+
   def index
     @lists = List.where(account: current_account).all
     render json: @lists, each_serializer: REST::ListSerializer
diff --git a/app/controllers/api/v1/tags_controller.rb b/app/controllers/api/v1/tags_controller.rb
index 9e5c53330..32f71bdce 100644
--- a/app/controllers/api/v1/tags_controller.rb
+++ b/app/controllers/api/v1/tags_controller.rb
@@ -24,7 +24,7 @@ class Api::V1::TagsController < Api::BaseController
   private
 
   def set_or_create_tag
-    return not_found unless /\A(#{Tag::HASHTAG_NAME_RE})\z/.match?(params[:id])
+    return not_found unless Tag::HASHTAG_NAME_RE.match?(params[:id])
     @tag = Tag.find_normalized(params[:id]) || Tag.new(name: Tag.normalize(params[:id]), display_name: params[:id])
   end
 end
diff --git a/app/controllers/api/v1/timelines/public_controller.rb b/app/controllers/api/v1/timelines/public_controller.rb
index 2ee5aaf18..493fe4776 100644
--- a/app/controllers/api/v1/timelines/public_controller.rb
+++ b/app/controllers/api/v1/timelines/public_controller.rb
@@ -35,7 +35,6 @@ class Api::V1::Timelines::PublicController < Api::BaseController
   def public_feed
     PublicFeed.new(
       current_account,
-      locale: content_locale,
       local: truthy_param?(:local),
       remote: truthy_param?(:remote),
       only_media: truthy_param?(:only_media),
diff --git a/app/helpers/languages_helper.rb b/app/helpers/languages_helper.rb
index e5bae2c6b..322548747 100644
--- a/app/helpers/languages_helper.rb
+++ b/app/helpers/languages_helper.rb
@@ -1,4 +1,5 @@
 # frozen_string_literal: true
+# rubocop:disable Metrics/ModuleLength, Style/WordArray
 
 module LanguagesHelper
   ISO_639_1 = {
@@ -189,8 +190,13 @@ module LanguagesHelper
   ISO_639_3 = {
     ast: ['Asturian', 'Asturianu'].freeze,
     ckb: ['Sorani (Kurdish)', 'سۆرانی'].freeze,
+    jbo: ['Lojban', 'la .lojban.'].freeze,
     kab: ['Kabyle', 'Taqbaylit'].freeze,
     kmr: ['Kurmanji (Kurdish)', 'Kurmancî'].freeze,
+    ldn: ['Láadan', 'Láadan'].freeze,
+    lfn: ['Lingua Franca Nova', 'lingua franca nova'].freeze,
+    tok: ['Toki Pona', 'toki pona'].freeze,
+    zba: ['Balaibalan', 'باليبلن'].freeze,
     zgh: ['Standard Moroccan Tamazight', 'ⵜⴰⵎⴰⵣⵉⵖⵜ'].freeze,
   }.freeze
 
@@ -259,3 +265,5 @@ module LanguagesHelper
     locale_name.to_sym if locale_name.present? && I18n.available_locales.include?(locale_name.to_sym)
   end
 end
+
+# rubocop:enable Metrics/ModuleLength, Style/WordArray
diff --git a/app/javascript/flavours/glitch/components/animated_number.js b/app/javascript/flavours/glitch/components/animated_number.js
index 4619aad58..9431c96f7 100644
--- a/app/javascript/flavours/glitch/components/animated_number.js
+++ b/app/javascript/flavours/glitch/components/animated_number.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import PropTypes from 'prop-types';
-import { FormattedNumber } from 'react-intl';
+import ShortNumber from 'mastodon/components/short_number';
 import TransitionMotion from 'react-motion/lib/TransitionMotion';
 import spring from 'react-motion/lib/spring';
 import { reduceMotion } from 'flavours/glitch/initial_state';
@@ -51,7 +51,7 @@ export default class AnimatedNumber extends React.PureComponent {
     const { direction } = this.state;
 
     if (reduceMotion) {
-      return obfuscate ? obfuscatedCount(value) : <FormattedNumber value={value} />;
+      return obfuscate ? obfuscatedCount(value) : <ShortNumber value={value} />;
     }
 
     const styles = [{
@@ -65,7 +65,7 @@ export default class AnimatedNumber extends React.PureComponent {
         {items => (
           <span className='animated-number'>
             {items.map(({ key, data, style }) => (
-              <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : <FormattedNumber value={data} />}</span>
+              <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : <ShortNumber value={data} />}</span>
             ))}
           </span>
         )}
diff --git a/app/javascript/flavours/glitch/components/column_header.js b/app/javascript/flavours/glitch/components/column_header.js
index 3df359745..0f89b3a97 100644
--- a/app/javascript/flavours/glitch/components/column_header.js
+++ b/app/javascript/flavours/glitch/components/column_header.js
@@ -157,7 +157,6 @@ class ColumnHeader extends React.PureComponent {
           className={collapsibleButtonClassName}
           title={formatMessage(collapsed ? messages.show : messages.hide)}
           aria-label={formatMessage(collapsed ? messages.show : messages.hide)}
-          aria-pressed={collapsed ? 'false' : 'true'}
           onClick={this.handleToggleClick}
         >
           <i className='icon-with-badge'>
diff --git a/app/javascript/flavours/glitch/components/icon_button.js b/app/javascript/flavours/glitch/components/icon_button.js
index 42f5d4bc3..41a95e92f 100644
--- a/app/javascript/flavours/glitch/components/icon_button.js
+++ b/app/javascript/flavours/glitch/components/icon_button.js
@@ -18,7 +18,6 @@ export default class IconButton extends React.PureComponent {
     onKeyPress: PropTypes.func,
     size: PropTypes.number,
     active: PropTypes.bool,
-    pressed: PropTypes.bool,
     expanded: PropTypes.bool,
     style: PropTypes.object,
     activeStyle: PropTypes.object,
@@ -111,7 +110,6 @@ export default class IconButton extends React.PureComponent {
       icon,
       inverted,
       overlay,
-      pressed,
       tabIndex,
       title,
       counter,
@@ -156,7 +154,6 @@ export default class IconButton extends React.PureComponent {
     return (
       <button
         aria-label={title}
-        aria-pressed={pressed}
         aria-expanded={expanded}
         title={title}
         className={classes}
diff --git a/app/javascript/flavours/glitch/components/status_action_bar.js b/app/javascript/flavours/glitch/components/status_action_bar.js
index b260b5bca..977c98ccb 100644
--- a/app/javascript/flavours/glitch/components/status_action_bar.js
+++ b/app/javascript/flavours/glitch/components/status_action_bar.js
@@ -42,6 +42,7 @@ const messages = defineMessages({
   hide: { id: 'status.hide', defaultMessage: 'Hide toot' },
   edited: { id: 'status.edited', defaultMessage: 'Edited {date}' },
   filter: { id: 'status.filter', defaultMessage: 'Filter this post' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 export default @injectIntl
@@ -182,22 +183,8 @@ class StatusActionBar extends ImmutablePureComponent {
   }
 
   handleCopy = () => {
-    const url      = this.props.status.get('url');
-    const textarea = document.createElement('textarea');
-
-    textarea.textContent    = url;
-    textarea.style.position = 'fixed';
-
-    document.body.appendChild(textarea);
-
-    try {
-      textarea.select();
-      document.execCommand('copy');
-    } catch (e) {
-
-    } finally {
-      document.body.removeChild(textarea);
-    }
+    const url = this.props.status.get('url');
+    navigator.clipboard.writeText(url);
   }
 
   handleHideClick = () => {
@@ -216,6 +203,7 @@ class StatusActionBar extends ImmutablePureComponent {
     const publicStatus       = ['public', 'unlisted'].includes(status.get('visibility'));
     const pinnableStatus     = ['public', 'unlisted', 'private'].includes(status.get('visibility'));
     const writtenByMe        = status.getIn(['account', 'id']) === me;
+    const isRemote           = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']);
 
     let menu = [];
     let reblogIcon = 'retweet';
@@ -225,6 +213,9 @@ class StatusActionBar extends ImmutablePureComponent {
     menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen });
 
     if (publicStatus) {
+      if (isRemote) {
+        menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') });
+      }
       menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });
       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });
     }
@@ -315,10 +306,10 @@ class StatusActionBar extends ImmutablePureComponent {
           counter={showReplyCount ? status.get('replies_count') : undefined}
           obfuscateCount
         />
-        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon={reblogIcon} onClick={this.handleReblogClick} counter={withCounters ? status.get('reblogs_count') : undefined} />
-        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={withCounters ? status.get('favourites_count') : undefined} />
+        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} title={reblogTitle} icon={reblogIcon} onClick={this.handleReblogClick} counter={withCounters ? status.get('reblogs_count') : undefined} />
+        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={withCounters ? status.get('favourites_count') : undefined} />
         {shareButton}
-        <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} pressed={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
+        <IconButton className='status__action-bar-button bookmark-icon' disabled={anonymousAccess} active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
 
         {filterButton}
 
diff --git a/app/javascript/flavours/glitch/containers/timeline_container.js b/app/javascript/flavours/glitch/containers/timeline_container.js
deleted file mode 100644
index 838bcd390..000000000
--- a/app/javascript/flavours/glitch/containers/timeline_container.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { Fragment } from 'react';
-import ReactDOM from 'react-dom';
-import { Provider } from 'react-redux';
-import PropTypes from 'prop-types';
-import configureStore from 'flavours/glitch/store/configureStore';
-import { hydrateStore } from 'flavours/glitch/actions/store';
-import { IntlProvider, addLocaleData } from 'react-intl';
-import { getLocale } from 'mastodon/locales';
-import PublicTimeline from 'flavours/glitch/features/standalone/public_timeline';
-import HashtagTimeline from 'flavours/glitch/features/standalone/hashtag_timeline';
-import ModalContainer from 'flavours/glitch/features/ui/containers/modal_container';
-import initialState from 'flavours/glitch/initial_state';
-
-const { localeData, messages } = getLocale();
-addLocaleData(localeData);
-
-const store = configureStore();
-
-if (initialState) {
-  store.dispatch(hydrateStore(initialState));
-}
-
-export default class TimelineContainer extends React.PureComponent {
-
-  static propTypes = {
-    locale: PropTypes.string.isRequired,
-    hashtag: PropTypes.string,
-    local: PropTypes.bool,
-  };
-
-  static defaultProps = {
-    local: !initialState.settings.known_fediverse,
-  };
-
-  render () {
-    const { locale, hashtag, local } = this.props;
-
-    let timeline;
-
-    if (hashtag) {
-      timeline = <HashtagTimeline hashtag={hashtag} local={local} />;
-    } else {
-      timeline = <PublicTimeline local={local} />;
-    }
-
-    return (
-      <IntlProvider locale={locale} messages={messages}>
-        <Provider store={store}>
-          <Fragment>
-            {timeline}
-
-            {ReactDOM.createPortal(
-              <ModalContainer />,
-              document.getElementById('modal-container'),
-            )}
-          </Fragment>
-        </Provider>
-      </IntlProvider>
-    );
-  }
-
-}
diff --git a/app/javascript/flavours/glitch/features/account/components/header.js b/app/javascript/flavours/glitch/features/account/components/header.js
index cf1494f05..93831b3e7 100644
--- a/app/javascript/flavours/glitch/features/account/components/header.js
+++ b/app/javascript/flavours/glitch/features/account/components/header.js
@@ -53,6 +53,7 @@ const messages = defineMessages({
   admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },
   add_account_note: { id: 'account.add_account_note', defaultMessage: 'Add note for @{name}' },
   languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 const titleFromAccount = account => {
@@ -97,6 +98,7 @@ class Header extends ImmutablePureComponent {
     onEditAccountNote: PropTypes.func.isRequired,
     onChangeLanguages: PropTypes.func.isRequired,
     onInteractionModal: PropTypes.func.isRequired,
+    onOpenAvatar: PropTypes.func.isRequired,
     intl: PropTypes.object.isRequired,
     domain: PropTypes.string.isRequired,
     hidden: PropTypes.bool,
@@ -132,6 +134,13 @@ class Header extends ImmutablePureComponent {
     }
   }
 
+  handleAvatarClick = e => {
+    if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
+      e.preventDefault();
+      this.props.onOpenAvatar();
+    }
+  }
+
   render () {
     const { account, hidden, intl, domain } = this.props;
     const { signedIn } = this.context.identity;
@@ -142,7 +151,9 @@ class Header extends ImmutablePureComponent {
 
     const accountNote = account.getIn(['relationship', 'note']);
 
-    const suspended = account.get('suspended');
+    const suspended    = account.get('suspended');
+    const isRemote     = account.get('acct') !== account.get('username');
+    const remoteDomain = isRemote ? account.get('acct').split('@')[1] : null;
 
     let info        = [];
     let actionBtn   = '';
@@ -199,6 +210,11 @@ class Header extends ImmutablePureComponent {
       menu.push(null);
     }
 
+    if (isRemote) {
+      menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: account.get('url') });
+      menu.push(null);
+    }
+
     if ('share' in navigator && !suspended) {
       menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });
       menu.push(null);
@@ -253,15 +269,13 @@ class Header extends ImmutablePureComponent {
       menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport });
     }
 
-    if (signedIn && account.get('acct') !== account.get('username')) {
-      const domain = account.get('acct').split('@')[1];
-
+    if (signedIn && isRemote) {
       menu.push(null);
 
       if (account.getIn(['relationship', 'domain_blocking'])) {
-        menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain });
+        menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain: remoteDomain }), action: this.props.onUnblockDomain });
       } else {
-        menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain });
+        menu.push({ text: intl.formatMessage(messages.blockDomain, { domain: remoteDomain }), action: this.props.onBlockDomain });
       }
     }
 
@@ -299,7 +313,7 @@ class Header extends ImmutablePureComponent {
 
         <div className='account__header__bar'>
           <div className='account__header__tabs'>
-            <a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>
+            <a className='avatar' href={account.get('avatar')} rel='noopener noreferrer' target='_blank' onClick={this.handleAvatarClick}>
               <Avatar account={suspended || hidden ? undefined : account} size={90} />
             </a>
 
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.js b/app/javascript/flavours/glitch/features/account_timeline/components/header.js
index eb332e296..90c4c9d51 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/components/header.js
+++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.js
@@ -25,6 +25,7 @@ export default class Header extends ImmutablePureComponent {
     onAddToList: PropTypes.func.isRequired,
     onChangeLanguages: PropTypes.func.isRequired,
     onInteractionModal: PropTypes.func.isRequired,
+    onOpenAvatar: PropTypes.func.isRequired,
     hideTabs: PropTypes.bool,
     domain: PropTypes.string.isRequired,
     hidden: PropTypes.bool,
@@ -102,6 +103,10 @@ export default class Header extends ImmutablePureComponent {
     this.props.onInteractionModal(this.props.account);
   }
 
+  handleOpenAvatar = () => {
+    this.props.onOpenAvatar(this.props.account);
+  }
+
   render () {
     const { account, hidden, hideTabs } = this.props;
 
@@ -130,6 +135,7 @@ export default class Header extends ImmutablePureComponent {
           onEditAccountNote={this.handleEditAccountNote}
           onChangeLanguages={this.handleChangeLanguages}
           onInteractionModal={this.handleInteractionModal}
+          onOpenAvatar={this.handleOpenAvatar}
           domain={this.props.domain}
           hidden={hidden}
         />
diff --git a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js
index a65463243..25bcd0119 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js
+++ b/app/javascript/flavours/glitch/features/account_timeline/containers/header_container.js
@@ -161,6 +161,13 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
     }));
   },
 
+  onOpenAvatar (account) {
+    dispatch(openModal('IMAGE', {
+      src: account.get('avatar'),
+      alt: account.get('acct'),
+    }));
+  },
+
 });
 
 export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));
diff --git a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
index f1827789f..4428fdecf 100644
--- a/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/hashtag_timeline/index.js
@@ -194,7 +194,7 @@ class HashtagTimeline extends React.PureComponent {
       const following = tag.get('following');
 
       followButton = (
-        <button className={classNames('column-header__button')} onClick={this.handleFollow} disabled={!signedIn} title={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-label={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-pressed={following ? 'true' : 'false'}>
+        <button className={classNames('column-header__button')} onClick={this.handleFollow} disabled={!signedIn} title={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-label={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)}>
           <Icon id={following ? 'user-times' : 'user-plus'} fixedWidth className='column-header__icon' />
         </button>
       );
diff --git a/app/javascript/flavours/glitch/features/home_timeline/index.js b/app/javascript/flavours/glitch/features/home_timeline/index.js
index 23d0440a9..5ed108ad2 100644
--- a/app/javascript/flavours/glitch/features/home_timeline/index.js
+++ b/app/javascript/flavours/glitch/features/home_timeline/index.js
@@ -131,7 +131,6 @@ class HomeTimeline extends React.PureComponent {
           className={classNames('column-header__button', { 'active': showAnnouncements })}
           title={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
           aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
-          aria-pressed={showAnnouncements ? 'true' : 'false'}
           onClick={this.handleToggleAnnouncementsClick}
         >
           <IconWithBadge id='bullhorn' count={unreadAnnouncements} />
diff --git a/app/javascript/flavours/glitch/features/interaction_modal/index.js b/app/javascript/flavours/glitch/features/interaction_modal/index.js
index 4cd8e51de..b71c041c9 100644
--- a/app/javascript/flavours/glitch/features/interaction_modal/index.js
+++ b/app/javascript/flavours/glitch/features/interaction_modal/index.js
@@ -150,7 +150,7 @@ class InteractionModal extends React.PureComponent {
 
           <div className='interaction-modal__choices__choice'>
             <h3><FormattedMessage id='interaction_modal.on_another_server' defaultMessage='On a different server' /></h3>
-            <p><FormattedMessage id='interaction_modal.other_server_instructions' defaultMessage='Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.' /></p>
+            <p><FormattedMessage id='interaction_modal.other_server_instructions' defaultMessage='Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.' /></p>
             <Copypaste value={url} />
           </div>
         </div>
diff --git a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js
index 86e24e38f..f05a763e0 100644
--- a/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js
+++ b/app/javascript/flavours/glitch/features/picture_in_picture/components/footer.js
@@ -207,8 +207,8 @@ class Footer extends ImmutablePureComponent {
     return (
       <div className='picture-in-picture__footer'>
         {replyButton}
-        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate}  active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
-        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
+        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate}  active={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
+        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
         {withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='external-link' onClick={this.handleOpenClick} href={status.get('url')} />}
       </div>
     );
diff --git a/app/javascript/flavours/glitch/features/status/components/action_bar.js b/app/javascript/flavours/glitch/features/status/components/action_bar.js
index 0e21ca5cc..b6f8a9877 100644
--- a/app/javascript/flavours/glitch/features/status/components/action_bar.js
+++ b/app/javascript/flavours/glitch/features/status/components/action_bar.js
@@ -35,6 +35,7 @@ const messages = defineMessages({
   admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },
   admin_status: { id: 'status.admin_status', defaultMessage: 'Open this status in the moderation interface' },
   copy: { id: 'status.copy', defaultMessage: 'Copy link to status' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 export default @injectIntl
@@ -132,22 +133,8 @@ class ActionBar extends React.PureComponent {
   }
 
   handleCopy = () => {
-    const url      = this.props.status.get('url');
-    const textarea = document.createElement('textarea');
-
-    textarea.textContent    = url;
-    textarea.style.position = 'fixed';
-
-    document.body.appendChild(textarea);
-
-    try {
-      textarea.select();
-      document.execCommand('copy');
-    } catch (e) {
-
-    } finally {
-      document.body.removeChild(textarea);
-    }
+    const url = this.props.status.get('url');
+    navigator.clipboard.writeText(url);
   }
 
   render () {
@@ -158,10 +145,15 @@ class ActionBar extends React.PureComponent {
     const pinnableStatus     = ['public', 'unlisted', 'private'].includes(status.get('visibility'));
     const mutingConversation = status.get('muted');
     const writtenByMe        = status.getIn(['account', 'id']) === me;
+    const isRemote           = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']);
 
     let menu = [];
 
     if (publicStatus) {
+      if (isRemote) {
+        menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') });
+      }
+
       menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });
       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });
       menu.push(null);
diff --git a/app/javascript/flavours/glitch/features/status/index.js b/app/javascript/flavours/glitch/features/status/index.js
index f59e8c7f6..aaa9c7928 100644
--- a/app/javascript/flavours/glitch/features/status/index.js
+++ b/app/javascript/flavours/glitch/features/status/index.js
@@ -648,7 +648,7 @@ class Status extends ImmutablePureComponent {
           showBackButton
           multiColumn={multiColumn}
           extraButton={(
-            <button className='column-header__button' title={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll} aria-pressed={!isExpanded ? 'false' : 'true'}><Icon id={!isExpanded ? 'eye-slash' : 'eye'} /></button>
+            <button className='column-header__button' title={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(!isExpanded ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll}><Icon id={!isExpanded ? 'eye-slash' : 'eye'} /></button>
           )}
         />
 
diff --git a/app/javascript/flavours/glitch/features/ui/components/image_modal.js b/app/javascript/flavours/glitch/features/ui/components/image_modal.js
new file mode 100644
index 000000000..a792b9be7
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/ui/components/image_modal.js
@@ -0,0 +1,59 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import classNames from 'classnames';
+import { defineMessages, injectIntl } from 'react-intl';
+import IconButton from 'flavours/glitch/components/icon_button';
+import ImageLoader from './image_loader';
+
+const messages = defineMessages({
+  close: { id: 'lightbox.close', defaultMessage: 'Close' },
+});
+
+export default @injectIntl
+class ImageModal extends React.PureComponent {
+
+  static propTypes = {
+    src: PropTypes.string.isRequired,
+    alt: PropTypes.string.isRequired,
+    onClose: PropTypes.func.isRequired,
+    intl: PropTypes.object.isRequired,
+  };
+
+  state = {
+    navigationHidden: false,
+  };
+
+  toggleNavigation = () => {
+    this.setState(prevState => ({
+      navigationHidden: !prevState.navigationHidden,
+    }));
+  };
+
+  render () {
+    const { intl, src, alt, onClose } = this.props;
+    const { navigationHidden } = this.state;
+
+    const navigationClassName = classNames('media-modal__navigation', {
+      'media-modal__navigation--hidden': navigationHidden,
+    });
+
+    return (
+      <div className='modal-root__modal media-modal'>
+        <div className='media-modal__closer' role='presentation' onClick={onClose} >
+          <ImageLoader
+            src={src}
+            width={400}
+            height={400}
+            alt={alt}
+            onClick={this.toggleNavigation}
+          />
+        </div>
+
+        <div className={navigationClassName}>
+          <IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={40} />
+        </div>
+      </div>
+    );
+  }
+
+}
diff --git a/app/javascript/flavours/glitch/features/ui/components/modal_root.js b/app/javascript/flavours/glitch/features/ui/components/modal_root.js
index 93834f60e..d2ee28948 100644
--- a/app/javascript/flavours/glitch/features/ui/components/modal_root.js
+++ b/app/javascript/flavours/glitch/features/ui/components/modal_root.js
@@ -15,6 +15,7 @@ import DoodleModal from './doodle_modal';
 import ConfirmationModal from './confirmation_modal';
 import FocalPointModal from './focal_point_modal';
 import DeprecatedSettingsModal from './deprecated_settings_modal';
+import ImageModal from './image_modal';
 import {
   OnboardingModal,
   MuteModal,
@@ -38,6 +39,7 @@ const MODAL_COMPONENTS = {
   'ONBOARDING': OnboardingModal,
   'VIDEO': () => Promise.resolve({ default: VideoModal }),
   'AUDIO': () => Promise.resolve({ default: AudioModal }),
+  'IMAGE': () => Promise.resolve({ default: ImageModal }),
   'BOOST': () => Promise.resolve({ default: BoostModal }),
   'FAVOURITE': () => Promise.resolve({ default: FavouriteModal }),
   'DOODLE': () => Promise.resolve({ default: DoodleModal }),
diff --git a/app/javascript/flavours/glitch/styles/components/status.scss b/app/javascript/flavours/glitch/styles/components/status.scss
index bd46017ab..054110e41 100644
--- a/app/javascript/flavours/glitch/styles/components/status.scss
+++ b/app/javascript/flavours/glitch/styles/components/status.scss
@@ -659,6 +659,7 @@
   display: inline-block;
   font-weight: 500;
   font-size: 12px;
+  line-height: 17px;
   margin-left: 6px;
 }
 
diff --git a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
index 1fe3d7a51..22828c7d1 100644
--- a/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
+++ b/app/javascript/flavours/glitch/styles/mastodon-light/diff.scss
@@ -78,7 +78,7 @@ html {
 .column-header__back-button,
 .column-header__button,
 .column-header__button.active,
-.account__header__bar {
+.account__header {
   background: $white;
 }
 
diff --git a/app/javascript/mastodon/components/animated_number.js b/app/javascript/mastodon/components/animated_number.js
index fbe948c5b..b1aebc73e 100644
--- a/app/javascript/mastodon/components/animated_number.js
+++ b/app/javascript/mastodon/components/animated_number.js
@@ -1,6 +1,6 @@
 import React from 'react';
 import PropTypes from 'prop-types';
-import { FormattedNumber } from 'react-intl';
+import ShortNumber from 'mastodon/components/short_number';
 import TransitionMotion from 'react-motion/lib/TransitionMotion';
 import spring from 'react-motion/lib/spring';
 import { reduceMotion } from 'mastodon/initial_state';
@@ -51,7 +51,7 @@ export default class AnimatedNumber extends React.PureComponent {
     const { direction } = this.state;
 
     if (reduceMotion) {
-      return obfuscate ? obfuscatedCount(value) : <FormattedNumber value={value} />;
+      return obfuscate ? obfuscatedCount(value) : <ShortNumber value={value} />;
     }
 
     const styles = [{
@@ -65,7 +65,7 @@ export default class AnimatedNumber extends React.PureComponent {
         {items => (
           <span className='animated-number'>
             {items.map(({ key, data, style }) => (
-              <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : <FormattedNumber value={data} />}</span>
+              <span key={key} style={{ position: (direction * style.y) > 0 ? 'absolute' : 'static', transform: `translateY(${style.y * 100}%)` }}>{obfuscate ? obfuscatedCount(data) : <ShortNumber value={data} />}</span>
             ))}
           </span>
         )}
diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js
index 43efa179e..7850a93ec 100644
--- a/app/javascript/mastodon/components/column_header.js
+++ b/app/javascript/mastodon/components/column_header.js
@@ -152,7 +152,6 @@ class ColumnHeader extends React.PureComponent {
           className={collapsibleButtonClassName}
           title={formatMessage(collapsed ? messages.show : messages.hide)}
           aria-label={formatMessage(collapsed ? messages.show : messages.hide)}
-          aria-pressed={collapsed ? 'false' : 'true'}
           onClick={this.handleToggleClick}
         >
           <i className='icon-with-badge'>
diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js
index 8fd9e10c0..49858f2e2 100644
--- a/app/javascript/mastodon/components/icon_button.js
+++ b/app/javascript/mastodon/components/icon_button.js
@@ -16,7 +16,6 @@ export default class IconButton extends React.PureComponent {
     onKeyPress: PropTypes.func,
     size: PropTypes.number,
     active: PropTypes.bool,
-    pressed: PropTypes.bool,
     expanded: PropTypes.bool,
     style: PropTypes.object,
     activeStyle: PropTypes.object,
@@ -98,7 +97,6 @@ export default class IconButton extends React.PureComponent {
       icon,
       inverted,
       overlay,
-      pressed,
       tabIndex,
       title,
       counter,
@@ -143,7 +141,6 @@ export default class IconButton extends React.PureComponent {
       <button
         type='button'
         aria-label={title}
-        aria-pressed={pressed}
         aria-expanded={expanded}
         title={title}
         className={classes}
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index 2e0c5e081..2a1fedb93 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -45,6 +45,7 @@ const messages = defineMessages({
   unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },
   unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
   filter: { id: 'status.filter', defaultMessage: 'Filter this post' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 const mapStateToProps = (state, { status }) => ({
@@ -221,25 +222,10 @@ class StatusActionBar extends ImmutablePureComponent {
   }
 
   handleCopy = () => {
-    const url      = this.props.status.get('url');
-    const textarea = document.createElement('textarea');
-
-    textarea.textContent    = url;
-    textarea.style.position = 'fixed';
-
-    document.body.appendChild(textarea);
-
-    try {
-      textarea.select();
-      document.execCommand('copy');
-    } catch (e) {
-
-    } finally {
-      document.body.removeChild(textarea);
-    }
+    const url = this.props.status.get('url');
+    navigator.clipboard.writeText(url);
   }
 
-
   handleHideClick = () => {
     this.props.onFilter();
   }
@@ -254,12 +240,17 @@ class StatusActionBar extends ImmutablePureComponent {
     const mutingConversation = status.get('muted');
     const account            = status.get('account');
     const writtenByMe        = status.getIn(['account', 'id']) === me;
+    const isRemote           = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']);
 
     let menu = [];
 
     menu.push({ text: intl.formatMessage(messages.open), action: this.handleOpen });
 
     if (publicStatus) {
+      if (isRemote) {
+        menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') });
+      }
+
       menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });
       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });
     }
@@ -361,8 +352,8 @@ class StatusActionBar extends ImmutablePureComponent {
     return (
       <div className='status__action-bar'>
         <IconButton className='status__action-bar__button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount />
-        <IconButton className={classNames('status__action-bar__button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={withCounters ? status.get('reblogs_count') : undefined} />
-        <IconButton className='status__action-bar__button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={withCounters ? status.get('favourites_count') : undefined} />
+        <IconButton className={classNames('status__action-bar__button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate} active={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={withCounters ? status.get('reblogs_count') : undefined} />
+        <IconButton className='status__action-bar__button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={withCounters ? status.get('favourites_count') : undefined} />
         <IconButton className='status__action-bar__button bookmark-icon' disabled={!signedIn} active={status.get('bookmarked')} title={intl.formatMessage(messages.bookmark)} icon='bookmark' onClick={this.handleBookmarkClick} />
 
         {shareButton}
diff --git a/app/javascript/mastodon/containers/timeline_container.js b/app/javascript/mastodon/containers/timeline_container.js
deleted file mode 100644
index ed8095f90..000000000
--- a/app/javascript/mastodon/containers/timeline_container.js
+++ /dev/null
@@ -1,62 +0,0 @@
-import React, { Fragment } from 'react';
-import ReactDOM from 'react-dom';
-import { Provider } from 'react-redux';
-import PropTypes from 'prop-types';
-import configureStore from '../store/configureStore';
-import { hydrateStore } from '../actions/store';
-import { IntlProvider, addLocaleData } from 'react-intl';
-import { getLocale } from '../locales';
-import PublicTimeline from '../features/standalone/public_timeline';
-import HashtagTimeline from '../features/standalone/hashtag_timeline';
-import ModalContainer from '../features/ui/containers/modal_container';
-import initialState from '../initial_state';
-
-const { localeData, messages } = getLocale();
-addLocaleData(localeData);
-
-const store = configureStore();
-
-if (initialState) {
-  store.dispatch(hydrateStore(initialState));
-}
-
-export default class TimelineContainer extends React.PureComponent {
-
-  static propTypes = {
-    locale: PropTypes.string.isRequired,
-    hashtag: PropTypes.string,
-    local: PropTypes.bool,
-  };
-
-  static defaultProps = {
-    local: !initialState.settings.known_fediverse,
-  };
-
-  render () {
-    const { locale, hashtag, local } = this.props;
-
-    let timeline;
-
-    if (hashtag) {
-      timeline = <HashtagTimeline hashtag={hashtag} local={local} />;
-    } else {
-      timeline = <PublicTimeline local={local} />;
-    }
-
-    return (
-      <IntlProvider locale={locale} messages={messages}>
-        <Provider store={store}>
-          <Fragment>
-            {timeline}
-
-            {ReactDOM.createPortal(
-              <ModalContainer />,
-              document.getElementById('modal-container'),
-            )}
-          </Fragment>
-        </Provider>
-      </IntlProvider>
-    );
-  }
-
-}
diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js
index 8d3b3c5e6..c38eea55b 100644
--- a/app/javascript/mastodon/features/account/components/header.js
+++ b/app/javascript/mastodon/features/account/components/header.js
@@ -53,6 +53,7 @@ const messages = defineMessages({
   add_or_remove_from_list: { id: 'account.add_or_remove_from_list', defaultMessage: 'Add or Remove from lists' },
   admin_account: { id: 'status.admin_account', defaultMessage: 'Open moderation interface for @{name}' },
   languages: { id: 'account.languages', defaultMessage: 'Change subscribed languages' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 const titleFromAccount = account => {
@@ -97,6 +98,7 @@ class Header extends ImmutablePureComponent {
     onEditAccountNote: PropTypes.func.isRequired,
     onChangeLanguages: PropTypes.func.isRequired,
     onInteractionModal: PropTypes.func.isRequired,
+    onOpenAvatar: PropTypes.func.isRequired,
     intl: PropTypes.object.isRequired,
     domain: PropTypes.string.isRequired,
     hidden: PropTypes.bool,
@@ -140,6 +142,13 @@ class Header extends ImmutablePureComponent {
     }
   }
 
+  handleAvatarClick = e => {
+    if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
+      e.preventDefault();
+      this.props.onOpenAvatar();
+    }
+  }
+
   render () {
     const { account, hidden, intl, domain } = this.props;
     const { signedIn } = this.context.identity;
@@ -148,7 +157,9 @@ class Header extends ImmutablePureComponent {
       return null;
     }
 
-    const suspended = account.get('suspended');
+    const suspended    = account.get('suspended');
+    const isRemote     = account.get('acct') !== account.get('username');
+    const remoteDomain = isRemote ? account.get('acct').split('@')[1] : null;
 
     let info        = [];
     let actionBtn   = '';
@@ -200,6 +211,11 @@ class Header extends ImmutablePureComponent {
       menu.push(null);
     }
 
+    if (isRemote) {
+      menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: account.get('url') });
+      menu.push(null);
+    }
+
     if ('share' in navigator) {
       menu.push({ text: intl.formatMessage(messages.share, { name: account.get('username') }), action: this.handleShare });
       menu.push(null);
@@ -250,15 +266,13 @@ class Header extends ImmutablePureComponent {
       menu.push({ text: intl.formatMessage(messages.report, { name: account.get('username') }), action: this.props.onReport });
     }
 
-    if (signedIn && account.get('acct') !== account.get('username')) {
-      const domain = account.get('acct').split('@')[1];
-
+    if (signedIn && isRemote) {
       menu.push(null);
 
       if (account.getIn(['relationship', 'domain_blocking'])) {
-        menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain }), action: this.props.onUnblockDomain });
+        menu.push({ text: intl.formatMessage(messages.unblockDomain, { domain: remoteDomain }), action: this.props.onUnblockDomain });
       } else {
-        menu.push({ text: intl.formatMessage(messages.blockDomain, { domain }), action: this.props.onBlockDomain });
+        menu.push({ text: intl.formatMessage(messages.blockDomain, { domain: remoteDomain }), action: this.props.onBlockDomain });
       }
     }
 
@@ -296,7 +310,7 @@ class Header extends ImmutablePureComponent {
 
         <div className='account__header__bar'>
           <div className='account__header__tabs'>
-            <a className='avatar' href={account.get('url')} rel='noopener noreferrer' target='_blank'>
+            <a className='avatar' href={account.get('avatar')} rel='noopener noreferrer' target='_blank' onClick={this.handleAvatarClick}>
               <Avatar account={suspended || hidden ? undefined : account} size={90} />
             </a>
 
diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js
index f31848f41..d67e307ff 100644
--- a/app/javascript/mastodon/features/account_timeline/components/header.js
+++ b/app/javascript/mastodon/features/account_timeline/components/header.js
@@ -24,6 +24,7 @@ export default class Header extends ImmutablePureComponent {
     onAddToList: PropTypes.func.isRequired,
     onChangeLanguages: PropTypes.func.isRequired,
     onInteractionModal: PropTypes.func.isRequired,
+    onOpenAvatar: PropTypes.func.isRequired,
     hideTabs: PropTypes.bool,
     domain: PropTypes.string.isRequired,
     hidden: PropTypes.bool,
@@ -101,6 +102,10 @@ export default class Header extends ImmutablePureComponent {
     this.props.onInteractionModal(this.props.account);
   }
 
+  handleOpenAvatar = () => {
+    this.props.onOpenAvatar(this.props.account);
+  }
+
   render () {
     const { account, hidden, hideTabs } = this.props;
 
@@ -129,6 +134,7 @@ export default class Header extends ImmutablePureComponent {
           onEditAccountNote={this.handleEditAccountNote}
           onChangeLanguages={this.handleChangeLanguages}
           onInteractionModal={this.handleInteractionModal}
+          onOpenAvatar={this.handleOpenAvatar}
           domain={this.props.domain}
           hidden={hidden}
         />
diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
index 1d09cd1ef..f53cd2480 100644
--- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js
+++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
@@ -152,6 +152,13 @@ const mapDispatchToProps = (dispatch, { intl }) => ({
     }));
   },
 
+  onOpenAvatar (account) {
+    dispatch(openModal('IMAGE', {
+      src: account.get('avatar'),
+      alt: account.get('acct'),
+    }));
+  },
+
 });
 
 export default injectIntl(connect(makeMapStateToProps, mapDispatchToProps)(Header));
diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js
index ec524be8f..b635c3529 100644
--- a/app/javascript/mastodon/features/hashtag_timeline/index.js
+++ b/app/javascript/mastodon/features/hashtag_timeline/index.js
@@ -194,7 +194,7 @@ class HashtagTimeline extends React.PureComponent {
       const following = tag.get('following');
 
       followButton = (
-        <button className={classNames('column-header__button')} onClick={this.handleFollow} disabled={!signedIn} title={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-label={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-pressed={following ? 'true' : 'false'}>
+        <button className={classNames('column-header__button')} onClick={this.handleFollow} disabled={!signedIn} title={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)} aria-label={intl.formatMessage(following ? messages.unfollowHashtag : messages.followHashtag)}>
           <Icon id={following ? 'user-times' : 'user-plus'} fixedWidth className='column-header__icon' />
         </button>
       );
diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js
index 749a47e76..ae11ccbe4 100644
--- a/app/javascript/mastodon/features/home_timeline/index.js
+++ b/app/javascript/mastodon/features/home_timeline/index.js
@@ -130,7 +130,6 @@ class HomeTimeline extends React.PureComponent {
           className={classNames('column-header__button', { 'active': showAnnouncements })}
           title={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
           aria-label={intl.formatMessage(showAnnouncements ? messages.hide_announcements : messages.show_announcements)}
-          aria-pressed={showAnnouncements ? 'true' : 'false'}
           onClick={this.handleToggleAnnouncementsClick}
         >
           <IconWithBadge id='bullhorn' count={unreadAnnouncements} />
diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js
index 9f7747903..d4535378f 100644
--- a/app/javascript/mastodon/features/interaction_modal/index.js
+++ b/app/javascript/mastodon/features/interaction_modal/index.js
@@ -150,7 +150,7 @@ class InteractionModal extends React.PureComponent {
 
           <div className='interaction-modal__choices__choice'>
             <h3><FormattedMessage id='interaction_modal.on_another_server' defaultMessage='On a different server' /></h3>
-            <p><FormattedMessage id='interaction_modal.other_server_instructions' defaultMessage='Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.' /></p>
+            <p><FormattedMessage id='interaction_modal.other_server_instructions' defaultMessage='Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.' /></p>
             <Copypaste value={url} />
           </div>
         </div>
diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js
index 0beb2e14d..5b875dc30 100644
--- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js
+++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js
@@ -182,8 +182,8 @@ class Footer extends ImmutablePureComponent {
     return (
       <div className='picture-in-picture__footer'>
         <IconButton className='status__action-bar-button' title={replyTitle} icon={status.get('in_reply_to_account_id') === status.getIn(['account', 'id']) ? 'reply' : replyIcon} onClick={this.handleReplyClick} counter={status.get('replies_count')} obfuscateCount />
-        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate}  active={status.get('reblogged')} pressed={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
-        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} pressed={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
+        <IconButton className={classNames('status__action-bar-button', { reblogPrivate })} disabled={!publicStatus && !reblogPrivate}  active={status.get('reblogged')} title={reblogTitle} icon='retweet' onClick={this.handleReblogClick} counter={status.get('reblogs_count')} />
+        <IconButton className='status__action-bar-button star-icon' animate active={status.get('favourited')} title={intl.formatMessage(messages.favourite)} icon='star' onClick={this.handleFavouriteClick} counter={status.get('favourites_count')} />
         {withOpenButton && <IconButton className='status__action-bar-button' title={intl.formatMessage(messages.open)} icon='external-link' onClick={this.handleOpenClick} href={status.get('url')} />}
       </div>
     );
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index fc82aa9c2..c1242754c 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -39,6 +39,7 @@ const messages = defineMessages({
   unblockDomain: { id: 'account.unblock_domain', defaultMessage: 'Unblock domain {domain}' },
   unmute: { id: 'account.unmute', defaultMessage: 'Unmute @{name}' },
   unblock: { id: 'account.unblock', defaultMessage: 'Unblock @{name}' },
+  openOriginalPage: { id: 'account.open_original_page', defaultMessage: 'Open original page' },
 });
 
 const mapStateToProps = (state, { status }) => ({
@@ -174,22 +175,8 @@ class ActionBar extends React.PureComponent {
   }
 
   handleCopy = () => {
-    const url      = this.props.status.get('url');
-    const textarea = document.createElement('textarea');
-
-    textarea.textContent    = url;
-    textarea.style.position = 'fixed';
-
-    document.body.appendChild(textarea);
-
-    try {
-      textarea.select();
-      document.execCommand('copy');
-    } catch (e) {
-
-    } finally {
-      document.body.removeChild(textarea);
-    }
+    const url = this.props.status.get('url');
+    navigator.clipboard.writeText(url);
   }
 
   render () {
@@ -201,10 +188,15 @@ class ActionBar extends React.PureComponent {
     const mutingConversation = status.get('muted');
     const account            = status.get('account');
     const writtenByMe        = status.getIn(['account', 'id']) === me;
+    const isRemote           = status.getIn(['account', 'username']) !== status.getIn(['account', 'acct']);
 
     let menu = [];
 
     if (publicStatus) {
+      if (isRemote) {
+        menu.push({ text: intl.formatMessage(messages.openOriginalPage), href: status.get('url') });
+      }
+
       menu.push({ text: intl.formatMessage(messages.copy), action: this.handleCopy });
       menu.push({ text: intl.formatMessage(messages.embed), action: this.handleEmbed });
       menu.push(null);
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js
index c0ba1f2d6..cb67944c9 100644
--- a/app/javascript/mastodon/features/status/index.js
+++ b/app/javascript/mastodon/features/status/index.js
@@ -619,7 +619,7 @@ class Status extends ImmutablePureComponent {
           showBackButton
           multiColumn={multiColumn}
           extraButton={(
-            <button type='button' className='column-header__button' title={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll} aria-pressed={status.get('hidden') ? 'false' : 'true'}><Icon id={status.get('hidden') ? 'eye-slash' : 'eye'} /></button>
+            <button type='button' className='column-header__button' title={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} aria-label={intl.formatMessage(status.get('hidden') ? messages.revealAll : messages.hideAll)} onClick={this.handleToggleAll}><Icon id={status.get('hidden') ? 'eye-slash' : 'eye'} /></button>
           )}
         />
 
diff --git a/app/javascript/mastodon/features/ui/components/image_modal.js b/app/javascript/mastodon/features/ui/components/image_modal.js
new file mode 100644
index 000000000..7522c3da5
--- /dev/null
+++ b/app/javascript/mastodon/features/ui/components/image_modal.js
@@ -0,0 +1,59 @@
+import React from 'react';
+import PropTypes from 'prop-types';
+import classNames from 'classnames';
+import { defineMessages, injectIntl } from 'react-intl';
+import IconButton from 'mastodon/components/icon_button';
+import ImageLoader from './image_loader';
+
+const messages = defineMessages({
+  close: { id: 'lightbox.close', defaultMessage: 'Close' },
+});
+
+export default @injectIntl
+class ImageModal extends React.PureComponent {
+
+  static propTypes = {
+    src: PropTypes.string.isRequired,
+    alt: PropTypes.string.isRequired,
+    onClose: PropTypes.func.isRequired,
+    intl: PropTypes.object.isRequired,
+  };
+
+  state = {
+    navigationHidden: false,
+  };
+
+  toggleNavigation = () => {
+    this.setState(prevState => ({
+      navigationHidden: !prevState.navigationHidden,
+    }));
+  };
+
+  render () {
+    const { intl, src, alt, onClose } = this.props;
+    const { navigationHidden } = this.state;
+
+    const navigationClassName = classNames('media-modal__navigation', {
+      'media-modal__navigation--hidden': navigationHidden,
+    });
+
+    return (
+      <div className='modal-root__modal media-modal'>
+        <div className='media-modal__closer' role='presentation' onClick={onClose} >
+          <ImageLoader
+            src={src}
+            width={400}
+            height={400}
+            alt={alt}
+            onClick={this.toggleNavigation}
+          />
+        </div>
+
+        <div className={navigationClassName}>
+          <IconButton className='media-modal__close' title={intl.formatMessage(messages.close)} icon='times' onClick={onClose} size={40} />
+        </div>
+      </div>
+    );
+  }
+
+}
diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js
index 484ebbd8b..6c4aabae5 100644
--- a/app/javascript/mastodon/features/ui/components/modal_root.js
+++ b/app/javascript/mastodon/features/ui/components/modal_root.js
@@ -12,6 +12,7 @@ import BoostModal from './boost_modal';
 import AudioModal from './audio_modal';
 import ConfirmationModal from './confirmation_modal';
 import FocalPointModal from './focal_point_modal';
+import ImageModal from './image_modal';
 import {
   MuteModal,
   BlockModal,
@@ -31,6 +32,7 @@ const MODAL_COMPONENTS = {
   'MEDIA': () => Promise.resolve({ default: MediaModal }),
   'VIDEO': () => Promise.resolve({ default: VideoModal }),
   'AUDIO': () => Promise.resolve({ default: AudioModal }),
+  'IMAGE': () => Promise.resolve({ default: ImageModal }),
   'BOOST': () => Promise.resolve({ default: BoostModal }),
   'CONFIRM': () => Promise.resolve({ default: ConfirmationModal }),
   'MUTE': MuteModal,
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index bfa5a89f9..95822b7b0 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
   "account.follows.empty": "Die gebruiker volg nie tans iemand nie.",
   "account.follows_you": "Volg jou",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Gaan na profiel",
   "account.hide_reblogs": "Versteek hupstoot vanaf @{name}",
   "account.joined_short": "Aangesluit",
   "account.languages": "Change subscribed languages",
@@ -74,7 +74,7 @@
   "admin.dashboard.retention.cohort_size": "Nuwe gebruikers",
   "alert.rate_limited.message": "Probeer asb. weer na {retry_time, time, medium}.",
   "alert.rate_limited.title": "Tempo-beperk",
-  "alert.unexpected.message": "An unexpected error occurred.",
+  "alert.unexpected.message": "'n Onverwagte fout het voorgekom.",
   "alert.unexpected.title": "Oeps!",
   "announcement.announcement": "Aankondiging",
   "attachments_list.unprocessed": "(unprocessed)",
@@ -146,18 +146,18 @@
   "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
   "compose_form.spoiler.marked": "Text is hidden behind warning",
   "compose_form.spoiler.unmarked": "Text is not hidden",
-  "compose_form.spoiler_placeholder": "Write your warning here",
+  "compose_form.spoiler_placeholder": "Skryf jou waarskuwing hier",
   "confirmation_modal.cancel": "Kanselleer",
   "confirmations.block.block_and_report": "Block & Rapporteer",
-  "confirmations.block.confirm": "Block",
-  "confirmations.block.message": "Are you sure you want to block {name}?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
-  "confirmations.delete.confirm": "Delete",
+  "confirmations.block.confirm": "Blokeer",
+  "confirmations.block.message": "Is jy seker dat jy {name} wil blok?",
+  "confirmations.cancel_follow_request.confirm": "Trek aanvaag terug",
+  "confirmations.cancel_follow_request.message": "Is jy seker dat jy jou aanvraag om {name} te volg, terug wil trek?",
+  "confirmations.delete.confirm": "Wis uit",
   "confirmations.delete.message": "Are you sure you want to delete this status?",
-  "confirmations.delete_list.confirm": "Delete",
-  "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
-  "confirmations.discard_edit_media.confirm": "Discard",
+  "confirmations.delete_list.confirm": "Wis uit",
+  "confirmations.delete_list.message": "Is jy seker dat jy hierdie lys permanent wil uitwis?",
+  "confirmations.discard_edit_media.confirm": "Verwerp",
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Hide entire domain",
   "confirmations.domain_block.message": "Are you really, really sure you want to block the entire {domain}? In most cases a few targeted blocks or mutes are sufficient and preferable. You will not see content from that domain in any public timelines or your notifications. Your followers from that domain will be removed.",
@@ -173,17 +173,17 @@
   "confirmations.unfollow.confirm": "Unfollow",
   "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
   "conversation.delete": "Delete conversation",
-  "conversation.mark_as_read": "Mark as read",
-  "conversation.open": "View conversation",
-  "conversation.with": "With {names}",
+  "conversation.mark_as_read": "Merk as gelees",
+  "conversation.open": "Besigtig gesprek",
+  "conversation.with": "Met {names}",
   "copypaste.copied": "Copied",
   "copypaste.copy": "Copy",
   "directory.federated": "Vanaf bekende fediverse",
   "directory.local": "Slegs vanaf {domain}",
   "directory.new_arrivals": "New arrivals",
   "directory.recently_active": "Recently active",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Rekening instellings",
+  "disabled_account_banner.text": "Jou rekening {disabledAccount} is tans onaktief.",
   "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
   "dismissable_banner.dismiss": "Dismiss",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
@@ -293,7 +293,7 @@
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
   "interaction_modal.on_another_server": "On a different server",
   "interaction_modal.on_this_server": "On this server",
-  "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
+  "interaction_modal.other_server_instructions": "Haak en plak hierdie URL in die soek area van jou gunseling toep of die web blaaier waar jy ingeteken is.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
   "interaction_modal.title.favourite": "Favourite {name}'s post",
   "interaction_modal.title.follow": "Follow {name}",
@@ -354,14 +354,14 @@
   "lists.replies_policy.list": "Members of the list",
   "lists.replies_policy.none": "No one",
   "lists.replies_policy.title": "Show replies to:",
-  "lists.search": "Search among people you follow",
+  "lists.search": "Soek tussen mense wat jy volg",
   "lists.subheading": "Your lists",
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Loading...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
   "missing_indicator.label": "Not found",
   "missing_indicator.sublabel": "This resource could not be found",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Jou rekening {disabledAccount} is tans onaktief omdat jy na {movedToAccount} verhuis het.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "Hide notifications from this user?",
   "mute_modal.indefinite": "Indefinite",
@@ -521,7 +521,7 @@
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "hits-etiket",
   "search_popout.tips.status": "status",
-  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
+  "search_popout.tips.text": "Eenvoudige teks bring name, gebruiker name en hits-etikette wat ooreenstem, terug",
   "search_popout.tips.user": "gebruiker",
   "search_results.accounts": "Mense",
   "search_results.all": "Alles",
@@ -530,7 +530,7 @@
   "search_results.statuses": "Toots",
   "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
   "search_results.title": "Soek vir {q}",
-  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
+  "search_results.total": "{count, number} {count, plural, one {resultaat} other {resultate}}",
   "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
   "server_banner.active_users": "active users",
   "server_banner.administered_by": "Administrasie deur:",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 0392a58b5..60d62c8cd 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -189,7 +189,7 @@
   "dismissable_banner.explore_links": "هذه القصص الإخبارية يتحدث عنها أشخاص على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.",
   "dismissable_banner.explore_statuses": "هذه المشاركات من هذا الخوادم الأخرى في الشبكة اللامركزية تجذب انتباه المستخدمين على هذا الخادم الآن.",
   "dismissable_banner.explore_tags": "هذه العلامات تكتسب جذب بين الناس على هذا الخوادم الأخرى للشبكة اللامركزية في الوقت الحالي.",
-  "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
+  "dismissable_banner.public_timeline": "هذه هي أحدث المشاركات العامة من الناس على هذا الخادم والخوادم الأخرى للشبكة اللامركزية التي يعرفها هذا الخادم.",
   "embed.instructions": "يمكنكم إدماج هذا المنشور على موقعكم الإلكتروني عن طريق نسخ الشفرة أدناه.",
   "embed.preview": "هكذا ما سوف يبدو عليه:",
   "emoji_button.activity": "الأنشطة",
@@ -534,7 +534,7 @@
   "server_banner.about_active_users": "الأشخاص الذين يستخدمون هذا الخادم خلال الأيام الثلاثين الأخيرة (المستخدمون النشطون شهريًا)",
   "server_banner.active_users": "مستخدم نشط",
   "server_banner.administered_by": "يُديره:",
-  "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية المدعومة من {mastodon}.",
+  "server_banner.introduction": "{domain} هو جزء من الشبكة الاجتماعية اللامركزية التي تعمل بواسطة {mastodon}.",
   "server_banner.learn_more": "تعلم المزيد",
   "server_banner.server_stats": "إحصائيات الخادم:",
   "sign_in_banner.create_account": "أنشئ حسابًا",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 4af5614b6..c83c1087c 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -1,24 +1,24 @@
 {
   "about.blocks": "Модерирани сървъри",
   "about.contact": "За контакти:",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
+  "about.disclaimer": "Mastodon е безплатен софтуер с отворен изходен код и търговска марка Mastodon gGmbH.",
   "about.domain_blocks.comment": "Причина",
   "about.domain_blocks.domain": "Домейн",
   "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
-  "about.domain_blocks.severity": "Severity",
+  "about.domain_blocks.severity": "Взискателност",
   "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
   "about.domain_blocks.silenced.title": "Ограничено",
-  "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
+  "about.domain_blocks.suspended.explanation": "Никакви данни от този сървър няма да се обработват, съхранявани или обменяни, правещи невъзможно всяко взаимодействие или комуникация с потребители от тези сървъри.",
+  "about.domain_blocks.suspended.title": "Спряно",
+  "about.not_available": "Тази информация не е била направена налична на този сървър.",
+  "about.powered_by": "Децентрализирана социална мрежа, захранвана от {mastodon}",
   "about.rules": "Правила на сървъра",
   "account.account_note_header": "Бележка",
   "account.add_or_remove_from_list": "Добави или премахни от списъците",
   "account.badges.bot": "Бот",
   "account.badges.group": "Група",
-  "account.block": "Блокирай",
-  "account.block_domain": "скрий всичко от (домейн)",
+  "account.block": "Блокиране на @{name}",
+  "account.block_domain": "Блокиране на домейн {domain}",
   "account.blocked": "Блокирани",
   "account.browse_more_on_origin_server": "Разглеждане на още в първообразния профил",
   "account.cancel_follow_request": "Withdraw follow request",
@@ -28,25 +28,25 @@
   "account.edit_profile": "Редактиране на профила",
   "account.enable_notifications": "Уведомявайте ме, когато @{name} публикува",
   "account.endorse": "Характеристика на профила",
-  "account.featured_tags.last_status_at": "Last post on {date}",
+  "account.featured_tags.last_status_at": "Последна публикация на {date}",
   "account.featured_tags.last_status_never": "Няма публикации",
   "account.featured_tags.title": "{name}'s featured hashtags",
   "account.follow": "Последване",
   "account.followers": "Последователи",
-  "account.followers.empty": "Все още никой не следва този потребител.",
-  "account.followers_counter": "{count, plural, one {{counter} Последовател} other {{counter} Последователи}}",
+  "account.followers.empty": "Още никой не следва потребителя.",
+  "account.followers_counter": "{count, plural, one {{counter} последовател} other {{counter} последователи}}",
   "account.following": "Последвани",
-  "account.following_counter": "{count, plural, one {{counter} Последван} other {{counter} Последвани}}",
-  "account.follows.empty": "Този потребител все още не следва никого.",
-  "account.follows_you": "Твой последовател",
-  "account.go_to_profile": "Go to profile",
+  "account.following_counter": "{count, plural, one {{counter} последван} other {{counter} последвани}}",
+  "account.follows.empty": "Потребителят още никого не следва.",
+  "account.follows_you": "Ваш последовател",
+  "account.go_to_profile": "Към профила",
   "account.hide_reblogs": "Скриване на споделяния от @{name}",
-  "account.joined_short": "Joined",
+  "account.joined_short": "Присъединени",
   "account.languages": "Change subscribed languages",
   "account.link_verified_on": "Собствеността върху тази връзка е проверена на {date}",
-  "account.locked_info": "Този акаунт е поверително заключен. Собственикът преглежда ръчно кой може да го следва.",
+  "account.locked_info": "Състоянието за поверителността на акаунта е зададено заключено. Собственикът преглежда ръчно от кого може да се следва.",
   "account.media": "Мултимедия",
-  "account.mention": "Споменаване",
+  "account.mention": "Споменаване на @{name}",
   "account.moved_to": "{name} has indicated that their new account is now:",
   "account.mute": "Заглушаване на @{name}",
   "account.mute_notifications": "Заглушаване на известия от @{name}",
@@ -55,24 +55,24 @@
   "account.posts_with_replies": "Публикации и отговори",
   "account.report": "Докладване на @{name}",
   "account.requested": "Чака се одобрение. Щракнете за отмяна на заявката за последване",
-  "account.share": "Споделяне на @{name} профила",
+  "account.share": "Споделяне на профила на @{name}",
   "account.show_reblogs": "Показване на споделяния от @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} Публикация} other {{counter} Публикации}}",
+  "account.statuses_counter": "{count, plural, one {{counter} публикация} other {{counter} публикации}}",
   "account.unblock": "Отблокиране на @{name}",
-  "account.unblock_domain": "Unhide {domain}",
-  "account.unblock_short": "Отблокирай",
+  "account.unblock_domain": "Отблокиране на домейн {domain}",
+  "account.unblock_short": "Отблокирване",
   "account.unendorse": "Не включвайте в профила",
-  "account.unfollow": "Не следвай",
+  "account.unfollow": "Стоп на следването",
   "account.unmute": "Без заглушаването на @{name}",
-  "account.unmute_notifications": "Раззаглушаване на известия от @{name}",
-  "account.unmute_short": "Unmute",
+  "account.unmute_notifications": "Без заглушаване на известия от @{name}",
+  "account.unmute_short": "Без заглушаването",
   "account_note.placeholder": "Щракнете, за да добавите бележка",
   "admin.dashboard.daily_retention": "Ниво на задържани на потребители след регистрация, в дни",
   "admin.dashboard.monthly_retention": "Ниво на задържани на потребители след регистрация, в месеци",
   "admin.dashboard.retention.average": "Средно",
-  "admin.dashboard.retention.cohort": "Месец на регистрацията",
+  "admin.dashboard.retention.cohort": "Регистрации за месец",
   "admin.dashboard.retention.cohort_size": "Нови потребители",
-  "alert.rate_limited.message": "Моля, опитайте отново след {retry_time, time, medium}.",
+  "alert.rate_limited.message": "Опитайте пак след {retry_time, time, medium}.",
   "alert.rate_limited.title": "Скоростта е ограничена",
   "alert.unexpected.message": "Възникна неочаквана грешка.",
   "alert.unexpected.title": "Опаа!",
@@ -81,28 +81,28 @@
   "audio.hide": "Скриване на звука",
   "autosuggest_hashtag.per_week": "{count} на седмица",
   "boost_modal.combo": "Можете да натиснете {combo}, за да пропуснете това следващия път",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
-  "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
-  "bundle_column_error.error.title": "Oh, no!",
-  "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
+  "bundle_column_error.copy_stacktrace": "Копиране на доклада за грешката",
+  "bundle_column_error.error.body": "Заявената страница не може да се изобрази. Това може да е заради грешка в кода ни или проблем със съвместимостта на браузъра.",
+  "bundle_column_error.error.title": "О, не!",
+  "bundle_column_error.network.body": "Възникна грешка, опитвайки зареждане на страницата. Това може да е заради временен проблем с интернет връзката ви или този сървър.",
   "bundle_column_error.network.title": "Мрежова грешка",
   "bundle_column_error.retry": "Нов опит",
   "bundle_column_error.return": "Обратно към началото",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.routing.body": "Заявената страница не може да се намери. Сигурни ли сте, че URL адресът в адресната лента е правилен?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Затваряне",
   "bundle_modal_error.message": "Нещо се обърка, зареждайки компонента.",
   "bundle_modal_error.retry": "Нов опит",
   "closed_registrations.other_server_instructions": "Поради това че Mastodon е децентрализиран, можеш да създадеш акаунт на друг сървър, от който можеш да комуникираш с този.",
-  "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
-  "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
-  "closed_registrations_modal.title": "Signing up on Mastodon",
-  "column.about": "About",
+  "closed_registrations_modal.description": "Създаването на акаунт в {domain} сега не е възможно, но обърнете внимание, че нямате нужда от акаунт конкретно на {domain}, за да ползвате Mastodon.",
+  "closed_registrations_modal.find_another_server": "Намиране на друг сървър",
+  "closed_registrations_modal.preamble": "Mastodon е децентрализиран, така че няма значение къде създавате акаунта си, ще може да последвате и взаимодействате с всеки на този сървър. Може дори да стартирате свой собствен сървър!",
+  "closed_registrations_modal.title": "Регистриране в Mastodon",
+  "column.about": "Относно",
   "column.blocks": "Блокирани потребители",
   "column.bookmarks": "Отметки",
   "column.community": "Локална емисия",
-  "column.direct": "Лични съобщения",
+  "column.direct": "Директни съобщения",
   "column.directory": "Разглеждане на профили",
   "column.domain_blocks": "Блокирани домейни",
   "column.favourites": "Любими",
@@ -127,11 +127,11 @@
   "compose.language.change": "Смяна на езика",
   "compose.language.search": "Търсене на езици...",
   "compose_form.direct_message_warning_learn_more": "Още информация",
-  "compose_form.encryption_warning": "Поставете в Мастодон не са криптирани от край до край. Не споделяйте никаква чувствителна информация.",
+  "compose_form.encryption_warning": "Публикациите в Mastodon не са криптирани от край до край. Не споделяйте никаква чувствителна информация там.",
   "compose_form.hashtag_warning": "Тази публикация няма да бъде изброена под нито един хаштаг, тъй като е скрита. Само публични публикации могат да се търсят по хаштаг.",
   "compose_form.lock_disclaimer": "Вашият акаунт не е {locked}. Всеки може да ви последва, за да прегледа вашите публикации само за последователи.",
   "compose_form.lock_disclaimer.lock": "заключено",
-  "compose_form.placeholder": "Какво си мислиш?",
+  "compose_form.placeholder": "Какво мислите?",
   "compose_form.poll.add_option": "Добавяне на избор",
   "compose_form.poll.duration": "Времетраене на анкетата",
   "compose_form.poll.option_placeholder": "Избор {number}",
@@ -146,51 +146,51 @@
   "compose_form.sensitive.unmarked": "{count, plural, one {Мултимедията не е маркирана като деликатна} other {Мултимедиите не са маркирани като деликатни}}",
   "compose_form.spoiler.marked": "Текстът е скрит зад предупреждение",
   "compose_form.spoiler.unmarked": "Текстът не е скрит",
-  "compose_form.spoiler_placeholder": "Content warning",
+  "compose_form.spoiler_placeholder": "Тук напишете предупреждението си",
   "confirmation_modal.cancel": "Отказ",
   "confirmations.block.block_and_report": "Блокиране и докладване",
   "confirmations.block.confirm": "Блокиране",
   "confirmations.block.message": "Наистина ли искате да блокирате {name}?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "Оттегляне на заявката",
+  "confirmations.cancel_follow_request.message": "Наистина ли искате да оттеглите заявката си да последвате {name}?",
   "confirmations.delete.confirm": "Изтриване",
   "confirmations.delete.message": "Наистина ли искате да изтриете публикацията?",
   "confirmations.delete_list.confirm": "Изтриване",
   "confirmations.delete_list.message": "Наистина ли искате да изтриете завинаги този списък?",
-  "confirmations.discard_edit_media.confirm": "Отмени",
-  "confirmations.discard_edit_media.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.mute.confirm": "Заглушаване",
   "confirmations.mute.explanation": "Това ще скрие публикации от тях и публикации, които ги споменават, но все пак ще им позволи да виждат вашите публикации и да ви следват.",
-  "confirmations.mute.message": "Сигурни ли сте, че искате да заглушите {name}?",
+  "confirmations.mute.message": "Наистина ли искате да заглушите {name}?",
   "confirmations.redraft.confirm": "Изтриване и преработване",
   "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? You will lose all replies, boosts and favourites to it.",
   "confirmations.reply.confirm": "Отговор",
   "confirmations.reply.message": "Отговарянето сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
-  "confirmations.unfollow.confirm": "Отследване",
+  "confirmations.unfollow.confirm": "Без следване",
   "confirmations.unfollow.message": "Наистина ли искате да не следвате {name}?",
   "conversation.delete": "Изтриване на разговора",
   "conversation.mark_as_read": "Маркиране като прочетено",
   "conversation.open": "Преглед на разговора",
   "conversation.with": "С {names}",
   "copypaste.copied": "Копирано",
-  "copypaste.copy": "Copy",
+  "copypaste.copy": "Копиране",
   "directory.federated": "От познат федивърс",
   "directory.local": "Само от {domain}",
   "directory.new_arrivals": "Новодошли",
   "directory.recently_active": "Наскоро активни",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
-  "embed.instructions": "Embed this status on your website by copying the code below.",
+  "disabled_account_banner.account_settings": "Настройки на акаунта",
+  "disabled_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен.",
+  "dismissable_banner.community_timeline": "Ето най-скорошните публични публикации от хора, чиито акаунти са разположени в {domain}.",
+  "dismissable_banner.dismiss": "Отхвърляне",
+  "dismissable_banner.explore_links": "Тези новини се разказват от хората в този и други сървъри на децентрализираната мрежа точно сега.",
+  "dismissable_banner.explore_statuses": "Тези публикации от този и други сървъри в децентрализираната мрежа набират популярност сега на този сървър.",
+  "dismissable_banner.explore_tags": "Тези хаштагове сега набират популярност сред хората в този и други сървъри на децентрализирата мрежа.",
+  "dismissable_banner.public_timeline": "Ето най-скорошните публични публикации от хора в този и други сървъри на децентрализираната мрежа, за които този сървър познава.",
+  "embed.instructions": "Вградете публикацията в уебсайта си, копирайки кода долу.",
   "embed.preview": "Ето как ще изглежда:",
   "emoji_button.activity": "Дейност",
   "emoji_button.clear": "Изчистване",
@@ -223,7 +223,7 @@
   "empty_column.hashtag": "Още няма нищо в този хаштаг.",
   "empty_column.home": "Вашата начална емисия е празна! Посетете {public} или използвайте търсене, за да започнете и да се запознаете с други потребители.",
   "empty_column.home.suggestions": "Преглед на някои предложения",
-  "empty_column.list": "There is nothing in this list yet.",
+  "empty_column.list": "Още няма нищо в този списък. Когато членовете на списъка публикуват нови публикации, то те ще се появят тук.",
   "empty_column.lists": "Все още нямате списъци. Когато създадете такъв, той ще се покаже тук.",
   "empty_column.mutes": "Още не сте заглушавали потребители.",
   "empty_column.notifications": "Все още нямате известия. Взаимодействайте с другите, за да започнете разговора.",
@@ -231,7 +231,7 @@
   "error.unexpected_crash.explanation": "Поради грешка в нашия код или проблем със съвместимостта на браузъра, тази страница не може да се покаже правилно.",
   "error.unexpected_crash.explanation_addons": "Тази страница не може да се покаже правилно. Тази грешка вероятно е причинена от добавка на браузъра или инструменти за автоматичен превод.",
   "error.unexpected_crash.next_steps": "Опитайте да опресните страницата. Ако това не помогне, все още можете да използвате Mastodon чрез различен браузър или приложение.",
-  "error.unexpected_crash.next_steps_addons": "Опитайте да ги деактивирате и да опресните страницата. Ако това не помогне, може все още да използвате Mastodon чрез различен браузър или приложение.",
+  "error.unexpected_crash.next_steps_addons": "Опитайте се да ги изключите и да опресните страницата. Ако това не помогне, то още може да използвате Mastodon чрез различен браузър или приложение.",
   "errors.unexpected_crash.copy_stacktrace": "Копиране на stacktrace-а в клипборда",
   "errors.unexpected_crash.report_issue": "Сигнал за проблем",
   "explore.search_results": "Резултати от търсенето",
@@ -243,32 +243,32 @@
   "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
   "filter_modal.added.context_mismatch_title": "Несъвпадение на контекста!",
   "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
-  "filter_modal.added.expired_title": "Изтекал филтър!",
+  "filter_modal.added.expired_title": "Изтекъл филтър!",
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
-  "filter_modal.added.review_and_configure_title": "Настройки на филтър",
+  "filter_modal.added.review_and_configure_title": "Настройки на филтъра",
   "filter_modal.added.settings_link": "страница с настройки",
   "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
   "filter_modal.added.title": "Филтърът е добавен!",
   "filter_modal.select_filter.context_mismatch": "не е приложимо за този контекст",
   "filter_modal.select_filter.expired": "изтекло",
   "filter_modal.select_filter.prompt_new": "Нова категория: {name}",
-  "filter_modal.select_filter.search": "Търси или създай",
+  "filter_modal.select_filter.search": "Търсене или създаване",
   "filter_modal.select_filter.subtitle": "Изберете съществуваща категория или създайте нова",
-  "filter_modal.select_filter.title": "Филтриране на поста",
-  "filter_modal.title.status": "Филтрирай пост",
+  "filter_modal.select_filter.title": "Филтриране на публ.",
+  "filter_modal.title.status": "Филтриране на публ.",
   "follow_recommendations.done": "Готово",
-  "follow_recommendations.heading": "Следвайте хора, които харесвате, за да виждате техните съобщения! Ето някои предложения.",
-  "follow_recommendations.lead": "Съобщения от хора, които следвате, ще се показват в хронологичен ред на вашата главна страница. Не се страхувайте, че ще сгрешите, по всяко време много лесно можете да спрете да ги следвате!",
+  "follow_recommendations.heading": "Следвайте хора, от които харесвате да виждате публикации! Ето някои предложения.",
+  "follow_recommendations.lead": "Публикациите от хората, които следвате, ще се показват в хронологично в началния ви инфопоток. Не се страхувайте, че ще сгрешите, по всяко време много лесно може да спрете да ги следвате!",
   "follow_request.authorize": "Упълномощаване",
   "follow_request.reject": "Отхвърляне",
   "follow_requests.unlocked_explanation": "Въпреки че акаунтът ви не е заключен, служителите на {domain} помислиха, че може да искате да преглеждате ръчно заявките за последване на тези профили.",
-  "footer.about": "About",
-  "footer.directory": "Profiles directory",
-  "footer.get_app": "Get the app",
-  "footer.invite": "Invite people",
+  "footer.about": "Относно",
+  "footer.directory": "Директория на профилите",
+  "footer.get_app": "Вземане на приложението",
+  "footer.invite": "Поканване на хора",
   "footer.keyboard_shortcuts": "Клавишни съчетания",
   "footer.privacy_policy": "Политика за поверителност",
-  "footer.source_code": "View source code",
+  "footer.source_code": "Преглед на изходния код",
   "generic.saved": "Запазено",
   "getting_started.heading": "Първи стъпки",
   "hashtag.column_header.tag_mode.all": "и {additional}",
@@ -291,33 +291,33 @@
   "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
   "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
-  "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
-  "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
+  "interaction_modal.on_another_server": "На различен сървър",
+  "interaction_modal.on_this_server": "На този сървър",
+  "interaction_modal.other_server_instructions": "Просто копипействате URL адреса в лентата за търсене на любимото си приложение или уеб интерфейс, където сте влезли.",
+  "interaction_modal.preamble": "Откак Mastodon е децентрализиран, може да употребявате съществуващ акаунт, разположен на друг сървър на Mastodon или съвместима платформа, ако нямате акаунт на този сървър.",
+  "interaction_modal.title.favourite": "Любими публикации на {name}",
   "interaction_modal.title.follow": "Последване на {name}",
   "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.title.reply": "Отговаряне на публикацията на {name}",
   "intervals.full.days": "{number, plural, one {# ден} other {# дни}}",
   "intervals.full.hours": "{number, plural, one {# час} other {# часа}}",
   "intervals.full.minutes": "{number, plural, one {# минута} other {# минути}}",
-  "keyboard_shortcuts.back": "за придвижване назад",
-  "keyboard_shortcuts.blocked": "за отваряне на списъка с блокирани потребители",
+  "keyboard_shortcuts.back": "Навигиране назад",
+  "keyboard_shortcuts.blocked": "Отваряне на списъка с блокирани потребители",
   "keyboard_shortcuts.boost": "за споделяне",
   "keyboard_shortcuts.column": "Съсредоточение на колона",
   "keyboard_shortcuts.compose": "за фокусиране на текстовото пространство за композиране",
   "keyboard_shortcuts.description": "Описание",
-  "keyboard_shortcuts.direct": "to open direct messages column",
-  "keyboard_shortcuts.down": "за придвижване надолу в списъка",
-  "keyboard_shortcuts.enter": "to open status",
+  "keyboard_shortcuts.direct": "за отваряне на колоната с директни съобщения",
+  "keyboard_shortcuts.down": "Преместване надолу в списъка",
+  "keyboard_shortcuts.enter": "Отваряне на публикация",
   "keyboard_shortcuts.favourite": "Любима публикация",
   "keyboard_shortcuts.favourites": "Отваряне на списъка с любими",
   "keyboard_shortcuts.federated": "да отвори обединена хронология",
   "keyboard_shortcuts.heading": "Клавишни съчетания",
   "keyboard_shortcuts.home": "за отваряне на началната емисия",
   "keyboard_shortcuts.hotkey": "Бърз клавиш",
-  "keyboard_shortcuts.legend": "за показване на тази легенда",
+  "keyboard_shortcuts.legend": "Показване на тази легенда",
   "keyboard_shortcuts.local": "за отваряне на локалната емисия",
   "keyboard_shortcuts.mention": "Споменаване на автор",
   "keyboard_shortcuts.muted": "Отваряне на списъка със заглушени потребители",
@@ -332,17 +332,17 @@
   "keyboard_shortcuts.spoilers": "за показване/скриване на ПС полето",
   "keyboard_shortcuts.start": "за отваряне на колоната \"първи стъпки\"",
   "keyboard_shortcuts.toggle_hidden": "за показване/скриване на текст зад ПС",
-  "keyboard_shortcuts.toggle_sensitivity": "Показване/скриване на мултимедия",
+  "keyboard_shortcuts.toggle_sensitivity": "Показване/скриване на мултимедията",
   "keyboard_shortcuts.toot": "Начало на нова публикация",
   "keyboard_shortcuts.unfocus": "за дефокусиране на текстовото поле за композиране/търсене",
-  "keyboard_shortcuts.up": "за придвижване нагоре в списъка",
+  "keyboard_shortcuts.up": "Преместване нагоре в списъка",
   "lightbox.close": "Затваряне",
-  "lightbox.compress": "Компресиране на полето за преглед на изображение",
-  "lightbox.expand": "Разгъване на полето за преглед на изображение",
+  "lightbox.compress": "Свиване на полето за преглед на образи",
+  "lightbox.expand": "Разгъване на полето за преглед на образи",
   "lightbox.next": "Напред",
   "lightbox.previous": "Назад",
   "limited_account_hint.action": "Покажи профила въпреки това",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.title": "Този профил е бил скрит от модераторита на {domain}.",
   "lists.account.add": "Добавяне към списък",
   "lists.account.remove": "Премахване от списък",
   "lists.delete": "Изтриване на списък",
@@ -361,11 +361,11 @@
   "media_gallery.toggle_visible": "Скриване на {number, plural, one {изображение} other {изображения}}",
   "missing_indicator.label": "Не е намерено",
   "missing_indicator.sublabel": "Ресурсът не може да се намери",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Вашият акаунт {disabledAccount} сега е изключен, защото се преместихте в {movedToAccount}.",
   "mute_modal.duration": "Времетраене",
   "mute_modal.hide_notifications": "Скривате ли известията от този потребител?",
   "mute_modal.indefinite": "Неопределено",
-  "navigation_bar.about": "About",
+  "navigation_bar.about": "За тази инстанция",
   "navigation_bar.blocks": "Блокирани потребители",
   "navigation_bar.bookmarks": "Отметки",
   "navigation_bar.community_timeline": "Локална емисия",
@@ -388,7 +388,7 @@
   "navigation_bar.public_timeline": "Публичен канал",
   "navigation_bar.search": "Търсене",
   "navigation_bar.security": "Сигурност",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
+  "not_signed_in_indicator.not_signed_in": "Трябва да се регистрирате за достъп до този ресурс.",
   "notification.admin.report": "{name} докладва {target}",
   "notification.admin.sign_up": "{name} се регистрира",
   "notification.favourite": "{name} направи любима ваша публикация",
@@ -456,17 +456,17 @@
   "privacy.public.short": "Публично",
   "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
   "privacy.unlisted.short": "Скрито",
-  "privacy_policy.last_updated": "Last updated {date}",
+  "privacy_policy.last_updated": "Последно осъвременяване на {date}",
   "privacy_policy.title": "Политика за поверителност",
   "refresh": "Опресняване",
   "regeneration_indicator.label": "Зареждане…",
   "regeneration_indicator.sublabel": "Вашата начална емисия се подготвя!",
   "relative_time.days": "{number}д.",
-  "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
-  "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
+  "relative_time.full.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 {# minute} other {# minutes}} ago",
-  "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
+  "relative_time.full.minutes": "преди {number, plural, one {# минута} other {# минути}}",
+  "relative_time.full.seconds": "преди {number, plural, one {# секунда} other {# секунди}}",
   "relative_time.hours": "{number}ч.",
   "relative_time.just_now": "сега",
   "relative_time.minutes": "{number}м.",
@@ -478,45 +478,45 @@
   "report.categories.other": "Друго",
   "report.categories.spam": "Спам",
   "report.categories.violation": "Съдържание, нарушаващо едно или повече правила на сървъра",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.subtitle": "Изберете най-доброто съвпадение",
+  "report.category.title": "Разкажете ни какво се случва с това: {type}",
   "report.category.title_account": "профил",
   "report.category.title_status": "публикация",
   "report.close": "Готово",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.comment.title": "Има ли нещо друго, което смятате, че трябва да знаем?",
   "report.forward": "Препращане до {target}",
   "report.forward_hint": "Акаунтът е от друг сървър. Ще изпратите ли анонимно копие на доклада и там?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "report.mute": "Заглушаване",
+  "report.mute_explanation": "Няма да виждате публикациите на това лице. То още може да ви следва и да вижда публикациите ви и няма да знае, че е заглушено.",
+  "report.next": "Напред",
   "report.placeholder": "Допълнителни коментари",
   "report.reasons.dislike": "Не ми харесва",
   "report.reasons.dislike_description": "Не е нещо, които искам да виждам",
   "report.reasons.other": "Нещо друго е",
-  "report.reasons.other_description": "The issue does not fit into other categories",
+  "report.reasons.other_description": "Проблемът не попада в нито една от другите категории",
   "report.reasons.spam": "Спам е",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
+  "report.reasons.spam_description": "Зловредни връзки, фалшиви взаимодействия, или повтарящи се отговори",
   "report.reasons.violation": "Нарушава правилата на сървъра",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
+  "report.reasons.violation_description": "Знаете, че нарушава особени правила",
+  "report.rules.subtitle": "Изберете всичко, което да се прилага",
   "report.rules.title": "Кои правила са нарушени?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.statuses.subtitle": "Изберете всичко, което да се прилага",
+  "report.statuses.title": "Има ли някакви публикации, подкрепящи този доклад?",
   "report.submit": "Подаване",
   "report.target": "Докладване на {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
+  "report.thanks.take_action": "Ето възможностите ви за управление какво виждате в Mastodon:",
+  "report.thanks.take_action_actionable": "Докато преглеждаме това, може да предприемете действие срещу @{name}:",
   "report.thanks.title": "Не искате ли да виждате това?",
   "report.thanks.title_actionable": "Благодарности за докладването, ще го прегледаме.",
   "report.unfollow": "Стоп на следването на @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
-  "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached",
-  "report_notification.categories.other": "Other",
-  "report_notification.categories.spam": "Spam",
-  "report_notification.categories.violation": "Rule violation",
-  "report_notification.open": "Open report",
+  "report.unfollow_explanation": "Последвали сте този акаунт. За да не виждате повече публикациите му в началния си инфоканал, то спрете да го следвате.",
+  "report_notification.attached_statuses": "прикачено {count, plural, one {{count} публикация} other {{count} публикации}}",
+  "report_notification.categories.other": "Друго",
+  "report_notification.categories.spam": "Спам",
+  "report_notification.categories.violation": "Нарушение на правилото",
+  "report_notification.open": "Отваряне на доклада",
   "search.placeholder": "Търсене",
-  "search.search_or_paste": "Search or paste URL",
+  "search.search_or_paste": "Търсене или поставяне на URL адрес",
   "search_popout.search_format": "Формат за разширено търсене",
   "search_popout.tips.full_text": "Simple text returns statuses you have written, favourited, boosted, or have been mentioned in, as well as matching usernames, display names, and hashtags.",
   "search_popout.tips.hashtag": "хаштаг",
@@ -524,22 +524,22 @@
   "search_popout.tips.text": "Обикновеният текст връща съответстващи показвани имена, потребителски имена и хаштагове",
   "search_popout.tips.user": "потребител",
   "search_results.accounts": "Хора",
-  "search_results.all": "All",
+  "search_results.all": "Всичко",
   "search_results.hashtags": "Хаштагове",
   "search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене",
   "search_results.statuses": "Публикации",
   "search_results.statuses_fts_disabled": "Търсенето на публикации по тяхното съдържание не е активирано за този Mastodon сървър.",
-  "search_results.title": "Search for {q}",
+  "search_results.title": "Търсене за {q}",
   "search_results.total": "{count, number} {count, plural, one {резултат} other {резултата}}",
-  "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
-  "server_banner.active_users": "active users",
-  "server_banner.administered_by": "Administered by:",
-  "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
-  "server_banner.learn_more": "Learn more",
-  "server_banner.server_stats": "Server stats:",
-  "sign_in_banner.create_account": "Create account",
-  "sign_in_banner.sign_in": "Sign in",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.",
+  "server_banner.about_active_users": "Ползващите сървъра през последните 30 дни (дейните месечно потребители)",
+  "server_banner.active_users": "дейни потребители",
+  "server_banner.administered_by": "Администрира се от:",
+  "server_banner.introduction": "{domain} е част от децентрализираната социална мрежа, поддържана от {mastodon}.",
+  "server_banner.learn_more": "Научете повече",
+  "server_banner.server_stats": "Статистика на сървъра:",
+  "sign_in_banner.create_account": "Създаване на акаунт",
+  "sign_in_banner.sign_in": "Вход",
+  "sign_in_banner.text": "Влезте, за да последвате профили или хаштагове, любимо, споделяне и отговаряне на публикации или взаимодействие от акаунта ви на друг сървър.",
   "status.admin_account": "Отваряне на интерфейс за модериране за @{name}",
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "Блокиране на @{name}",
@@ -576,7 +576,7 @@
   "status.reblogs.empty": "Все още никой не е споделил тази публикация. Когато някой го направи, ще се покаже тук.",
   "status.redraft": "Изтриване и преработване",
   "status.remove_bookmark": "Премахване на отметката",
-  "status.replied_to": "Replied to {name}",
+  "status.replied_to": "Отговори на {name}",
   "status.reply": "Отговор",
   "status.replyAll": "Отговор на тема",
   "status.report": "Докладване на @{name}",
@@ -587,15 +587,15 @@
   "status.show_less_all": "Покажи по-малко за всички",
   "status.show_more": "Показване на повече",
   "status.show_more_all": "Показване на повече за всички",
-  "status.show_original": "Show original",
-  "status.translate": "Translate",
-  "status.translated_from_with": "Translated from {lang} using {provider}",
+  "status.show_original": "Показване на първообраза",
+  "status.translate": "Превод",
+  "status.translated_from_with": "Преведено от {lang}, използвайки {provider}",
   "status.uncached_media_warning": "Не е налично",
   "status.unmute_conversation": "Раззаглушаване на разговор",
   "status.unpin": "Разкачане от профила",
   "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.",
   "subscribed_languages.save": "Запазване на промените",
-  "subscribed_languages.target": "Change subscribed languages for {target}",
+  "subscribed_languages.target": "Смяна на езика за {target}",
   "suggestions.dismiss": "Отхвърляне на предложение",
   "suggestions.header": "Може да се интересувате от…",
   "tabs_bar.federated_timeline": "Обединен",
@@ -611,7 +611,7 @@
   "timeline_hint.resources.followers": "Последователи",
   "timeline_hint.resources.follows": "Последвани",
   "timeline_hint.resources.statuses": "По-стари публикации",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} човек} other {{counter} души}} {days, plural, one {за последния {days} ден} other {за последните {days} дни}}",
   "trends.trending_now": "Налагащи се сега",
   "ui.beforeunload": "Черновата ви ще се загуби, ако излезете от Mastodon.",
   "units.short.billion": "{count}млрд",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index 552118924..c420bb929 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -28,8 +28,8 @@
   "account.edit_profile": "Kemmañ ar profil",
   "account.enable_notifications": "Ma c'hemenn pa vez embannet traoù gant @{name}",
   "account.endorse": "Lakaat war-wel war ar profil",
-  "account.featured_tags.last_status_at": "Kemennad diwezhañ : {date}",
-  "account.featured_tags.last_status_never": "Kemennad ebet",
+  "account.featured_tags.last_status_at": "Kannad diwezhañ : {date}",
+  "account.featured_tags.last_status_never": "Kannad ebet",
   "account.featured_tags.title": "{name}'s featured hashtags",
   "account.follow": "Heuliañ",
   "account.followers": "Tud koumanantet",
@@ -57,7 +57,7 @@
   "account.requested": "O c'hortoz an asant. Klikit evit nullañ ar goulenn heuliañ",
   "account.share": "Skignañ profil @{name}",
   "account.show_reblogs": "Diskouez skignadennoù @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} C'hemennad} two {{counter} Gemennad} other {{counter} a Gemennad}}",
+  "account.statuses_counter": "{count, plural, one {{counter} C'hannad} two {{counter} Gannad} other {{counter} a Gannadoù}}",
   "account.unblock": "Diverzañ @{name}",
   "account.unblock_domain": "Diverzañ an domani {domain}",
   "account.unblock_short": "Distankañ",
@@ -102,7 +102,7 @@
   "column.blocks": "Implijer·ezed·ien berzet",
   "column.bookmarks": "Sinedoù",
   "column.community": "Red-amzer lec'hel",
-  "column.direct": "Direct messages",
+  "column.direct": "Kemennad eeun",
   "column.directory": "Mont a-dreuz ar profiloù",
   "column.domain_blocks": "Domani berzet",
   "column.favourites": "Muiañ-karet",
@@ -111,7 +111,7 @@
   "column.lists": "Listennoù",
   "column.mutes": "Implijer·ion·ezed kuzhet",
   "column.notifications": "Kemennoù",
-  "column.pins": "Kemennadoù spilhennet",
+  "column.pins": "Kannadoù spilhennet",
   "column.public": "Red-amzer kevreet",
   "column_back_button.label": "Distro",
   "column_header.hide_settings": "Kuzhat an arventennoù",
@@ -127,9 +127,9 @@
   "compose.language.change": "Cheñch yezh",
   "compose.language.search": "Search languages...",
   "compose_form.direct_message_warning_learn_more": "Gouzout hiroc'h",
-  "compose_form.encryption_warning": "Kemennadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.",
-  "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hemennad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hemennadoù foran a c'hall bezañ klasket dre c'her-klik.",
-  "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kemennadoù prevez.",
+  "compose_form.encryption_warning": "Kannadoù war Mastodon na vezont ket sifret penn-da-benn. Na rannit ket titouroù kizidik dre Mastodon.",
+  "compose_form.hashtag_warning": "Ne vo ket listennet ar c'hannad-mañ dindan gerioù-klik ebet dre m'eo anlistennet. N'eus nemet ar c'hannadoù foran a c'hall bezañ klasket dre c'her-klik.",
+  "compose_form.lock_disclaimer": "N'eo ket {locked} ho kont. An holl a c'hal ho heuliañ evit gwelet ho kannadoù prevez.",
   "compose_form.lock_disclaimer.lock": "prennet",
   "compose_form.placeholder": "Petra emaoc'h o soñjal e-barzh ?",
   "compose_form.poll.add_option": "Ouzhpenniñ un dibab",
@@ -154,7 +154,7 @@
   "confirmations.cancel_follow_request.confirm": "Withdraw request",
   "confirmations.cancel_follow_request.message": "Ha sur oc'h e fell deoc'h nullañ ho reked evit heuliañ {name} ?",
   "confirmations.delete.confirm": "Dilemel",
-  "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ ?",
+  "confirmations.delete.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hannad-mañ ?",
   "confirmations.delete_list.confirm": "Dilemel",
   "confirmations.delete_list.message": "Ha sur eo hoc'h eus c'hoant da zilemel ar roll-mañ da vat ?",
   "confirmations.discard_edit_media.confirm": "Nac'hañ",
@@ -164,10 +164,10 @@
   "confirmations.logout.confirm": "Digevreañ",
   "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?",
   "confirmations.mute.confirm": "Kuzhat",
-  "confirmations.mute.explanation": "Kement-se a guzho ar c'hemennadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kemennadoù nag a heuliañ ac'hanoc'h.",
+  "confirmations.mute.explanation": "Kement-se a guzho ar c'hannadoù skrivet gantañ·i hag ar re a veneg anezhañ·i, met ne viro ket outañ·i a welet ho kannadoù nag a heuliañ ac'hanoc'h.",
   "confirmations.mute.message": "Ha sur oc'h e fell deoc'h kuzhaat {name} ?",
   "confirmations.redraft.confirm": "Diverkañ ha skrivañ en-dro",
-  "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hemennad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hemennad orin.",
+  "confirmations.redraft.message": "Ha sur oc'h e fell deoc'h dilemel ar c'hannad-mañ hag e adskrivañ ? Kollet e vo ar merkoù « muiañ-karet » hag ar skignadennoù, hag emzivat e vo ar respontoù d'ar c'hannad orin.",
   "confirmations.reply.confirm": "Respont",
   "confirmations.reply.message": "Respont bremañ a zilamo ar gemennadenn emaoc'h o skrivañ. Sur e oc'h e fell deoc'h kenderc'hel ganti?",
   "confirmations.unfollow.confirm": "Diheuliañ",
@@ -184,13 +184,13 @@
   "directory.recently_active": "Oberiant nevez zo",
   "disabled_account_banner.account_settings": "Account settings",
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "Setu kemennadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.",
+  "dismissable_banner.community_timeline": "Setu kannadoù foran nevesañ an dud a zo herberc’hiet o c'hontoù gant {domain}.",
   "dismissable_banner.dismiss": "Dismiss",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
   "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
   "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
   "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
-  "embed.instructions": "Enframmit ar c'hemennad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.",
+  "embed.instructions": "Enframmit ar c'hannad-mañ en ho lec'hienn en ur eilañ ar c'hod amañ-dindan.",
   "embed.preview": "Setu penaos e teuio war wel :",
   "emoji_button.activity": "Obererezh",
   "emoji_button.clear": "Diverkañ",
@@ -208,22 +208,22 @@
   "emoji_button.symbols": "Arouezioù",
   "emoji_button.travel": "Lec'hioù ha Beajoù",
   "empty_column.account_suspended": "Kont ehanet",
-  "empty_column.account_timeline": "Kemennad ebet amañ !",
+  "empty_column.account_timeline": "Kannad ebet amañ !",
   "empty_column.account_unavailable": "Profil dihegerz",
   "empty_column.blocks": "N'eus ket bet berzet implijer·ez ganeoc'h c'hoazh.",
-  "empty_column.bookmarked_statuses": "N'ho peus kemennad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.",
+  "empty_column.bookmarked_statuses": "N'ho peus kannad ebet enrollet en ho sinedoù c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.",
   "empty_column.community": "Goulo eo ar red-amzer lec'hel. Skrivit'ta un dra evit lakaat tan dezhi !",
   "empty_column.direct": "N'ho peus kemennad prevez ebet c'hoazh. Pa vo resevet pe kaset unan ganeoc'h e teuio war wel amañ.",
   "empty_column.domain_blocks": "N'eus domani kuzh ebet c'hoazh.",
   "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
-  "empty_column.favourited_statuses": "N'ho peus kemennad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.",
-  "empty_column.favourites": "Den ebet n'eus lakaet ar c'hemennad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.",
+  "empty_column.favourited_statuses": "N'ho peus kannad muiañ-karet ebet c'hoazh. Pa vo ouzhpennet unan e teuio war wel amañ.",
+  "empty_column.favourites": "Den ebet n'eus ouzhpennet ar c'hannad-mañ en e reoù muiañ-karet c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.",
   "empty_column.follow_recommendations": "Seblant a ra ne vez ket genelet damvenegoù evidoc'h. Gallout a rit implijout un enklask evit klask tud hag a vefe anavezet ganeoc'h pe ergerzhout gerioù-klik diouzh ar c'hiz.",
   "empty_column.follow_requests": "N'ho peus reked heuliañ ebet c'hoazh. Pa vo resevet unan e teuio war wel amañ.",
   "empty_column.hashtag": "N'eus netra er ger-klik-mañ c'hoazh.",
   "empty_column.home": "Goullo eo ho red-amzer degemer! Kit da weladenniñ {public} pe implijit ar c'hlask evit kregiñ ganti ha kejañ gant implijer·ien·ezed all.",
   "empty_column.home.suggestions": "Gwellout damvenegoù",
-  "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kemennadoù nevez gant e izili e teuint war wel amañ.",
+  "empty_column.list": "Goullo eo ar roll-mañ evit c'hoazh. Pa vo embannet kannadoù nevez gant e izili e teuint war wel amañ.",
   "empty_column.lists": "N'ho peus roll ebet c'hoazh. Pa vo krouet unan ganeoc'h e vo diskouezet amañ.",
   "empty_column.mutes": "N'ho peus kuzhet implijer ebet c'hoazh.",
   "empty_column.notifications": "N'ho peus kemenn ebet c'hoazh. Grit gant implijer·ezed·ien all evit loc'hañ ar gomz.",
@@ -238,7 +238,7 @@
   "explore.suggested_follows": "Evidoc'h",
   "explore.title": "Ergerzhit",
   "explore.trending_links": "Keleier",
-  "explore.trending_statuses": "Kemennadoù",
+  "explore.trending_statuses": "Kannadoù",
   "explore.trending_tags": "Gerioù-klik",
   "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
   "filter_modal.added.context_mismatch_title": "Context mismatch!",
@@ -247,18 +247,18 @@
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Filter settings",
   "filter_modal.added.settings_link": "settings page",
-  "filter_modal.added.short_explanation": "Ar c'hemennad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.",
+  "filter_modal.added.short_explanation": "Ar c'hannad-mañ zo bet ouzhpennet d'ar rummad sil-mañ : {title}.",
   "filter_modal.added.title": "Filter added!",
   "filter_modal.select_filter.context_mismatch": "does not apply to this context",
   "filter_modal.select_filter.expired": "expired",
   "filter_modal.select_filter.prompt_new": "New category: {name}",
   "filter_modal.select_filter.search": "Search or create",
   "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
-  "filter_modal.select_filter.title": "Silañ ar c'hemennad-mañ",
-  "filter_modal.title.status": "Silañ ur c'hemennad",
+  "filter_modal.select_filter.title": "Silañ ar c'hannad-mañ",
+  "filter_modal.title.status": "Silañ ur c'hannad",
   "follow_recommendations.done": "Graet",
-  "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hemennadoù ! Setu un nebeud erbedadennoù.",
-  "follow_recommendations.lead": "Kemennadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !",
+  "follow_recommendations.heading": "Heuilhit tud a blijfe deoc'h lenn o c'hannadoù ! Setu un nebeud erbedadennoù.",
+  "follow_recommendations.lead": "Kannadoù gant tud a vez heuliet ganeoc'h a zeuio war wel en urzh kronologel war ho red degemer. Arabat kaout aon ober fazioù, diheuliañ tud a c'hellit ober aes ha forzh pegoulz !",
   "follow_request.authorize": "Aotren",
   "follow_request.reject": "Nac'hañ",
   "follow_requests.unlocked_explanation": "Daoust ma n'eo ket ho kont prennet, skipailh {domain} a soñj e fellfe deoc'h gwiriekaat pedadennoù heuliañ deus ar c'hontoù-se diwar-zorn.",
@@ -287,31 +287,31 @@
   "home.column_settings.show_replies": "Diskouez ar respontoù",
   "home.hide_announcements": "Kuzhat ar c'hemennoù",
   "home.show_announcements": "Diskouez ar c'hemennoù",
-  "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hemennad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag e enrollañ evit diwezhatoc'h.",
-  "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e gemennadoù war ho red degemer.",
-  "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hemennad-mañ evit rannañ anezhañ gant ho heulierien·ezed.",
-  "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hemennad-mañ.",
+  "interaction_modal.description.favourite": "Gant ur gont Mastodon e c'hellit ouzhpennañ ar c'hannad-mañ d'ho re vuiañ-karet evit lakaat an den en deus eñ skrivet da c'houzout e plij deoc'h hag en enrollañ evit diwezhatoc'h.",
+  "interaction_modal.description.follow": "Gant ur gont Mastodon e c'hellit heuliañ {name} evit resev h·e c'h·gannadoù war ho red degemer.",
+  "interaction_modal.description.reblog": "Gant ur gont Mastodon e c'hellit skignañ ar c'hannad-mañ evit rannañ anezhañ gant ho heulierien·ezed.",
+  "interaction_modal.description.reply": "Gant ur gont Mastodon e c'hellit respont d'ar c'hannad-mañ.",
   "interaction_modal.on_another_server": "War ur servijer all",
   "interaction_modal.on_this_server": "War ar servijer-mañ",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Ouzhpennañ kemennad {name} d'ar re vuiañ-karet",
+  "interaction_modal.title.favourite": "Ouzhpennañ kannad {name} d'ar re vuiañ-karet",
   "interaction_modal.title.follow": "Heuliañ {name}",
-  "interaction_modal.title.reblog": "Skignañ kemennad {name}",
-  "interaction_modal.title.reply": "Respont da gemennad {name}",
+  "interaction_modal.title.reblog": "Skignañ kannad {name}",
+  "interaction_modal.title.reply": "Respont da gannad {name}",
   "intervals.full.days": "{number, plural, one {# devezh} other{# a zevezhioù}}",
   "intervals.full.hours": "{number, plural, one {# eurvezh} other{# eurvezh}}",
   "intervals.full.minutes": "{number, plural, one {# munut} other{# a vunutoù}}",
   "keyboard_shortcuts.back": "Distreiñ",
   "keyboard_shortcuts.blocked": "Digeriñ roll an implijer.ezed.rien stanket",
-  "keyboard_shortcuts.boost": "Skignañ ar c'hemennad",
+  "keyboard_shortcuts.boost": "Skignañ ar c'hannad",
   "keyboard_shortcuts.column": "Fokus ar bann",
   "keyboard_shortcuts.compose": "Fokus an takad testenn",
   "keyboard_shortcuts.description": "Deskrivadur",
   "keyboard_shortcuts.direct": "evit digeriñ bann ar c'hemennadoù eeun",
   "keyboard_shortcuts.down": "Diskennañ er roll",
-  "keyboard_shortcuts.enter": "Digeriñ ar c'hemennad",
-  "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hemennad d'ar re vuiañ-karet",
+  "keyboard_shortcuts.enter": "Digeriñ ar c'hannad",
+  "keyboard_shortcuts.favourite": "Ouzhpennañ ar c'hannad d'ar re vuiañ-karet",
   "keyboard_shortcuts.favourites": "Digeriñ roll an toudoù muiañ-karet",
   "keyboard_shortcuts.federated": "Digeriñ ar red-amzer kevreet",
   "keyboard_shortcuts.heading": "Berradennoù klavier",
@@ -324,16 +324,16 @@
   "keyboard_shortcuts.my_profile": "Digeriñ ho profil",
   "keyboard_shortcuts.notifications": "Digeriñ bann kemennoù",
   "keyboard_shortcuts.open_media": "Digeriñ ar media",
-  "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hemennadoù spilhennet",
+  "keyboard_shortcuts.pinned": "Digeriñ roll ar c'hannadoù spilhennet",
   "keyboard_shortcuts.profile": "Digeriñ profil an aozer.ez",
-  "keyboard_shortcuts.reply": "Respont d'ar c'hemennad",
+  "keyboard_shortcuts.reply": "Respont d'ar c'hannad",
   "keyboard_shortcuts.requests": "Digeriñ roll goulennoù heuliañ",
   "keyboard_shortcuts.search": "Fokus barenn klask",
   "keyboard_shortcuts.spoilers": "da guzhat/ziguzhat tachenn CW",
   "keyboard_shortcuts.start": "Digeriñ bann \"Kregiñ\"",
   "keyboard_shortcuts.toggle_hidden": "da guzhat/ziguzhat an desten a-dreñv CW",
   "keyboard_shortcuts.toggle_sensitivity": "da guzhat/ziguzhat ur media",
-  "keyboard_shortcuts.toot": "Kregiñ gant ur c'hemennad nevez",
+  "keyboard_shortcuts.toot": "Kregiñ gant ur c'hannad nevez",
   "keyboard_shortcuts.unfocus": "Difokus an dachenn testenn/klask",
   "keyboard_shortcuts.up": "Pignat er roll",
   "lightbox.close": "Serriñ",
@@ -369,7 +369,7 @@
   "navigation_bar.blocks": "Implijer·ezed·ien berzet",
   "navigation_bar.bookmarks": "Sinedoù",
   "navigation_bar.community_timeline": "Red-amzer lec'hel",
-  "navigation_bar.compose": "Skrivañ ur c'hemennad nevez",
+  "navigation_bar.compose": "Skrivañ ur c'hannad nevez",
   "navigation_bar.direct": "Kemennadoù prevez",
   "navigation_bar.discover": "Dizoleiñ",
   "navigation_bar.domain_blocks": "Domanioù kuzhet",
@@ -383,7 +383,7 @@
   "navigation_bar.logout": "Digennaskañ",
   "navigation_bar.mutes": "Implijer·ion·ezed kuzhet",
   "navigation_bar.personal": "Personel",
-  "navigation_bar.pins": "Kemennadoù spilhennet",
+  "navigation_bar.pins": "Kannadoù spilhennet",
   "navigation_bar.preferences": "Gwellvezioù",
   "navigation_bar.public_timeline": "Red-amzer kevreet",
   "navigation_bar.search": "Klask",
@@ -391,15 +391,15 @@
   "not_signed_in_indicator.not_signed_in": "Ret eo deoc'h kevreañ evit tizhout an danvez-se.",
   "notification.admin.report": "Disklêriet eo bet {target} gant {name}",
   "notification.admin.sign_up": "{name} en·he deus lakaet e·hec'h anv",
-  "notification.favourite": "{name} en·he deus ouzhpennet ho kemennad d'h·e re vuiañ-karet",
+  "notification.favourite": "{name} en·he deus ouzhpennet ho kannad d'h·e re vuiañ-karet",
   "notification.follow": "heuliañ a ra {name} ac'hanoc'h",
   "notification.follow_request": "{name} en/he deus goulennet da heuliañ ac'hanoc'h",
   "notification.mention": "{name} en/he deus meneget ac'hanoc'h",
   "notification.own_poll": "Echu eo ho sontadeg",
   "notification.poll": "Ur sontadeg ho deus mouezhet warnañ a zo echuet",
-  "notification.reblog": "{name} en·he deus skignet ho kemennad",
+  "notification.reblog": "{name} en·he deus skignet ho kannad",
   "notification.status": "{name} en·he deus embannet",
-  "notification.update": "{name} en·he deus kemmet ur c'hemennad",
+  "notification.update": "{name} en·he deus kemmet ur c'hannad",
   "notifications.clear": "Skarzhañ ar c'hemennoù",
   "notifications.clear_confirmation": "Ha sur oc'h e fell deoc'h skarzhañ ho kemennoù penn-da-benn?",
   "notifications.column_settings.admin.report": "Disklêriadurioù nevez :",
@@ -417,7 +417,7 @@
   "notifications.column_settings.reblog": "Skignadennoù:",
   "notifications.column_settings.show": "Diskouez er bann",
   "notifications.column_settings.sound": "Seniñ",
-  "notifications.column_settings.status": "Kemennadoù nevez :",
+  "notifications.column_settings.status": "Kannadoù nevez :",
   "notifications.column_settings.unread_notifications.category": "Kemennoù n'int ket lennet",
   "notifications.column_settings.unread_notifications.highlight": "Usskediñ kemennoù nevez",
   "notifications.column_settings.update": "Kemmoù :",
@@ -447,7 +447,7 @@
   "poll.votes": "{votes, plural,one {#votadenn} other {# votadenn}}",
   "poll_button.add_poll": "Ouzhpennañ ur sontadeg",
   "poll_button.remove_poll": "Dilemel ar sontadeg",
-  "privacy.change": "Cheñch prevezded ar c'hemennad",
+  "privacy.change": "Cheñch prevezded ar c'hannad",
   "privacy.direct.long": "Embann evit an implijer·ezed·ien meneget hepken",
   "privacy.direct.short": "Tud meneget hepken",
   "privacy.private.long": "Embann evit ar re a heuilh ac'hanon hepken",
@@ -474,20 +474,20 @@
   "relative_time.today": "hiziv",
   "reply_indicator.cancel": "Nullañ",
   "report.block": "Stankañ",
-  "report.block_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.",
+  "report.block_explanation": "Ne vo ket gwelet kannadoù ar gont-se ken. Ne welo ket ho kemennadoù ha ne c'hello ket ho heuliañ ken. Gouzout a raio eo bet stanket ganeoc'h.",
   "report.categories.other": "All",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Content violates one or more server rules",
   "report.category.subtitle": "Choazit ar pezh a glot ar gwellañ",
   "report.category.title": "Lârit deomp petra c'hoarvez gant {type}",
   "report.category.title_account": "profil",
-  "report.category.title_status": "ar c'hemennad-mañ",
+  "report.category.title_status": "ar c'hannad-mañ",
   "report.close": "Graet",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Treuzkas da: {target}",
   "report.forward_hint": "War ur servijer all emañ ar c'hont-se. Kas dezhañ un adskrid disanv eus an danevell ivez?",
   "report.mute": "Kuzhat",
-  "report.mute_explanation": "Ne vo ket gwelet h·e gemennadoù ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.",
+  "report.mute_explanation": "Ne vo ket gwelet kannadoù ar gont-se ken. Gwelet ho kemennadoù ha ho heuliañ a c'hello ha ne ouezo ket eo bet kuzhet ganeoc'h.",
   "report.next": "War-raok",
   "report.placeholder": "Askelennoù ouzhpenn",
   "report.reasons.dislike": "Ne blij ket din",
@@ -520,15 +520,15 @@
   "search_popout.search_format": "Framm klask araokaet",
   "search_popout.tips.full_text": "Testenn simpl a adkas toudoù skrivet ganeoc'h, merket ganeoc'h evel miuañ-karet, toudoù skignet, pe e-lec'h oc'h bet meneget, met ivez anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot.",
   "search_popout.tips.hashtag": "ger-klik",
-  "search_popout.tips.status": "toud",
+  "search_popout.tips.status": "kannad",
   "search_popout.tips.text": "Testenn simpl a adkas anvioù skrammañ, anvioù implijer ha gêrioù-klik hag a glot",
   "search_popout.tips.user": "implijer·ez",
   "search_results.accounts": "Tud",
   "search_results.all": "All",
   "search_results.hashtags": "Gerioù-klik",
   "search_results.nothing_found": "Could not find anything for these search terms",
-  "search_results.statuses": "a doudoù",
-  "search_results.statuses_fts_disabled": "Klask toudoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.",
+  "search_results.statuses": "Kannadoù",
+  "search_results.statuses_fts_disabled": "Klask kannadoù dre oc'h endalc'h n'eo ket aotreet war ar servijer-mañ.",
   "search_results.title": "Search for {q}",
   "search_results.total": "{count, number} {count, plural, one {disoc'h} other {a zisoc'h}}",
   "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
@@ -545,8 +545,8 @@
   "status.block": "Berzañ @{name}",
   "status.bookmark": "Ouzhpennañ d'ar sinedoù",
   "status.cancel_reblog_private": "Nac'hañ ar skignadenn",
-  "status.cannot_reblog": "An toud-se ne c'hall ket bezañ skignet",
-  "status.copy": "Eilañ liamm an toud",
+  "status.cannot_reblog": "Ar c'hannad-se na c'hall ket bezañ skignet",
+  "status.copy": "Eilañ liamm ar c'hannad",
   "status.delete": "Dilemel",
   "status.detailed_status": "Gwel kaozeadenn munudek",
   "status.direct": "Kas ur c'hemennad prevez da @{name}",
@@ -555,7 +555,7 @@
   "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
   "status.embed": "Enframmañ",
   "status.favourite": "Muiañ-karet",
-  "status.filter": "Filter this post",
+  "status.filter": "Silañ ar c'hannad-mañ",
   "status.filtered": "Silet",
   "status.hide": "Hide toot",
   "status.history.created": "Krouet gant {name} {date}",
@@ -566,14 +566,14 @@
   "status.more": "Muioc'h",
   "status.mute": "Kuzhat @{name}",
   "status.mute_conversation": "Kuzhat ar gaozeadenn",
-  "status.open": "Kreskaat an toud-mañ",
+  "status.open": "Digeriñ ar c'hannad-mañ",
   "status.pin": "Spilhennañ d'ar profil",
-  "status.pinned": "Toud spilhennet",
+  "status.pinned": "Kannad spilhennet",
   "status.read_more": "Lenn muioc'h",
   "status.reblog": "Skignañ",
   "status.reblog_private": "Skignañ gant ar weledenn gentañ",
   "status.reblogged_by": "{name} en/he deus skignet",
-  "status.reblogs.empty": "Den ebet n'eus skignet an toud-mañ c'hoazh. Pa vo graet gant unan bennak e vo diskouezet amañ.",
+  "status.reblogs.empty": "Den ebet n'eus skignet ar c'hannad-mañ c'hoazh. Pa vo graet gant unan bennak e teuio war wel amañ.",
   "status.redraft": "Diverkañ ha skrivañ en-dro",
   "status.remove_bookmark": "Dilemel ar sined",
   "status.replied_to": "Replied to {name}",
@@ -610,7 +610,7 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} eus servijerien all n'int ket skrammet.",
   "timeline_hint.resources.followers": "Heulier·ezed·ien",
   "timeline_hint.resources.follows": "Heuliañ",
-  "timeline_hint.resources.statuses": "Toudoù koshoc'h",
+  "timeline_hint.resources.statuses": "Kannadoù koshoc'h",
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
   "trends.trending_now": "Luskad ar mare",
   "ui.beforeunload": "Kollet e vo ho prell ma kuitit Mastodon.",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 4cc1dc5f7..3ac6a5d5f 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Seguint}}",
   "account.follows.empty": "Aquest usuari encara no segueix ningú.",
   "account.follows_you": "Et segueix",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Anar al perfil",
   "account.hide_reblogs": "Amaga els impulsos de @{name}",
   "account.joined_short": "S'ha unit",
   "account.languages": "Canviar les llengües subscrits",
@@ -105,7 +105,7 @@
   "column.direct": "Missatges directes",
   "column.directory": "Navegar pels perfils",
   "column.domain_blocks": "Dominis bloquejats",
-  "column.favourites": "Favorits",
+  "column.favourites": "Preferits",
   "column.follow_requests": "Peticions per a seguir-te",
   "column.home": "Inici",
   "column.lists": "Llistes",
@@ -167,7 +167,7 @@
   "confirmations.mute.explanation": "Això amagarà les seves publicacions i les que els mencionen, però encara els permetrà veure les teves i seguir-te.",
   "confirmations.mute.message": "Segur que vols silenciar {name}?",
   "confirmations.redraft.confirm": "Esborra'l i reescriure-lo",
-  "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els favorits, i les respostes a la publicació original es quedaran orfes.",
+  "confirmations.redraft.message": "Segur que vols esborrar aquesta publicació i tornar-la a escriure? Perdràs tots els impulsos i els preferits, i les respostes a la publicació original es quedaran orfes.",
   "confirmations.reply.confirm": "Respon",
   "confirmations.reply.message": "Si respons ara, sobreescriuràs el missatge que estàs editant. Segur que vols continuar?",
   "confirmations.unfollow.confirm": "Deixa de seguir",
@@ -182,14 +182,14 @@
   "directory.local": "Només de {domain}",
   "directory.new_arrivals": "Arribades noves",
   "directory.recently_active": "Recentment actius",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "Aquests son els apunts més recents d'usuaris amb els seus comptes a {domain}.",
+  "disabled_account_banner.account_settings": "Paràmetres del compte",
+  "disabled_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat.",
+  "dismissable_banner.community_timeline": "Aquestes són les publicacions més recents d'usuaris amb els seus comptes a {domain}.",
   "dismissable_banner.dismiss": "Ometre",
   "dismissable_banner.explore_links": "Aquests son els enllaços que els usuaris estan comentant ara mateix en aquest i altres servidors de la xarxa descentralitzada.",
-  "dismissable_banner.explore_statuses": "Aquests apunts d'aquest i altres servidors de la xarxa descentralitzada estan guanyant l'atenció ara mateix en aquest servidor.",
+  "dismissable_banner.explore_statuses": "Aquestes publicacions d'aquest i altres servidors de la xarxa descentralitzada estan guanyant l'atenció ara mateix en aquest servidor.",
   "dismissable_banner.explore_tags": "Aquestes etiquetes estan guanyant l'atenció ara mateix dels usuaris d'aquest i altres servidors de la xarxa descentralitzada.",
-  "dismissable_banner.public_timeline": "Aquests son els apunts més recents dels usuaris d'aquest i d'altres servidors de la xarxa descentralitzada que aquest servidor en té coneixement.",
+  "dismissable_banner.public_timeline": "Aquestes són les publicacions públiques més recents de persones en aquest i altres servidors de la xarxa descentralitzada que aquest servidor coneix.",
   "embed.instructions": "Incrusta aquesta publicació a la teva pàgina web copiant el codi següent.",
   "embed.preview": "Aquí està quin aspecte tindrà:",
   "emoji_button.activity": "Activitat",
@@ -240,22 +240,22 @@
   "explore.trending_links": "Notícies",
   "explore.trending_statuses": "Publicacions",
   "explore.trending_tags": "Etiquetes",
-  "filter_modal.added.context_mismatch_explanation": "Aquesta categoria del filtr no aplica al context en el que has accedit a aquest apunt. Si vols que l'apunt sigui filtrat també en aquest context, hauràs d'editar el filtre.",
+  "filter_modal.added.context_mismatch_explanation": "Aquesta categoria de filtre no s'aplica al context en què has accedit a aquesta publicació. Si també vols que la publicació es filtri en aquest context, hauràs d'editar el filtre.",
   "filter_modal.added.context_mismatch_title": "El context no coincideix!",
   "filter_modal.added.expired_explanation": "La categoria d'aquest filtre ha caducat, necesitaràs canviar la seva data de caducitat per a aplicar-la.",
   "filter_modal.added.expired_title": "Filtre caducat!",
   "filter_modal.added.review_and_configure": "Per a revisar i configurar aquesta categoria de filtre, ves a {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Configuració del filtre",
   "filter_modal.added.settings_link": "pàgina de configuració",
-  "filter_modal.added.short_explanation": "Aquest apunt s'ha afegit a la següent categoria de filtre: {title}.",
+  "filter_modal.added.short_explanation": "Aquesta publicació s'ha afegit a la següent categoria de filtre: {title}.",
   "filter_modal.added.title": "Filtre afegit!",
   "filter_modal.select_filter.context_mismatch": "no aplica en aquest context",
   "filter_modal.select_filter.expired": "caducat",
   "filter_modal.select_filter.prompt_new": "Nova categoria: {name}",
   "filter_modal.select_filter.search": "Cerca o crea",
   "filter_modal.select_filter.subtitle": "Usa una categoria existent o crea una nova",
-  "filter_modal.select_filter.title": "Filtra aquest apunt",
-  "filter_modal.title.status": "Filtre un apunt",
+  "filter_modal.select_filter.title": "Filtra aquesta publicació",
+  "filter_modal.title.status": "Filtra una publicació",
   "follow_recommendations.done": "Fet",
   "follow_recommendations.heading": "Segueix a la gent de la que t'agradaria veure les seves publicacions! Aquí hi ha algunes recomanacions.",
   "follow_recommendations.lead": "Les publicacions del usuaris que segueixes es mostraran en ordre cronològic en la teva línia de temps Inici. No tinguis por en cometre errors, pots fàcilment deixar de seguir-los en qualsevol moment!",
@@ -287,18 +287,18 @@
   "home.column_settings.show_replies": "Mostra les respostes",
   "home.hide_announcements": "Amaga els anuncis",
   "home.show_announcements": "Mostra els anuncis",
-  "interaction_modal.description.favourite": "Amb un compte a Mastodon, pots afavorir aquest apunt per a deixar que l'autor sàpiga que t'ha agradat i desar-lo per més tard.",
-  "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre els seus apunts en la teva línia de temps Inici.",
-  "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquest apunt per a compartir-lo amb els teus seguidors.",
-  "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquest apunt.",
+  "interaction_modal.description.favourite": "Amb un compte a Mastodon, pots afavorir aquesta publicació perquè l'autor sàpiga que t'ha agradat i desar-la per a més endavant.",
+  "interaction_modal.description.follow": "Amb un compte a Mastodon, pots seguir a {name} per a rebre les seves publicacions en la teva línia de temps d'Inici.",
+  "interaction_modal.description.reblog": "Amb un compte a Mastodon, pots impulsar aquesta publicació per a compartir-la amb els teus seguidors.",
+  "interaction_modal.description.reply": "Amb un compte a Mastodon, pots respondre aquesta publicació.",
   "interaction_modal.on_another_server": "En un servidor diferent",
   "interaction_modal.on_this_server": "En aquest servidor",
   "interaction_modal.other_server_instructions": "Simplement còpia i enganxa aquesta URL en la barra de cerca de la teva aplicació preferida o en l'interfície web on tens sessió iniciada.",
   "interaction_modal.preamble": "Donat que Mastodon és descentralitzat, pots fer servir el teu compte existent a un altre servidor Mastodon o plataforma compatible si és que no tens compte en aquest.",
-  "interaction_modal.title.favourite": "Afavoreix l'apunt de {name}",
+  "interaction_modal.title.favourite": "Afavoreix la publicació de {name}",
   "interaction_modal.title.follow": "Segueix {name}",
-  "interaction_modal.title.reblog": "Impulsa l'apunt de {name}",
-  "interaction_modal.title.reply": "Respon l'apunt de {name}",
+  "interaction_modal.title.reblog": "Impulsa la publicació de {name}",
+  "interaction_modal.title.reply": "Respon a la publicació de {name}",
   "intervals.full.days": "{number, plural, one {# dia} other {# dies}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# hores}}",
   "intervals.full.minutes": "{number, plural, one {# minut} other {# minuts}}",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Amaga imatge} other {Amaga imatges}}",
   "missing_indicator.label": "No s'ha trobat",
   "missing_indicator.sublabel": "Aquest recurs no s'ha trobat",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat perquè l'has traslladat a {movedToAccount}.",
   "mute_modal.duration": "Durada",
   "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?",
   "mute_modal.indefinite": "Indefinit",
@@ -391,7 +391,7 @@
   "not_signed_in_indicator.not_signed_in": "Necessites registrar-te per a accedir aquest recurs.",
   "notification.admin.report": "{name} ha reportat {target}",
   "notification.admin.sign_up": "{name} s'ha registrat",
-  "notification.favourite": "{name} ha afavorit la teva publicació",
+  "notification.favourite": "a {name} li ha agradat la teva publicació",
   "notification.follow": "{name} et segueix",
   "notification.follow_request": "{name} ha sol·licitat seguir-te",
   "notification.mention": "{name} t'ha mencionat",
@@ -539,7 +539,7 @@
   "server_banner.server_stats": "Estadístiques del servidor:",
   "sign_in_banner.create_account": "Crea un compte",
   "sign_in_banner.sign_in": "Inicia sessió",
-  "sign_in_banner.text": "Inicia sessió per a seguir perfils o etiquetes, afavorir, compartir o respondre apunts, o interactuar des d'el teu compte amb un servidor diferent.",
+  "sign_in_banner.text": "Inicia la sessió per seguir perfils o etiquetes, afavorir, compartir i respondre a publicacions o interactuar des del teu compte en un servidor diferent.",
   "status.admin_account": "Obre l'interfície de moderació per a @{name}",
   "status.admin_status": "Obrir aquesta publicació a la interfície de moderació",
   "status.block": "Bloqueja @{name}",
@@ -554,8 +554,8 @@
   "status.edited": "Editat {date}",
   "status.edited_x_times": "Editat {count, plural, one {{count} vegada} other {{count} vegades}}",
   "status.embed": "Incrusta",
-  "status.favourite": "Favorit",
-  "status.filter": "Filtre aquest apunt",
+  "status.favourite": "Preferir",
+  "status.filter": "Filtra aquesta publicació",
   "status.filtered": "Filtrat",
   "status.hide": "Amaga publicació",
   "status.history.created": "{name} ha creat {date}",
@@ -593,7 +593,7 @@
   "status.uncached_media_warning": "No està disponible",
   "status.unmute_conversation": "No silenciïs la conversa",
   "status.unpin": "No fixis al perfil",
-  "subscribed_languages.lead": "Només els apunts en les llengües seleccionades apareixeran en le teves línies de temps Inici i llista després del canvi. No en seleccionis cap per a rebre apunts en totes les llengües.",
+  "subscribed_languages.lead": "Només les publicacions en les llengües seleccionades apareixeran en les teves línies de temps \"Inici\" i \"Llistes\" després del canvi. No en seleccionis cap per a rebre publicacions en totes les llengües.",
   "subscribed_languages.save": "Desa els canvis",
   "subscribed_languages.target": "Canvia les llengües subscrites per a {target}",
   "suggestions.dismiss": "Ignora el suggeriment",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index bda43adc1..d48b3206a 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Sledovaný} few {{counter} Sledovaní} many {{counter} Sledovaných} other {{counter} Sledovaných}}",
   "account.follows.empty": "Tento uživatel ještě nikoho nesleduje.",
   "account.follows_you": "Sleduje vás",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Přejít na profil",
   "account.hide_reblogs": "Skrýt boosty od @{name}",
   "account.joined_short": "Připojen/a",
   "account.languages": "Změnit odebírané jazyky",
@@ -182,8 +182,8 @@
   "directory.local": "Pouze z domény {domain}",
   "directory.new_arrivals": "Nově příchozí",
   "directory.recently_active": "Nedávno aktivní",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Nastavení účtu",
+  "disabled_account_banner.text": "Váš účet {disabledAccount} je momentálně zakázán.",
   "dismissable_banner.community_timeline": "Toto jsou nejnovější veřejné příspěvky od lidí, jejichž účty hostuje {domain}.",
   "dismissable_banner.dismiss": "Odmítnout",
   "dismissable_banner.explore_links": "O těchto novinkách hovoří lidé na tomto a dalších serverech decentralizované sítě.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}",
   "missing_indicator.label": "Nenalezeno",
   "missing_indicator.sublabel": "Tento zdroj se nepodařilo najít",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně zakázán, protože jste se přesunul/a na {movedToAccount}.",
   "mute_modal.duration": "Trvání",
   "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?",
   "mute_modal.indefinite": "Neomezeně",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index f93ef1c81..fb00390e1 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -1,18 +1,18 @@
 {
-  "about.blocks": "Moderated servers",
-  "about.contact": "Contact:",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
+  "about.blocks": "Gweinyddion sy'n cael eu cymedroli",
+  "about.contact": "Cyswllt:",
+  "about.disclaimer": "Mae Mastodon yn feddalwedd rhydd, cod agored ac o dan hawlfraint Mastodon gGmbH.",
   "about.domain_blocks.comment": "Rheswm",
   "about.domain_blocks.domain": "Parth",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
-  "about.domain_blocks.severity": "Severity",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
+  "about.domain_blocks.preamble": "Yn gyffredinol, mae Mastodon yn caniatáu i chi weld cynnwys gan unrhyw weinyddwr arall yn y ffederasiwn a rhyngweithio â hi. Dyma'r eithriadau a wnaed ar y gweinydd penodol hwn.",
+  "about.domain_blocks.severity": "Difrifoldeb",
+  "about.domain_blocks.silenced.explanation": "Yn gyffredinol, fyddwch chi ddim yn gweld proffiliau a chynnwys o'r gweinydd hwn, oni bai eich bod yn chwilio'n benodol amdano neu yn ymuno drwy ei ddilyn.",
   "about.domain_blocks.silenced.title": "Tawelwyd",
-  "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
-  "about.rules": "Server rules",
+  "about.domain_blocks.suspended.explanation": "Ni fydd data o'r gweinydd hwn yn cael ei brosesu, ei storio na'i gyfnewid, gan wneud unrhyw ryngweithio neu gyfathrebu gyda defnyddwyr o'r gweinydd hwn yn amhosibl.",
+  "about.domain_blocks.suspended.title": "Ataliwyd",
+  "about.not_available": "Nid yw'r wybodaeth hwn wedi ei wneud ar gael ar y gweinydd hwn.",
+  "about.powered_by": "Cyfrwng cymdeithasol datganoledig wedi ei yrru gan {mastodon}",
+  "about.rules": "Rheolau'r gweinydd",
   "account.account_note_header": "Nodyn",
   "account.add_or_remove_from_list": "Ychwanegu neu Dileu o'r rhestrau",
   "account.badges.bot": "Bot",
@@ -21,15 +21,15 @@
   "account.block_domain": "Blocio parth {domain}",
   "account.blocked": "Blociwyd",
   "account.browse_more_on_origin_server": "Pori mwy ar y proffil gwreiddiol",
-  "account.cancel_follow_request": "Withdraw follow request",
+  "account.cancel_follow_request": "Tynnu nôl cais i ddilyn",
   "account.direct": "Neges breifat @{name}",
   "account.disable_notifications": "Stopiwch fy hysbysu pan fydd @{name} yn postio",
   "account.domain_blocked": "Parth wedi ei flocio",
   "account.edit_profile": "Golygu proffil",
   "account.enable_notifications": "Rhowch wybod i fi pan fydd @{name} yn postio",
   "account.endorse": "Arddangos ar fy mhroffil",
-  "account.featured_tags.last_status_at": "Last post on {date}",
-  "account.featured_tags.last_status_never": "No posts",
+  "account.featured_tags.last_status_at": "Y cofnod diwethaf ar {date}",
+  "account.featured_tags.last_status_never": "Dim postiadau",
   "account.featured_tags.title": "{name}'s featured hashtags",
   "account.follow": "Dilyn",
   "account.followers": "Dilynwyr",
@@ -39,15 +39,15 @@
   "account.following_counter": "{count, plural, one {{counter} yn Dilyn} other {{counter} yn Dilyn}}",
   "account.follows.empty": "Nid yw'r defnyddiwr hwn yn dilyn unrhyw un eto.",
   "account.follows_you": "Yn eich dilyn chi",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Mynd i'r proffil",
   "account.hide_reblogs": "Cuddio bwstiau o @{name}",
-  "account.joined_short": "Joined",
-  "account.languages": "Change subscribed languages",
+  "account.joined_short": "Ymunodd",
+  "account.languages": "Newid ieithoedd wedi tanysgrifio iddynt nhw",
   "account.link_verified_on": "Gwiriwyd perchnogaeth y ddolen yma ar {date}",
   "account.locked_info": "Mae'r statws preifatrwydd cyfrif hwn wedi'i osod i gloi. Mae'r perchennog yn adolygu'r sawl sy'n gallu eu dilyn.",
   "account.media": "Cyfryngau",
   "account.mention": "Crybwyll @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "Mae {name} wedi nodi fod eu cyfrif newydd yn:",
   "account.mute": "Tawelu @{name}",
   "account.mute_notifications": "Cuddio hysbysiadau o @{name}",
   "account.muted": "Distewyd",
@@ -78,27 +78,27 @@
   "alert.unexpected.title": "Wps!",
   "announcement.announcement": "Cyhoeddiad",
   "attachments_list.unprocessed": "(heb eu prosesu)",
-  "audio.hide": "Hide audio",
+  "audio.hide": "Cuddio sain",
   "autosuggest_hashtag.per_week": "{count} yr wythnos",
   "boost_modal.combo": "Mae modd gwasgu {combo} er mwyn sgipio hyn tro nesa",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
-  "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
+  "bundle_column_error.copy_stacktrace": "Copïo'r adroddiad gwall",
+  "bundle_column_error.error.body": "Nid oedd modd cynhyrchu'r dudalen honno. Gall fod oherwydd gwall yn ein côd neu fater cydnawsedd porwr.",
   "bundle_column_error.error.title": "O na!",
-  "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
-  "bundle_column_error.network.title": "Network error",
+  "bundle_column_error.network.body": "Bu gwall wrth geisio llwytho'r dudalen hon. Gall hyn fod oherwydd anhawster dros-dro gyda'ch cysylltiad gwe neu'r gweinydd hwn.",
+  "bundle_column_error.network.title": "Gwall rhwydwaith",
   "bundle_column_error.retry": "Ceisiwch eto",
-  "bundle_column_error.return": "Go back home",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.return": "Mynd nôl adref",
+  "bundle_column_error.routing.body": "Nid oedd modd canfod y dudalen honno. Ydych chi'n siŵr fod yr URL yn y bar cyfeiriad yn gywir?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Cau",
   "bundle_modal_error.message": "Aeth rhywbeth o'i le tra'n llwytho'r elfen hon.",
   "bundle_modal_error.retry": "Ceiswich eto",
-  "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
-  "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
+  "closed_registrations.other_server_instructions": "Gan fod Mastodon yn ddatganoledig, gallwch greu cyfrif ar weinydd arall a dal i ryngweithio gyda hwn.",
+  "closed_registrations_modal.description": "Ar hyn o bryd nid yw'n bosib creu cyfrif ar {domain}, ond cadwch mewn cof nad oes raid i chi gael cyfrif yn benodol ar {domain} i ddefnyddio Mastodon.",
+  "closed_registrations_modal.find_another_server": "Dod o hyd i weinydd arall",
   "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
   "closed_registrations_modal.title": "Signing up on Mastodon",
-  "column.about": "About",
+  "column.about": "Ynghylch",
   "column.blocks": "Defnyddwyr a flociwyd",
   "column.bookmarks": "Tudalnodau",
   "column.community": "Ffrwd lleol",
@@ -176,16 +176,16 @@
   "conversation.mark_as_read": "Nodi fel wedi'i ddarllen",
   "conversation.open": "Gweld sgwrs",
   "conversation.with": "Gyda {names}",
-  "copypaste.copied": "Copied",
-  "copypaste.copy": "Copy",
+  "copypaste.copied": "Wedi ei gopïo",
+  "copypaste.copy": "Copïo",
   "directory.federated": "O'r ffedysawd cyfan",
   "directory.local": "O {domain} yn unig",
   "directory.new_arrivals": "Newydd-ddyfodiaid",
   "directory.recently_active": "Yn weithredol yn ddiweddar",
   "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
+  "disabled_account_banner.text": "Mae eich cyfrif {disabledAccount} wedi ei analluogi ar hyn o bryd.",
+  "dismissable_banner.community_timeline": "Dyma'r postiadau cyhoeddus diweddaraf gan bobl y caiff eu cyfrifon eu cynnal ar {domain}.",
+  "dismissable_banner.dismiss": "Diystyru",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
   "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
   "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
@@ -193,7 +193,7 @@
   "embed.instructions": "Gosodwch y post hwn ar eich gwefan drwy gopïo'r côd isod.",
   "embed.preview": "Dyma sut olwg fydd arno:",
   "emoji_button.activity": "Gweithgarwch",
-  "emoji_button.clear": "Clir",
+  "emoji_button.clear": "Clirio",
   "emoji_button.custom": "Unigryw",
   "emoji_button.flags": "Baneri",
   "emoji_button.food": "Bwyd a Diod",
@@ -251,8 +251,8 @@
   "filter_modal.added.title": "Filter added!",
   "filter_modal.select_filter.context_mismatch": "does not apply to this context",
   "filter_modal.select_filter.expired": "expired",
-  "filter_modal.select_filter.prompt_new": "New category: {name}",
-  "filter_modal.select_filter.search": "Search or create",
+  "filter_modal.select_filter.prompt_new": "Categori newydd: {name}",
+  "filter_modal.select_filter.search": "Chwilio neu greu",
   "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
   "filter_modal.select_filter.title": "Filter this post",
   "filter_modal.title.status": "Filter a post",
@@ -262,12 +262,12 @@
   "follow_request.authorize": "Caniatau",
   "follow_request.reject": "Gwrthod",
   "follow_requests.unlocked_explanation": "Er nid yw eich cyfrif wedi'i gloi, oedd y staff {domain} yn meddwl efallai hoffech adolygu ceisiadau dilyn o'r cyfrifau rhain wrth law.",
-  "footer.about": "About",
-  "footer.directory": "Profiles directory",
+  "footer.about": "Ynghylch",
+  "footer.directory": "Cyfeiriadur proffiliau",
   "footer.get_app": "Get the app",
-  "footer.invite": "Invite people",
-  "footer.keyboard_shortcuts": "Keyboard shortcuts",
-  "footer.privacy_policy": "Privacy policy",
+  "footer.invite": "Gwahodd pobl",
+  "footer.keyboard_shortcuts": "Bysellau brys",
+  "footer.privacy_policy": "Polisi preifatrwydd",
   "footer.source_code": "View source code",
   "generic.saved": "Wedi'i Gadw",
   "getting_started.heading": "Dechrau",
@@ -291,14 +291,14 @@
   "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
   "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
+  "interaction_modal.on_another_server": "Ar weinydd gwahanol",
+  "interaction_modal.on_this_server": "Ar y gweinydd hwn",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
-  "interaction_modal.title.follow": "Follow {name}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.title.favourite": "Hoffi post {name}",
+  "interaction_modal.title.follow": "Dilyn {name}",
+  "interaction_modal.title.reblog": "Hybu post {name}",
+  "interaction_modal.title.reply": "Ymateb i bost {name}",
   "intervals.full.days": "{number, plural, one {# dydd} two {# ddydd} other {# o ddyddiau}}",
   "intervals.full.hours": "{number, plural, one {# awr} other {# o oriau}}",
   "intervals.full.minutes": "{number, plural, one {# funud} other {# o funudau}}",
@@ -341,8 +341,8 @@
   "lightbox.expand": "Ehangu blwch gweld delwedd",
   "lightbox.next": "Nesaf",
   "lightbox.previous": "Blaenorol",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.action": "Dangos y proffil beth bynnag",
+  "limited_account_hint.title": "Mae'r proffil hwn wedi cael ei guddio gan arolygwyr {domain}.",
   "lists.account.add": "Ychwanegwch at restr",
   "lists.account.remove": "Dileu o'r rhestr",
   "lists.delete": "Dileu rhestr",
@@ -365,7 +365,7 @@
   "mute_modal.duration": "Hyd",
   "mute_modal.hide_notifications": "Cuddio hysbysiadau rhag y defnyddiwr hwn?",
   "mute_modal.indefinite": "Amhenodol",
-  "navigation_bar.about": "About",
+  "navigation_bar.about": "Ynghylch",
   "navigation_bar.blocks": "Defnyddwyr wedi eu blocio",
   "navigation_bar.bookmarks": "Tudalnodau",
   "navigation_bar.community_timeline": "Ffrwd leol",
@@ -386,10 +386,10 @@
   "navigation_bar.pins": "Postiadau wedi eu pinio",
   "navigation_bar.preferences": "Dewisiadau",
   "navigation_bar.public_timeline": "Ffrwd y ffederasiwn",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "Chwilio",
   "navigation_bar.security": "Diogelwch",
   "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} reported {target}",
+  "notification.admin.report": "Adroddodd {name} {target}",
   "notification.admin.sign_up": "Cofrestrodd {name}",
   "notification.favourite": "Hoffodd {name} eich post",
   "notification.follow": "Dilynodd {name} chi",
@@ -456,8 +456,8 @@
   "privacy.public.short": "Cyhoeddus",
   "privacy.unlisted.long": "Gweladwy i bawb, ond wedi optio allan o nodweddion darganfod",
   "privacy.unlisted.short": "Heb ei restru",
-  "privacy_policy.last_updated": "Last updated {date}",
-  "privacy_policy.title": "Privacy Policy",
+  "privacy_policy.last_updated": "Diweddarwyd ddiwethaf ar {date}",
+  "privacy_policy.title": "Polisi preifatrwydd",
   "refresh": "Adnewyddu",
   "regeneration_indicator.label": "Llwytho…",
   "regeneration_indicator.sublabel": "Mae eich ffrwd cartref yn cael ei baratoi!",
@@ -495,7 +495,7 @@
   "report.reasons.other": "Mae'n rhywbeth arall",
   "report.reasons.other_description": "Nid yw'r mater yn ffitio i gategorïau eraill",
   "report.reasons.spam": "Sothach yw e",
-  "report.reasons.spam_description": "Cysylltiadau maleisus, ymgysylltu ffug, neu atebion ailadroddus",
+  "report.reasons.spam_description": "Dolenni maleisus, ymgysylltu ffug, neu ymatebion ailadroddus",
   "report.reasons.violation": "Mae'n torri rheolau'r gweinydd",
   "report.reasons.violation_description": "Rydych yn ymwybodol ei fod yn torri rheolau penodol",
   "report.rules.subtitle": "Dewiswch bob un sy'n berthnasol",
@@ -529,16 +529,16 @@
   "search_results.nothing_found": "Methu dod o hyd i unrhyw beth ar gyfer y termau chwilio hyn",
   "search_results.statuses": "Postiadau",
   "search_results.statuses_fts_disabled": "Nid yw chwilio postiadau yn ôl eu cynnwys wedi'i alluogi ar y gweinydd Mastodon hwn.",
-  "search_results.title": "Search for {q}",
+  "search_results.title": "Chwilio am {q}",
   "search_results.total": "{count, number} {count, plural, zero {canlyniad} one {canlyniad} two {ganlyniad} other {o ganlyniadau}}",
   "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
   "server_banner.active_users": "active users",
-  "server_banner.administered_by": "Administered by:",
-  "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
-  "server_banner.learn_more": "Learn more",
-  "server_banner.server_stats": "Server stats:",
-  "sign_in_banner.create_account": "Create account",
-  "sign_in_banner.sign_in": "Sign in",
+  "server_banner.administered_by": "Gweinyddir gan:",
+  "server_banner.introduction": "Mae {domain} yn rhan o'r rhwydwaith cymdeithasol datganoledig a bwerir gan {mastodon}.",
+  "server_banner.learn_more": "Dysgu mwy",
+  "server_banner.server_stats": "Ystagedau'r gweinydd:",
+  "sign_in_banner.create_account": "Creu cyfrif",
+  "sign_in_banner.sign_in": "Mewngofnodi",
   "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.",
   "status.admin_account": "Agor rhyngwyneb goruwchwylio ar gyfer @{name}",
   "status.admin_status": "Agor y post hwn yn y rhyngwyneb goruwchwylio",
@@ -582,19 +582,19 @@
   "status.report": "Adrodd @{name}",
   "status.sensitive_warning": "Cynnwys sensitif",
   "status.share": "Rhannu",
-  "status.show_filter_reason": "Show anyway",
+  "status.show_filter_reason": "Dangos beth bynnag",
   "status.show_less": "Dangos llai",
   "status.show_less_all": "Dangos llai i bawb",
   "status.show_more": "Dangos mwy",
   "status.show_more_all": "Dangos mwy i bawb",
-  "status.show_original": "Show original",
-  "status.translate": "Translate",
-  "status.translated_from_with": "Translated from {lang} using {provider}",
+  "status.show_original": "Dangos y gwreiddiol",
+  "status.translate": "Cyfieithu",
+  "status.translated_from_with": "Cyfieithwyd o {lang} gan ddefnyddio {provider}",
   "status.uncached_media_warning": "Dim ar gael",
   "status.unmute_conversation": "Dad-dawelu sgwrs",
   "status.unpin": "Dadbinio o'r proffil",
-  "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.",
-  "subscribed_languages.save": "Save changes",
+  "subscribed_languages.lead": "Dim ond postiadau mewn ieithoedd dethol fydd yn ymddangos yn eich ffrydiau ar ôl y newid. Dewiswch ddim byd i dderbyn postiadau ym mhob iaith.",
+  "subscribed_languages.save": "Cadw'r newidiadau",
   "subscribed_languages.target": "Change subscribed languages for {target}",
   "suggestions.dismiss": "Diswyddo",
   "suggestions.header": "Efallai y bydd gennych ddiddordeb mewn…",
@@ -639,7 +639,7 @@
   "upload_modal.preparing_ocr": "Paratoi OCR…",
   "upload_modal.preview_label": "Rhagolwg ({ratio})",
   "upload_progress.label": "Uwchlwytho...",
-  "upload_progress.processing": "Processing…",
+  "upload_progress.processing": "Wrthi'n prosesu…",
   "video.close": "Cau fideo",
   "video.download": "Lawrlwytho ffeil",
   "video.exit_fullscreen": "Gadael sgrîn llawn",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index cf6179ad1..88ece1479 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Følges} other {{counter} Følges}}",
   "account.follows.empty": "Denne bruger følger ikke nogen endnu.",
   "account.follows_you": "Følger dig",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Gå til profil",
   "account.hide_reblogs": "Skjul boosts fra @{name}",
   "account.joined_short": "Oprettet",
   "account.languages": "Skift abonnementssprog",
@@ -182,8 +182,8 @@
   "directory.local": "Kun fra {domain}",
   "directory.new_arrivals": "Nye ankomster",
   "directory.recently_active": "Nyligt aktive",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Kontoindstillinger",
+  "disabled_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret.",
   "dismissable_banner.community_timeline": "Disse er de seneste offentlige indlæg fra personer med konti hostes af {domain}.",
   "dismissable_banner.dismiss": "Afvis",
   "dismissable_banner.explore_links": "Der tales lige nu om disse nyhedshistorier af folk på denne og andre servere i det decentraliserede netværk.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}",
   "missing_indicator.label": "Ikke fundet",
   "missing_indicator.sublabel": "Denne ressource kunne ikke findes",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.",
   "mute_modal.duration": "Varighed",
   "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?",
   "mute_modal.indefinite": "Tidsubegrænset",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index ee5073211..10e33f2a9 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -39,10 +39,10 @@
   "account.following_counter": "{count, plural, one {{counter} Folgt} other {{counter} Folgt}}",
   "account.follows.empty": "Dieses Profil folgt noch niemandem.",
   "account.follows_you": "Folgt dir",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Profil öffnen",
   "account.hide_reblogs": "Geteilte Beiträge von @{name} verbergen",
   "account.joined_short": "Beigetreten",
-  "account.languages": "Abonnierte Sprachen ändern",
+  "account.languages": "Genutzte Sprachen überarbeiten",
   "account.link_verified_on": "Das Profil mit dieser E-Mail-Adresse wurde bereits am {date} bestätigt",
   "account.locked_info": "Der Privatsphärenstatus dieses Kontos wurde auf „gesperrt“ gesetzt. Die Person bestimmt manuell, wer ihm/ihr folgen darf.",
   "account.media": "Medien",
@@ -182,8 +182,8 @@
   "directory.local": "Nur von der Domain {domain}",
   "directory.new_arrivals": "Neue Profile",
   "directory.recently_active": "Kürzlich aktiv",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Kontoeinstellungen",
+  "disabled_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert.",
   "dismissable_banner.community_timeline": "Dies sind die neuesten öffentlichen Beiträge von Personen, deren Konten von {domain} gehostet werden.",
   "dismissable_banner.dismiss": "Ablehnen",
   "dismissable_banner.explore_links": "Diese Nachrichten werden gerade von Leuten auf diesem und anderen Servern des dezentralen Netzwerks besprochen.",
@@ -247,17 +247,17 @@
   "filter_modal.added.review_and_configure": "Um diese Filterkategorie zu überprüfen und weiter zu konfigurieren, gehe zu {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Filtereinstellungen",
   "filter_modal.added.settings_link": "Einstellungsseite",
-  "filter_modal.added.short_explanation": "Dieser Post wurde zu folgender Filterkategorie hinzugefügt: {title}.",
+  "filter_modal.added.short_explanation": "Dieser Post wurde folgender Filterkategorie hinzugefügt: {title}.",
   "filter_modal.added.title": "Filter hinzugefügt!",
   "filter_modal.select_filter.context_mismatch": "gilt nicht für diesen Kontext",
   "filter_modal.select_filter.expired": "abgelaufen",
   "filter_modal.select_filter.prompt_new": "Neue Kategorie: {name}",
-  "filter_modal.select_filter.search": "Suchen oder Erstellen",
+  "filter_modal.select_filter.search": "Suchen oder erstellen",
   "filter_modal.select_filter.subtitle": "Eine existierende Kategorie benutzen oder eine erstellen",
   "filter_modal.select_filter.title": "Diesen Beitrag filtern",
   "filter_modal.title.status": "Einen Beitrag filtern",
   "follow_recommendations.done": "Fertig",
-  "follow_recommendations.heading": "Folge Leuten, von denen du Beiträge sehen möchtest! Hier sind einige Vorschläge.",
+  "follow_recommendations.heading": "Folge Leuten, deren Beiträge du sehen möchtest! Hier sind einige Vorschläge.",
   "follow_recommendations.lead": "Beiträge von Personen, denen du folgst, werden in chronologischer Reihenfolge auf deiner Startseite angezeigt. Hab keine Angst, Fehler zu machen, du kannst den Leuten jederzeit wieder entfolgen!",
   "follow_request.authorize": "Erlauben",
   "follow_request.reject": "Ablehnen",
@@ -287,10 +287,10 @@
   "home.column_settings.show_replies": "Antworten anzeigen",
   "home.hide_announcements": "Ankündigungen verbergen",
   "home.show_announcements": "Ankündigungen anzeigen",
-  "interaction_modal.description.favourite": "Mit einem Account auf Mastodon können Sie diesen Beitrag favorisieren, um dem Autor mitzuteilen, dass Sie den Beitrag schätzen und ihn für einen späteren Zeitpunkt speichern.",
+  "interaction_modal.description.favourite": "Mit einem Account auf Mastodon kannst du diesen Beitrag favorisieren, um deine Wertschätzung auszudrücken, und ihn für einen späteren Zeitpunkt speichern.",
   "interaction_modal.description.follow": "Mit einem Konto auf Mastodon kannst du {name} folgen, um seine Beiträge in deinem Home Feed zu erhalten.",
   "interaction_modal.description.reblog": "Mit einem Mastodon-Account kannst du die Reichweite dieses Beitrags erhöhen, in dem du ihn mit deinen eigenen Followern teilst.",
-  "interaction_modal.description.reply": "Mit einem Account auf Mastodon können Sie auf diesen Beitrag antworten.",
+  "interaction_modal.description.reply": "Mit einem Account auf Mastodon kannst du auf diesen Beitrag antworten.",
   "interaction_modal.on_another_server": "Auf einem anderen Server",
   "interaction_modal.on_this_server": "Auf diesem Server",
   "interaction_modal.other_server_instructions": "Kopiere einfach diese URL und füge sie in die Suchleiste deiner Lieblings-App oder in die Weboberfläche, in der du angemeldet bist, ein.",
@@ -304,12 +304,12 @@
   "intervals.full.minutes": "{number, plural, one {# Minute} other {# Minuten}}",
   "keyboard_shortcuts.back": "Zurück navigieren",
   "keyboard_shortcuts.blocked": "Liste blockierter Profile öffnen",
-  "keyboard_shortcuts.boost": "teilen",
+  "keyboard_shortcuts.boost": "Beitrag teilen",
   "keyboard_shortcuts.column": "einen Beitrag in einer der Spalten fokussieren",
   "keyboard_shortcuts.compose": "fokussiere das Eingabefeld",
   "keyboard_shortcuts.description": "Beschreibung",
   "keyboard_shortcuts.direct": "um die Spalte mit den Direktnachrichten zu öffnen",
-  "keyboard_shortcuts.down": "sich in der Liste hinunter bewegen",
+  "keyboard_shortcuts.down": "In der Liste nach unten bewegen",
   "keyboard_shortcuts.enter": "Beitrag öffnen",
   "keyboard_shortcuts.favourite": "favorisieren",
   "keyboard_shortcuts.favourites": "Favoriten-Liste öffnen",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Bild verbergen} other {Bilder verbergen}}",
   "missing_indicator.label": "Nicht gefunden",
   "missing_indicator.sublabel": "Die Ressource konnte nicht gefunden werden",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.",
   "mute_modal.duration": "Dauer",
   "mute_modal.hide_notifications": "Benachrichtigungen von diesem Profil verbergen?",
   "mute_modal.indefinite": "Unbestimmt",
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 15b506a1c..fe8871093 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Ακολουθεί}}",
   "account.follows.empty": "Αυτός ο χρήστης δεν ακολουθεί κανέναν ακόμα.",
   "account.follows_you": "Σε ακολουθεί",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Μετάβαση στο προφίλ",
   "account.hide_reblogs": "Απόκρυψη προωθήσεων από @{name}",
   "account.joined_short": "Joined",
   "account.languages": "Change subscribed languages",
@@ -182,7 +182,7 @@
   "directory.local": "Μόνο από {domain}",
   "directory.new_arrivals": "Νέες αφίξεις",
   "directory.recently_active": "Πρόσφατα ενεργοί",
-  "disabled_account_banner.account_settings": "Account settings",
+  "disabled_account_banner.account_settings": "Ρυθμίσεις λογαριασμού",
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
   "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
   "dismissable_banner.dismiss": "Παράβλεψη",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 971be524b..36af2ad49 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -4,14 +4,14 @@
   "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
   "about.domain_blocks.comment": "Reason",
   "about.domain_blocks.domain": "Domain",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
+  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the Fediverse. These are the exceptions that have been made on this particular server.",
   "about.domain_blocks.severity": "Severity",
   "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
   "about.domain_blocks.silenced.title": "Limited",
   "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
   "about.domain_blocks.suspended.title": "Suspended",
   "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
+  "about.powered_by": "Decentralised social media powered by {mastodon}",
   "about.rules": "Server rules",
   "account.account_note_header": "Note",
   "account.add_or_remove_from_list": "Add or Remove from lists",
@@ -111,7 +111,7 @@
   "column.lists": "Lists",
   "column.mutes": "Muted users",
   "column.notifications": "Notifications",
-  "column.pins": "Pinned post",
+  "column.pins": "Pinned posts",
   "column.public": "Federated timeline",
   "column_back_button.label": "Back",
   "column_header.hide_settings": "Hide settings",
@@ -122,16 +122,16 @@
   "column_header.unpin": "Unpin",
   "column_subheading.settings": "Settings",
   "community.column_settings.local_only": "Local only",
-  "community.column_settings.media_only": "Media only",
+  "community.column_settings.media_only": "Media Only",
   "community.column_settings.remote_only": "Remote only",
   "compose.language.change": "Change language",
   "compose.language.search": "Search languages...",
   "compose_form.direct_message_warning_learn_more": "Learn more",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any sensitive information over Mastodon.",
   "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
   "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
   "compose_form.lock_disclaimer.lock": "locked",
-  "compose_form.placeholder": "What is on your mind?",
+  "compose_form.placeholder": "What's on your mind?",
   "compose_form.poll.add_option": "Add a choice",
   "compose_form.poll.duration": "Poll duration",
   "compose_form.poll.option_placeholder": "Choice {number}",
@@ -144,8 +144,8 @@
   "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
   "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
-  "compose_form.spoiler.marked": "Text is hidden behind warning",
-  "compose_form.spoiler.unmarked": "Text is not hidden",
+  "compose_form.spoiler.marked": "Remove content warning",
+  "compose_form.spoiler.unmarked": "Add content warning",
   "compose_form.spoiler_placeholder": "Write your warning here",
   "confirmation_modal.cancel": "Cancel",
   "confirmations.block.block_and_report": "Block & Report",
@@ -154,7 +154,7 @@
   "confirmations.cancel_follow_request.confirm": "Withdraw request",
   "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
   "confirmations.delete.confirm": "Delete",
-  "confirmations.delete.message": "Are you sure you want to delete this status?",
+  "confirmations.delete.message": "Are you sure you want to delete this post?",
   "confirmations.delete_list.confirm": "Delete",
   "confirmations.delete_list.message": "Are you sure you want to permanently delete this list?",
   "confirmations.discard_edit_media.confirm": "Discard",
@@ -208,7 +208,7 @@
   "emoji_button.symbols": "Symbols",
   "emoji_button.travel": "Travel & Places",
   "empty_column.account_suspended": "Account suspended",
-  "empty_column.account_timeline": "No posts found",
+  "empty_column.account_timeline": "No posts here!",
   "empty_column.account_unavailable": "Profile unavailable",
   "empty_column.blocks": "You haven't blocked any users yet.",
   "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index fdbbb5e47..7a24234ce 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -297,7 +297,7 @@
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
   "interaction_modal.on_another_server": "On a different server",
   "interaction_modal.on_this_server": "On this server",
-  "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
+  "interaction_modal.other_server_instructions": "Copy and paste this URL into the search field of your favourite Mastodon app or the web interface of your Mastodon server.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
   "interaction_modal.title.favourite": "Favourite {name}'s post",
   "interaction_modal.title.follow": "Follow {name}",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index b1ba1d8b1..cec8eb73a 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -3,13 +3,13 @@
   "about.contact": "Kontakto:",
   "about.disclaimer": "Mastodon estas libera, malfermitkoda programaro kaj varmarko de la firmao Mastodon gGmbH.",
   "about.domain_blocks.comment": "Kialo",
-  "about.domain_blocks.domain": "Domain",
+  "about.domain_blocks.domain": "Domajno",
   "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
   "about.domain_blocks.severity": "Graveco",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
-  "about.domain_blocks.silenced.title": "Limited",
+  "about.domain_blocks.silenced.explanation": "Vi ne ĝenerale vidos profilojn kaj enhavojn de ĉi tiu servilo, krom se vi eksplice trovas aŭ estas permesita de via sekvato.",
+  "about.domain_blocks.silenced.title": "Limigita",
   "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
+  "about.domain_blocks.suspended.title": "Suspendita",
   "about.not_available": "This information has not been made available on this server.",
   "about.powered_by": "Decentralized social media powered by {mastodon}",
   "about.rules": "Reguloj de la servilo",
@@ -28,7 +28,7 @@
   "account.edit_profile": "Redakti la profilon",
   "account.enable_notifications": "Sciigi min, kiam @{name} mesaĝas",
   "account.endorse": "Rekomendi ĉe via profilo",
-  "account.featured_tags.last_status_at": "Last post on {date}",
+  "account.featured_tags.last_status_at": "Lasta afîŝo je {date}",
   "account.featured_tags.last_status_never": "Neniuj afiŝoj",
   "account.featured_tags.title": "{name}'s featured hashtags",
   "account.follow": "Sekvi",
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Sekvado} other {{counter} Sekvadoj}}",
   "account.follows.empty": "La uzanto ankoraŭ ne sekvas iun ajn.",
   "account.follows_you": "Sekvas vin",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Iri al profilo",
   "account.hide_reblogs": "Kaŝi la plusendojn de @{name}",
   "account.joined_short": "Aliĝis",
   "account.languages": "Change subscribed languages",
@@ -81,13 +81,13 @@
   "audio.hide": "Kaŝi aŭdion",
   "autosuggest_hashtag.per_week": "{count} semajne",
   "boost_modal.combo": "Vi povas premi {combo} por preterpasi sekvafoje",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
+  "bundle_column_error.copy_stacktrace": "Kopii la raporto de error",
   "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
   "bundle_column_error.error.title": "Ho, ne!",
   "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
-  "bundle_column_error.network.title": "Network error",
+  "bundle_column_error.network.title": "Eraro de reto",
   "bundle_column_error.retry": "Provu refoje",
-  "bundle_column_error.return": "Go back home",
+  "bundle_column_error.return": "Reveni al la hejmo",
   "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Fermi",
@@ -95,9 +95,9 @@
   "bundle_modal_error.retry": "Provu refoje",
   "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
   "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
+  "closed_registrations_modal.find_another_server": "Trovi alian servilon",
   "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
-  "closed_registrations_modal.title": "Signing up on Mastodon",
+  "closed_registrations_modal.title": "Registri en Mastodon",
   "column.about": "Pri",
   "column.blocks": "Blokitaj uzantoj",
   "column.bookmarks": "Legosignoj",
@@ -182,10 +182,10 @@
   "directory.local": "Nur de {domain}",
   "directory.new_arrivals": "Novaj alvenoj",
   "directory.recently_active": "Lastatempe aktiva",
-  "disabled_account_banner.account_settings": "Account settings",
+  "disabled_account_banner.account_settings": "Konto-agordoj",
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
   "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
+  "dismissable_banner.dismiss": "Eksigi",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
   "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
   "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
@@ -241,21 +241,21 @@
   "explore.trending_statuses": "Afiŝoj",
   "explore.trending_tags": "Kradvortoj",
   "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
-  "filter_modal.added.context_mismatch_title": "Context mismatch!",
+  "filter_modal.added.context_mismatch_title": "Ne kongruas la kunteksto!",
   "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
-  "filter_modal.added.expired_title": "Expired filter!",
+  "filter_modal.added.expired_title": "Eksvalida filtrilo!",
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Filtrilopcioj",
   "filter_modal.added.settings_link": "opciopaĝo",
   "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
-  "filter_modal.added.title": "Filter added!",
+  "filter_modal.added.title": "Filtrilo aldonita!",
   "filter_modal.select_filter.context_mismatch": "does not apply to this context",
   "filter_modal.select_filter.expired": "eksvalidiĝinta",
   "filter_modal.select_filter.prompt_new": "Nova klaso: {name}",
   "filter_modal.select_filter.search": "Serĉi aŭ krei",
   "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
-  "filter_modal.select_filter.title": "Filtri ĉi afiŝo",
-  "filter_modal.title.status": "Filter a post",
+  "filter_modal.select_filter.title": "Filtri ĉi tiun afiŝon",
+  "filter_modal.title.status": "Filtri mesaĝon",
   "follow_recommendations.done": "Farita",
   "follow_recommendations.heading": "Sekvi la personojn kies mesaĝojn vi volas vidi! Jen iom da sugestoj.",
   "follow_recommendations.lead": "La mesaĝoj de personoj kiujn vi sekvas, aperos laŭ kronologia ordo en via hejma templinio. Ne timu erari, vi povas ĉesi sekvi facile iam ajn!",
@@ -263,11 +263,11 @@
   "follow_request.reject": "Rifuzi",
   "follow_requests.unlocked_explanation": "Kvankam via konto ne estas ŝlosita, la teamo de {domain} pensas, ke vi eble volas permane kontroli la demandojn de sekvado de ĉi tiuj kontoj.",
   "footer.about": "Pri",
-  "footer.directory": "Profiles directory",
+  "footer.directory": "Profilujo",
   "footer.get_app": "Akiru la Programon",
   "footer.invite": "Inviti homojn",
-  "footer.keyboard_shortcuts": "Keyboard shortcuts",
-  "footer.privacy_policy": "Privacy policy",
+  "footer.keyboard_shortcuts": "Fulmoklavoj",
+  "footer.privacy_policy": "Politiko de privateco",
   "footer.source_code": "Montri fontkodon",
   "generic.saved": "Konservita",
   "getting_started.heading": "Por komenci",
@@ -291,14 +291,14 @@
   "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
   "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
+  "interaction_modal.on_another_server": "En alia servilo",
+  "interaction_modal.on_this_server": "En ĉi tiu servilo",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
-  "interaction_modal.title.follow": "Follow {name}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.title.favourite": "Aldoni afiŝon de {name} al la preferaĵoj",
+  "interaction_modal.title.follow": "Sekvi {name}",
+  "interaction_modal.title.reblog": "Suprenigi la afiŝon de {name}",
+  "interaction_modal.title.reply": "Respondi al la afiŝo de {name}",
   "intervals.full.days": "{number, plural, one {# tago} other {# tagoj}}",
   "intervals.full.hours": "{number, plural, one {# horo} other {# horoj}}",
   "intervals.full.minutes": "{number, plural, one {# minuto} other {# minutoj}}",
@@ -311,8 +311,8 @@
   "keyboard_shortcuts.direct": "malfermi la kolumnon de rektaj mesaĝoj",
   "keyboard_shortcuts.down": "iri suben en la listo",
   "keyboard_shortcuts.enter": "malfermi mesaĝon",
-  "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al preferaĵoj",
-  "keyboard_shortcuts.favourites": "Malfermi la liston de preferaĵoj",
+  "keyboard_shortcuts.favourite": "Aldoni la mesaĝon al la preferaĵoj",
+  "keyboard_shortcuts.favourites": "Malfermi la liston de la preferaĵoj",
   "keyboard_shortcuts.federated": "Malfermi la frataran templinion",
   "keyboard_shortcuts.heading": "Klavaraj mallongigoj",
   "keyboard_shortcuts.home": "Malfermi la hejman templinion",
@@ -365,7 +365,7 @@
   "mute_modal.duration": "Daŭro",
   "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?",
   "mute_modal.indefinite": "Nedifinita",
-  "navigation_bar.about": "About",
+  "navigation_bar.about": "Pri",
   "navigation_bar.blocks": "Blokitaj uzantoj",
   "navigation_bar.bookmarks": "Legosignoj",
   "navigation_bar.community_timeline": "Loka templinio",
@@ -386,7 +386,7 @@
   "navigation_bar.pins": "Alpinglitaj mesaĝoj",
   "navigation_bar.preferences": "Preferoj",
   "navigation_bar.public_timeline": "Fratara templinio",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "Serĉi",
   "navigation_bar.security": "Sekureco",
   "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
   "notification.admin.report": "{name} raportis {target}",
@@ -457,7 +457,7 @@
   "privacy.unlisted.long": "Videbla por ĉiuj, sed ekskluzive de la funkcio de esploro",
   "privacy.unlisted.short": "Nelistigita",
   "privacy_policy.last_updated": "Last updated {date}",
-  "privacy_policy.title": "Privacy Policy",
+  "privacy_policy.title": "Politiko de privateco",
   "refresh": "Refreŝigu",
   "regeneration_indicator.label": "Ŝargado…",
   "regeneration_indicator.sublabel": "Via abonfluo estas preparata!",
@@ -555,7 +555,7 @@
   "status.edited_x_times": "Redactita {count, plural, one {{count} fojon} other {{count} fojojn}}",
   "status.embed": "Enkorpigi",
   "status.favourite": "Aldoni al viaj preferaĵoj",
-  "status.filter": "Filtri ĉi afiŝo",
+  "status.filter": "Filtri ĉi tiun afiŝon",
   "status.filtered": "Filtrita",
   "status.hide": "Kaŝi la mesaĝon",
   "status.history.created": "{name} kreis {date}",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index 1005256be..0717d45ab 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Todavía este usuario no sigue a nadie.",
   "account.follows_you": "Te sigue",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ir al perfil",
   "account.hide_reblogs": "Ocultar adhesiones de @{name}",
   "account.joined_short": "En este servidor desde",
   "account.languages": "Cambiar idiomas suscritos",
@@ -182,8 +182,8 @@
   "directory.local": "Sólo de {domain}",
   "directory.new_arrivals": "Recién llegados",
   "directory.recently_active": "Recientemente activos",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Config. de la cuenta",
+  "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.",
   "dismissable_banner.community_timeline": "Estos son los mensajes públicos más recientes de cuentas alojadas en {domain}.",
   "dismissable_banner.dismiss": "Descartar",
   "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada ahora mismo.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}",
   "missing_indicator.label": "No se encontró",
   "missing_indicator.sublabel": "No se encontró este recurso",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?",
   "mute_modal.indefinite": "Indefinida",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 12779161e..a01bf0c04 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -47,7 +47,7 @@
   "account.locked_info": "El estado de privacidad de esta cuenta està configurado como bloqueado. El proprietario debe revisar manualmente quien puede seguirle.",
   "account.media": "Multimedia",
   "account.mention": "Mencionar @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "{name} ha indicado que su nueva cuenta es ahora:",
   "account.mute": "Silenciar a @{name}",
   "account.mute_notifications": "Silenciar notificaciones de @{name}",
   "account.muted": "Silenciado",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index f9578ae9d..133ee0792 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Siguiendo}}",
   "account.follows.empty": "Este usuario todavía no sigue a nadie.",
   "account.follows_you": "Te sigue",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ir al perfil",
   "account.hide_reblogs": "Ocultar retoots de @{name}",
   "account.joined_short": "Se unió",
   "account.languages": "Cambiar idiomas suscritos",
@@ -182,8 +182,8 @@
   "directory.local": "Sólo de {domain}",
   "directory.new_arrivals": "Recién llegados",
   "directory.recently_active": "Recientemente activo",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Ajustes de la cuenta",
+  "disabled_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada.",
   "dismissable_banner.community_timeline": "Estas son las publicaciones públicas más recientes de personas cuyas cuentas están alojadas en {domain}.",
   "dismissable_banner.dismiss": "Descartar",
   "dismissable_banner.explore_links": "Estas noticias están siendo discutidas por personas en este y otros servidores de la red descentralizada en este momento.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Cambiar visibilidad",
   "missing_indicator.label": "No encontrado",
   "missing_indicator.sublabel": "No se encontró este recurso",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
   "mute_modal.indefinite": "Indefinida",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index b5a05f17f..7a03798c3 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} seuraa} other {{counter} seuraa}}",
   "account.follows.empty": "Tämä käyttäjä ei vielä seuraa ketään.",
   "account.follows_you": "Seuraa sinua",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Mene profiiliin",
   "account.hide_reblogs": "Piilota buustaukset käyttäjältä @{name}",
   "account.joined_short": "Liittynyt",
   "account.languages": "Vaihda tilattuja kieliä",
@@ -47,7 +47,7 @@
   "account.locked_info": "Tämän tilin yksityisyyden tila on asetettu lukituksi. Omistaja arvioi manuaalisesti, kuka voi seurata niitä.",
   "account.media": "Media",
   "account.mention": "Mainitse @{name}",
-  "account.moved_to": "{name} on ilmoittanut, että heidän uusi tilinsä on nyt:",
+  "account.moved_to": "{name} on ilmoittanut uudeksi tilikseen",
   "account.mute": "Mykistä @{name}",
   "account.mute_notifications": "Mykistä ilmoitukset käyttäjältä @{name}",
   "account.muted": "Mykistetty",
@@ -164,7 +164,7 @@
   "confirmations.logout.confirm": "Kirjaudu ulos",
   "confirmations.logout.message": "Oletko varma, että haluat kirjautua ulos?",
   "confirmations.mute.confirm": "Mykistä",
-  "confirmations.mute.explanation": "Tämä piilottaa heidän julkaisut ja julkaisut, joissa heidät mainitaan, mutta sallii edelleen heidän nähdä julkaisusi ja seurata sinua.",
+  "confirmations.mute.explanation": "Tämä toiminto piilottaa heidän julkaisunsa sinulta – mukaan lukien ne, joissa heidät mainitaan – sallien heidän yhä nähdä julkaisusi ja seurata sinua.",
   "confirmations.mute.message": "Haluatko varmasti mykistää käyttäjän {name}?",
   "confirmations.redraft.confirm": "Poista & palauta muokattavaksi",
   "confirmations.redraft.message": "Oletko varma että haluat poistaa tämän julkaisun ja tehdä siitä uuden luonnoksen? Suosikit ja buustaukset menetään, alkuperäisen julkaisusi vastaukset jäävät orvoiksi.",
@@ -182,8 +182,8 @@
   "directory.local": "Vain palvelimelta {domain}",
   "directory.new_arrivals": "Äskettäin saapuneet",
   "directory.recently_active": "Hiljattain aktiiviset",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Tilin asetukset",
+  "disabled_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä.",
   "dismissable_banner.community_timeline": "Nämä ovat uusimmat julkiset viestit ihmisiltä, joiden tilejä isännöi {domain}.",
   "dismissable_banner.dismiss": "Hylkää",
   "dismissable_banner.explore_links": "Näistä uutisista puhuvat ihmiset juuri nyt tällä ja muilla hajautetun verkon palvelimilla.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}",
   "missing_indicator.label": "Ei löytynyt",
   "missing_indicator.sublabel": "Tätä resurssia ei löytynyt",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.",
   "mute_modal.duration": "Kesto",
   "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
   "mute_modal.indefinite": "Ikuisesti",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 0d8bad817..421041e6d 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Abonnement} other {{counter} Abonnements}}",
   "account.follows.empty": "Cet·te utilisateur·rice ne suit personne pour l’instant.",
   "account.follows_you": "Vous suit",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Voir le profil",
   "account.hide_reblogs": "Masquer les partages de @{name}",
   "account.joined_short": "Ici depuis",
   "account.languages": "Changer les langues abonnées",
@@ -182,8 +182,8 @@
   "directory.local": "De {domain} seulement",
   "directory.new_arrivals": "Inscrit·e·s récemment",
   "directory.recently_active": "Actif·ve·s récemment",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Paramètres du compte",
+  "disabled_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé.",
   "dismissable_banner.community_timeline": "Voici les messages publics les plus récents des personnes dont les comptes sont hébergés par {domain}.",
   "dismissable_banner.dismiss": "Rejeter",
   "dismissable_banner.explore_links": "Ces nouvelles sont actuellement en cours de discussion par des personnes sur d'autres serveurs du réseau décentralisé ainsi que sur celui-ci.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
   "missing_indicator.label": "Non trouvé",
   "missing_indicator.sublabel": "Ressource introuvable",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déplacé vers {movedToAccount}.",
   "mute_modal.duration": "Durée",
   "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?",
   "mute_modal.indefinite": "Indéfinie",
@@ -532,7 +532,7 @@
   "search_results.title": "Rechercher {q}",
   "search_results.total": "{count, number} {count, plural, one {résultat} other {résultats}}",
   "server_banner.about_active_users": "Personnes utilisant ce serveur au cours des 30 derniers jours (Utilisateur·rice·s Actifs·ives Mensuellement)",
-  "server_banner.active_users": "Utilisateur·rice·s actif·ve·s",
+  "server_banner.active_users": "Utilisateurs actifs",
   "server_banner.administered_by": "Administré par :",
   "server_banner.introduction": "{domain} fait partie du réseau social décentralisé propulsé par {mastodon}.",
   "server_banner.learn_more": "En savoir plus",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index b3c25a5f6..dab592195 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -4,14 +4,14 @@
   "about.disclaimer": "Bogearra foinse oscailte saor in aisce is ea Mastodon, agus is le Mastodon gGmbH an trádmharc.",
   "about.domain_blocks.comment": "Fáth",
   "about.domain_blocks.domain": "Fearann",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
+  "about.domain_blocks.preamble": "Go hiondúil, tugann Mastadán cead duit a bheith ag plé le húsáideoirí as freastalaí ar bith eile sa chomhchruinne agus a gcuid inneachair a fheiceáil. Seo iad na heisceachtaí a rinneadh ar an bhfreastalaí áirithe seo.",
   "about.domain_blocks.severity": "Déine",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
+  "about.domain_blocks.silenced.explanation": "Go hiondúil ní fheicfidh tú próifílí ná inneachar ón bhfreastalaí seo, ach amháin má bhíonn tú á lorg nó má ghlacann tú lena leanúint d'aon ghnó.",
   "about.domain_blocks.silenced.title": "Teoranta",
   "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
   "about.domain_blocks.suspended.title": "Ar fionraí",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
+  "about.not_available": "Níor cuireadh an t-eolas seo ar fáil ar an bhfreastalaí seo.",
+  "about.powered_by": "Meáin shóisialta díláraithe faoi chumhacht {mastodon}",
   "about.rules": "Rialacha an fhreastalaí",
   "account.account_note_header": "Nóta",
   "account.add_or_remove_from_list": "Cuir Le nó Bain De na liostaí",
@@ -39,15 +39,15 @@
   "account.following_counter": "{count, plural, one {Ag leanúint cúntas amháin} other {Ag leanúint {counter} cúntas}}",
   "account.follows.empty": "Ní leanann an t-úsáideoir seo duine ar bith fós.",
   "account.follows_you": "Do do leanúint",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Téigh go dtí próifíl",
   "account.hide_reblogs": "Folaigh athphostálacha ó @{name}",
   "account.joined_short": "Cláraithe",
   "account.languages": "Athraigh teangacha foscríofa",
-  "account.link_verified_on": "Ownership of this link was checked on {date}",
+  "account.link_verified_on": "Seiceáladh úinéireacht an naisc seo ar {date}",
   "account.locked_info": "Tá an socrú príobháideachais don cuntas seo curtha go 'faoi ghlas'. Déanann an t-úinéir léirmheas ar cén daoine atá ceadaithe an cuntas leanúint.",
   "account.media": "Ábhair",
   "account.mention": "Luaigh @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "Tá tugtha le fios ag {name} gurb é an cuntas nua atá acu ná:",
   "account.mute": "Balbhaigh @{name}",
   "account.mute_notifications": "Balbhaigh fógraí ó @{name}",
   "account.muted": "Balbhaithe",
@@ -81,7 +81,7 @@
   "audio.hide": "Cuir fuaim i bhfolach",
   "autosuggest_hashtag.per_week": "{count} sa seachtain",
   "boost_modal.combo": "Is féidir leat brúigh {combo} chun é seo a scipeáil an chéad uair eile",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
+  "bundle_column_error.copy_stacktrace": "Cóipeáil tuairisc earráide",
   "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
   "bundle_column_error.error.title": "Ná habair!",
   "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
@@ -104,9 +104,9 @@
   "column.community": "Amlíne áitiúil",
   "column.direct": "Teachtaireachtaí dhíreacha",
   "column.directory": "Brabhsáil próifílí",
-  "column.domain_blocks": "Blocked domains",
+  "column.domain_blocks": "Fearainn bhactha",
   "column.favourites": "Roghanna",
-  "column.follow_requests": "Follow requests",
+  "column.follow_requests": "Iarratais leanúnaí",
   "column.home": "Baile",
   "column.lists": "Liostaí",
   "column.mutes": "Úsáideoirí balbhaithe",
@@ -115,25 +115,25 @@
   "column.public": "Amlíne cónaidhmithe",
   "column_back_button.label": "Siar",
   "column_header.hide_settings": "Folaigh socruithe",
-  "column_header.moveLeft_settings": "Move column to the left",
-  "column_header.moveRight_settings": "Move column to the right",
+  "column_header.moveLeft_settings": "Bog an colún ar chlé",
+  "column_header.moveRight_settings": "Bog an colún ar dheis",
   "column_header.pin": "Greamaigh",
   "column_header.show_settings": "Taispeáin socruithe",
   "column_header.unpin": "Díghreamaigh",
   "column_subheading.settings": "Socruithe",
   "community.column_settings.local_only": "Áitiúil amháin",
   "community.column_settings.media_only": "Meáin Amháin",
-  "community.column_settings.remote_only": "Remote only",
+  "community.column_settings.remote_only": "Cian amháin",
   "compose.language.change": "Athraigh teanga",
   "compose.language.search": "Cuardaigh teangacha...",
   "compose_form.direct_message_warning_learn_more": "Tuilleadh eolais",
   "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
   "compose_form.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
-  "compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
+  "compose_form.lock_disclaimer": "Níl an cuntas seo {locked}. Féadfaidh duine ar bith tú a leanúint agus na postálacha atá dírithe agat ar do lucht leanúna amháin a fheiceáil.",
   "compose_form.lock_disclaimer.lock": "faoi ghlas",
   "compose_form.placeholder": "Cad atá ag tarlú?",
   "compose_form.poll.add_option": "Cuir rogha isteach",
-  "compose_form.poll.duration": "Poll duration",
+  "compose_form.poll.duration": "Achar suirbhéanna",
   "compose_form.poll.option_placeholder": "Rogha {number}",
   "compose_form.poll.remove_option": "Bain an rogha seo",
   "compose_form.poll.switch_to_multiple": "Athraigh suirbhé chun cead a thabhairt do ilrogha",
@@ -144,54 +144,54 @@
   "compose_form.sensitive.hide": "{count, plural, one {Mark media as sensitive} other {Mark media as sensitive}}",
   "compose_form.sensitive.marked": "{count, plural, one {Media is marked as sensitive} other {Media is marked as sensitive}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Media is not marked as sensitive} other {Media is not marked as sensitive}}",
-  "compose_form.spoiler.marked": "Text is hidden behind warning",
-  "compose_form.spoiler.unmarked": "Text is not hidden",
-  "compose_form.spoiler_placeholder": "Write your warning here",
+  "compose_form.spoiler.marked": "Bain rabhadh ábhair",
+  "compose_form.spoiler.unmarked": "Cuir rabhadh ábhair",
+  "compose_form.spoiler_placeholder": "Scríobh do rabhadh anseo",
   "confirmation_modal.cancel": "Cealaigh",
   "confirmations.block.block_and_report": "Bac ⁊ Tuairiscigh",
   "confirmations.block.confirm": "Bac",
   "confirmations.block.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhac?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "Éirigh as iarratas",
+  "confirmations.cancel_follow_request.message": "An bhfuil tú cinnte gur mhaith leat éirigh as an iarratas leanta {name}?",
   "confirmations.delete.confirm": "Scrios",
   "confirmations.delete.message": "An bhfuil tú cinnte gur mhaith leat an phostáil seo a scriosadh?",
   "confirmations.delete_list.confirm": "Scrios",
   "confirmations.delete_list.message": "An bhfuil tú cinnte gur mhaith leat an liosta seo a scriosadh go buan?",
   "confirmations.discard_edit_media.confirm": "Faigh réidh de",
   "confirmations.discard_edit_media.message": "Tá athruithe neamhshlánaithe don tuarascáil gné nó réamhamharc agat, faigh réidh dóibh ar aon nós?",
-  "confirmations.domain_block.confirm": "Hide entire domain",
+  "confirmations.domain_block.confirm": "Bac fearann go hiomlán",
   "confirmations.domain_block.message": "An bhfuil tú iontach cinnte gur mhaith leat bac an t-ainm fearainn {domain} in iomlán? I bhformhór na gcásanna, is leor agus is fearr cúpla baic a cur i bhfeidhm nó cúpla úsáideoirí a balbhú. Ní fheicfidh tú ábhair ón t-ainm fearainn sin in amlíne ar bith, nó i d'fhógraí. Scaoilfear do leantóirí ón ainm fearainn sin.",
   "confirmations.logout.confirm": "Logáil amach",
   "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?",
   "confirmations.mute.confirm": "Balbhaigh",
   "confirmations.mute.explanation": "This will hide posts from them and posts mentioning them, but it will still allow them to see your posts and follow you.",
   "confirmations.mute.message": "An bhfuil tú cinnte gur mhaith leat {name} a bhalbhú?",
-  "confirmations.redraft.confirm": "Delete & redraft",
+  "confirmations.redraft.confirm": "Scrios ⁊ athdhréachtaigh",
   "confirmations.redraft.message": "An bhfuil tú cinnte gur mhaith leat an phostáil sin a scriosadh agus athdhréachtú? Beidh roghanna agus treisithe caillte, agus beidh freagraí ar an bpostáil bhunúsach ina ndílleachtaí.",
   "confirmations.reply.confirm": "Freagair",
   "confirmations.reply.message": "Replying now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.unfollow.confirm": "Ná lean",
-  "confirmations.unfollow.message": "Are you sure you want to unfollow {name}?",
-  "conversation.delete": "Delete conversation",
+  "confirmations.unfollow.message": "An bhfuil tú cinnte gur mhaith leat {name} a dhíleanúint?",
+  "conversation.delete": "Scrios comhrá",
   "conversation.mark_as_read": "Marcáil mar léite",
-  "conversation.open": "View conversation",
-  "conversation.with": "With {names}",
-  "copypaste.copied": "Copied",
+  "conversation.open": "Féach ar comhrá",
+  "conversation.with": "Le {names}",
+  "copypaste.copied": "Cóipeáilte",
   "copypaste.copy": "Cóipeáil",
   "directory.federated": "From known fediverse",
   "directory.local": "Ó {domain} amháin",
   "directory.new_arrivals": "Daoine atá tar éis teacht",
   "directory.recently_active": "Daoine gníomhacha le déanaí",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
+  "disabled_account_banner.account_settings": "Socruithe cuntais",
+  "disabled_account_banner.text": "Tá do chuntas {disabledAccount} díchumasaithe faoi láthair.",
+  "dismissable_banner.community_timeline": "Seo iad na postála is déanaí ó dhaoine le cuntais ar {domain}.",
   "dismissable_banner.dismiss": "Diúltaigh",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
   "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
   "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
   "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
   "embed.instructions": "Embed this status on your website by copying the code below.",
-  "embed.preview": "Here is what it will look like:",
+  "embed.preview": "Seo an chuma a bheidh air:",
   "emoji_button.activity": "Gníomhaíocht",
   "emoji_button.clear": "Glan",
   "emoji_button.custom": "Saincheaptha",
@@ -199,10 +199,10 @@
   "emoji_button.food": "Bia ⁊ Ól",
   "emoji_button.label": "Cuir emoji isteach",
   "emoji_button.nature": "Nádur",
-  "emoji_button.not_found": "No matching emojis found",
-  "emoji_button.objects": "Objects",
+  "emoji_button.not_found": "Ní bhfuarthas an cineál emoji sin",
+  "emoji_button.objects": "Rudaí",
   "emoji_button.people": "Daoine",
-  "emoji_button.recent": "Frequently used",
+  "emoji_button.recent": "Úsáidte go minic",
   "emoji_button.search": "Cuardaigh...",
   "emoji_button.search_results": "Torthaí cuardaigh",
   "emoji_button.symbols": "Comharthaí",
@@ -210,19 +210,19 @@
   "empty_column.account_suspended": "Cuntas ar fionraí",
   "empty_column.account_timeline": "Níl postálacha ar bith anseo!",
   "empty_column.account_unavailable": "Níl an phróifíl ar fáil",
-  "empty_column.blocks": "You haven't blocked any users yet.",
+  "empty_column.blocks": "Níl aon úsáideoir bactha agat fós.",
   "empty_column.bookmarked_statuses": "You don't have any bookmarked posts yet. When you bookmark one, it will show up here.",
   "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
   "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
-  "empty_column.domain_blocks": "There are no blocked domains yet.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.domain_blocks": "Níl aon fearainn bhactha ann go fóill.",
+  "empty_column.explore_statuses": "Níl rud ar bith ag treochtáil faoi láthair. Tar ar ais ar ball!",
   "empty_column.favourited_statuses": "Níor roghnaigh tú postáil ar bith fós. Nuair a roghnaigh tú ceann, beidh sí le feiceáil anseo.",
   "empty_column.favourites": "Níor roghnaigh éinne an phostáil seo fós. Nuair a roghnaigh duine éigin, beidh siad le feiceáil anseo.",
   "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
   "empty_column.follow_requests": "You don't have any follow requests yet. When you receive one, it will show up here.",
-  "empty_column.hashtag": "There is nothing in this hashtag yet.",
-  "empty_column.home": "Your home timeline is empty! Follow more people to fill it up. {suggestions}",
-  "empty_column.home.suggestions": "See some suggestions",
+  "empty_column.hashtag": "Níl rud ar bith faoin haischlib seo go fóill.",
+  "empty_column.home": "Tá d'amlíne baile folamh! B'fhiú duit cúpla duine eile a leanúint lena líonadh! {suggestions}",
+  "empty_column.home.suggestions": "Féach ar roinnt moltaí",
   "empty_column.list": "There is nothing in this list yet. When members of this list post new statuses, they will appear here.",
   "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
   "empty_column.mutes": "Níl aon úsáideoir balbhaithe agat fós.",
@@ -233,7 +233,7 @@
   "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
   "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
+  "errors.unexpected_crash.report_issue": "Tuairiscigh deacracht",
   "explore.search_results": "Torthaí cuardaigh",
   "explore.suggested_follows": "Duitse",
   "explore.title": "Féach thart",
@@ -245,7 +245,7 @@
   "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
   "filter_modal.added.expired_title": "Expired filter!",
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
-  "filter_modal.added.review_and_configure_title": "Filter settings",
+  "filter_modal.added.review_and_configure_title": "Socruithe scagtha",
   "filter_modal.added.settings_link": "leathan socruithe",
   "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
   "filter_modal.added.title": "Filter added!",
@@ -254,16 +254,16 @@
   "filter_modal.select_filter.prompt_new": "Catagóir nua: {name}",
   "filter_modal.select_filter.search": "Search or create",
   "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
-  "filter_modal.select_filter.title": "Filter this post",
-  "filter_modal.title.status": "Filter a post",
+  "filter_modal.select_filter.title": "Déan scagadh ar an bpostáil seo",
+  "filter_modal.title.status": "Déan scagadh ar phostáil",
   "follow_recommendations.done": "Déanta",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
   "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
   "follow_request.authorize": "Ceadaigh",
   "follow_request.reject": "Diúltaigh",
-  "follow_requests.unlocked_explanation": "Even though your account is not locked, the {domain} staff thought you might want to review follow requests from these accounts manually.",
+  "follow_requests.unlocked_explanation": "Cé nach bhfuil do chuntas faoi ghlas, cheap foireann {domain} gur mhaith leat súil siar ar iarratais leanúnaí as na cuntais seo.",
   "footer.about": "Maidir le",
-  "footer.directory": "Profiles directory",
+  "footer.directory": "Eolaire próifílí",
   "footer.get_app": "Faigh an aip",
   "footer.invite": "Invite people",
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
@@ -276,7 +276,7 @@
   "hashtag.column_header.tag_mode.none": "gan {additional}",
   "hashtag.column_settings.select.no_options_message": "No suggestions found",
   "hashtag.column_settings.select.placeholder": "Iontráil haischlibeanna…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
+  "hashtag.column_settings.tag_mode.all": "Iad seo go léir",
   "hashtag.column_settings.tag_mode.any": "Any of these",
   "hashtag.column_settings.tag_mode.none": "None of these",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
@@ -285,8 +285,8 @@
   "home.column_settings.basic": "Bunúsach",
   "home.column_settings.show_reblogs": "Taispeáin treisithe",
   "home.column_settings.show_replies": "Taispeán freagraí",
-  "home.hide_announcements": "Hide announcements",
-  "home.show_announcements": "Show announcements",
+  "home.hide_announcements": "Cuir fógraí i bhfolach",
+  "home.show_announcements": "Taispeáin fógraí",
   "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
   "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
   "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
@@ -303,7 +303,7 @@
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
   "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
   "keyboard_shortcuts.back": "to navigate back",
-  "keyboard_shortcuts.blocked": "to open blocked users list",
+  "keyboard_shortcuts.blocked": "Oscail liosta na n-úsáideoirí bactha",
   "keyboard_shortcuts.boost": "Treisigh postáil",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
@@ -313,13 +313,13 @@
   "keyboard_shortcuts.enter": "Oscail postáil",
   "keyboard_shortcuts.favourite": "Roghnaigh postáil",
   "keyboard_shortcuts.favourites": "Oscail liosta roghanna",
-  "keyboard_shortcuts.federated": "to open federated timeline",
-  "keyboard_shortcuts.heading": "Keyboard Shortcuts",
+  "keyboard_shortcuts.federated": "Oscail amlíne cónaidhmithe",
+  "keyboard_shortcuts.heading": "Aicearraí méarchláir",
   "keyboard_shortcuts.home": "to open home timeline",
   "keyboard_shortcuts.hotkey": "Eochair aicearra",
   "keyboard_shortcuts.legend": "to display this legend",
   "keyboard_shortcuts.local": "Oscail an amlíne áitiúil",
-  "keyboard_shortcuts.mention": "to mention author",
+  "keyboard_shortcuts.mention": "Luaigh údar",
   "keyboard_shortcuts.muted": "Oscail liosta na n-úsáideoirí balbhaithe",
   "keyboard_shortcuts.my_profile": "Oscail do phróifíl",
   "keyboard_shortcuts.notifications": "to open notifications column",
@@ -327,12 +327,12 @@
   "keyboard_shortcuts.pinned": "to open pinned posts list",
   "keyboard_shortcuts.profile": "Oscail próifíl an t-údar",
   "keyboard_shortcuts.reply": "Freagair ar phostáil",
-  "keyboard_shortcuts.requests": "to open follow requests list",
+  "keyboard_shortcuts.requests": "Oscail liosta iarratas leanúnaí",
   "keyboard_shortcuts.search": "to focus search",
   "keyboard_shortcuts.spoilers": "to show/hide CW field",
   "keyboard_shortcuts.start": "to open \"get started\" column",
   "keyboard_shortcuts.toggle_hidden": "to show/hide text behind CW",
-  "keyboard_shortcuts.toggle_sensitivity": "to show/hide media",
+  "keyboard_shortcuts.toggle_sensitivity": "Taispeáin / cuir i bhfolach meáin",
   "keyboard_shortcuts.toot": "Cuir tús le postáil nua",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
@@ -351,10 +351,10 @@
   "lists.new.create": "Cruthaigh liosta",
   "lists.new.title_placeholder": "New list title",
   "lists.replies_policy.followed": "Any followed user",
-  "lists.replies_policy.list": "Members of the list",
+  "lists.replies_policy.list": "Baill an liosta",
   "lists.replies_policy.none": "Duine ar bith",
   "lists.replies_policy.title": "Show replies to:",
-  "lists.search": "Search among people you follow",
+  "lists.search": "Cuardaigh i measc daoine atá á leanúint agat",
   "lists.subheading": "Do liostaí",
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Ag lódáil...",
@@ -366,13 +366,13 @@
   "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?",
   "mute_modal.indefinite": "Gan téarma",
   "navigation_bar.about": "Maidir le",
-  "navigation_bar.blocks": "Blocked users",
+  "navigation_bar.blocks": "Cuntais bhactha",
   "navigation_bar.bookmarks": "Leabharmharcanna",
   "navigation_bar.community_timeline": "Amlíne áitiúil",
   "navigation_bar.compose": "Cum postáil nua",
   "navigation_bar.direct": "Teachtaireachtaí dhíreacha",
   "navigation_bar.discover": "Faigh amach",
-  "navigation_bar.domain_blocks": "Hidden domains",
+  "navigation_bar.domain_blocks": "Fearainn bhactha",
   "navigation_bar.edit_profile": "Cuir an phróifíl in eagar",
   "navigation_bar.explore": "Féach thart",
   "navigation_bar.favourites": "Roghanna",
@@ -389,12 +389,12 @@
   "navigation_bar.search": "Cuardaigh",
   "navigation_bar.security": "Slándáil",
   "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} reported {target}",
-  "notification.admin.sign_up": "{name} signed up",
+  "notification.admin.report": "Tuairiscigh {name} {target}",
+  "notification.admin.sign_up": "Chláraigh {name}",
   "notification.favourite": "Roghnaigh {name} do phostáil",
   "notification.follow": "Lean {name} thú",
   "notification.follow_request": "D'iarr {name} ort do chuntas a leanúint",
-  "notification.mention": "{name} mentioned you",
+  "notification.mention": "Luaigh {name} tú",
   "notification.own_poll": "Your poll has ended",
   "notification.poll": "A poll you have voted in has ended",
   "notification.reblog": "Threisigh {name} do phostáil",
@@ -408,14 +408,14 @@
   "notifications.column_settings.favourite": "Roghanna:",
   "notifications.column_settings.filter_bar.advanced": "Display all categories",
   "notifications.column_settings.filter_bar.category": "Quick filter bar",
-  "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
+  "notifications.column_settings.filter_bar.show_bar": "Taispeáin barra scagaire",
   "notifications.column_settings.follow": "Leantóirí nua:",
   "notifications.column_settings.follow_request": "Iarratais leanúnaí nua:",
   "notifications.column_settings.mention": "Tráchtanna:",
-  "notifications.column_settings.poll": "Poll results:",
+  "notifications.column_settings.poll": "Torthaí suirbhéanna:",
   "notifications.column_settings.push": "Brúfhógraí",
   "notifications.column_settings.reblog": "Treisithe:",
-  "notifications.column_settings.show": "Show in column",
+  "notifications.column_settings.show": "Taispeáin i gcolún",
   "notifications.column_settings.sound": "Seinn an fhuaim",
   "notifications.column_settings.status": "Postálacha nua:",
   "notifications.column_settings.unread_notifications.category": "Brúfhógraí neamhléite",
@@ -426,7 +426,7 @@
   "notifications.filter.favourites": "Roghanna",
   "notifications.filter.follows": "Ag leanúint",
   "notifications.filter.mentions": "Tráchtanna",
-  "notifications.filter.polls": "Poll results",
+  "notifications.filter.polls": "Torthaí suirbhéanna",
   "notifications.filter.statuses": "Updates from people you follow",
   "notifications.grant_permission": "Grant permission.",
   "notifications.group": "{count} notifications",
@@ -445,8 +445,8 @@
   "poll.vote": "Vótáil",
   "poll.voted": "You voted for this answer",
   "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
+  "poll_button.add_poll": "Cruthaigh suirbhé",
+  "poll_button.remove_poll": "Bain suirbhé",
   "privacy.change": "Adjust status privacy",
   "privacy.direct.long": "Visible for mentioned users only",
   "privacy.direct.short": "Direct",
@@ -477,7 +477,7 @@
   "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": "Eile",
   "report.categories.spam": "Turscar",
-  "report.categories.violation": "Content violates one or more server rules",
+  "report.categories.violation": "Sáraíonn ábhar riail freastalaí amháin nó níos mó",
   "report.category.subtitle": "Roghnaigh an toradh is fearr",
   "report.category.title": "Tell us what's going on with this {type}",
   "report.category.title_account": "próifíl",
@@ -502,7 +502,7 @@
   "report.rules.title": "Which rules are being violated?",
   "report.statuses.subtitle": "Select all that apply",
   "report.statuses.title": "Are there any posts that back up this report?",
-  "report.submit": "Submit report",
+  "report.submit": "Cuir isteach",
   "report.target": "Ag tuairisciú {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}:",
@@ -557,7 +557,7 @@
   "status.favourite": "Rogha",
   "status.filter": "Filter this post",
   "status.filtered": "Filtered",
-  "status.hide": "Hide toot",
+  "status.hide": "Cuir postáil i bhfolach",
   "status.history.created": "{name} created {date}",
   "status.history.edited": "Curtha in eagar ag {name} in {date}",
   "status.load_more": "Lódáil a thuilleadh",
@@ -574,20 +574,20 @@
   "status.reblog_private": "Treisigh le léargas bunúsach",
   "status.reblogged_by": "Treisithe ag {name}",
   "status.reblogs.empty": "Níor threisigh éinne an phostáil seo fós. Nuair a threisigh duine éigin, beidh siad le feiceáil anseo.",
-  "status.redraft": "Delete & re-draft",
+  "status.redraft": "Scrios ⁊ athdhréachtaigh",
   "status.remove_bookmark": "Remove bookmark",
   "status.replied_to": "Replied to {name}",
   "status.reply": "Freagair",
-  "status.replyAll": "Reply to thread",
+  "status.replyAll": "Freagair le snáithe",
   "status.report": "Tuairiscigh @{name}",
-  "status.sensitive_warning": "Sensitive content",
+  "status.sensitive_warning": "Ábhar íogair",
   "status.share": "Comhroinn",
-  "status.show_filter_reason": "Show anyway",
-  "status.show_less": "Show less",
-  "status.show_less_all": "Show less for all",
-  "status.show_more": "Show more",
-  "status.show_more_all": "Show more for all",
-  "status.show_original": "Show original",
+  "status.show_filter_reason": "Taispeáin ar aon nós",
+  "status.show_less": "Taispeáin níos lú",
+  "status.show_less_all": "Taispeáin níos lú d'uile",
+  "status.show_more": "Taispeáin níos mó",
+  "status.show_more_all": "Taispeáin níos mó d'uile",
+  "status.show_original": "Taispeáin bunchóip",
   "status.translate": "Aistrigh",
   "status.translated_from_with": "D'Aistrigh ón {lang} ag úsáid {provider}",
   "status.uncached_media_warning": "Ní ar fáil",
@@ -617,7 +617,7 @@
   "units.short.billion": "{count}B",
   "units.short.million": "{count}M",
   "units.short.thousand": "{count}K",
-  "upload_area.title": "Drag & drop to upload",
+  "upload_area.title": "Tarraing ⁊ scaoil chun uaslódáil",
   "upload_button.label": "Add images, a video or an audio file",
   "upload_error.limit": "File upload limit exceeded.",
   "upload_error.poll": "File upload not allowed with polls.",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index 6ed5c2b5d..3492aa54a 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -6,7 +6,7 @@
   "about.domain_blocks.domain": "Àrainn",
   "about.domain_blocks.preamble": "San fharsaingeachd, leigidh Mastodon leat susbaint o fhrithealaiche sam bith sa cho-shaoghal a shealltainn agus eadar-ghìomh a ghabhail leis na cleachdaichean uapa-san. Seo na h-easgaidhean a tha an sàs air an fhrithealaiche shònraichte seo.",
   "about.domain_blocks.severity": "Donad",
-  "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma leanas tu air.",
+  "about.domain_blocks.silenced.explanation": "Chan fharsaingeachd, chan fhaic thu pròifilean agus susbaint an fhrithealaiche seo ach ma nì thu lorg no ma tha thu ’ga leantainn.",
   "about.domain_blocks.silenced.title": "Cuingichte",
   "about.domain_blocks.suspended.explanation": "Cha dèid dàta sam bith on fhrithealaiche seo a phròiseasadh, a stòradh no iomlaid agus chan urrainn do na cleachdaichean on fhrithealaiche sin conaltradh no eadar-ghnìomh a ghabhail an-seo.",
   "about.domain_blocks.suspended.title": "’Na dhàil",
@@ -31,20 +31,20 @@
   "account.featured_tags.last_status_at": "Am post mu dheireadh {date}",
   "account.featured_tags.last_status_never": "Gun phost",
   "account.featured_tags.title": "Na tagaichean hais brosnaichte aig {name}",
-  "account.follow": "Lean air",
+  "account.follow": "Lean",
   "account.followers": "Luchd-leantainn",
   "account.followers.empty": "Chan eil neach sam bith a’ leantainn air a’ chleachdaiche seo fhathast.",
   "account.followers_counter": "{count, plural, one {{counter} neach-leantainn} two {{counter} neach-leantainn} few {{counter} luchd-leantainn} other {{counter} luchd-leantainn}}",
   "account.following": "A’ leantainn",
-  "account.following_counter": "{count, plural, one {A’ leantainn air {counter}} two {A’ leantainn air {counter}} few {A’ leantainn air {counter}} other {A’ leantainn air {counter}}}",
-  "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn air neach sam bith fhathast.",
+  "account.following_counter": "{count, plural, one {A’ leantainn {counter}} two {A’ leantainn {counter}} few {A’ leantainn {counter}} other {A’ leantainn {counter}}}",
+  "account.follows.empty": "Chan eil an cleachdaiche seo a’ leantainn neach sam bith fhathast.",
   "account.follows_you": "’Gad leantainn",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Tadhail air a’ phròifil",
   "account.hide_reblogs": "Falaich na brosnachaidhean o @{name}",
   "account.joined_short": "Air ballrachd fhaighinn",
   "account.languages": "Atharraich fo-sgrìobhadh nan cànan",
   "account.link_verified_on": "Chaidh dearbhadh cò leis a tha an ceangal seo {date}",
-  "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas leantainn orra.",
+  "account.locked_info": "Tha prìobhaideachd ghlaiste aig a’ chunntais seo. Nì an sealbhadair lèirmheas a làimh air cò dh’fhaodas a leantainn.",
   "account.media": "Meadhanan",
   "account.mention": "Thoir iomradh air @{name}",
   "account.moved_to": "Dh’innis {name} gu bheil an cunntas ùr aca a-nis air:",
@@ -96,7 +96,7 @@
   "closed_registrations.other_server_instructions": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chruthachadh air frithealaiche eile agus conaltradh ris an fhrithealaiche seo co-dhiù.",
   "closed_registrations_modal.description": "Cha ghabh cunntas a chruthachadh air {domain} aig an àm seo ach thoir an aire nach fheum thu cunntas air {domain} gu sònraichte airson Mastodon a chleachdadh.",
   "closed_registrations_modal.find_another_server": "Lorg frithealaiche eile",
-  "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut leantainn air duine sam bith air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!",
+  "closed_registrations_modal.preamble": "Tha Mastodon sgaoilte is mar sin dheth ge b’ e càit an cruthaich thu an cunntas agad, ’s urrainn dhut duine sam bith a leantainn air an fhrithealaiche seo is conaltradh leotha. ’S urrainn dhut fiù ’s frithealaiche agad fhèin òstadh!",
   "closed_registrations_modal.title": "Clàradh le Mastodon",
   "column.about": "Mu dhèidhinn",
   "column.blocks": "Cleachdaichean bacte",
@@ -129,7 +129,7 @@
   "compose_form.direct_message_warning_learn_more": "Barrachd fiosrachaidh",
   "compose_form.encryption_warning": "Chan eil crioptachadh ceann gu ceann air postaichean Mhastodon. Na co-roinn fiosrachadh dìomhair idir le Mastodon.",
   "compose_form.hashtag_warning": "Cha nochd am post seo fon taga hais on a tha e falaichte o liostaichean. Cha ghabh ach postaichean poblach a lorg a-rèir an tagaichean hais.",
-  "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith leantainn ort is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.",
+  "compose_form.lock_disclaimer": "Chan eil an cunntas agad {locked}. ’S urrainn do dhuine sam bith ’gad leantainn is na postaichean agad a tha ag amas air an luchd-leantainn agad a-mhàin a shealltainn.",
   "compose_form.lock_disclaimer.lock": "glaiste",
   "compose_form.placeholder": "Dè tha air d’ aire?",
   "compose_form.poll.add_option": "Cuir roghainn ris",
@@ -152,7 +152,7 @@
   "confirmations.block.confirm": "Bac",
   "confirmations.block.message": "A bheil thu cinnteach gu bheil thu airson {name} a bhacadh?",
   "confirmations.cancel_follow_request.confirm": "Cuir d’ iarrtas dhan dàrna taobh",
-  "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn air {name} a chur dhan dàrna taobh?",
+  "confirmations.cancel_follow_request.message": "A bheil thu cinnteach gu bheil thu airson d’ iarrtas leantainn {name} a chur dhan dàrna taobh?",
   "confirmations.delete.confirm": "Sguab às",
   "confirmations.delete.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às?",
   "confirmations.delete_list.confirm": "Sguab às",
@@ -160,18 +160,18 @@
   "confirmations.discard_edit_media.confirm": "Tilg air falbh",
   "confirmations.discard_edit_media.message": "Tha atharraichean gun sàbhaladh agad ann an tuairisgeul no ro-shealladh a’ mheadhain, a bheil thu airson an tilgeil air falbh co-dhiù?",
   "confirmations.domain_block.confirm": "Bac an àrainn uile gu lèir",
-  "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiod sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.",
+  "confirmations.domain_block.message": "A bheil thu cinnteach dha-rìribh gu bheil thu airson an àrainn {domain} a bhacadh uile gu lèir? Mar as trice, foghnaidh gun dèan thu bacadh no mùchadh no dhà gu sònraichte agus bhiodh sin na b’ fheàrr. Chan fhaic thu susbaint on àrainn ud air loidhne-ama phoblach sam bith no am measg nam brathan agad. Thèid an luchd-leantainn agad on àrainn ud a thoirt air falbh.",
   "confirmations.logout.confirm": "Clàraich a-mach",
   "confirmations.logout.message": "A bheil thu cinnteach gu bheil thu airson clàradh a-mach?",
   "confirmations.mute.confirm": "Mùch",
-  "confirmations.mute.explanation": "Cuiridh seo na postaichean uapa ’s na postaichean a bheir iomradh orra am falach ach chì iad-san na postaichean agad fhathast is faodaidh iad leantainn ort.",
+  "confirmations.mute.explanation": "Cuiridh seo na postaichean uapa ’s na postaichean a bheir iomradh orra am falach ach chì iad-san na postaichean agad fhathast is faodaidh iad ’gad leantainn.",
   "confirmations.mute.message": "A bheil thu cinnteach gu bheil thu airson {name} a mhùchadh?",
   "confirmations.redraft.confirm": "Sguab às ⁊ dèan dreachd ùr",
   "confirmations.redraft.message": "A bheil thu cinnteach gu bheil thu airson am post seo a sguabadh às agus dreachd ùr a thòiseachadh? Caillidh tu gach annsachd is brosnachadh air agus thèid freagairtean dhan phost thùsail ’nan dìlleachdanan.",
   "confirmations.reply.confirm": "Freagair",
   "confirmations.reply.message": "Ma bheir thu freagairt an-dràsta, thèid seo a sgrìobhadh thairis air an teachdaireachd a tha thu a’ sgrìobhadh an-dràsta. A bheil thu cinnteach gu bheil thu airson leantainn air adhart?",
   "confirmations.unfollow.confirm": "Na lean tuilleadh",
-  "confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson leantainn air {name} tuilleadh?",
+  "confirmations.unfollow.message": "A bheil thu cinnteach nach eil thu airson {name} a leantainn tuilleadh?",
   "conversation.delete": "Sguab às an còmhradh",
   "conversation.mark_as_read": "Cuir comharra gun deach a leughadh",
   "conversation.open": "Seall an còmhradh",
@@ -182,8 +182,8 @@
   "directory.local": "O {domain} a-mhàin",
   "directory.new_arrivals": "Feadhainn ùra",
   "directory.recently_active": "Gnìomhach o chionn goirid",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Roghainnean a’ chunntais",
+  "disabled_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas aig an àm seo.",
   "dismissable_banner.community_timeline": "Seo na postaichean poblach as ùire o dhaoine aig a bheil cunntas air {domain}.",
   "dismissable_banner.dismiss": "Leig seachad",
   "dismissable_banner.explore_links": "Seo na naidheachdan air a bhithear a’ bruidhinn an-dràsta fhèin air an fhrithealaiche seo is frithealaichean eile dhen lìonra sgaoilte.",
@@ -221,13 +221,13 @@
   "empty_column.follow_recommendations": "Chan urrainn dhuinn dad a mholadh dhut. Cleachd gleus an luirg feuch an lorg thu daoine air a bheil thu eòlach no rùraich na tagaichean-hais a tha a’ treandadh.",
   "empty_column.follow_requests": "Chan eil iarrtas air leantainn agad fhathast. Nuair gheibh thu fear, nochdaidh e an-seo.",
   "empty_column.hashtag": "Chan eil dad san taga hais seo fhathast.",
-  "empty_column.home": "Tha an loidhne-ama dachaigh agad falamh! Lean air barrachd dhaoine gus a lìonadh. {suggestions}",
+  "empty_column.home": "Tha loidhne-ama na dachaigh agad falamh! Lean barrachd dhaoine gus a lìonadh. {suggestions}",
   "empty_column.home.suggestions": "Faic moladh no dhà",
   "empty_column.list": "Chan eil dad air an liosta seo fhathast. Nuair a phostaicheas buill a tha air an liosta seo postaichean ùra, nochdaidh iad an-seo.",
   "empty_column.lists": "Chan eil liosta agad fhathast. Nuair chruthaicheas tu tè, nochdaidh i an-seo.",
   "empty_column.mutes": "Cha do mhùch thu cleachdaiche sam bith fhathast.",
   "empty_column.notifications": "Cha d’ fhuair thu brath sam bith fhathast. Nuair a nì càch conaltradh leat, chì thu an-seo e.",
-  "empty_column.public": "Chan eil dad an-seo! Sgrìobh rudeigin gu poblach no lean air càch o fhrithealaichean eile a làimh airson seo a lìonadh",
+  "empty_column.public": "Chan eil dad an-seo! Sgrìobh rudeigin gu poblach no lean càch o fhrithealaichean eile a làimh airson seo a lìonadh",
   "error.unexpected_crash.explanation": "Air sàilleibh buga sa chòd againn no duilgheadas co-chòrdalachd leis a’ bhrabhsair, chan urrainn dhuinn an duilleag seo a shealltainn mar bu chòir.",
   "error.unexpected_crash.explanation_addons": "Cha b’ urrainn dhuinn an duilleag seo a shealltainn mar bu chòir. Tha sinn an dùil gu do dh’adhbharaich tuilleadan a’ bhrabhsair no inneal eadar-theangachaidh fèin-obrachail a’ mhearachd.",
   "error.unexpected_crash.next_steps": "Feuch an ath-nuadhaich thu an duilleag seo. Mura cuidich sin, dh’fhaoidte gur urrainn dhut Mastodon a chleachdadh fhathast le brabhsair eile no le aplacaid thùsail.",
@@ -257,8 +257,8 @@
   "filter_modal.select_filter.title": "Criathraich am post seo",
   "filter_modal.title.status": "Criathraich post",
   "follow_recommendations.done": "Deiseil",
-  "follow_recommendations.heading": "Lean air daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.",
-  "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine air a leanas tu a-rèir an ama air nad dhachaigh. Bi dàna on as urrainn dhut sgur de leantainn air daoine cuideachd uair sam bith!",
+  "follow_recommendations.heading": "Lean daoine ma tha thu airson nam postaichean aca fhaicinn! Seo moladh no dà dhut.",
+  "follow_recommendations.lead": "Nochdaidh na postaichean aig na daoine a leanas tu a-rèir an ama nad dhachaigh. Bi dàna on as urrainn dhut sgur de dhaoine a leantainn cuideachd uair sam bith!",
   "follow_request.authorize": "Ùghdarraich",
   "follow_request.reject": "Diùlt",
   "follow_requests.unlocked_explanation": "Ged nach eil an cunntas agad glaiste, tha sgioba {domain} dhen bheachd gum b’ fheàirrde thu lèirmheas a dhèanamh air na h-iarrtasan leantainn o na cunntasan seo a làimh.",
@@ -280,15 +280,15 @@
   "hashtag.column_settings.tag_mode.any": "Gin sam bith dhiubh",
   "hashtag.column_settings.tag_mode.none": "Às aonais gin sam bith dhiubh",
   "hashtag.column_settings.tag_toggle": "Gabh a-steach barrachd tagaichean sa cholbh seo",
-  "hashtag.follow": "Lean air an taga hais",
-  "hashtag.unfollow": "Na lean air an taga hais tuilleadh",
+  "hashtag.follow": "Lean an taga hais",
+  "hashtag.unfollow": "Na lean an taga hais tuilleadh",
   "home.column_settings.basic": "Bunasach",
   "home.column_settings.show_reblogs": "Seall na brosnachaidhean",
   "home.column_settings.show_replies": "Seall na freagairtean",
   "home.hide_announcements": "Falaich na brathan-fios",
   "home.show_announcements": "Seall na brathan-fios",
   "interaction_modal.description.favourite": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a chur ris na h-annsachdan airson innse dhan ùghdar gu bheil e a’ còrdadh dhut ’s a shàbhaladh do uaireigin eile.",
-  "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut leantainn air {name} ach am faigh thu na postaichean aca nad dhachaigh.",
+  "interaction_modal.description.follow": "Le cunntas air Mastodon, ’s urrainn dhut {name} a leantainn ach am faigh thu na postaichean aca nad dhachaigh.",
   "interaction_modal.description.reblog": "Le cunntas air Mastodon, ’s urrainn dhut am post seo a bhrosnachadh gus a cho-roinneadh leis an luchd-leantainn agad fhèin.",
   "interaction_modal.description.reply": "Le cunntas air Mastodon, ’s urrainn dhut freagairt a chur dhan phost seo.",
   "interaction_modal.on_another_server": "Air frithealaiche eile",
@@ -296,7 +296,7 @@
   "interaction_modal.other_server_instructions": "Dèan lethbhreac dhen URL seo is cuir ann am bàr nan lorg e san aplacaid as fheàrr leat no san eadar-aghaidh-lìn far a bheil thu air do chlàradh a-steach.",
   "interaction_modal.preamble": "Air sgàth ’s gu bheil Mastodon sgaoilte, ’s urrainn dhut cunntas a chleachdadh a tha ’ga òstadh le frithealaiche Mastodon no le ùrlar co-chòrdail eile mur eil cunntas agad air an fhear seo.",
   "interaction_modal.title.favourite": "Cuir am post aig {name} ris na h-annsachdan",
-  "interaction_modal.title.follow": "Lean air {name}",
+  "interaction_modal.title.follow": "Lean {name}",
   "interaction_modal.title.reblog": "Brosnaich am post aig {name}",
   "interaction_modal.title.reply": "Freagair dhan phost aig {name}",
   "intervals.full.days": "{number, plural, one {# latha} two {# latha} few {# làithean} other {# latha}}",
@@ -350,18 +350,18 @@
   "lists.edit.submit": "Atharraich an tiotal",
   "lists.new.create": "Cuir liosta ris",
   "lists.new.title_placeholder": "Tiotal na liosta ùir",
-  "lists.replies_policy.followed": "Cleachdaiche sam bith air a leanas mi",
+  "lists.replies_policy.followed": "Cleachdaiche sam bith a leanas mi",
   "lists.replies_policy.list": "Buill na liosta",
   "lists.replies_policy.none": "Na seall idir",
   "lists.replies_policy.title": "Seall na freagairtean gu:",
-  "lists.search": "Lorg am measg nan daoine air a leanas tu",
+  "lists.search": "Lorg am measg nan daoine a leanas tu",
   "lists.subheading": "Na liostaichean agad",
   "load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}",
   "loading_indicator.label": "’Ga luchdadh…",
   "media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}",
   "missing_indicator.label": "Cha deach càil a lorg",
   "missing_indicator.sublabel": "Cha deach an goireas a lorg",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.",
   "mute_modal.duration": "Faide",
   "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?",
   "mute_modal.indefinite": "Gun chrìoch",
@@ -392,8 +392,8 @@
   "notification.admin.report": "Rinn {name} mu {target}",
   "notification.admin.sign_up": "Chlàraich {name}",
   "notification.favourite": "Is annsa le {name} am post agad",
-  "notification.follow": "Tha {name} a’ leantainn ort a-nis",
-  "notification.follow_request": "Dh’iarr {name} leantainn ort",
+  "notification.follow": "Tha {name} ’gad leantainn a-nis",
+  "notification.follow_request": "Dh’iarr {name} ’gad leantainn",
   "notification.mention": "Thug {name} iomradh ort",
   "notification.own_poll": "Thàinig an cunntas-bheachd agad gu crìoch",
   "notification.poll": "Thàinig cunntas-bheachd sa bhòt thu gu crìoch",
@@ -424,10 +424,10 @@
   "notifications.filter.all": "Na h-uile",
   "notifications.filter.boosts": "Brosnachaidhean",
   "notifications.filter.favourites": "Na h-annsachdan",
-  "notifications.filter.follows": "A’ leantainn air",
+  "notifications.filter.follows": "A’ leantainn",
   "notifications.filter.mentions": "Iomraidhean",
   "notifications.filter.polls": "Toraidhean cunntais-bheachd",
-  "notifications.filter.statuses": "Naidheachdan nan daoine air a leanas tu",
+  "notifications.filter.statuses": "Naidheachdan nan daoine a leanas tu",
   "notifications.grant_permission": "Thoir cead.",
   "notifications.group": "Brathan ({count})",
   "notifications.mark_as_read": "Cuir comharra gun deach gach brath a leughadh",
@@ -450,7 +450,7 @@
   "privacy.change": "Cuir gleus air prìobhaideachd a’ phuist",
   "privacy.direct.long": "Chan fhaic ach na cleachdaichean le iomradh orra seo",
   "privacy.direct.short": "An fheadhainn le iomradh orra a-mhàin",
-  "privacy.private.long": "Chan fhaic ach na daoine a tha a’ leantainn ort seo",
+  "privacy.private.long": "Chan fhaic ach na daoine a tha ’gad leantainn seo",
   "privacy.private.short": "Luchd-leantainn a-mhàin",
   "privacy.public.long": "Chì a h-uile duine e",
   "privacy.public.short": "Poblach",
@@ -474,7 +474,7 @@
   "relative_time.today": "an-diugh",
   "reply_indicator.cancel": "Sguir dheth",
   "report.block": "Bac",
-  "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh leantainn ort. Mothaichidh iad gun deach am bacadh.",
+  "report.block_explanation": "Chan fhaic thu na postaichean aca. Chan fhaic iad na postaichean agad is chan urrainn dhaibh ’gad leantainn. Mothaichidh iad gun deach am bacadh.",
   "report.categories.other": "Eile",
   "report.categories.spam": "Spama",
   "report.categories.violation": "Tha an t-susbaint a’ briseadh riaghailt no dhà an fhrithealaiche",
@@ -487,7 +487,7 @@
   "report.forward": "Sìn air adhart gu {target}",
   "report.forward_hint": "Chaidh an cunntas a chlàradh air frithealaiche eile. A bheil thu airson lethbhreac dhen ghearan a chur dha-san gun ainm cuideachd?",
   "report.mute": "Mùch",
-  "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh leantainn ort fhathast. Cha bhi fios aca gun deach am mùchadh.",
+  "report.mute_explanation": "Chan fhaic thu na postaichean aca. Chì iad na postaichean agad agus ’s urrainn dhaibh ’gad leantainn fhathast. Cha bhi fios aca gun deach am mùchadh.",
   "report.next": "Air adhart",
   "report.placeholder": "Beachdan a bharrachd",
   "report.reasons.dislike": "Cha toigh leam e",
@@ -508,8 +508,8 @@
   "report.thanks.take_action_actionable": "Fhad ’s a bhios sinn a’ toirt sùil air, seo nas urrainn dhut dèanamh an aghaidh @{name}:",
   "report.thanks.title": "Nach eil thu airson seo fhaicinn?",
   "report.thanks.title_actionable": "Mòran taing airson a’ ghearain, bheir sinn sùil air.",
-  "report.unfollow": "Na lean air @{name} tuilleadh",
-  "report.unfollow_explanation": "Tha thu a’ leantainn air a’ chunntas seo. Sgur de leantainn orra ach nach fhaic thu na puist aca nad dhachaigh.",
+  "report.unfollow": "Na lean @{name} tuilleadh",
+  "report.unfollow_explanation": "Tha thu a’ leantainn a’ chunntais seo. Sgur dhen leantainn ach nach fhaic thu na puist aca nad dhachaigh.",
   "report_notification.attached_statuses": "Tha {count, plural, one {{counter} phost} two {{counter} phost} few {{counter} postaichean} other {{counter} post}} ceangailte ris",
   "report_notification.categories.other": "Eile",
   "report_notification.categories.spam": "Spama",
@@ -539,7 +539,7 @@
   "server_banner.server_stats": "Stadastaireachd an fhrithealaiche:",
   "sign_in_banner.create_account": "Cruthaich cunntas",
   "sign_in_banner.sign_in": "Clàraich a-steach",
-  "sign_in_banner.text": "Clàraich a-steach a leantainn air pròifilean no tagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.",
+  "sign_in_banner.text": "Clàraich a-steach a leantainn phròifilean no thagaichean hais, a’ cur postaichean ris na h-annsachdan ’s ’gan co-roinneadh is freagairt dhaibh no gabh gnìomh le cunntas o fhrithealaiche eile.",
   "status.admin_account": "Fosgail eadar-aghaidh na maorsainneachd dha @{name}",
   "status.admin_status": "Fosgail am post seo ann an eadar-aghaidh na maorsainneachd",
   "status.block": "Bac @{name}",
@@ -609,7 +609,7 @@
   "time_remaining.seconds": "{number, plural, one {# diog} two {# dhiog} few {# diogan} other {# diog}} air fhàgail",
   "timeline_hint.remote_resource_not_displayed": "Cha dèid {resource} o fhrithealaichean eile a shealltainn.",
   "timeline_hint.resources.followers": "Luchd-leantainn",
-  "timeline_hint.resources.follows": "A’ leantainn air",
+  "timeline_hint.resources.follows": "A’ leantainn",
   "timeline_hint.resources.statuses": "Postaichean nas sine",
   "trends.counter_by_accounts": "{count, plural, one {{counter} neach} two {{counter} neach} few {{counter} daoine} other {{counter} duine}} {days, plural, one {san {days} latha} two {san {days} latha} few {sna {days} làithean} other {sna {days} latha}} seo chaidh",
   "trends.trending_now": "A’ treandadh an-dràsta",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index bbf0cd984..6a9260064 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Seguindo} other {{counter} Seguindo}}",
   "account.follows.empty": "Esta usuaria aínda non segue a ninguén.",
   "account.follows_you": "Séguete",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ir ao perfil",
   "account.hide_reblogs": "Agochar repeticións de @{name}",
   "account.joined_short": "Uniuse",
   "account.languages": "Modificar os idiomas subscritos",
@@ -182,14 +182,14 @@
   "directory.local": "Só de {domain}",
   "directory.new_arrivals": "Recén chegadas",
   "directory.recently_active": "Activas recentemente",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Axustes da conta",
+  "disabled_account_banner.text": "Actualmente a túa conta {disabledAccount} está desactivada.",
   "dismissable_banner.community_timeline": "Estas son as publicacións máis recentes das persoas que teñen a súa conta en {domain}.",
   "dismissable_banner.dismiss": "Desbotar",
   "dismissable_banner.explore_links": "As persoas deste servidor e da rede descentralizada están a falar destas historias agora mesmo.",
-  "dismissable_banner.explore_statuses": "Está aumentando a popularidade destas publicacións no servidor e a rede descentralizada.",
-  "dismissable_banner.explore_tags": "Estes cancelos están gañando popularidade entre as persoas deste servidor e outros servidores da rede descentralizada.",
-  "dismissable_banner.public_timeline": "Estas son as publicacións máis recentes das persoas deste servidor e outros servidores da rede descentralizada cos que está conectado.",
+  "dismissable_banner.explore_statuses": "Está aumentando a popularidade destas publicacións no servidor e na rede descentralizada.",
+  "dismissable_banner.explore_tags": "Estes cancelos están gañando popularidade entre as persoas deste servidor e noutros servidores da rede descentralizada.",
+  "dismissable_banner.public_timeline": "Estas son as publicacións máis recentes das persoas deste servidor e noutros servidores da rede descentralizada cos que está conectado.",
   "embed.instructions": "Engade esta publicación ó teu sitio web copiando o seguinte código.",
   "embed.preview": "Así será mostrado:",
   "emoji_button.activity": "Actividade",
@@ -264,7 +264,7 @@
   "follow_requests.unlocked_explanation": "Malia que a túa conta non é privada, a administración de {domain} pensou que quizabes terías que revisar de xeito manual as solicitudes de seguiminto.",
   "footer.about": "Acerca de",
   "footer.directory": "Directorio de perfís",
-  "footer.get_app": "Obtén a app",
+  "footer.get_app": "Descarga a app",
   "footer.invite": "Convidar persoas",
   "footer.keyboard_shortcuts": "Atallos do teclado",
   "footer.privacy_policy": "Política de privacidade",
@@ -287,14 +287,14 @@
   "home.column_settings.show_replies": "Amosar respostas",
   "home.hide_announcements": "Agochar anuncios",
   "home.show_announcements": "Amosar anuncios",
-  "interaction_modal.description.favourite": "Cunha conta en Mastodon, poderá marcar esta publicación como favorita, para gardalo e para que o autor saiba o moito que lle gustou.",
-  "interaction_modal.description.follow": "Cunha conta en Mastodon, poderá seguir {name} e recibir as súas publicacións na súa cronoloxía de inicio.",
-  "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderá difundir esta publicación e compartila cos seus seguidores.",
-  "interaction_modal.description.reply": "Cunha conta en Mastodon, poderá responder a esta publicación.",
+  "interaction_modal.description.favourite": "Cunha conta en Mastodon, poderás marcar esta publicación como favorita, para gardalo e para que o autor saiba o moito que lle gustou.",
+  "interaction_modal.description.follow": "Cunha conta en Mastodon, poderás seguir a {name} e recibir as súas publicacións na túa cronoloxía de inicio.",
+  "interaction_modal.description.reblog": "Cunha conta en Mastodon, poderás promover esta publicación para compartila con quen te siga.",
+  "interaction_modal.description.reply": "Cunha conta en Mastodon, poderás responder a esta publicación.",
   "interaction_modal.on_another_server": "Nun servidor diferente",
   "interaction_modal.on_this_server": "Neste servidor",
-  "interaction_modal.other_server_instructions": "Só ten que copiar e pegar este URL na barra de procuras da súa aplicación favorita, ou da interface web na que teña unha sesión iniciada.",
-  "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispoñe dunha conta neste servidor.",
+  "interaction_modal.other_server_instructions": "Só tes que copiar e pegar este URL na barra de procuras da túa aplicación favorita, ou da interface web na que teñas unha sesión iniciada.",
+  "interaction_modal.preamble": "Como Mastodon é descentralizado, é posible usar unha conta existente noutro servidor Mastodon, ou nunha plataforma compatible, se non dispós dunha conta neste servidor.",
   "interaction_modal.title.favourite": "Marcar coma favorito a publicación de {name}",
   "interaction_modal.title.follow": "Seguir a {name}",
   "interaction_modal.title.reblog": "Promover a publicación de {name}",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}",
   "missing_indicator.label": "Non atopado",
   "missing_indicator.sublabel": "Este recurso non foi atopado",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Agochar notificacións desta usuaria?",
   "mute_modal.indefinite": "Indefinida",
@@ -450,7 +450,7 @@
   "privacy.change": "Axustar privacidade",
   "privacy.direct.long": "Só para as usuarias mencionadas",
   "privacy.direct.short": "Só persoas mencionadas",
-  "privacy.private.long": "Só para os seguidoras",
+  "privacy.private.long": "Só para persoas que te seguen",
   "privacy.private.short": "Só para seguidoras",
   "privacy.public.long": "Visible por todas",
   "privacy.public.short": "Público",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 363a9c3e5..644574f38 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -1,9 +1,9 @@
 {
   "about.blocks": "שרתים מוגבלים",
-  "about.contact": "Contact:",
+  "about.contact": "יצירת קשר:",
   "about.disclaimer": "מסטודון היא תוכנת קוד פתוח חינמית וסימן מסחרי של Mastodon gGmbH.",
   "about.domain_blocks.comment": "סיבה",
-  "about.domain_blocks.domain": "Domain",
+  "about.domain_blocks.domain": "שם מתחם",
   "about.domain_blocks.preamble": "ככלל מסטודון מאפשרת לך לצפות בתוכן ולתקשר עם משתמשים מכל שרת בפדיברס. אלו הם היוצאים מן הכלל שהוגדרו עבור השרת המסוים הזה.",
   "about.domain_blocks.severity": "חומרה",
   "about.domain_blocks.silenced.explanation": "ככלל פרופילים ותוכן משרת זה לא יוצגו, אלא אם חיפשת אותם באופן מפורש או בחרת להשתתף בו על ידי מעקב.",
@@ -28,9 +28,9 @@
   "account.edit_profile": "עריכת פרופיל",
   "account.enable_notifications": "שלח לי התראות כש@{name} מפרסם",
   "account.endorse": "קדם את החשבון בפרופיל",
-  "account.featured_tags.last_status_at": "Last post on {date}",
-  "account.featured_tags.last_status_never": "No posts",
-  "account.featured_tags.title": "{name}'s featured hashtags",
+  "account.featured_tags.last_status_at": "הודעה אחרונה בתאריך {date}",
+  "account.featured_tags.last_status_never": "אין הודעות",
+  "account.featured_tags.title": "התגיות המועדפות של {name}",
   "account.follow": "עקוב",
   "account.followers": "עוקבים",
   "account.followers.empty": "אף אחד לא עוקב אחר המשתמש הזה עדיין.",
@@ -39,25 +39,25 @@
   "account.following_counter": "{count, plural,one {עוקב אחרי {counter}}other {עוקב אחרי {counter}}}",
   "account.follows.empty": "משתמש זה לא עוקב אחר אף אחד עדיין.",
   "account.follows_you": "במעקב אחריך",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "מעבר לפרופיל",
   "account.hide_reblogs": "להסתיר הידהודים מאת @{name}",
-  "account.joined_short": "Joined",
-  "account.languages": "Change subscribed languages",
+  "account.joined_short": "תאריך הצטרפות",
+  "account.languages": "שנה שפת הרשמה",
   "account.link_verified_on": "בעלות על הקישור הזה נבדקה לאחרונה ב{date}",
   "account.locked_info": "מצב הפרטיות של החשבון הנוכחי הוגדר כנעול. בעל החשבון קובע באופן פרטני מי יכול לעקוב אחריו.",
   "account.media": "מדיה",
   "account.mention": "אזכור של @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "{name} ציינו שהחשבון החדש שלהם הוא:",
   "account.mute": "להשתיק את @{name}",
   "account.mute_notifications": "להסתיר התראות מ @{name}",
   "account.muted": "מושתק",
   "account.posts": "פוסטים",
-  "account.posts_with_replies": "פוסטים ותגובות",
+  "account.posts_with_replies": "הודעות ותגובות",
   "account.report": "דווח על @{name}",
   "account.requested": "בהמתנה לאישור. לחצי כדי לבטל בקשת מעקב",
   "account.share": "שתף את הפרופיל של @{name}",
   "account.show_reblogs": "הצג הדהודים מאת @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} פוסט} two {{counter} פוסטים} many {{counter} פוסטים} other {{counter} פוסטים}}",
+  "account.statuses_counter": "{count, plural, one {הודעה} two {הודעותיים} many {{count} הודעות} other {{count} הודעות}}",
   "account.unblock": "הסר את החסימה של @{name}",
   "account.unblock_domain": "הסירי את החסימה של קהילת {domain}",
   "account.unblock_short": "הסר חסימה",
@@ -81,24 +81,24 @@
   "audio.hide": "השתק",
   "autosuggest_hashtag.per_week": "{count} לשבוע",
   "boost_modal.combo": "ניתן להקיש {combo} כדי לדלג בפעם הבאה",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
-  "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
-  "bundle_column_error.error.title": "Oh, no!",
-  "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
-  "bundle_column_error.network.title": "Network error",
+  "bundle_column_error.copy_stacktrace": "העתקת הודעת התקלה",
+  "bundle_column_error.error.body": "הדף המבוקש אינו זמין. זה עשוי להיות באג בקוד או בעייה בתאימות הדפדפן.",
+  "bundle_column_error.error.title": "הו, לא!",
+  "bundle_column_error.network.body": "קרתה תקלה בעת טעינת העמוד. זו עשויה להיות תקלה זמנית בשרת או בחיבור האינטרנט שלך.",
+  "bundle_column_error.network.title": "שגיאת רשת",
   "bundle_column_error.retry": "לנסות שוב",
-  "bundle_column_error.return": "Go back home",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.return": "חזרה לדף הבית",
+  "bundle_column_error.routing.body": "העמוד המבוקש לא נמצא. האם ה־URL נכון?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "לסגור",
   "bundle_modal_error.message": "משהו השתבש בעת טעינת הרכיב הזה.",
   "bundle_modal_error.retry": "לנסות שוב",
-  "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
-  "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
-  "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
-  "closed_registrations_modal.title": "Signing up on Mastodon",
-  "column.about": "About",
+  "closed_registrations.other_server_instructions": "מכיוון שמסטודון הוא רשת מבוזרת, ניתן ליצור חשבון על שרת נוסף ועדיין לקיים קשר עם משתמשים בשרת זה.",
+  "closed_registrations_modal.description": "יצירת חשבון על שרת {domain} איננה אפשרית כרגע, אבל זכרו שאינכן זקוקות לחשבון על {domain} כדי להשתמש במסטודון.",
+  "closed_registrations_modal.find_another_server": "חיפוש שרת אחר",
+  "closed_registrations_modal.preamble": "מסטודון הוא רשת מבוזרת, כך שלא משנה היכן החשבון שלך, קיימת האפשרות לעקוב ולתקשר עם משתמשים בשרת הזה. אפשר אפילו להריץ שרת בעצמך!",
+  "closed_registrations_modal.title": "להרשם למסטודון",
+  "column.about": "אודות",
   "column.blocks": "משתמשים חסומים",
   "column.bookmarks": "סימניות",
   "column.community": "פיד שרת מקומי",
@@ -124,11 +124,11 @@
   "community.column_settings.local_only": "מקומי בלבד",
   "community.column_settings.media_only": "מדיה בלבד",
   "community.column_settings.remote_only": "מרוחק בלבד",
-  "compose.language.change": "שינוי שפת הפוסט",
+  "compose.language.change": "שינוי שפת ההודעה",
   "compose.language.search": "חיפוש שפות...",
   "compose_form.direct_message_warning_learn_more": "מידע נוסף",
-  "compose_form.encryption_warning": "פוסטים במסטודון לא מוצפנים מקצה לקצה. אל תשתפו מידע רגיש במסטודון.",
-  "compose_form.hashtag_warning": "פוסט זה לא יירשם תחת תגי הקבצה (האשטאגים) היות והנראות שלו היא 'לא רשום'. רק פוסטים ציבוריים יכולים להימצא באמצעות תגי הקבצה.",
+  "compose_form.encryption_warning": "הודעות במסטודון לא מוצפנות מקצה לקצה. אל תשתפו מידע רגיש במסטודון.",
+  "compose_form.hashtag_warning": "הודעה זו לא תרשם תחת תגיות הקבצה (האשטאגים) היות והנראות שלה היא 'לא רשום'. רק הודעות ציבוריות יכולות להימצא באמצעות תגיות הקבצה.",
   "compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
   "compose_form.lock_disclaimer.lock": "נעול",
   "compose_form.placeholder": "על מה את/ה חושב/ת ?",
@@ -139,7 +139,7 @@
   "compose_form.poll.switch_to_multiple": "אפשרו בחירה מרובה בסקר",
   "compose_form.poll.switch_to_single": "אפשרו בחירה בודדת בסקר",
   "compose_form.publish": "פרסום",
-  "compose_form.publish_loud": "לחצרץ!",
+  "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "שמירת שינויים",
   "compose_form.sensitive.hide": "{count, plural, one {סימון מידע כרגיש} other {סימון מידע כרגיש}}",
   "compose_form.sensitive.marked": "{count, plural, one {מידע מסומן כרגיש} other {מידע מסומן כרגיש}}",
@@ -151,8 +151,8 @@
   "confirmations.block.block_and_report": "לחסום ולדווח",
   "confirmations.block.confirm": "לחסום",
   "confirmations.block.message": "האם את/ה בטוח/ה שברצונך למחוק את \"{name}\"?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "ויתור על בקשה",
+  "confirmations.cancel_follow_request.message": "האם באמת לוותר על בקשת המעקב אחרי {name}?",
   "confirmations.delete.confirm": "למחוק",
   "confirmations.delete.message": "בטוח/ה שאת/ה רוצה למחוק את ההודעה?",
   "confirmations.delete_list.confirm": "למחוק",
@@ -164,10 +164,10 @@
   "confirmations.logout.confirm": "להתנתק",
   "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?",
   "confirmations.mute.confirm": "להשתיק",
-  "confirmations.mute.explanation": "זה יסתיר פוסטים שלהם ופוסטים שמאזכרים אותם, אבל עדיין יתיר להם לראות פוסטים שלך ולעקוב אחריך.",
+  "confirmations.mute.explanation": "זה יסתיר הודעות שלהם והודעות שמאזכרות אותם, אבל עדיין יתיר להם לראות הודעות שלך ולעקוב אחריך.",
   "confirmations.mute.message": "בטוח/ה שברצונך להשתיק את {name}?",
   "confirmations.redraft.confirm": "מחיקה ועריכה מחדש",
-  "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות לפוסט המקורי ישארו יתומות.",
+  "confirmations.redraft.message": "בטוחה שאת רוצה למחוק ולהתחיל טיוטה חדשה? חיבובים והדהודים יאבדו, ותגובות להודעה המקורית ישארו יתומות.",
   "confirmations.reply.confirm": "תגובה",
   "confirmations.reply.message": "תגובה עכשיו תדרוס את ההודעה שכבר התחלתים לכתוב. האם אתם בטוחים שברצונכם להמשיך?",
   "confirmations.unfollow.confirm": "הפסקת מעקב",
@@ -176,21 +176,21 @@
   "conversation.mark_as_read": "סמן כנקרא",
   "conversation.open": "צפו בשיחה",
   "conversation.with": "עם {names}",
-  "copypaste.copied": "Copied",
-  "copypaste.copy": "Copy",
+  "copypaste.copied": "הועתק",
+  "copypaste.copy": "העתקה",
   "directory.federated": "מהפדרציה הידועה",
   "directory.local": "מ- {domain} בלבד",
   "directory.new_arrivals": "חדשים כאן",
   "directory.recently_active": "פעילים לאחרונה",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
-  "embed.instructions": "ניתן להטמיע את הפוסט הזה באתרך ע\"י העתקת הקוד שלהלן.",
+  "disabled_account_banner.account_settings": "הגדרות חשבון",
+  "disabled_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע.",
+  "dismissable_banner.community_timeline": "אלו הם ההודעות הציבוריות האחרונות מהמשתמשים על שרת {domain}.",
+  "dismissable_banner.dismiss": "בטל",
+  "dismissable_banner.explore_links": "אלו סיפורי החדשות האחרונים שמדוברים על ידי משתמשים בשרת זה ואחרים ברשת המבוזרת כרגע.",
+  "dismissable_banner.explore_statuses": "ההודעות האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברות חשיפה.",
+  "dismissable_banner.explore_tags": "התגיות האלו, משרת זה ואחרים ברשת המבוזרת, כרגע צוברות חשיפה.",
+  "dismissable_banner.public_timeline": "אלו הם ההודעות הציבוריות האחרונות מהמשתמשים משרת זה ואחרים ברשת המבוזרת ששרת זה יודע עליהן.",
+  "embed.instructions": "ניתן להטמיע את ההודעה הזו באתרך ע\"י העתקת הקוד שלהלן.",
   "embed.preview": "דוגמא כיצד זה יראה:",
   "emoji_button.activity": "פעילות",
   "emoji_button.clear": "ניקוי",
@@ -208,22 +208,22 @@
   "emoji_button.symbols": "סמלים",
   "emoji_button.travel": "טיולים ואתרים",
   "empty_column.account_suspended": "חשבון מושהה",
-  "empty_column.account_timeline": "אין עדיין אף פוסט!",
+  "empty_column.account_timeline": "אין עדיין אף הודעה!",
   "empty_column.account_unavailable": "פרופיל לא זמין",
   "empty_column.blocks": "עדיין לא חסמתם משתמשים אחרים.",
-  "empty_column.bookmarked_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.",
+  "empty_column.bookmarked_statuses": "אין עדיין הודעות שחיבבת. כשתחבב את הראשונה, היא תופיע כאן.",
   "empty_column.community": "פיד השרת המקומי ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
   "empty_column.direct": "אין לך שום הודעות פרטיות עדיין. כשתשלחו או תקבלו אחת, היא תופיע כאן.",
   "empty_column.domain_blocks": "אין עדיין קהילות מוסתרות.",
   "empty_column.explore_statuses": "אין נושאים חמים כרגע. אולי אחר כך!",
-  "empty_column.favourited_statuses": "אין עדיין פוסטים שחיבבת. כשתחבב את הראשון, הוא יופיע כאן.",
-  "empty_column.favourites": "עוד לא חיבבו את הפוסט הזה. כאשר זה יקרה, החיבובים יופיעו כאן.",
+  "empty_column.favourited_statuses": "אין עדיין הודעות שחיבבת. כשתחבב את הראשונה, היא תופיע כאן.",
+  "empty_column.favourites": "עוד לא חיבבו את ההודעה הזו. כאשר זה יקרה, החיבובים יופיעו כאן.",
   "empty_column.follow_recommendations": "נראה שלא ניתן לייצר המלצות עבורך. נסה/י להשתמש בחיפוש כדי למצוא אנשים מוכרים או לבדוק את הנושאים החמים.",
   "empty_column.follow_requests": "אין לך שום בקשות מעקב עדיין. לכשיתקבלו כאלה, הן תופענה כאן.",
   "empty_column.hashtag": "אין כלום בהאשתג הזה עדיין.",
   "empty_column.home": "פיד הבית ריק ! אפשר לבקר ב{public} או להשתמש בחיפוש כדי להתחיל ולהכיר משתמשים/ות אחרים/ות. {suggestions}",
   "empty_column.home.suggestions": "ראה/י כמה הצעות",
-  "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו פוסטים חדשים, הם יופיעו פה.",
+  "empty_column.list": "אין עדיין פריטים ברשימה. כאשר חברים ברשימה הזאת יפרסמו הודעות חדשות, הן יופיעו פה.",
   "empty_column.lists": "אין לך שום רשימות עדיין. לכשיהיו, הן תופענה כאן.",
   "empty_column.mutes": "עוד לא השתקת שום משתמש.",
   "empty_column.notifications": "אין התראות עדיין. יאללה, הגיע הזמן להתחיל להתערבב.",
@@ -238,37 +238,37 @@
   "explore.suggested_follows": "עבורך",
   "explore.title": "סיור",
   "explore.trending_links": "חדשות",
-  "explore.trending_statuses": "פוסטים",
+  "explore.trending_statuses": "הודעות",
   "explore.trending_tags": "האשטאגים",
-  "filter_modal.added.context_mismatch_explanation": "קטגוריית הפילטר הזאת לא חלה על ההקשר שממנו הגעת אל הפוסט הזה. אם תרצה/י שהפוסט יסונן גם בהקשר זה, תצטרך/י לערוך את הפילטר.",
+  "filter_modal.added.context_mismatch_explanation": "קטגוריית הסנן הזאת לא חלה על ההקשר שממנו הגעת אל ההודעה הזו. אם תרצה/י שההודעה תסונן גם בהקשר זה, תצטרך/י לערוך את הסנן.",
   "filter_modal.added.context_mismatch_title": "אין התאמה להקשר!",
   "filter_modal.added.expired_explanation": "פג תוקפה של קטגוריית הסינון הזו, יש צורך לשנות את תאריך התפוגה כדי שהסינון יוחל.",
   "filter_modal.added.expired_title": "פג תוקף הפילטר!",
   "filter_modal.added.review_and_configure": "לסקירה והתאמה מתקדמת של קטגוריית הסינון הזו, לכו ל{settings_link}.",
   "filter_modal.added.review_and_configure_title": "אפשרויות סינון",
   "filter_modal.added.settings_link": "דף הגדרות",
-  "filter_modal.added.short_explanation": "הפוסט הזה הוסף לקטגוריית הסינון הזו: {title}.",
+  "filter_modal.added.short_explanation": "ההודעה הזו הוספה לקטגוריית הסינון הזו: {title}.",
   "filter_modal.added.title": "הפילטר הוסף!",
   "filter_modal.select_filter.context_mismatch": "לא חל בהקשר זה",
   "filter_modal.select_filter.expired": "פג התוקף",
   "filter_modal.select_filter.prompt_new": "קטגוריה חדשה {name}",
   "filter_modal.select_filter.search": "חיפוש או יצירה",
   "filter_modal.select_filter.subtitle": "שימוש בקטגורייה קיימת או יצירת אחת חדשה",
-  "filter_modal.select_filter.title": "סינון הפוסט הזה",
-  "filter_modal.title.status": "סנן פוסט",
+  "filter_modal.select_filter.title": "סינון ההודעה הזו",
+  "filter_modal.title.status": "סנן הודעה",
   "follow_recommendations.done": "בוצע",
-  "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את חצרוציהם! הנה כמה הצעות.",
-  "follow_recommendations.lead": "חצרוצים מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!",
+  "follow_recommendations.heading": "עקב/י אחרי אנשים שתרצה/י לראות את הודעותיהם! הנה כמה הצעות.",
+  "follow_recommendations.lead": "הודעות מאנשים במעקב יופיעו בסדר כרונולוגי בפיד הבית. אל תחששו מטעויות, אפשר להסיר מעקב באותה הקלות ובכל זמן!",
   "follow_request.authorize": "הרשאה",
   "follow_request.reject": "דחיה",
   "follow_requests.unlocked_explanation": "למרות שחשבונך אינו נעול, צוות {domain} חושב שאולי כדאי לוודא את בקשות המעקב האלה ידנית.",
-  "footer.about": "About",
-  "footer.directory": "Profiles directory",
-  "footer.get_app": "Get the app",
-  "footer.invite": "Invite people",
-  "footer.keyboard_shortcuts": "Keyboard shortcuts",
-  "footer.privacy_policy": "Privacy policy",
-  "footer.source_code": "View source code",
+  "footer.about": "אודות",
+  "footer.directory": "מדריך פרופילים",
+  "footer.get_app": "להתקנת היישומון",
+  "footer.invite": "להזמין אנשים",
+  "footer.keyboard_shortcuts": "קיצורי מקלדת",
+  "footer.privacy_policy": "מדיניות פרטיות",
+  "footer.source_code": "צפיה בקוד המקור",
   "generic.saved": "נשמר",
   "getting_started.heading": "בואו נתחיל",
   "hashtag.column_header.tag_mode.all": "ו- {additional}",
@@ -287,18 +287,18 @@
   "home.column_settings.show_replies": "הצגת תגובות",
   "home.hide_announcements": "הסתר הכרזות",
   "home.show_announcements": "הצג הכרזות",
-  "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
-  "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
-  "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
-  "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
-  "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
-  "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
-  "interaction_modal.title.follow": "Follow {name}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.description.favourite": "עם חשבון מסטודון, ניתן לחבב את ההודעה כדי לומר למחבר/ת שהערכת את תוכנה או כדי לשמור אותה לקריאה בעתיד.",
+  "interaction_modal.description.follow": "עם חשבון מסטודון, ניתן לעקוב אחרי {name} כדי לקבל את הםוסטים שלו/ה בפיד הבית.",
+  "interaction_modal.description.reblog": "עם חשבון מסטודון, ניתן להדהד את ההודעה ולשתף עם עוקבים.",
+  "interaction_modal.description.reply": "עם חשבון מסטודון, ניתן לענות להודעה.",
+  "interaction_modal.on_another_server": "על שרת אחר",
+  "interaction_modal.on_this_server": "על שרת זה",
+  "interaction_modal.other_server_instructions": "פשוט להעתיק ולהדביק את ה־URL לחלונית החיפוש ביישום או הדפדפן ממנו התחברת.",
+  "interaction_modal.preamble": "כיוון שמסטודון מבוזרת, תוכל/י להשתמש בחשבון שלך משרתי מסטודון או רשתות תואמות אחרות אם אין לך חשבון על שרת זה.",
+  "interaction_modal.title.favourite": "חיבוב ההודעה של {name}",
+  "interaction_modal.title.follow": "לעקוב אחרי {name}",
+  "interaction_modal.title.reblog": "להדהד את ההודעה של {name}",
+  "interaction_modal.title.reply": "תשובה להודעה של {name}",
   "intervals.full.days": "{number, plural, one {# יום} other {# ימים}}",
   "intervals.full.hours": "{number, plural, one {# שעה} other {# שעות}}",
   "intervals.full.minutes": "{number, plural, one {# דקה} other {# דקות}}",
@@ -310,7 +310,7 @@
   "keyboard_shortcuts.description": "תיאור",
   "keyboard_shortcuts.direct": "לפתיחת טור הודעות ישירות",
   "keyboard_shortcuts.down": "לנוע במורד הרשימה",
-  "keyboard_shortcuts.enter": "פתח פוסט",
+  "keyboard_shortcuts.enter": "פתח הודעה",
   "keyboard_shortcuts.favourite": "לחבב",
   "keyboard_shortcuts.favourites": "פתיחת רשימת מועדפים",
   "keyboard_shortcuts.federated": "פתיחת ציר זמן בין-קהילתי",
@@ -324,16 +324,16 @@
   "keyboard_shortcuts.my_profile": "פתיחת הפרופיל שלך",
   "keyboard_shortcuts.notifications": "פתיחת טור התראות",
   "keyboard_shortcuts.open_media": "פתיחת מדיה",
-  "keyboard_shortcuts.pinned": "פתיחת פוסטים נעוצים",
+  "keyboard_shortcuts.pinned": "פתיחת הודעה נעוצות",
   "keyboard_shortcuts.profile": "פתח את פרופיל המשתמש",
-  "keyboard_shortcuts.reply": "תגובה לפוסט",
+  "keyboard_shortcuts.reply": "תגובה להודעה",
   "keyboard_shortcuts.requests": "פתיחת רשימת בקשות מעקב",
   "keyboard_shortcuts.search": "להתמקד בחלון החיפוש",
   "keyboard_shortcuts.spoilers": "הצגת/הסתרת שדה אזהרת תוכן (CW)",
   "keyboard_shortcuts.start": "לפתוח את הטור \"בואו נתחיל\"",
   "keyboard_shortcuts.toggle_hidden": "הצגת/הסתרת טקסט מוסתר מאחורי אזהרת תוכן",
   "keyboard_shortcuts.toggle_sensitivity": "הצגת/הסתרת מדיה",
-  "keyboard_shortcuts.toot": "להתחיל פוסט חדש",
+  "keyboard_shortcuts.toot": "להתחיל הודעה חדשה",
   "keyboard_shortcuts.unfocus": "לצאת מתיבת חיבור/חיפוש",
   "keyboard_shortcuts.up": "לנוע במעלה הרשימה",
   "lightbox.close": "סגירה",
@@ -342,7 +342,7 @@
   "lightbox.next": "הבא",
   "lightbox.previous": "הקודם",
   "limited_account_hint.action": "הצג חשבון בכל זאת",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.title": "פרופיל המשתמש הזה הוסתר על ידי המנחים של {domain}.",
   "lists.account.add": "הוסף לרשימה",
   "lists.account.remove": "הסר מרשימה",
   "lists.delete": "מחיקת רשימה",
@@ -358,18 +358,18 @@
   "lists.subheading": "הרשימות שלך",
   "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}",
   "loading_indicator.label": "טוען...",
-  "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {Hide images} many {להסתיר תמונות} other {Hide תמונות}}",
+  "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}",
   "missing_indicator.label": "לא נמצא",
   "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.",
   "mute_modal.duration": "משך הזמן",
   "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?",
   "mute_modal.indefinite": "ללא תאריך סיום",
-  "navigation_bar.about": "About",
+  "navigation_bar.about": "אודות",
   "navigation_bar.blocks": "משתמשים חסומים",
   "navigation_bar.bookmarks": "סימניות",
   "navigation_bar.community_timeline": "פיד שרת מקומי",
-  "navigation_bar.compose": "צור פוסט חדש",
+  "navigation_bar.compose": "צור הודעה חדשה",
   "navigation_bar.direct": "הודעות ישירות",
   "navigation_bar.discover": "גלה",
   "navigation_bar.domain_blocks": "קהילות (שמות מתחם) חסומות",
@@ -383,23 +383,23 @@
   "navigation_bar.logout": "התנתקות",
   "navigation_bar.mutes": "משתמשים בהשתקה",
   "navigation_bar.personal": "אישי",
-  "navigation_bar.pins": "פוסטים נעוצים",
+  "navigation_bar.pins": "הודעות נעוצות",
   "navigation_bar.preferences": "העדפות",
   "navigation_bar.public_timeline": "פיד כללי (כל השרתים)",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "חיפוש",
   "navigation_bar.security": "אבטחה",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
+  "not_signed_in_indicator.not_signed_in": "יש להיות מאומת כדי לגשת למשאב זה.",
   "notification.admin.report": "{name} דיווח.ה על {target}",
   "notification.admin.sign_up": "{name} נרשמו",
-  "notification.favourite": "{name} חיבב/ה את הפוסט שלך",
+  "notification.favourite": "הודעתך חובבה על ידי {name}",
   "notification.follow": "{name} במעקב אחרייך",
   "notification.follow_request": "{name} ביקשו לעקוב אחריך",
   "notification.mention": "אוזכרת על ידי {name}",
   "notification.own_poll": "הסקר שלך הסתיים",
   "notification.poll": "סקר שהצבעת בו הסתיים",
-  "notification.reblog": "הפוסט הזה הודהד על ידי {name}",
+  "notification.reblog": "הודעתך הודהדה על ידי {name}",
   "notification.status": "{name} הרגע פרסמו",
-  "notification.update": "{name} ערכו פוסט",
+  "notification.update": "{name} ערכו הודעה",
   "notifications.clear": "הסרת התראות",
   "notifications.clear_confirmation": "להסיר את כל ההתראות לצמיתות ? ",
   "notifications.column_settings.admin.report": "דו\"חות חדשים",
@@ -417,7 +417,7 @@
   "notifications.column_settings.reblog": "הדהודים:",
   "notifications.column_settings.show": "הצגה בטור",
   "notifications.column_settings.sound": "שמע מופעל",
-  "notifications.column_settings.status": "פוסטים חדשים:",
+  "notifications.column_settings.status": "הודעות חדשות:",
   "notifications.column_settings.unread_notifications.category": "התראות שלא נקראו",
   "notifications.column_settings.unread_notifications.highlight": "הבלט התראות שלא נקראו",
   "notifications.column_settings.update": "שינויים:",
@@ -456,8 +456,8 @@
   "privacy.public.short": "פומבי",
   "privacy.unlisted.long": "גלוי לכל, אבל מוסתר מאמצעי גילוי",
   "privacy.unlisted.short": "לא רשום (לא לפיד הכללי)",
-  "privacy_policy.last_updated": "Last updated {date}",
-  "privacy_policy.title": "Privacy Policy",
+  "privacy_policy.last_updated": "עודכן לאחרונה {date}",
+  "privacy_policy.title": "מדיניות פרטיות",
   "refresh": "רענון",
   "regeneration_indicator.label": "טוען…",
   "regeneration_indicator.sublabel": "פיד הבית שלך בהכנה!",
@@ -474,20 +474,20 @@
   "relative_time.today": "היום",
   "reply_indicator.cancel": "ביטול",
   "report.block": "לחסום",
-  "report.block_explanation": "לא ניתן יהיה לראות את הפוסטים שלהן. הן לא יוכלו לראות את הפוסטים שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.",
+  "report.block_explanation": "לא ניתן יהיה לראות את ההודעות שלהן. הן לא יוכלו לראות את ההודעות שלך או לעקוב אחריך. הם יוכלו לדעת שהם חסומים.",
   "report.categories.other": "אחר",
   "report.categories.spam": "ספאם",
   "report.categories.violation": "התוכן מפר אחד או יותר מחוקי השרת",
   "report.category.subtitle": "בחר/י את המתאים ביותר",
   "report.category.title": "ספר/י לנו מה קורה עם ה-{type} הזה",
   "report.category.title_account": "פרופיל",
-  "report.category.title_status": "פוסט",
+  "report.category.title_status": "הודעה",
   "report.close": "בוצע",
   "report.comment.title": "האם יש דבר נוסף שלדעתך חשוב שנדע?",
   "report.forward": "קדם ל-{target}",
   "report.forward_hint": "חשבון זה הוא משרת אחר. האם לשלוח בנוסף עותק אנונימי לשם?",
   "report.mute": "להשתיק",
-  "report.mute_explanation": "לא ניתן יהיה לראות את הפוסטים. הם עדיין יוכלו לעקוב אחריך ולראות את הפוסטים שלך ולא ידעו שהם מושתקים.",
+  "report.mute_explanation": "לא ניתן יהיה לראות את ההודעות. הם עדיין יוכלו לעקוב אחריך ולראות את ההודעות שלך ולא ידעו שהם מושתקים.",
   "report.next": "הבא",
   "report.placeholder": "הערות נוספות",
   "report.reasons.dislike": "אני לא אוהב את זה",
@@ -501,7 +501,7 @@
   "report.rules.subtitle": "בחר/י את כל המתאימים",
   "report.rules.title": "אילו חוקים מופרים?",
   "report.statuses.subtitle": "בחר/י את כל המתאימים",
-  "report.statuses.title": "האם ישנם פוסטים התומכים בדיווח זה?",
+  "report.statuses.title": "האם ישנן הודעות התומכות בדיווח זה?",
   "report.submit": "שליחה",
   "report.target": "דיווח על {target}",
   "report.thanks.take_action": "הנה כמה אפשרויות לשליטה בתצוגת מסטודון:",
@@ -510,43 +510,43 @@
   "report.thanks.title_actionable": "תודה על הדיווח, נבדוק את העניין.",
   "report.unfollow": "הפסיקו לעקוב אחרי @{name}",
   "report.unfollow_explanation": "אתם עוקבים אחרי החשבון הזה. כדי להפסיק לראות את הפרסומים שלו בפיד הבית שלכם, הפסיקו לעקוב אחריהם.",
-  "report_notification.attached_statuses": "{count, plural, one {{count} פוסט} two {{count} posts} many {{count} פוסטים} other {{count} פוסטים}} מצורפים",
+  "report_notification.attached_statuses": "{count, plural, one {הודעה מצורפת} two {הודעותיים מצורפות} many {{count} הודעות מצורפות} other {{count} הודעות מצורפות}}",
   "report_notification.categories.other": "שונות",
   "report_notification.categories.spam": "ספאם (דואר זבל)",
   "report_notification.categories.violation": "הפרת כלל",
   "report_notification.open": "פתח דו\"ח",
   "search.placeholder": "חיפוש",
-  "search.search_or_paste": "Search or paste URL",
+  "search.search_or_paste": "חפש או הזן קישור",
   "search_popout.search_format": "מבנה חיפוש מתקדם",
   "search_popout.tips.full_text": "טקסט פשוט מחזיר פוסטים שכתבת, חיבבת, הידהדת או שאוזכרת בהם, כמו גם שמות משתמשים, שמות להצגה ותגיות מתאימים.",
-  "search_popout.tips.hashtag": "האשתג",
-  "search_popout.tips.status": "פוסט",
+  "search_popout.tips.hashtag": "תגית",
+  "search_popout.tips.status": "הודעה",
   "search_popout.tips.text": "טקסט פשוט מחזיר כינויים, שמות משתמש והאשתגים",
   "search_popout.tips.user": "משתמש(ת)",
   "search_results.accounts": "אנשים",
   "search_results.all": "כל התוצאות",
-  "search_results.hashtags": "האשתגיות",
+  "search_results.hashtags": "תגיות",
   "search_results.nothing_found": "לא נמצא דבר עבור תנאי חיפוש אלה",
-  "search_results.statuses": "פוסטים",
-  "search_results.statuses_fts_disabled": "חיפוש פוסטים לפי תוכן לא מאופשר בשרת מסטודון זה.",
-  "search_results.title": "Search for {q}",
+  "search_results.statuses": "הודעות",
+  "search_results.statuses_fts_disabled": "חיפוש הודעות לפי תוכן לא מאופשר בשרת מסטודון זה.",
+  "search_results.title": "חפש את: {q}",
   "search_results.total": "{count, number} {count, plural, one {תוצאה} other {תוצאות}}",
-  "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
-  "server_banner.active_users": "active users",
-  "server_banner.administered_by": "Administered by:",
-  "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
-  "server_banner.learn_more": "Learn more",
-  "server_banner.server_stats": "Server stats:",
-  "sign_in_banner.create_account": "Create account",
-  "sign_in_banner.sign_in": "Sign in",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.",
+  "server_banner.about_active_users": "משתמשים פעילים בשרת ב־30 הימים האחרונים (משתמשים פעילים חודשיים)",
+  "server_banner.active_users": "משתמשים פעילים",
+  "server_banner.administered_by": "מנוהל ע\"י:",
+  "server_banner.introduction": "{domain} הוא שרת ברשת המבוזרת {mastodon}.",
+  "server_banner.learn_more": "מידע נוסף",
+  "server_banner.server_stats": "סטטיסטיקות שרת:",
+  "sign_in_banner.create_account": "יצירת חשבון",
+  "sign_in_banner.sign_in": "התחברות",
+  "sign_in_banner.text": "יש להתחבר כדי לעקוב אחרי משתמשים או תגיות, לחבב, לשתף ולענות להודעות, או לנהל תקשורת מהחשבון שלך על שרת אחר.",
   "status.admin_account": "פתח/י ממשק ניהול עבור @{name}",
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "חסימת @{name}",
   "status.bookmark": "סימניה",
   "status.cancel_reblog_private": "הסרת הדהוד",
   "status.cannot_reblog": "לא ניתן להדהד הודעה זו",
-  "status.copy": "העתק/י קישור לפוסט זה",
+  "status.copy": "העתק/י קישור להודעה זו",
   "status.delete": "מחיקה",
   "status.detailed_status": "תצוגת שיחה מפורטת",
   "status.direct": "הודעה ישירה ל@{name}",
@@ -555,9 +555,9 @@
   "status.edited_x_times": "נערך {count, plural, one {פעם {count}} other {{count} פעמים}}",
   "status.embed": "הטמעה",
   "status.favourite": "חיבוב",
-  "status.filter": "סנן פוסט זה",
+  "status.filter": "סנן הודעה זו",
   "status.filtered": "סונן",
-  "status.hide": "הסתר פוסט",
+  "status.hide": "הסתר הודעה",
   "status.history.created": "{name} יצר/ה {date}",
   "status.history.edited": "{name} ערך/ה {date}",
   "status.load_more": "עוד",
@@ -566,17 +566,17 @@
   "status.more": "עוד",
   "status.mute": "להשתיק את @{name}",
   "status.mute_conversation": "השתקת שיחה",
-  "status.open": "הרחבת פוסט זה",
+  "status.open": "הרחבת הודעה זו",
   "status.pin": "הצמדה לפרופיל שלי",
-  "status.pinned": "פוסט נעוץ",
+  "status.pinned": "הודעה נעוצה",
   "status.read_more": "לקרוא עוד",
   "status.reblog": "הדהוד",
   "status.reblog_private": "להדהד ברמת הנראות המקורית",
   "status.reblogged_by": "{name} הידהד/ה:",
-  "status.reblogs.empty": "עוד לא הידהדו את הפוסט הזה. כאשר זה יקרה, ההדהודים יופיעו כאן.",
+  "status.reblogs.empty": "עוד לא הידהדו את ההודעה הזו. כאשר זה יקרה, ההדהודים יופיעו כאן.",
   "status.redraft": "מחיקה ועריכה מחדש",
   "status.remove_bookmark": "הסרת סימניה",
-  "status.replied_to": "Replied to {name}",
+  "status.replied_to": "הגב לחשבון {name}",
   "status.reply": "תגובה",
   "status.replyAll": "תגובה לפתיל",
   "status.report": "דיווח על @{name}",
@@ -587,15 +587,15 @@
   "status.show_less_all": "להציג פחות מהכל",
   "status.show_more": "הראה יותר",
   "status.show_more_all": "להציג יותר מהכל",
-  "status.show_original": "Show original",
-  "status.translate": "Translate",
-  "status.translated_from_with": "Translated from {lang} using {provider}",
+  "status.show_original": "הצגת מקור",
+  "status.translate": "לתרגם",
+  "status.translated_from_with": "לתרגם משפה {lang} באמצעות {provider}",
   "status.uncached_media_warning": "לא זמין",
   "status.unmute_conversation": "הסרת השתקת שיחה",
   "status.unpin": "לשחרר מקיבוע באודות",
-  "subscribed_languages.lead": "Only posts in selected languages will appear on your home and list timelines after the change. Select none to receive posts in all languages.",
-  "subscribed_languages.save": "Save changes",
-  "subscribed_languages.target": "Change subscribed languages for {target}",
+  "subscribed_languages.lead": "רק הודעות בשפות הנבחרות יופיעו בפיד הבית וברשימות שלך אחרי השינוי. נקו את כל הבחירות כדי לראות את כל השפות.",
+  "subscribed_languages.save": "שמירת שינויים",
+  "subscribed_languages.target": "שינוי רישום שפה עבור {target}",
   "suggestions.dismiss": "להתעלם מהצעה",
   "suggestions.header": "ייתכן שזה יעניין אותך…",
   "tabs_bar.federated_timeline": "פיד כללי (בין-קהילתי)",
@@ -610,8 +610,8 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} משרתים אחרים לא מוצגים.",
   "timeline_hint.resources.followers": "עוקבים",
   "timeline_hint.resources.follows": "נעקבים",
-  "timeline_hint.resources.statuses": "פוסטים ישנים יותר",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
+  "timeline_hint.resources.statuses": "הודעות ישנות יותר",
+  "trends.counter_by_accounts": "{count, plural, one {אדם {count}} other {{count} א.נשים}} {days, plural, one {מאז אתמול} two {ביומיים האחרונים} other {במשך {days} הימים האחרונים}}",
   "trends.trending_now": "נושאים חמים",
   "ui.beforeunload": "הטיוטא תאבד אם תעזבו את מסטודון.",
   "units.short.billion": "{count} מליארד",
@@ -639,7 +639,7 @@
   "upload_modal.preparing_ocr": "מכין OCR…",
   "upload_modal.preview_label": "תצוגה ({ratio})",
   "upload_progress.label": "עולה...",
-  "upload_progress.processing": "Processing…",
+  "upload_progress.processing": "מעבד…",
   "video.close": "סגירת וידאו",
   "video.download": "הורדת קובץ",
   "video.exit_fullscreen": "יציאה ממסך מלא",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 5a938ac5d..85202e1d5 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Követett}}",
   "account.follows.empty": "Ez a felhasználó még senkit sem követ.",
   "account.follows_you": "Követ téged",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ugrás a profilhoz",
   "account.hide_reblogs": "@{name} megtolásainak elrejtése",
   "account.joined_short": "Csatlakozott",
   "account.languages": "Feliratkozott nyelvek módosítása",
@@ -182,8 +182,8 @@
   "directory.local": "Csak innen: {domain}",
   "directory.new_arrivals": "Új csatlakozók",
   "directory.recently_active": "Nemrég aktív",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Fiókbeállítások",
+  "disabled_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva.",
   "dismissable_banner.community_timeline": "Ezek a legfrissebb nyilvános bejegyzések, amelyeket a(z) {domain} kiszolgáló fiókjait használó emberek tették közzé.",
   "dismissable_banner.dismiss": "Eltüntetés",
   "dismissable_banner.explore_links": "Jelenleg ezekről a hírekről beszélgetnek az ezen és a decentralizált hálózat többi kiszolgálóján lévő emberek.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}",
   "missing_indicator.label": "Nincs találat",
   "missing_indicator.sublabel": "Ez az erőforrás nem található",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "A(z) {disabledAccount} fiókod jelenleg le van tiltva, mert átköltöztél ide: {movedToAccount}.",
   "mute_modal.duration": "Időtartam",
   "mute_modal.hide_notifications": "Rejtsük el a felhasználótól származó értesítéseket?",
   "mute_modal.indefinite": "Határozatlan",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index df8cabcb4..13ecae298 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Mengikuti}}",
   "account.follows.empty": "Pengguna ini belum mengikuti siapa pun.",
   "account.follows_you": "Mengikuti Anda",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Buka profil",
   "account.hide_reblogs": "Sembunyikan boosts dari @{name}",
   "account.joined_short": "Bergabung",
   "account.languages": "Ubah langganan bahasa",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index b37f02feb..bee531e4f 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -14,7 +14,7 @@
   "about.powered_by": "Decentralized social media powered by {mastodon}",
   "about.rules": "Server rules",
   "account.account_note_header": "Note",
-  "account.add_or_remove_from_list": "Add or Remove from lists",
+  "account.add_or_remove_from_list": "Tinye ma ọ bụ Wepu na ndepụta",
   "account.badges.bot": "Bot",
   "account.badges.group": "Group",
   "account.block": "Block @{name}",
@@ -48,7 +48,7 @@
   "account.media": "Media",
   "account.mention": "Mention @{name}",
   "account.moved_to": "{name} has indicated that their new account is now:",
-  "account.mute": "Mute @{name}",
+  "account.mute": "Mee ogbi @{name}",
   "account.mute_notifications": "Mute notifications from @{name}",
   "account.muted": "Muted",
   "account.posts": "Posts",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 1abf12255..a2062244b 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} fylgist með} other {{counter} fylgjast með}}",
   "account.follows.empty": "Þessi notandi fylgist ennþá ekki með neinum.",
   "account.follows_you": "Fylgir þér",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Fara í notandasnið",
   "account.hide_reblogs": "Fela endurbirtingar fyrir @{name}",
   "account.joined_short": "Gerðist þátttakandi",
   "account.languages": "Breyta tungumálum í áskrift",
@@ -182,8 +182,8 @@
   "directory.local": "Einungis frá {domain}",
   "directory.new_arrivals": "Nýkomnir",
   "directory.recently_active": "Nýleg virkni",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Stillingar notandaaðgangs",
+  "disabled_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu.",
   "dismissable_banner.community_timeline": "Þetta eru nýjustu opinberu færslurnar frá fólki sem er hýst á {domain}.",
   "dismissable_banner.dismiss": "Hunsa",
   "dismissable_banner.explore_links": "Þetta eru fréttafærslur sem í augnablikinu er verið að tala um af fólki á þessum og öðrum netþjónum á dreifhýsta netkerfinu.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Víxla sýnileika",
   "missing_indicator.label": "Fannst ekki",
   "missing_indicator.sublabel": "Tilfangið fannst ekki",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.",
   "mute_modal.duration": "Lengd",
   "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?",
   "mute_modal.indefinite": "Óendanlegt",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index aa5c589d2..67bbbfbe7 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} Seguiti}}",
   "account.follows.empty": "Questo utente non segue nessuno ancora.",
   "account.follows_you": "Ti segue",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Vai al profilo",
   "account.hide_reblogs": "Nascondi condivisioni da @{name}",
   "account.joined_short": "Account iscritto",
   "account.languages": "Cambia le lingue di cui ricevere i post",
@@ -182,8 +182,8 @@
   "directory.local": "Solo da {domain}",
   "directory.new_arrivals": "Nuovi arrivi",
   "directory.recently_active": "Attivo di recente",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Impostazioni dell'account",
+  "disabled_account_banner.text": "Il tuo account {disabledAccount} è attualmente disabilitato.",
   "dismissable_banner.community_timeline": "Questi sono i posti pubblici più recenti di persone i cui account sono ospitati da {domain}.",
   "dismissable_banner.dismiss": "Ignora",
   "dismissable_banner.explore_links": "Queste notizie sono in fase di discussione da parte di persone su questo e altri server della rete decentralizzata, in questo momento.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Imposta visibilità",
   "missing_indicator.label": "Non trovato",
   "missing_indicator.sublabel": "Risorsa non trovata",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Il tuo account {disabledAccount} è attualmente disabilitato perché ti sei trasferito/a su {movedToAccount}.",
   "mute_modal.duration": "Durata",
   "mute_modal.hide_notifications": "Nascondere le notifiche da quest'utente?",
   "mute_modal.indefinite": "Per sempre",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 6298add8a..c904e505c 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{counter} フォロー",
   "account.follows.empty": "まだ誰もフォローしていません。",
   "account.follows_you": "フォローされています",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "プロフィールページへ",
   "account.hide_reblogs": "@{name}さんからのブーストを非表示",
   "account.joined_short": "登録日",
   "account.languages": "購読言語の変更",
@@ -186,8 +186,8 @@
   "directory.local": "{domain} のみ",
   "directory.new_arrivals": "新着順",
   "directory.recently_active": "最近の活動順",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "アカウント設定",
+  "disabled_account_banner.text": "あなたのアカウント『{disabledAccount}』は現在無効になっています。",
   "dismissable_banner.community_timeline": "これらは{domain}がホストしている人たちの最新の公開投稿です。",
   "dismissable_banner.dismiss": "閉じる",
   "dismissable_banner.explore_links": "これらのニュース記事は現在分散型ネットワークの他のサーバーの人たちに話されています。",
@@ -365,7 +365,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {画像を閉じる} other {画像を閉じる}}",
   "missing_indicator.label": "見つかりません",
   "missing_indicator.sublabel": "見つかりませんでした",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "あなたのアカウント『{disabledAccount}』は『{movedToAccount}』に移動したため現在無効になっています。",
   "mute_modal.duration": "ミュートする期間",
   "mute_modal.hide_notifications": "このユーザーからの通知を隠しますか?",
   "mute_modal.indefinite": "無期限",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index c8a85cbe7..7338d186c 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{counter} 팔로잉",
   "account.follows.empty": "이 사용자는 아직 아무도 팔로우하고 있지 않습니다.",
   "account.follows_you": "날 팔로우합니다",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "프로필로 이동",
   "account.hide_reblogs": "@{name}의 부스트를 숨기기",
   "account.joined_short": "가입",
   "account.languages": "구독한 언어 변경",
@@ -182,8 +182,8 @@
   "directory.local": "{domain}에서만",
   "directory.new_arrivals": "새로운 사람들",
   "directory.recently_active": "최근 활동",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "계정 설정",
+  "disabled_account_banner.text": "당신의 계정 {disabledAccount}는 현재 비활성화 상태입니다.",
   "dismissable_banner.community_timeline": "여기 있는 것들은 계정이 {domain}에 있는 사람들의 최근 공개 게시물들입니다.",
   "dismissable_banner.dismiss": "지우기",
   "dismissable_banner.explore_links": "이 뉴스들은 이 서버와 분산화된 네트워크의 다른 서버에서 사람들이 지금 많이 이야기 하고 있는 것입니다.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "이미지 숨기기",
   "missing_indicator.label": "찾을 수 없습니다",
   "missing_indicator.sublabel": "이 리소스를 찾을 수 없었습니다",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "당신의 계정 {disabledAccount}는 {movedToAccount}로 이동하였기 때문에 현재 비활성화 상태입니다.",
   "mute_modal.duration": "기간",
   "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?",
   "mute_modal.indefinite": "무기한",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index c65d0c1a2..b74659820 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -87,14 +87,14 @@
   "bundle_column_error.network.body": "Di dema hewldana barkirina vê rûpelê de çewtiyek derket. Ev dibe ku ji ber pirsgirêkeke demkî ya girêdana înternetê te be an jî ev rajekar be.",
   "bundle_column_error.network.title": "Çewtiya torê",
   "bundle_column_error.retry": "Dîsa biceribîne",
-  "bundle_column_error.return": "Vegere serûpelê",
+  "bundle_column_error.return": "Vegere rûpela sereke",
   "bundle_column_error.routing.body": "Rûpela xwestî nehate dîtin. Tu bawerî ku girêdana di kodika lêgerînê de rast e?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Bigire",
   "bundle_modal_error.message": "Di dema barkirina vê hêmanê de tiştek çewt çê bû.",
   "bundle_modal_error.retry": "Dîsa bicerbîne",
-  "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dika li ser rajekarek din ajimêrekê biafirînî û hîn jî bi vê yekê re tev bigerî.",
-  "closed_registrations_modal.description": "Afirandina ajimêrekê li ser {domain} niha ne pêkan e, lê ji kerema xwe ji bîr neke ku pêdiviya te bi hebûna ajimêreke taybet li ser {domain} tune ye ku tu Mastodon bi kar bînî.",
+  "closed_registrations.other_server_instructions": "Ji ber ku Mastodon nenavendî ye, tu dikarî li ser pêşkêşkareke din hesabekî vekî û dîsa jî bi vê pêşkêşkarê re têkiliyê daynî.",
+  "closed_registrations_modal.description": "Afirandina hesabekî li ser {domain}ê niha ne pêkan e, lê tika ye ji bîr neke ku ji bo bikaranîna Mastodonê ne mecbûrî ye hesabekî te yê {domain}ê hebe.",
   "closed_registrations_modal.find_another_server": "Rajekareke din bibîne",
   "closed_registrations_modal.preamble": "Mastodon nenavendî ye, ji ber vê yekê tu li ku derê ajimêrê xwe biafirînê, tu yê bikaribî li ser vê rajekarê her kesî bişopînî û têkilî deynî. Her wiha tu dikarî wê bi xwe pêşkêş bikî!",
   "closed_registrations_modal.title": "Tomar bibe li ser Mastodon",
@@ -107,7 +107,7 @@
   "column.domain_blocks": "Navperên astengkirî",
   "column.favourites": "Bijarte",
   "column.follow_requests": "Daxwazên şopandinê",
-  "column.home": "Serûpel",
+  "column.home": "Rûpela sereke",
   "column.lists": "Lîste",
   "column.mutes": "Bikarhênerên bêdengkirî",
   "column.notifications": "Agahdarî",
@@ -131,7 +131,7 @@
   "compose_form.hashtag_warning": "Ev şandî ji ber ku nehatiye tomarkirin dê di binê hashtagê de neyê tomar kirin. Tenê peyamên gelemperî dikarin bi hashtagê werin lêgerîn.",
   "compose_form.lock_disclaimer": "Ajimêrê te {locked} nîne. Herkes dikare te bişopîne da ku şandiyên te yên tenê şopînerên te ra xûya dibin bibînin.",
   "compose_form.lock_disclaimer.lock": "girtî ye",
-  "compose_form.placeholder": "Tu li çi difikirî?",
+  "compose_form.placeholder": "Çi di hişê te derbas dibe?",
   "compose_form.poll.add_option": "Hilbijarekî tevlî bike",
   "compose_form.poll.duration": "Dema rapirsî yê",
   "compose_form.poll.option_placeholder": "{number} Hilbijêre",
@@ -207,7 +207,7 @@
   "emoji_button.search_results": "Encamên lêgerînê",
   "emoji_button.symbols": "Sembol",
   "emoji_button.travel": "Geşt û şûn",
-  "empty_column.account_suspended": "Ajimêr hatiye rawestandin",
+  "empty_column.account_suspended": "Hesab hatiye rawestandin",
   "empty_column.account_timeline": "Li vir şandî tune!",
   "empty_column.account_unavailable": "Profîl nayê peydakirin",
   "empty_column.blocks": "Te tu bikarhêner asteng nekiriye.",
@@ -460,7 +460,7 @@
   "privacy_policy.title": "Politîka taybetiyê",
   "refresh": "Nû bike",
   "regeneration_indicator.label": "Tê barkirin…",
-  "regeneration_indicator.sublabel": "Naveroka serûpela te tê amedekirin!",
+  "regeneration_indicator.sublabel": "Naveroka rûpela sereke ya te tê amedekirin!",
   "relative_time.days": "{number}r",
   "relative_time.full.days": "{number, plural, one {# roj} other {# roj}} berê",
   "relative_time.full.hours": "{number, plural, one {# demjimêr} other {# demjimêr}} berê",
@@ -537,7 +537,7 @@
   "server_banner.introduction": "{domain} beşek ji tora civakî ya nenavendî ye bi hêzdariya {mastodon}.",
   "server_banner.learn_more": "Bêtir fêr bibe",
   "server_banner.server_stats": "Amarên rajekar:",
-  "sign_in_banner.create_account": "Ajimêr biafirîne",
+  "sign_in_banner.create_account": "Hesab biafirîne",
   "sign_in_banner.sign_in": "Têkeve",
   "sign_in_banner.text": "Têkeve ji bo şopandina profîlan an hashtagan, bijarte, parvekirin û bersivdana şandiyan, an ji ajimêrê xwe li ser rajekarek cuda têkilî deyine.",
   "status.admin_account": "Ji bo @{name} navrûya venihêrtinê veke",
@@ -599,7 +599,7 @@
   "suggestions.dismiss": "Pêşniyarê paşguh bike",
   "suggestions.header": "Dibe ku bala te bikşîne…",
   "tabs_bar.federated_timeline": "Giştî",
-  "tabs_bar.home": "Serûpel",
+  "tabs_bar.home": "Rûpela sereke",
   "tabs_bar.local_timeline": "Herêmî",
   "tabs_bar.notifications": "Agahdarî",
   "time_remaining.days": "{number, plural, one {# roj} other {# roj}} maye",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 62fa97701..64f101459 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -25,23 +25,23 @@
   "account.direct": "Privāta ziņa @{name}",
   "account.disable_notifications": "Pārtraukt man paziņot, kad @{name} publicē ierakstu",
   "account.domain_blocked": "Domēns ir bloķēts",
-  "account.edit_profile": "Rediģēt profilu",
-  "account.enable_notifications": "Man paziņot, kad @{name} publicē ierakstu",
+  "account.edit_profile": "Labot profilu",
+  "account.enable_notifications": "Paziņot man, kad @{name} publicē ierakstu",
   "account.endorse": "Izcelts profilā",
   "account.featured_tags.last_status_at": "Beidzamā ziņa {date}",
   "account.featured_tags.last_status_never": "Publikāciju nav",
   "account.featured_tags.title": "{name} piedāvātie haštagi",
   "account.follow": "Sekot",
   "account.followers": "Sekotāji",
-  "account.followers.empty": "Šim lietotājam patreiz nav sekotāju.",
+  "account.followers.empty": "Šim lietotājam vēl nav sekotāju.",
   "account.followers_counter": "{count, plural, one {{counter} Sekotājs} other {{counter} Sekotāji}}",
   "account.following": "Seko",
-  "account.following_counter": "{count, plural, one {{counter} Sekojošs} other {{counter} Sekojoši}}",
+  "account.following_counter": "{count, plural, one {{counter} Sekojamais} other {{counter} Sekojamie}}",
   "account.follows.empty": "Šis lietotājs pagaidām nevienam neseko.",
   "account.follows_you": "Seko tev",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Dodieties uz profilu",
   "account.hide_reblogs": "Paslēpt paceltos ierakstus no lietotāja @{name}",
-  "account.joined_short": "Pievienojies",
+  "account.joined_short": "Pievienojās",
   "account.languages": "Mainīt abonētās valodas",
   "account.link_verified_on": "Šīs saites piederība ir pārbaudīta {date}",
   "account.locked_info": "Šī konta privātuma statuss ir slēgts. Īpašnieks izskatīs, kurš viņam drīkst sekot.",
@@ -165,7 +165,7 @@
   "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?",
   "confirmations.mute.confirm": "Apklusināt",
   "confirmations.mute.explanation": "Šādi no viņiem tiks slēptas ziņas un ziņas, kurās viņi tiek pieminēti, taču viņi joprojām varēs redzēt tavas ziņas un sekot tev.",
-  "confirmations.mute.message": "Vai Tu tiešām velies apklusināt {name}?",
+  "confirmations.mute.message": "Vai tiešām velies apklusināt {name}?",
   "confirmations.redraft.confirm": "Dzēst un pārrakstīt",
   "confirmations.redraft.message": "Vai tiešām vēlies dzēst un pārrakstīt šo ierakstu? Favorīti un paceltie ieraksti tiks dzēsti, kā arī atbildes tiks atsaistītas no šī ieraksta.",
   "confirmations.reply.confirm": "Atbildēt",
@@ -182,8 +182,8 @@
   "directory.local": "Tikai no {domain}",
   "directory.new_arrivals": "Jaunpienācēji",
   "directory.recently_active": "Nesen aktīvs",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Konta iestatījumi",
+  "disabled_account_banner.text": "Jūsu konts {disabledAccount} pašlaik ir atspējots.",
   "dismissable_banner.community_timeline": "Šīs ir jaunākās publiskās ziņas no personām, kuru kontus mitina {domain}.",
   "dismissable_banner.dismiss": "Atcelt",
   "dismissable_banner.explore_links": "Par šiem jaunumiem šobrīd runā cilvēki šajā un citos decentralizētā tīkla serveros.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Slēpt # attēlu} other {Slēpt # attēlus}}",
   "missing_indicator.label": "Nav atrasts",
   "missing_indicator.sublabel": "Šo resursu nevarēja atrast",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Jūsu konts {disabledAccount} pašlaik ir atspējots, jo esat pārcēlies uz kontu {movedToAccount}.",
   "mute_modal.duration": "Ilgums",
   "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?",
   "mute_modal.indefinite": "Nenoteikts",
@@ -378,7 +378,7 @@
   "navigation_bar.favourites": "Izlases",
   "navigation_bar.filters": "Klusināti vārdi",
   "navigation_bar.follow_requests": "Sekošanas pieprasījumi",
-  "navigation_bar.follows_and_followers": "Man seko un sekotāji",
+  "navigation_bar.follows_and_followers": "Sekojamie un sekotāji",
   "navigation_bar.lists": "Saraksti",
   "navigation_bar.logout": "Iziet",
   "navigation_bar.mutes": "Apklusinātie lietotāji",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index 9bf2b09e5..4c5870633 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -1,22 +1,22 @@
 {
-  "about.blocks": "Moderated servers",
-  "about.contact": "Contact:",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
-  "about.domain_blocks.comment": "Reason",
-  "about.domain_blocks.domain": "Domain",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
-  "about.domain_blocks.severity": "Severity",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
-  "about.domain_blocks.silenced.title": "Limited",
-  "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
-  "about.rules": "Server rules",
-  "account.account_note_header": "Note",
+  "about.blocks": "Модерирани сервери",
+  "about.contact": "Контакт:",
+  "about.disclaimer": "Mastodon е бесплатен, open-source софтвер, и заштитен знак на Mastodon gGmbH.",
+  "about.domain_blocks.comment": "Причина",
+  "about.domain_blocks.domain": "Домен",
+  "about.domain_blocks.preamble": "Mastodon вообичаено ви дозволува да прегледувате содржини и комуницирате со корисниците од било кој сервер во федиверзумот. На овој сервер има исклучоци.",
+  "about.domain_blocks.severity": "Сериозност",
+  "about.domain_blocks.silenced.explanation": "Вообичаено нема да гледате профили и содржина од овој сервер, освен ако не го пребарате намерно, или го заследите.",
+  "about.domain_blocks.silenced.title": "Ограничено",
+  "about.domain_blocks.suspended.explanation": "Податоците од овој сервер нема да бидат процесирани, зачувани или сменети и било која интеракција или комуникација со корисниците од овој сервер ќе биде невозможна.",
+  "about.domain_blocks.suspended.title": "Суспендиран",
+  "about.not_available": "Оваа информација не е достапна на овој сервер.",
+  "about.powered_by": "Децентрализиран друштвен медиум овозможен од {mastodon}",
+  "about.rules": "Правила на серверот",
+  "account.account_note_header": "Белешка",
   "account.add_or_remove_from_list": "Додади или одстрани од листа",
   "account.badges.bot": "Бот",
-  "account.badges.group": "Group",
+  "account.badges.group": "Група",
   "account.block": "Блокирај @{name}",
   "account.block_domain": "Сокријај се од {domain}",
   "account.blocked": "Блокиран",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 5c586a327..9d874fd86 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -14,7 +14,7 @@
   "about.powered_by": "Gedecentraliseerde sociale media, mogelijk gemaakt door {mastodon}",
   "about.rules": "Serverregels",
   "account.account_note_header": "Opmerking",
-  "account.add_or_remove_from_list": "Toevoegen of verwijderen vanuit lijsten",
+  "account.add_or_remove_from_list": "Toevoegen aan of verwijderen uit lijsten",
   "account.badges.bot": "Bot",
   "account.badges.group": "Groep",
   "account.block": "@{name} blokkeren",
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} volgend} other {{counter} volgend}}",
   "account.follows.empty": "Deze gebruiker volgt nog niemand.",
   "account.follows_you": "Volgt jou",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ga naar profiel",
   "account.hide_reblogs": "Boosts van @{name} verbergen",
   "account.joined_short": "Geregistreerd op",
   "account.languages": "Getoonde talen wijzigen",
@@ -94,7 +94,7 @@
   "bundle_modal_error.message": "Tijdens het laden van dit onderdeel is er iets fout gegaan.",
   "bundle_modal_error.retry": "Opnieuw proberen",
   "closed_registrations.other_server_instructions": "Omdat Mastodon gedecentraliseerd is, kun je op een andere server een account registreren en vanaf daar nog steeds met deze server communiceren.",
-  "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account aan te maken.",
+  "closed_registrations_modal.description": "Momenteel is het niet mogelijk om op {domain} een account aan te maken. Hou echter in gedachte dat om Mastodon te kunnen gebruiken het niet een vereiste is om op {domain} een account te hebben.",
   "closed_registrations_modal.find_another_server": "Een andere server zoeken",
   "closed_registrations_modal.preamble": "Mastodon is gedecentraliseerd. Op welke server je ook een account hebt, je kunt overal vandaan mensen op deze server volgen en er mee interactie hebben. Je kunt zelfs zelf een Mastodon-server hosten!",
   "closed_registrations_modal.title": "Registreren op Mastodon",
@@ -182,8 +182,8 @@
   "directory.local": "Alleen {domain}",
   "directory.new_arrivals": "Nieuwe accounts",
   "directory.recently_active": "Onlangs actief",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Accountinstellingen",
+  "disabled_account_banner.text": "Jouw account {disabledAccount} is momenteel uitgeschakeld.",
   "dismissable_banner.community_timeline": "Dit zijn de meest recente openbare berichten van accounts op {domain}. Je kunt onder 'instellingen > voorkeuren > overig' kiezen welke talen je wilt zien.",
   "dismissable_banner.dismiss": "Sluiten",
   "dismissable_banner.explore_links": "Deze nieuwsberichten winnen aan populariteit op deze en andere servers binnen het decentrale netwerk.",
@@ -319,7 +319,7 @@
   "keyboard_shortcuts.hotkey": "Sneltoets",
   "keyboard_shortcuts.legend": "Deze legenda tonen",
   "keyboard_shortcuts.local": "Lokale tijdlijn tonen",
-  "keyboard_shortcuts.mention": "Auteur vermelden",
+  "keyboard_shortcuts.mention": "Account vermelden",
   "keyboard_shortcuts.muted": "Genegeerde gebruikers tonen",
   "keyboard_shortcuts.my_profile": "Jouw profiel tonen",
   "keyboard_shortcuts.notifications": "Meldingen tonen",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {afbeelding verbergen} other {afbeeldingen verbergen}}",
   "missing_indicator.label": "Niet gevonden",
   "missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Omdat je naar {movedToAccount} bent verhuisd is jouw account {disabledAccount} momenteel uitgeschakeld.",
   "mute_modal.duration": "Duur",
   "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
   "mute_modal.indefinite": "Voor onbepaalde tijd",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 1ccdf4936..1704568b7 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} fylgjar} other {{counter} fylgjar}}",
   "account.follows.empty": "Denne brukaren fylgjer ikkje nokon enno.",
   "account.follows_you": "Fylgjer deg",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Gå til profil",
   "account.hide_reblogs": "Skjul framhevingar frå @{name}",
   "account.joined_short": "Vart med",
   "account.languages": "Endre språktingingar",
@@ -182,8 +182,8 @@
   "directory.local": "Berre frå {domain}",
   "directory.new_arrivals": "Nyleg tilkomne",
   "directory.recently_active": "Nyleg aktive",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Kontoinnstillingar",
+  "disabled_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert.",
   "dismissable_banner.community_timeline": "Dette er dei nylegaste offentlege innlegga frå personar med kontoar frå {domain}.",
   "dismissable_banner.dismiss": "Avvis",
   "dismissable_banner.explore_links": "Desse nyhendesakene snakkast om av folk på denne og andre tenarar på det desentraliserte nettverket no.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}",
   "missing_indicator.label": "Ikkje funne",
   "missing_indicator.sublabel": "Fann ikkje ressursen",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert fordi du har flytta til {movedToAccount}.",
   "mute_modal.duration": "Varigheit",
   "mute_modal.hide_notifications": "Skjul varsel frå denne brukaren?",
   "mute_modal.indefinite": "På ubestemt tid",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index f83812fda..4736519af 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -1,36 +1,36 @@
 {
   "about.blocks": "Moderated servers",
-  "about.contact": "Contact:",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
-  "about.domain_blocks.comment": "Reason",
-  "about.domain_blocks.domain": "Domain",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
-  "about.domain_blocks.severity": "Severity",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
-  "about.domain_blocks.silenced.title": "Limited",
-  "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
-  "about.rules": "Server rules",
-  "account.account_note_header": "Notis",
+  "about.contact": "Kontakt:",
+  "about.disclaimer": "Mastodon er gratis, åpen kildekode-programvare og et varemerke fra Mastodon gGmbH.",
+  "about.domain_blocks.comment": "Årsak",
+  "about.domain_blocks.domain": "Domene",
+  "about.domain_blocks.preamble": "Mastodon lar deg normalt sett se innholdet fra og samhandle med brukere fra enhver annen server i fødiverset. Dette er unntakene som har blitt lagt inn på denne serveren.",
+  "about.domain_blocks.severity": "Alvorlighetsgrad",
+  "about.domain_blocks.silenced.explanation": "Du vil vanligvis ikke se profiler og innhold fra denne serveren, med mindre du eksplisitt søker dem opp eller velger å følge dem.",
+  "about.domain_blocks.silenced.title": "Begrenset",
+  "about.domain_blocks.suspended.explanation": "Ikke noe innhold fra denne serveren vil bli behandlet, lagret eller utvekslet. Det gjør det umulig å samhandle eller kommunisere med brukere fra denne serveren.",
+  "about.domain_blocks.suspended.title": "Suspendert",
+  "about.not_available": "Denne informasjonen er ikke gjort tilgjengelig på denne serveren.",
+  "about.powered_by": "Desentraliserte sosiale medier drevet av {mastodon}",
+  "about.rules": "Regler for serveren",
+  "account.account_note_header": "Notat",
   "account.add_or_remove_from_list": "Legg til eller fjern fra lister",
   "account.badges.bot": "Bot",
   "account.badges.group": "Gruppe",
   "account.block": "Blokkér @{name}",
-  "account.block_domain": "Skjul alt fra {domain}",
+  "account.block_domain": "Blokkér domenet {domain}",
   "account.blocked": "Blokkert",
   "account.browse_more_on_origin_server": "Bla mer på den opprinnelige profilen",
-  "account.cancel_follow_request": "Withdraw follow request",
-  "account.direct": "Direct Message @{name}",
+  "account.cancel_follow_request": "Trekk tilbake følge-forespørselen",
+  "account.direct": "Send direktemelding til @{name}",
   "account.disable_notifications": "Slutt å varsle meg når @{name} legger ut innlegg",
-  "account.domain_blocked": "Domenet skjult",
+  "account.domain_blocked": "Domene blokkert",
   "account.edit_profile": "Rediger profil",
   "account.enable_notifications": "Varsle meg når @{name} legger ut innlegg",
   "account.endorse": "Vis frem på profilen",
-  "account.featured_tags.last_status_at": "Last post on {date}",
-  "account.featured_tags.last_status_never": "No posts",
-  "account.featured_tags.title": "{name}'s featured hashtags",
+  "account.featured_tags.last_status_at": "Siste innlegg {date}",
+  "account.featured_tags.last_status_never": "Ingen Innlegg",
+  "account.featured_tags.title": "{name} sine fremhevede emneknagger",
   "account.follow": "Følg",
   "account.followers": "Følgere",
   "account.followers.empty": "Ingen følger denne brukeren ennå.",
@@ -39,66 +39,66 @@
   "account.following_counter": "{count, plural, one {{counter} som følges} other {{counter} som følges}}",
   "account.follows.empty": "Denne brukeren følger ikke noen enda.",
   "account.follows_you": "Følger deg",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Gå til profil",
   "account.hide_reblogs": "Skjul fremhevinger fra @{name}",
-  "account.joined_short": "Joined",
-  "account.languages": "Change subscribed languages",
+  "account.joined_short": "Ble med",
+  "account.languages": "Endre hvilke språk du abonnerer på",
   "account.link_verified_on": "Eierskap av denne lenken ble sjekket {date}",
   "account.locked_info": "Denne kontoens personvernstatus er satt til låst. Eieren vurderer manuelt hvem som kan følge dem.",
   "account.media": "Media",
   "account.mention": "Nevn @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "{name} har angitt at deres nye konto nå er:",
   "account.mute": "Demp @{name}",
-  "account.mute_notifications": "Ignorer varsler fra @{name}",
+  "account.mute_notifications": "Demp varsler fra @{name}",
   "account.muted": "Dempet",
   "account.posts": "Innlegg",
-  "account.posts_with_replies": "Toots with replies",
+  "account.posts_with_replies": "Innlegg med svar",
   "account.report": "Rapportér @{name}",
-  "account.requested": "Venter på godkjennelse",
+  "account.requested": "Venter på godkjennelse. Klikk for å avbryte forespørselen",
   "account.share": "Del @{name}s profil",
   "account.show_reblogs": "Vis boosts fra @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} tut} other {{counter} tuter}}",
-  "account.unblock": "Avblokker @{name}",
-  "account.unblock_domain": "Vis {domain}",
+  "account.statuses_counter": "{count, plural, one {{counter} innlegg} other {{counter} innlegg}}",
+  "account.unblock": "Opphev blokkering av @{name}",
+  "account.unblock_domain": "Opphev blokkering av {domain}",
   "account.unblock_short": "Opphev blokkering",
   "account.unendorse": "Ikke vis frem på profilen",
   "account.unfollow": "Avfølg",
-  "account.unmute": "Avdemp @{name}",
+  "account.unmute": "Opphev demping av @{name}",
   "account.unmute_notifications": "Vis varsler fra @{name}",
   "account.unmute_short": "Opphev demping",
   "account_note.placeholder": "Klikk for å legge til et notat",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
   "admin.dashboard.retention.average": "Gjennomsnitt",
-  "admin.dashboard.retention.cohort": "Sign-up month",
+  "admin.dashboard.retention.cohort": "Registreringsmåned",
   "admin.dashboard.retention.cohort_size": "Nye brukere",
   "alert.rate_limited.message": "Vennligst prøv igjen etter kl. {retry_time, time, medium}.",
   "alert.rate_limited.title": "Hastighetsbegrenset",
   "alert.unexpected.message": "En uventet feil oppstod.",
   "alert.unexpected.title": "Oi!",
   "announcement.announcement": "Kunngjøring",
-  "attachments_list.unprocessed": "(unprocessed)",
-  "audio.hide": "Hide audio",
+  "attachments_list.unprocessed": "(ubehandlet)",
+  "audio.hide": "Skjul lyd",
   "autosuggest_hashtag.per_week": "{count} per uke",
   "boost_modal.combo": "You kan trykke {combo} for å hoppe over dette neste gang",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
-  "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
-  "bundle_column_error.error.title": "Oh, no!",
-  "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
-  "bundle_column_error.network.title": "Network error",
+  "bundle_column_error.copy_stacktrace": "Kopier feilrapport",
+  "bundle_column_error.error.body": "Den forespurte siden kan ikke gjengis. Den kan skyldes en feil i vår kode eller et kompatibilitetsproblem med nettleseren.",
+  "bundle_column_error.error.title": "Å nei!",
+  "bundle_column_error.network.body": "Det oppsto en feil under forsøk på å laste inn denne siden. Dette kan skyldes et midlertidig problem med din internettilkobling eller denne serveren.",
+  "bundle_column_error.network.title": "Nettverksfeil",
   "bundle_column_error.retry": "Prøv igjen",
-  "bundle_column_error.return": "Go back home",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.return": "Gå hjem igjen",
+  "bundle_column_error.routing.body": "Den forespurte siden ble ikke funnet. Er du sikker på at URL-en i adresselinjen er riktig?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Lukk",
   "bundle_modal_error.message": "Noe gikk galt da denne komponenten lastet.",
   "bundle_modal_error.retry": "Prøv igjen",
-  "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
-  "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
-  "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
-  "closed_registrations_modal.title": "Signing up on Mastodon",
-  "column.about": "About",
+  "closed_registrations.other_server_instructions": "Siden Mastodon er desentralizert, kan du opprette en konto på en annen server og fortsatt kommunisere med denne.",
+  "closed_registrations_modal.description": "Opprettelse av en konto på {domain} er for tiden ikke mulig, men vær oppmerksom på at du ikke trenger en konto spesifikt på {domain} for å kunne bruke Mastodon.",
+  "closed_registrations_modal.find_another_server": "Finn en annen server",
+  "closed_registrations_modal.preamble": "Mastodon er desentralisert, så uansett hvor du oppretter kontoen din, vil du kunne følge og samhandle med alle på denne serveren. Du kan til og med kjøre serveren selv!",
+  "closed_registrations_modal.title": "Registrerer deg på Mastodon",
+  "column.about": "Om",
   "column.blocks": "Blokkerte brukere",
   "column.bookmarks": "Bokmerker",
   "column.community": "Lokal tidslinje",
@@ -114,7 +114,7 @@
   "column.pins": "Pinned toot",
   "column.public": "Felles tidslinje",
   "column_back_button.label": "Tilbake",
-  "column_header.hide_settings": "Gjem  innstillinger",
+  "column_header.hide_settings": "Skjul innstillinger",
   "column_header.moveLeft_settings": "Flytt feltet til venstre",
   "column_header.moveRight_settings": "Flytt feltet til høyre",
   "column_header.pin": "Fest",
@@ -124,11 +124,11 @@
   "community.column_settings.local_only": "Kun lokalt",
   "community.column_settings.media_only": "Media only",
   "community.column_settings.remote_only": "Kun eksternt",
-  "compose.language.change": "Change language",
-  "compose.language.search": "Search languages...",
+  "compose.language.change": "Bytt språk",
+  "compose.language.search": "Søk etter språk...",
   "compose_form.direct_message_warning_learn_more": "Lær mer",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
-  "compose_form.hashtag_warning": "Denne tuten blir ikke listet under noen emneknagger da den er ulistet. Kun offentlige tuter kan søktes etter med emneknagg.",
+  "compose_form.encryption_warning": "Innlegg på Mastodon er ikke ende-til-ende-krypterte. Ikke del sensitive opplysninger via Mastodon.",
+  "compose_form.hashtag_warning": "Dette innlegget blir vist under noen emneknagger da det er uoppført. Kun offentlige innlegg kan søkes opp med emneknagg.",
   "compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.",
   "compose_form.lock_disclaimer.lock": "låst",
   "compose_form.placeholder": "Hva har du på hjertet?",
@@ -138,12 +138,12 @@
   "compose_form.poll.remove_option": "Fjern dette valget",
   "compose_form.poll.switch_to_multiple": "Endre avstemning til å tillate flere valg",
   "compose_form.poll.switch_to_single": "Endre avstemning til å tillate ett valg",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "Publiser",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
-  "compose_form.sensitive.hide": "Merk media som sensitivt",
-  "compose_form.sensitive.marked": "Mediet er merket som sensitiv",
-  "compose_form.sensitive.unmarked": "Mediet er ikke merket som sensitiv",
+  "compose_form.save_changes": "Lagre endringer",
+  "compose_form.sensitive.hide": "{count, plural,one {Merk media som sensitivt} other {Merk media som sensitivt}}",
+  "compose_form.sensitive.marked": "{count, plural,one {Mediet er merket som sensitivt}other {Mediene er merket som sensitive}}",
+  "compose_form.sensitive.unmarked": "{count, plural,one {Mediet er ikke merket som sensitivt}other {Mediene er ikke merket som sensitive}}",
   "compose_form.spoiler.marked": "Teksten er skjult bak en advarsel",
   "compose_form.spoiler.unmarked": "Teksten er ikke skjult",
   "compose_form.spoiler_placeholder": "Innholdsadvarsel",
@@ -151,14 +151,14 @@
   "confirmations.block.block_and_report": "Blokker og rapporter",
   "confirmations.block.confirm": "Blokkèr",
   "confirmations.block.message": "Er du sikker på at du vil blokkere {name}?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "Trekk tilbake forespørsel",
+  "confirmations.cancel_follow_request.message": "Er du sikker på at du vil trekke tilbake forespørselen din for å følge {name}?",
   "confirmations.delete.confirm": "Slett",
   "confirmations.delete.message": "Er du sikker på at du vil slette denne statusen?",
   "confirmations.delete_list.confirm": "Slett",
   "confirmations.delete_list.message": "Er du sikker på at du vil slette denne listen permanent?",
   "confirmations.discard_edit_media.confirm": "Forkast",
-  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
+  "confirmations.discard_edit_media.message": "Du har ulagrede endringer i mediebeskrivelsen eller i forhåndsvisning, forkast dem likevel?",
   "confirmations.domain_block.confirm": "Skjul alt fra domenet",
   "confirmations.domain_block.message": "Er du sikker på at du vil skjule hele domenet {domain}? I de fleste tilfeller er det bedre med målrettet blokkering eller demping.",
   "confirmations.logout.confirm": "Logg ut",
@@ -176,24 +176,24 @@
   "conversation.mark_as_read": "Marker som lest",
   "conversation.open": "Vis samtale",
   "conversation.with": "Med {names}",
-  "copypaste.copied": "Copied",
-  "copypaste.copy": "Copy",
+  "copypaste.copied": "Kopiert",
+  "copypaste.copy": "Kopier",
   "directory.federated": "Fra det kjente strømiverset",
   "directory.local": "Kun fra {domain}",
   "directory.new_arrivals": "Nye ankomster",
   "directory.recently_active": "Nylig aktiv",
-  "disabled_account_banner.account_settings": "Account settings",
+  "disabled_account_banner.account_settings": "Kontoinnstillinger",
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
+  "dismissable_banner.community_timeline": "Dette er de nyeste offentlige innleggene fra personer med kontoer på {domain}.",
+  "dismissable_banner.dismiss": "Avvis",
+  "dismissable_banner.explore_links": "Disse nyhetene snakker folk om akkurat nå på denne og andre servere i det desentraliserte nettverket.",
+  "dismissable_banner.explore_statuses": "Disse innleggene fra denne og andre servere i det desentraliserte nettverket får økt oppmerksomhet på denne serveren akkurat nå.",
+  "dismissable_banner.explore_tags": "Disse emneknaggene snakker folk om akkurat nå, på denne og andre servere i det desentraliserte nettverket.",
   "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
   "embed.instructions": "Kopier koden under for å bygge inn denne statusen på hjemmesiden din.",
   "embed.preview": "Slik kommer det til å se ut:",
   "emoji_button.activity": "Aktivitet",
-  "emoji_button.clear": "Clear",
+  "emoji_button.clear": "Nullstill",
   "emoji_button.custom": "Tilpasset",
   "emoji_button.flags": "Flagg",
   "emoji_button.food": "Mat og drikke",
@@ -208,20 +208,20 @@
   "emoji_button.symbols": "Symboler",
   "emoji_button.travel": "Reise & steder",
   "empty_column.account_suspended": "Kontoen er suspendert",
-  "empty_column.account_timeline": "Ingen tuter er her!",
+  "empty_column.account_timeline": "Ingen innlegg her!",
   "empty_column.account_unavailable": "Profilen er utilgjengelig",
   "empty_column.blocks": "Du har ikke blokkert noen brukere enda.",
-  "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen tuter enda. Når du bokmerker en, vil den dukke opp her.",
+  "empty_column.bookmarked_statuses": "Du har ikke bokmerket noen innlegg enda. Når du bokmerker et, vil det dukke opp her.",
   "empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
   "empty_column.direct": "Du har ingen direktemeldinger enda. Etter du har sendt eller mottatt en, så vil den dukke opp her.",
   "empty_column.domain_blocks": "Det er ingen skjulte domener enda.",
   "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
-  "empty_column.favourited_statuses": "Du har ikke likt noen tuter enda. Når du liker en, vil den dukke opp her.",
-  "empty_column.favourites": "Ingen har likt denne tuten enda. Når noen gjør det, vil de dukke opp her.",
+  "empty_column.favourited_statuses": "Du har ikke likt noen innlegg enda. Når du liker et, vil det dukke opp her.",
+  "empty_column.favourites": "Ingen har likt dette innlegget ennå. Når noen gjør det, vil de dukke opp her.",
   "empty_column.follow_recommendations": "Ser ut som at det ikke finnes noen forslag for deg. Du kan prøve å bruke søk for å se etter folk du kan vite eller utforske trendende hashtags.",
   "empty_column.follow_requests": "Du har ingen følgeforespørsler enda. Når du mottar en, vil den dukke opp her.",
-  "empty_column.hashtag": "Det er ingenting i denne hashtagen ennå.",
-  "empty_column.home": "Du har ikke fulgt noen ennå. Besøk {publlic} eller bruk søk for å komme i gang og møte andre brukere.",
+  "empty_column.hashtag": "Det er ingenting i denne emneknaggen ennå.",
+  "empty_column.home": "Hjem-tidslinjen din er tom! Følg flere folk for å fylle den. {suggestions}",
   "empty_column.home.suggestions": "Se noen forslag",
   "empty_column.list": "Det er ingenting i denne listen ennå. Når medlemmene av denne listen legger ut nye statuser vil de dukke opp her.",
   "empty_column.lists": "Du har ingen lister enda. Når du lager en, vil den dukke opp her.",
@@ -239,66 +239,66 @@
   "explore.title": "Utforsk",
   "explore.trending_links": "Nyheter",
   "explore.trending_statuses": "Innlegg",
-  "explore.trending_tags": "Hashtags",
+  "explore.trending_tags": "Emneknagger",
   "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
   "filter_modal.added.context_mismatch_title": "Context mismatch!",
   "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
-  "filter_modal.added.expired_title": "Expired filter!",
+  "filter_modal.added.expired_title": "Utløpt filter!",
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
-  "filter_modal.added.review_and_configure_title": "Filter settings",
+  "filter_modal.added.review_and_configure_title": "Filterinnstillinger",
   "filter_modal.added.settings_link": "settings page",
   "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
-  "filter_modal.added.title": "Filter added!",
+  "filter_modal.added.title": "Filter lagt til!",
   "filter_modal.select_filter.context_mismatch": "does not apply to this context",
-  "filter_modal.select_filter.expired": "expired",
-  "filter_modal.select_filter.prompt_new": "New category: {name}",
-  "filter_modal.select_filter.search": "Search or create",
-  "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
-  "filter_modal.select_filter.title": "Filter this post",
-  "filter_modal.title.status": "Filter a post",
+  "filter_modal.select_filter.expired": "utløpt",
+  "filter_modal.select_filter.prompt_new": "Ny kategori: {name}",
+  "filter_modal.select_filter.search": "Søk eller opprett",
+  "filter_modal.select_filter.subtitle": "Bruk en eksisterende kategori eller opprett en ny",
+  "filter_modal.select_filter.title": "Filtrer dette innlegget",
+  "filter_modal.title.status": "Filtrer et innlegg",
   "follow_recommendations.done": "Utført",
   "follow_recommendations.heading": "Følg folk du ønsker å se innlegg fra! Her er noen forslag.",
   "follow_recommendations.lead": "Innlegg fra mennesker du følger vil vises i kronologisk rekkefølge på hjemmefeed. Ikke vær redd for å gjøre feil, du kan slutte å følge folk like enkelt som alt!",
   "follow_request.authorize": "Autorisér",
   "follow_request.reject": "Avvis",
   "follow_requests.unlocked_explanation": "Selv om kontoen din ikke er låst, tror {domain} ansatte at du kanskje vil gjennomgå forespørsler fra disse kontoene manuelt.",
-  "footer.about": "About",
-  "footer.directory": "Profiles directory",
-  "footer.get_app": "Get the app",
-  "footer.invite": "Invite people",
+  "footer.about": "Om",
+  "footer.directory": "Profilkatalog",
+  "footer.get_app": "Last ned appen",
+  "footer.invite": "Invitér folk",
   "footer.keyboard_shortcuts": "Keyboard shortcuts",
   "footer.privacy_policy": "Privacy policy",
-  "footer.source_code": "View source code",
+  "footer.source_code": "Vis kildekode",
   "generic.saved": "Lagret",
   "getting_started.heading": "Kom i gang",
   "hashtag.column_header.tag_mode.all": "og {additional}",
   "hashtag.column_header.tag_mode.any": "eller {additional}",
   "hashtag.column_header.tag_mode.none": "uten {additional}",
   "hashtag.column_settings.select.no_options_message": "Ingen forslag ble funnet",
-  "hashtag.column_settings.select.placeholder": "Skriv inn emneknagger …",
+  "hashtag.column_settings.select.placeholder": "Skriv inn emneknagger…",
   "hashtag.column_settings.tag_mode.all": "Alle disse",
   "hashtag.column_settings.tag_mode.any": "Enhver av disse",
   "hashtag.column_settings.tag_mode.none": "Ingen av disse",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
-  "hashtag.follow": "Follow hashtag",
-  "hashtag.unfollow": "Unfollow hashtag",
+  "hashtag.follow": "Følg emneknagg",
+  "hashtag.unfollow": "Slutt å følge emneknagg",
   "home.column_settings.basic": "Enkelt",
   "home.column_settings.show_reblogs": "Vis fremhevinger",
   "home.column_settings.show_replies": "Vis svar",
   "home.hide_announcements": "Skjul kunngjøring",
   "home.show_announcements": "Vis kunngjøring",
-  "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
-  "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
-  "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
+  "interaction_modal.description.favourite": "Med en konto på Mastodon, kan du \"like\" dette innlegget for å la forfatteren vite at du likte det samt lagre innlegget til senere.",
+  "interaction_modal.description.follow": "Med en konto på Mastodon, kan du følge {name} for å få innleggene deres i hjem-feeden din.",
+  "interaction_modal.description.reblog": "Med en konto på Mastodon, kan du fremheve dette innlegget for å dele det med dine egne følgere.",
   "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
+  "interaction_modal.on_another_server": "På en annen server",
+  "interaction_modal.on_this_server": "På denne serveren",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
   "interaction_modal.title.favourite": "Favourite {name}'s post",
-  "interaction_modal.title.follow": "Follow {name}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.title.follow": "Følg {name}",
+  "interaction_modal.title.reblog": "Fremhev {name} sitt innlegg",
+  "interaction_modal.title.reply": "Svar på {name} sitt innlegg",
   "intervals.full.days": "{number, plural,one {# dag} other {# dager}}",
   "intervals.full.hours": "{number, plural, one {# time} other {# timer}}",
   "intervals.full.minutes": "{number, plural, one {# minutt} other {# minutter}}",
@@ -324,7 +324,7 @@
   "keyboard_shortcuts.my_profile": "å åpne profilen din",
   "keyboard_shortcuts.notifications": "åpne varslingskolonnen",
   "keyboard_shortcuts.open_media": "å åpne media",
-  "keyboard_shortcuts.pinned": "åpne listen over klistrede tuter",
+  "keyboard_shortcuts.pinned": "Åpne listen over festede innlegg",
   "keyboard_shortcuts.profile": "åpne forfatterens profil",
   "keyboard_shortcuts.reply": "for å svare",
   "keyboard_shortcuts.requests": "åpne følgingsforespørselslisten",
@@ -341,8 +341,8 @@
   "lightbox.expand": "Ekspander bildevisning boks",
   "lightbox.next": "Neste",
   "lightbox.previous": "Forrige",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.action": "Vis profil likevel",
+  "limited_account_hint.title": "Denne profilen har blitt skjult av moderatorene til {domain}.",
   "lists.account.add": "Legg til i listen",
   "lists.account.remove": "Fjern fra listen",
   "lists.delete": "Slett listen",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Veksle synlighet",
   "missing_indicator.label": "Ikke funnet",
   "missing_indicator.sublabel": "Denne ressursen ble ikke funnet",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
   "mute_modal.duration": "Varighet",
   "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?",
   "mute_modal.indefinite": "På ubestemt tid",
@@ -369,7 +369,7 @@
   "navigation_bar.blocks": "Blokkerte brukere",
   "navigation_bar.bookmarks": "Bokmerker",
   "navigation_bar.community_timeline": "Lokal tidslinje",
-  "navigation_bar.compose": "Skriv en ny tut",
+  "navigation_bar.compose": "Skriv et nytt innlegg",
   "navigation_bar.direct": "Direktemeldinger",
   "navigation_bar.discover": "Oppdag",
   "navigation_bar.domain_blocks": "Skjulte domener",
@@ -383,13 +383,13 @@
   "navigation_bar.logout": "Logg ut",
   "navigation_bar.mutes": "Dempede brukere",
   "navigation_bar.personal": "Personlig",
-  "navigation_bar.pins": "Festa tuter",
+  "navigation_bar.pins": "Festede innlegg",
   "navigation_bar.preferences": "Innstillinger",
   "navigation_bar.public_timeline": "Felles tidslinje",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "Søk",
   "navigation_bar.security": "Sikkerhet",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} reported {target}",
+  "not_signed_in_indicator.not_signed_in": "Du må logge inn for å få tilgang til denne ressursen.",
+  "notification.admin.report": "{name} rapporterte {target}",
   "notification.admin.sign_up": "{name} signed up",
   "notification.favourite": "{name} likte din status",
   "notification.follow": "{name} fulgte deg",
@@ -399,10 +399,10 @@
   "notification.poll": "En avstemning du har stemt på har avsluttet",
   "notification.reblog": "{name} fremhevde din status",
   "notification.status": "{name} la nettopp ut",
-  "notification.update": "{name} edited a post",
+  "notification.update": "{name} redigerte et innlegg",
   "notifications.clear": "Fjern varsler",
   "notifications.clear_confirmation": "Er du sikker på at du vil fjerne alle dine varsler permanent?",
-  "notifications.column_settings.admin.report": "New reports:",
+  "notifications.column_settings.admin.report": "Nye rapporter:",
   "notifications.column_settings.admin.sign_up": "New sign-ups:",
   "notifications.column_settings.alert": "Skrivebordsvarslinger",
   "notifications.column_settings.favourite": "Likt:",
@@ -417,9 +417,9 @@
   "notifications.column_settings.reblog": "Fremhevet:",
   "notifications.column_settings.show": "Vis i kolonne",
   "notifications.column_settings.sound": "Spill lyd",
-  "notifications.column_settings.status": "Nye tuter:",
-  "notifications.column_settings.unread_notifications.category": "Unread notifications",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
+  "notifications.column_settings.status": "Nye innlegg:",
+  "notifications.column_settings.unread_notifications.category": "Uleste varslinger",
+  "notifications.column_settings.unread_notifications.highlight": "Marker uleste varslinger",
   "notifications.column_settings.update": "Redigeringer:",
   "notifications.filter.all": "Alle",
   "notifications.filter.boosts": "Fremhevinger",
@@ -444,29 +444,29 @@
   "poll.total_votes": "{count, plural, one {# stemme} other {# stemmer}}",
   "poll.vote": "Stem",
   "poll.voted": "Du stemte på dette svaret",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
+  "poll.votes": "{votes, plural, one {# stemme} other {# stemmer}}",
   "poll_button.add_poll": "Legg til en avstemning",
   "poll_button.remove_poll": "Fjern avstemningen",
   "privacy.change": "Justér synlighet",
   "privacy.direct.long": "Post kun til nevnte brukere",
-  "privacy.direct.short": "Direct",
+  "privacy.direct.short": "Kun nevnte personer",
   "privacy.private.long": "Post kun til følgere",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
+  "privacy.private.short": "Kun følgere",
+  "privacy.public.long": "Synlig for alle",
   "privacy.public.short": "Offentlig",
   "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
   "privacy.unlisted.short": "Uoppført",
-  "privacy_policy.last_updated": "Last updated {date}",
+  "privacy_policy.last_updated": "Sist oppdatert {date}",
   "privacy_policy.title": "Privacy Policy",
   "refresh": "Oppfrisk",
   "regeneration_indicator.label": "Laster…",
   "regeneration_indicator.sublabel": "Dine startside forberedes!",
   "relative_time.days": "{number}d",
-  "relative_time.full.days": "{number, plural, one {# day} other {# days}} ago",
-  "relative_time.full.hours": "{number, plural, one {# hour} other {# hours}} ago",
-  "relative_time.full.just_now": "just now",
-  "relative_time.full.minutes": "{number, plural, one {# minute} other {# minutes}} ago",
-  "relative_time.full.seconds": "{number, plural, one {# second} other {# seconds}} ago",
+  "relative_time.full.days": "{number, plural, one {# dag} other {# dager}} siden",
+  "relative_time.full.hours": "{number, plural, one {# time} other {# timer}} siden",
+  "relative_time.full.just_now": "nettopp",
+  "relative_time.full.minutes": "for {number, plural, one {# minutt} other {# minutter}} siden",
+  "relative_time.full.seconds": "for {number, plural, one {# sekund} other {# sekunder}} siden",
   "relative_time.hours": "{number}t",
   "relative_time.just_now": "nå",
   "relative_time.minutes": "{number}m",
@@ -474,46 +474,46 @@
   "relative_time.today": "i dag",
   "reply_indicator.cancel": "Avbryt",
   "report.block": "Blokker",
-  "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.block_explanation": "Du kommer ikke til å se innleggene deres. De vil ikke kunne se innleggene dine eller følge deg. De vil kunne se at de er blokkert.",
+  "report.categories.other": "Annet",
   "report.categories.spam": "Søppelpost",
-  "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
+  "report.categories.violation": "Innholdet bryter en eller flere serverregler",
+  "report.category.subtitle": "Velg det som passer best",
   "report.category.title": "Tell us what's going on with this {type}",
   "report.category.title_account": "profil",
   "report.category.title_status": "innlegg",
   "report.close": "Utført",
-  "report.comment.title": "Is there anything else you think we should know?",
+  "report.comment.title": "Er det noe annet du mener vi burde vite?",
   "report.forward": "Videresend til {target}",
   "report.forward_hint": "Denne kontoen er fra en annen tjener. Vil du sende en anonymisert kopi av rapporten dit også?",
   "report.mute": "Demp",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
+  "report.mute_explanation": "Du kommer ikke til å se deres innlegg. De kan fortsatt følge deg og se dine innlegg, og kan ikke se at de er dempet.",
   "report.next": "Neste",
   "report.placeholder": "Tilleggskommentarer",
   "report.reasons.dislike": "Jeg liker det ikke",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
+  "report.reasons.dislike_description": "Det er ikke noe du har lyst til å se",
+  "report.reasons.other": "Det er noe annet",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "Det er spam",
   "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
+  "report.reasons.violation": "Det bryter serverregler",
+  "report.reasons.violation_description": "Du er klar over at det bryter spesifikke regler",
+  "report.rules.subtitle": "Velg alle som passer",
+  "report.rules.title": "Hvilke regler brytes?",
+  "report.statuses.subtitle": "Velg alle som passer",
   "report.statuses.title": "Are there any posts that back up this report?",
   "report.submit": "Send inn",
   "report.target": "Rapporterer",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
+  "report.thanks.take_action": "Her er alternativene dine for å kontrollere hva du ser på 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": "Ønsker du ikke å se dette?",
   "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_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached",
-  "report_notification.categories.other": "Other",
-  "report_notification.categories.spam": "Spam",
-  "report_notification.categories.violation": "Rule violation",
+  "report.unfollow": "Slutt å følge @{name}",
+  "report.unfollow_explanation": "Du følger denne kontoen. For ikke å se innleggene deres i din hjem-feed lenger, slutt å følge dem.",
+  "report_notification.attached_statuses": "{count, plural,one {{count} innlegg} other {{count} innlegg}} vedlagt",
+  "report_notification.categories.other": "Annet",
+  "report_notification.categories.spam": "Søppelpost",
+  "report_notification.categories.violation": "Regelbrudd",
   "report_notification.open": "Open report",
   "search.placeholder": "Søk",
   "search.search_or_paste": "Search or paste URL",
@@ -524,22 +524,22 @@
   "search_popout.tips.text": "Enkel tekst returnerer matchende visningsnavn, brukernavn og emneknagger",
   "search_popout.tips.user": "bruker",
   "search_results.accounts": "Folk",
-  "search_results.all": "All",
+  "search_results.all": "Alle",
   "search_results.hashtags": "Emneknagger",
-  "search_results.nothing_found": "Could not find anything for these search terms",
-  "search_results.statuses": "Tuter",
-  "search_results.statuses_fts_disabled": "Å søke i tuter etter innhold er ikke skrudd på i denne Mastodon-tjeneren.",
-  "search_results.title": "Search for {q}",
+  "search_results.nothing_found": "Fant ikke noe for disse søkeordene",
+  "search_results.statuses": "Innlegg",
+  "search_results.statuses_fts_disabled": "Å søke i innlegg etter innhold er ikke skrudd på i denne Mastodon-tjeneren.",
+  "search_results.title": "Søk etter {q}",
   "search_results.total": "{count, number} {count, plural, one {resultat} other {resultater}}",
-  "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
-  "server_banner.active_users": "active users",
-  "server_banner.administered_by": "Administered by:",
-  "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
-  "server_banner.learn_more": "Learn more",
-  "server_banner.server_stats": "Server stats:",
-  "sign_in_banner.create_account": "Create account",
-  "sign_in_banner.sign_in": "Sign in",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts, or interact from your account on a different server.",
+  "server_banner.about_active_users": "Personer som har brukt denne serveren i løpet av de siste 30 dagene (aktive brukere månedlig)",
+  "server_banner.active_users": "aktive brukere",
+  "server_banner.administered_by": "Administrert av:",
+  "server_banner.introduction": "{domain} er en del av det desentraliserte sosiale nettverket drevet av {mastodon}.",
+  "server_banner.learn_more": "Finn ut mer",
+  "server_banner.server_stats": "Serverstatistikk:",
+  "sign_in_banner.create_account": "Opprett konto",
+  "sign_in_banner.sign_in": "Logg inn",
+  "sign_in_banner.text": "Logg inn for å følge profiler eller hashtags, like, dele og svare på innlegg eller interagere fra din konto på en annen server.",
   "status.admin_account": "Åpne moderatorgrensesnittet for @{name}",
   "status.admin_status": "Åpne denne statusen i moderatorgrensesnittet",
   "status.block": "Blokkér @{name}",
@@ -550,16 +550,16 @@
   "status.delete": "Slett",
   "status.detailed_status": "Detaljert samtalevisning",
   "status.direct": "Send direktemelding til @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.edit": "Redigér",
+  "status.edited": "Redigert {date}",
+  "status.edited_x_times": "Redigert {count, plural,one {{count} gang} other {{count} ganger}}",
   "status.embed": "Bygge inn",
   "status.favourite": "Lik",
-  "status.filter": "Filter this post",
+  "status.filter": "Filtrer dette innlegget",
   "status.filtered": "Filtrert",
-  "status.hide": "Hide toot",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
+  "status.hide": "Skjul innlegg",
+  "status.history.created": "{name} opprettet {date}",
+  "status.history.edited": "{name} redigerte {date}",
   "status.load_more": "Last mer",
   "status.media_hidden": "Media skjult",
   "status.mention": "Nevn @{name}",
@@ -568,15 +568,15 @@
   "status.mute_conversation": "Demp samtale",
   "status.open": "Utvid denne statusen",
   "status.pin": "Fest på profilen",
-  "status.pinned": "Festet tut",
+  "status.pinned": "Festet innlegg",
   "status.read_more": "Les mer",
   "status.reblog": "Fremhev",
   "status.reblog_private": "Fremhev til det opprinnelige publikummet",
   "status.reblogged_by": "Fremhevd av {name}",
-  "status.reblogs.empty": "Ingen har fremhevet denne tuten enda. Når noen gjør det, vil de dukke opp her.",
+  "status.reblogs.empty": "Ingen har fremhevet dette innlegget enda. Når noen gjør det, vil de dukke opp her.",
   "status.redraft": "Slett og drøft på nytt",
   "status.remove_bookmark": "Fjern bokmerke",
-  "status.replied_to": "Replied to {name}",
+  "status.replied_to": "Svarte {name}",
   "status.reply": "Svar",
   "status.replyAll": "Svar til samtale",
   "status.report": "Rapporter @{name}",
@@ -610,7 +610,7 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} fra andre servere vises ikke.",
   "timeline_hint.resources.followers": "Følgere",
   "timeline_hint.resources.follows": "Følger",
-  "timeline_hint.resources.statuses": "Eldre tuter",
+  "timeline_hint.resources.statuses": "Eldre innlegg",
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
   "trends.trending_now": "Trender nå",
   "ui.beforeunload": "Din kladd vil bli forkastet om du forlater Mastodon.",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index b00db0d32..a34bef1ea 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -1,7 +1,7 @@
 {
   "about.blocks": "Servidors moderats",
   "about.contact": "Contacte :",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
+  "about.disclaimer": "Mastodon es gratuit, un logicial libre e una marca de Mastodon gGmbH.",
   "about.domain_blocks.comment": "Rason",
   "about.domain_blocks.domain": "Domeni",
   "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
@@ -30,7 +30,7 @@
   "account.endorse": "Mostrar pel perfil",
   "account.featured_tags.last_status_at": "Darrièra publicacion lo {date}",
   "account.featured_tags.last_status_never": "Cap de publicacion",
-  "account.featured_tags.title": "{name}'s featured hashtags",
+  "account.featured_tags.title": "Etiquetas en avant de {name}",
   "account.follow": "Sègre",
   "account.followers": "Seguidors",
   "account.followers.empty": "Degun sèc pas aqueste utilizaire pel moment.",
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Abonaments} other {{counter} Abonaments}}",
   "account.follows.empty": "Aqueste utilizaire sèc pas degun pel moment.",
   "account.follows_you": "Vos sèc",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Anar al perfil",
   "account.hide_reblogs": "Rescondre los partatges de @{name}",
   "account.joined_short": "Venguèt lo",
   "account.languages": "Modificar las lengas seguidas",
@@ -95,7 +95,7 @@
   "bundle_modal_error.retry": "Tornar ensajar",
   "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
   "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
+  "closed_registrations_modal.find_another_server": "Trobar un autre servidor",
   "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
   "closed_registrations_modal.title": "S’inscriure a Mastodon",
   "column.about": "A prepaus",
@@ -151,8 +151,8 @@
   "confirmations.block.block_and_report": "Blocar e senhalar",
   "confirmations.block.confirm": "Blocar",
   "confirmations.block.message": "Volètz vertadièrament blocar {name} ?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "Retirar la demandar",
+  "confirmations.cancel_follow_request.message": "Volètz vertadièrament retirar la demanda de seguiment de {name} ?",
   "confirmations.delete.confirm": "Escafar",
   "confirmations.delete.message": "Volètz vertadièrament escafar l’estatut ?",
   "confirmations.delete_list.confirm": "Suprimir",
@@ -182,8 +182,8 @@
   "directory.local": "Solament de {domain}",
   "directory.new_arrivals": "Nòus-venguts",
   "directory.recently_active": "Actius fa res",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Paramètres de compte",
+  "disabled_account_banner.text": "Vòstre compte {disabledAccount} es actualament desactivat.",
   "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
   "dismissable_banner.dismiss": "Ignorar",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
@@ -215,7 +215,7 @@
   "empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
   "empty_column.direct": "Avètz pas encara cap de messatges. Quand ne mandatz un o que ne recebètz un, serà mostrat aquí.",
   "empty_column.domain_blocks": "I a pas encara cap de domeni amagat.",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "I a pas res en tendéncia pel moment. Tornatz mai tard !",
   "empty_column.favourited_statuses": "Avètz pas encara cap de tut favorit. Quand n’auretz un, apareisserà aquí.",
   "empty_column.favourites": "Degun a pas encara mes en favorit aqueste tut. Quand qualqu’un o farà, apareisserà aquí.",
   "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.",
@@ -243,16 +243,16 @@
   "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
   "filter_modal.added.context_mismatch_title": "Context mismatch!",
   "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
-  "filter_modal.added.expired_title": "Expired filter!",
+  "filter_modal.added.expired_title": "Filtre expirat !",
   "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Paramètres del filtre",
   "filter_modal.added.settings_link": "page de parametratge",
   "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
   "filter_modal.added.title": "Filtre apondut !",
-  "filter_modal.select_filter.context_mismatch": "does not apply to this context",
-  "filter_modal.select_filter.expired": "expired",
-  "filter_modal.select_filter.prompt_new": "New category: {name}",
-  "filter_modal.select_filter.search": "Search or create",
+  "filter_modal.select_filter.context_mismatch": "s’aplica pas a aqueste contèxte",
+  "filter_modal.select_filter.expired": "expirat",
+  "filter_modal.select_filter.prompt_new": "Categoria novèla : {name}",
+  "filter_modal.select_filter.search": "Cercar o crear",
   "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
   "filter_modal.select_filter.title": "Filtrar aquesta publicacion",
   "filter_modal.title.status": "Filtrar una publicacion",
@@ -295,7 +295,7 @@
   "interaction_modal.on_this_server": "Sus aqueste servidor",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
   "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
+  "interaction_modal.title.favourite": "Metre en favorit la publicacion de {name}",
   "interaction_modal.title.follow": "Sègre {name}",
   "interaction_modal.title.reblog": "Partejar la publicacion de {name}",
   "interaction_modal.title.reply": "Respondre a la publicacion de {name}",
@@ -308,7 +308,7 @@
   "keyboard_shortcuts.column": "centrar un estatut a una colomna",
   "keyboard_shortcuts.compose": "anar al camp tèxte",
   "keyboard_shortcuts.description": "descripcion",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "dobrir la colomna de messatges dirèctes",
   "keyboard_shortcuts.down": "far davalar dins la lista",
   "keyboard_shortcuts.enter": "dobrir los estatuts",
   "keyboard_shortcuts.favourite": "apondre als favorits",
@@ -341,8 +341,8 @@
   "lightbox.expand": "Espandir la fenèstra de visualizacion d’imatge",
   "lightbox.next": "Seguent",
   "lightbox.previous": "Precedent",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.action": "Afichar lo perfil de tota manièra",
+  "limited_account_hint.title": "Aqueste perfil foguèt rescondut per la moderacion de {domain}.",
   "lists.account.add": "Ajustar a la lista",
   "lists.account.remove": "Levar de la lista",
   "lists.delete": "Suprimir la lista",
@@ -388,8 +388,8 @@
   "navigation_bar.public_timeline": "Flux public global",
   "navigation_bar.search": "Recercar",
   "navigation_bar.security": "Seguretat",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} reported {target}",
+  "not_signed_in_indicator.not_signed_in": "Devètz vos connectar per accedir a aquesta ressorsa.",
+  "notification.admin.report": "{name} senhalèt {target}",
   "notification.admin.sign_up": "{name} se marquèt",
   "notification.favourite": "{name} a ajustat a sos favorits",
   "notification.follow": "{name} vos sèc",
@@ -402,8 +402,8 @@
   "notification.update": "{name} modiquè sa publicacion",
   "notifications.clear": "Escafar",
   "notifications.clear_confirmation": "Volètz vertadièrament escafar totas vòstras las notificacions ?",
-  "notifications.column_settings.admin.report": "New reports:",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.report": "Senhalaments novèls :",
+  "notifications.column_settings.admin.sign_up": "Nòus inscrits :",
   "notifications.column_settings.alert": "Notificacions localas",
   "notifications.column_settings.favourite": "Favorits :",
   "notifications.column_settings.filter_bar.advanced": "Mostrar totas las categorias",
@@ -419,7 +419,7 @@
   "notifications.column_settings.sound": "Emetre un son",
   "notifications.column_settings.status": "Tuts novèls :",
   "notifications.column_settings.unread_notifications.category": "Notificacions pas legidas",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
+  "notifications.column_settings.unread_notifications.highlight": "Forçar sus las notificacions pas legidas",
   "notifications.column_settings.update": "Modificacions :",
   "notifications.filter.all": "Totas",
   "notifications.filter.boosts": "Partages",
@@ -454,7 +454,7 @@
   "privacy.private.short": "Sonque pels seguidors",
   "privacy.public.long": "Visiblas per totes",
   "privacy.public.short": "Public",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
+  "privacy.unlisted.long": "Visible per totes mas desactivat per las foncionalitats de descobèrta",
   "privacy.unlisted.short": "Pas-listat",
   "privacy_policy.last_updated": "Darrièra actualizacion {date}",
   "privacy_policy.title": "Politica de confidencialitat",
@@ -478,7 +478,7 @@
   "report.categories.other": "Autre",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
+  "report.category.subtitle": "Causissètz çò que correspond mai",
   "report.category.title": "Tell us what's going on with this {type}",
   "report.category.title_account": "perfil",
   "report.category.title_status": "publicacion",
@@ -491,7 +491,7 @@
   "report.next": "Seguent",
   "report.placeholder": "Comentaris addicionals",
   "report.reasons.dislike": "M’agrada pas",
-  "report.reasons.dislike_description": "It is not something you want to see",
+  "report.reasons.dislike_description": "Es pas quicòm que volriatz veire",
   "report.reasons.other": "Es quicòm mai",
   "report.reasons.other_description": "The issue does not fit into other categories",
   "report.reasons.spam": "It's spam",
@@ -514,7 +514,7 @@
   "report_notification.categories.other": "Autre",
   "report_notification.categories.spam": "Spam",
   "report_notification.categories.violation": "Rule violation",
-  "report_notification.open": "Open report",
+  "report_notification.open": "Dobrir lo senhalament",
   "search.placeholder": "Recercar",
   "search.search_or_paste": "Recercar o picar una URL",
   "search_popout.search_format": "Format recèrca avançada",
@@ -526,7 +526,7 @@
   "search_results.accounts": "Gents",
   "search_results.all": "Tot",
   "search_results.hashtags": "Etiquetas",
-  "search_results.nothing_found": "Could not find anything for these search terms",
+  "search_results.nothing_found": "Cap de resultat per aquestes tèrmes de recèrca",
   "search_results.statuses": "Tuts",
   "search_results.statuses_fts_disabled": "La recèrca de tuts per lor contengut es pas activada sus aqueste servidor Mastodon.",
   "search_results.title": "Recèrca : {q}",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index ef04d8b63..c9a0dc852 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} obserwowany} few {{counter} obserwowanych} many {{counter} obserwowanych} other {{counter} obserwowanych}}",
   "account.follows.empty": "Ten użytkownik nie obserwuje jeszcze nikogo.",
   "account.follows_you": "Obserwuje Cię",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Przejdź do profilu",
   "account.hide_reblogs": "Ukryj podbicia od @{name}",
   "account.joined_short": "Dołączył(a)",
   "account.languages": "Zmień subskrybowane języki",
@@ -186,8 +186,8 @@
   "directory.local": "Tylko z {domain}",
   "directory.new_arrivals": "Nowości",
   "directory.recently_active": "Ostatnio aktywne",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Ustawienia konta",
+  "disabled_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone.",
   "dismissable_banner.community_timeline": "To są najnowsze wpisy publiczne od osób, które mają założone konta na {domain}.",
   "dismissable_banner.dismiss": "Schowaj",
   "dismissable_banner.explore_links": "Te wiadomości obecnie są komentowane przez osoby z tego serwera i pozostałych w zdecentralizowanej sieci.",
@@ -365,7 +365,7 @@
   "media_gallery.toggle_visible": "Przełącz widoczność",
   "missing_indicator.label": "Nie znaleziono",
   "missing_indicator.sublabel": "Nie można odnaleźć tego zasobu",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone, ponieważ zostało przeniesione na {movedToAccount}.",
   "mute_modal.duration": "Czas",
   "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?",
   "mute_modal.indefinite": "Nieokreślony",
@@ -581,7 +581,7 @@
   "status.reblogs.empty": "Nikt nie podbił jeszcze tego wpisu. Gdy ktoś to zrobi, pojawi się tutaj.",
   "status.redraft": "Usuń i przeredaguj",
   "status.remove_bookmark": "Usuń zakładkę",
-  "status.replied_to": "Odpowiedziałeś/aś {name}",
+  "status.replied_to": "Odpowiedź do wpisu użytkownika {name}",
   "status.reply": "Odpowiedz",
   "status.replyAll": "Odpowiedz na wątek",
   "status.report": "Zgłoś @{name}",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index b8164fca7..65ca4f511 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -4,7 +4,7 @@
   "about.disclaimer": "Mastodon é um software de código aberto e livre, e uma marca registrada de Mastodon gGmbH.",
   "about.domain_blocks.comment": "Motivo",
   "about.domain_blocks.domain": "Domínio",
-  "about.domain_blocks.preamble": "Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outra instância no fediverso. Estas são as exceções desta instância em específico.",
+  "about.domain_blocks.preamble": "O Mastodon geralmente permite que você veja o conteúdo e interaja com usuários de qualquer outro servidor no fediverso. Estas são as exceções deste servidor em específico.",
   "about.domain_blocks.severity": "Gravidade",
   "about.domain_blocks.silenced.explanation": "Você geralmente não verá perfis e conteúdo deste servidor, a menos que você o procure explicitamente ou opte por seguir.",
   "about.domain_blocks.silenced.title": "Limitado",
@@ -28,9 +28,9 @@
   "account.edit_profile": "Editar perfil",
   "account.enable_notifications": "Notificar novos toots de @{name}",
   "account.endorse": "Recomendar",
-  "account.featured_tags.last_status_at": "Último post em {date}",
-  "account.featured_tags.last_status_never": "Não há postagens",
-  "account.featured_tags.title": "Marcadores em destaque de {name}",
+  "account.featured_tags.last_status_at": "Última publicação em {date}",
+  "account.featured_tags.last_status_never": "Sem publicações",
+  "account.featured_tags.title": "Hashtags em destaque de {name}",
   "account.follow": "Seguir",
   "account.followers": "Seguidores",
   "account.followers.empty": "Nada aqui.",
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {segue {counter}} other {segue {counter}}}",
   "account.follows.empty": "Nada aqui.",
   "account.follows_you": "te segue",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ir para o perfil",
   "account.hide_reblogs": "Ocultar boosts de @{name}",
   "account.joined_short": "Entrou",
   "account.languages": "Mudar idiomas inscritos",
@@ -65,7 +65,7 @@
   "account.unfollow": "Deixar de seguir",
   "account.unmute": "Dessilenciar @{name}",
   "account.unmute_notifications": "Mostrar notificações de @{name}",
-  "account.unmute_short": "Reativar",
+  "account.unmute_short": "Dessilenciar",
   "account_note.placeholder": "Nota pessoal sobre este perfil aqui",
   "admin.dashboard.daily_retention": "Taxa de retenção de usuários por dia, após a inscrição",
   "admin.dashboard.monthly_retention": "Taxa de retenção de usuários por mês, após a inscrição",
@@ -82,9 +82,9 @@
   "autosuggest_hashtag.per_week": "{count} por semana",
   "boost_modal.combo": "Pressione {combo} para pular isso na próxima vez",
   "bundle_column_error.copy_stacktrace": "Copiar erro de informe",
-  "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um bug em nosso código, ou um problema de compatibilidade do navegador.",
+  "bundle_column_error.error.body": "A página solicitada não pode ser renderizada. Pode ser devido a um erro em nosso código ou um problema de compatibilidade do navegador.",
   "bundle_column_error.error.title": "Ah, não!",
-  "bundle_column_error.network.body": "Houve um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.",
+  "bundle_column_error.network.body": "Ocorreu um erro ao tentar carregar esta página. Isso pode ser devido a um problema temporário com sua conexão de internet ou deste servidor.",
   "bundle_column_error.network.title": "Erro de rede",
   "bundle_column_error.retry": "Tente novamente",
   "bundle_column_error.return": "Voltar à página inicial",
@@ -93,10 +93,10 @@
   "bundle_modal_error.close": "Fechar",
   "bundle_modal_error.message": "Erro ao carregar este componente.",
   "bundle_modal_error.retry": "Tente novamente",
-  "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outra instância e ainda pode interagir com esta.",
+  "closed_registrations.other_server_instructions": "Como o Mastodon é descentralizado, você pode criar uma conta em outro servidor e ainda pode interagir com este.",
   "closed_registrations_modal.description": "Não é possível criar uma conta em {domain} no momento, mas atente que você não precisa de uma conta especificamente em {domain} para usar o Mastodon.",
-  "closed_registrations_modal.find_another_server": "Encontrar outra instância",
-  "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você crie sua conta, você poderá seguir e interagir com qualquer pessoa nesta instância. Você pode até mesmo criar sua própria instância!",
+  "closed_registrations_modal.find_another_server": "Encontrar outro servidor",
+  "closed_registrations_modal.preamble": "O Mastodon é descentralizado, não importa onde você criou a sua conta, será possível seguir e interagir com qualquer pessoa neste servidor. Você pode até mesmo criar o seu próprio servidor!",
   "closed_registrations_modal.title": "Inscrevendo-se no Mastodon",
   "column.about": "Sobre",
   "column.blocks": "Usuários bloqueados",
@@ -127,7 +127,7 @@
   "compose.language.change": "Alterar idioma",
   "compose.language.search": "Pesquisar idiomas...",
   "compose_form.direct_message_warning_learn_more": "Saiba mais",
-  "compose_form.encryption_warning": "Postagens no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.",
+  "compose_form.encryption_warning": "As publicações no Mastodon não são criptografadas de ponta-a-ponta. Não compartilhe nenhuma informação sensível no Mastodon.",
   "compose_form.hashtag_warning": "Este toot não aparecerá em nenhuma hashtag porque está como não-listado. Somente toots públicos podem ser pesquisados por hashtag.",
   "compose_form.lock_disclaimer": "Seu perfil não está {locked}. Qualquer um pode te seguir e ver os toots privados.",
   "compose_form.lock_disclaimer.lock": "trancado",
@@ -158,7 +158,7 @@
   "confirmations.delete_list.confirm": "Excluir",
   "confirmations.delete_list.message": "Você tem certeza de que deseja excluir esta lista?",
   "confirmations.discard_edit_media.confirm": "Descartar",
-  "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia; descartar assim mesmo?",
+  "confirmations.discard_edit_media.message": "Há mudanças não salvas na descrição ou pré-visualização da mídia. Descartar assim mesmo?",
   "confirmations.domain_block.confirm": "Bloquear instância",
   "confirmations.domain_block.message": "Você tem certeza de que deseja bloquear tudo de {domain}? Você não verá mais o conteúdo desta instância em nenhuma linha do tempo pública ou nas suas notificações. Seus seguidores desta instância serão removidos.",
   "confirmations.logout.confirm": "Sair",
@@ -182,14 +182,14 @@
   "directory.local": "Somente de {domain}",
   "directory.new_arrivals": "Acabaram de chegar",
   "directory.recently_active": "Ativos recentemente",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Configurações da conta",
+  "disabled_account_banner.text": "Sua conta {disabledAccount} está desativada no momento.",
   "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes das pessoas cujas contas são hospedadas por {domain}.",
   "dismissable_banner.dismiss": "Dispensar",
-  "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas nesta e em outras instâncias da rede descentralizada no momento.",
-  "dismissable_banner.explore_statuses": "Estas publicações desta e de outras instâncias na rede descentralizada estão ganhando popularidade na instância agora.",
-  "dismissable_banner.explore_tags": "Estes marcadores estão ganhando popularidade entre pessoas desta e de outras instâncias da rede descentralizada no momento.",
-  "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas desta e de outras instâncias da rede descentralizada que esta instância conhece.",
+  "dismissable_banner.explore_links": "Estas novas histórias estão sendo contadas por pessoas neste e em outros servidores da rede descentralizada no momento.",
+  "dismissable_banner.explore_statuses": "Estas publicações deste e de outros servidores na rede descentralizada estão ganhando popularidade neste servidor agora.",
+  "dismissable_banner.explore_tags": "Estas hashtags estão ganhando popularidade no momento entre as pessoas deste e de outros servidores da rede descentralizada.",
+  "dismissable_banner.public_timeline": "Estas são as publicações mais recentes de pessoas deste e de outros servidores da rede descentralizada que este servidor conhece.",
   "embed.instructions": "Incorpore este toot no seu site ao copiar o código abaixo.",
   "embed.preview": "Aqui está como vai ficar:",
   "emoji_button.activity": "Atividade",
@@ -238,7 +238,7 @@
   "explore.suggested_follows": "Para você",
   "explore.title": "Explorar",
   "explore.trending_links": "Notícias",
-  "explore.trending_statuses": "Posts",
+  "explore.trending_statuses": "Publicações",
   "explore.trending_tags": "Hashtags",
   "filter_modal.added.context_mismatch_explanation": "Esta categoria de filtro não se aplica ao contexto no qual você acessou esta publicação. Se quiser que a publicação seja filtrada nesse contexto também, você terá que editar o filtro.",
   "filter_modal.added.context_mismatch_title": "Incompatibilidade de contexto!",
@@ -255,7 +255,7 @@
   "filter_modal.select_filter.search": "Buscar ou criar",
   "filter_modal.select_filter.subtitle": "Use uma categoria existente ou crie uma nova",
   "filter_modal.select_filter.title": "Filtrar esta publicação",
-  "filter_modal.title.status": "Filtrar uma postagem",
+  "filter_modal.title.status": "Filtrar uma publicação",
   "follow_recommendations.done": "Salvar",
   "follow_recommendations.heading": "Siga pessoas que você gostaria de acompanhar! Aqui estão algumas sugestões.",
   "follow_recommendations.lead": "Toots de pessoas que você segue aparecerão em ordem cronológica na página inicial. Não tenha medo de cometer erros, você pode facilmente deixar de seguir a qualquer momento!",
@@ -280,24 +280,24 @@
   "hashtag.column_settings.tag_mode.any": "Qualquer uma",
   "hashtag.column_settings.tag_mode.none": "Nenhuma",
   "hashtag.column_settings.tag_toggle": "Adicionar mais hashtags aqui",
-  "hashtag.follow": "Seguir “hashtag”",
-  "hashtag.unfollow": "Parar de seguir “hashtag”",
+  "hashtag.follow": "Seguir hashtag",
+  "hashtag.unfollow": "Parar de seguir hashtag",
   "home.column_settings.basic": "Básico",
   "home.column_settings.show_reblogs": "Mostrar boosts",
   "home.column_settings.show_replies": "Mostrar respostas",
   "home.hide_announcements": "Ocultar comunicados",
   "home.show_announcements": "Mostrar comunicados",
-  "interaction_modal.description.favourite": "Com uma conta no Mastodon, você pode favoritar este post para que o autor saiba que você gostou e salvá-lo para mais ler mais tarde.",
-  "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações no seu feed inicial.",
-  "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar este post para compartilhá-lo com seus próprios seguidores.",
-  "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder este post.",
+  "interaction_modal.description.favourite": "Com uma conta no Mastodon, você pode favoritar esta publicação para que o autor saiba que você gostou e salvá-lo para mais ler mais tarde.",
+  "interaction_modal.description.follow": "Com uma conta no Mastodon, você pode seguir {name} para receber publicações na sua página inicial.",
+  "interaction_modal.description.reblog": "Com uma conta no Mastodon, você pode impulsionar esta publicação para compartilhá-lo com seus próprios seguidores.",
+  "interaction_modal.description.reply": "Com uma conta no Mastodon, você pode responder a esta publicação.",
   "interaction_modal.on_another_server": "Em um servidor diferente",
   "interaction_modal.on_this_server": "Neste servidor",
   "interaction_modal.other_server_instructions": "Simplesmente copie e cole este URL na barra de pesquisa do seu aplicativo favorito ou na interface web onde você está autenticado.",
-  "interaction_modal.preamble": "Sendo o Mastodon descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.",
-  "interaction_modal.title.favourite": "Favoritar post de {name}",
+  "interaction_modal.preamble": "Como o Mastodon é descentralizado, você pode usar sua conta existente em outro servidor Mastodon ou plataforma compatível se você não tiver uma conta neste servidor.",
+  "interaction_modal.title.favourite": "Favoritar publicação de {name}",
   "interaction_modal.title.follow": "Seguir {name}",
-  "interaction_modal.title.reblog": "Impulsionar post de {name}",
+  "interaction_modal.title.reblog": "Impulsionar publicação de {name}",
   "interaction_modal.title.reply": "Responder à publicação de {name}",
   "intervals.full.days": "{number, plural, one {# dia} other {# dias}}",
   "intervals.full.hours": "{number, plural, one {# hora} other {# horas}}",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}",
   "missing_indicator.label": "Não encontrado",
   "missing_indicator.sublabel": "Recurso não encontrado",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.",
   "mute_modal.duration": "Duração",
   "mute_modal.hide_notifications": "Ocultar notificações deste usuário?",
   "mute_modal.indefinite": "Indefinido",
@@ -456,8 +456,8 @@
   "privacy.public.short": "Público",
   "privacy.unlisted.long": "Visível para todos, mas desativou os recursos de descoberta",
   "privacy.unlisted.short": "Não-listado",
-  "privacy_policy.last_updated": "Última atualização {date}",
-  "privacy_policy.title": "Política de Privacidade",
+  "privacy_policy.last_updated": "Atualizado {date}",
+  "privacy_policy.title": "Política de privacidade",
   "refresh": "Atualizar",
   "regeneration_indicator.label": "Carregando…",
   "regeneration_indicator.sublabel": "Sua página inicial está sendo preparada!",
@@ -474,7 +474,7 @@
   "relative_time.today": "hoje",
   "reply_indicator.cancel": "Cancelar",
   "report.block": "Bloquear",
-  "report.block_explanation": "Você não verá suas postagens. Eles não poderão ver suas postagens ou segui-lo. Eles serão capazes de perceber que estão bloqueados.",
+  "report.block_explanation": "Você não verá suas publicações. Ele não poderá ver suas publicações ou segui-lo, e será capaz de perceber que está bloqueado.",
   "report.categories.other": "Outro",
   "report.categories.spam": "Spam",
   "report.categories.violation": "O conteúdo viola uma ou mais regras do servidor",
@@ -487,7 +487,7 @@
   "report.forward": "Encaminhar para {target}",
   "report.forward_hint": "A conta está em outra instância. Enviar uma cópia anônima da denúncia para lá?",
   "report.mute": "Silenciar",
-  "report.mute_explanation": "Você não verá suas postagens. Eles ainda podem seguir você e ver suas postagens e não saberão que estão silenciados.",
+  "report.mute_explanation": "Você não verá suas publicações. Ele ainda pode seguir você e ver suas publicações, e não saberá que está silenciado.",
   "report.next": "Próximo",
   "report.placeholder": "Comentários adicionais aqui",
   "report.reasons.dislike": "Eu não gosto disso",
@@ -499,7 +499,7 @@
   "report.reasons.violation": "Viola as regras do servidor",
   "report.reasons.violation_description": "Você está ciente de que isso quebra regras específicas",
   "report.rules.subtitle": "Selecione tudo que se aplica",
-  "report.rules.title": "Que regras estão sendo violadas?",
+  "report.rules.title": "Quais regras estão sendo violadas?",
   "report.statuses.subtitle": "Selecione tudo que se aplica",
   "report.statuses.title": "Existem postagens que respaldam esse relatório?",
   "report.submit": "Enviar",
@@ -507,9 +507,9 @@
   "report.thanks.take_action": "Aqui estão suas opções para controlar o que você vê no Mastodon:",
   "report.thanks.take_action_actionable": "Enquanto revisamos isso, você pode tomar medidas contra @{name}:",
   "report.thanks.title": "Não quer ver isto?",
-  "report.thanks.title_actionable": "Obrigado por reportar. Vamos analisar.",
+  "report.thanks.title_actionable": "Obrigado por denunciar, nós vamos analisar.",
   "report.unfollow": "Deixar de seguir @{name}",
-  "report.unfollow_explanation": "Você está seguindo esta conta. Para não mais ver os posts dele em sua página inicial, deixe de segui-lo.",
+  "report.unfollow_explanation": "Você está seguindo esta conta. Para não ver as publicações dela em sua página inicial, deixe de segui-la.",
   "report_notification.attached_statuses": "{count, plural, one {{count} publicação} other {{count} publicações}} anexada(s)",
   "report_notification.categories.other": "Outro",
   "report_notification.categories.spam": "Spam",
@@ -531,15 +531,15 @@
   "search_results.statuses_fts_disabled": "Pesquisar toots por seu conteúdo não está ativado nesta instância Mastodon.",
   "search_results.title": "Buscar {q}",
   "search_results.total": "{count, number} {count, plural, one {resultado} other {resultados}}",
-  "server_banner.about_active_users": "Pessoas usando esta instância durante os últimos 30 dias (Usuários Ativos Mensalmente)",
+  "server_banner.about_active_users": "Pessoas usando este servidor durante os últimos 30 dias (Usuários ativos mensalmente)",
   "server_banner.active_users": "usuários ativos",
   "server_banner.administered_by": "Administrado por:",
   "server_banner.introduction": "{domain} faz parte da rede social descentralizada desenvolvida por {mastodon}.",
   "server_banner.learn_more": "Saiba mais",
-  "server_banner.server_stats": "Estatísticas da instância:",
+  "server_banner.server_stats": "Estatísticas do servidor:",
   "sign_in_banner.create_account": "Criar conta",
   "sign_in_banner.sign_in": "Entrar",
-  "sign_in_banner.text": "Entre para seguir perfis ou marcadores, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em uma instância diferente.",
+  "sign_in_banner.text": "Entre para seguir perfis ou hashtags, favoritar, compartilhar e responder publicações, interagir a partir da sua conta em um servidor diferente.",
   "status.admin_account": "Abrir interface de moderação para @{name}",
   "status.admin_status": "Abrir este toot na interface de moderação",
   "status.block": "Bloquear @{name}",
@@ -582,7 +582,7 @@
   "status.report": "Denunciar @{name}",
   "status.sensitive_warning": "Mídia sensível",
   "status.share": "Compartilhar",
-  "status.show_filter_reason": "Mostrar de qualquer maneira",
+  "status.show_filter_reason": "Mostrar mesmo assim",
   "status.show_less": "Mostrar menos",
   "status.show_less_all": "Mostrar menos em tudo",
   "status.show_more": "Mostrar mais",
@@ -593,7 +593,7 @@
   "status.uncached_media_warning": "Não disponível",
   "status.unmute_conversation": "Dessilenciar conversa",
   "status.unpin": "Desafixar",
-  "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados irão aparecer na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.",
+  "subscribed_languages.lead": "Apenas publicações nos idiomas selecionados aparecerão na sua página inicial e outras linhas do tempo após a mudança. Selecione nenhum para receber publicações em todos os idiomas.",
   "subscribed_languages.save": "Salvar alterações",
   "subscribed_languages.target": "Alterar idiomas inscritos para {target}",
   "suggestions.dismiss": "Ignorar sugestão",
@@ -623,7 +623,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": "Nenhuma descrição adicionada",
+  "upload_form.description_missing": "Sem descrição",
   "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 a1d09b899..02a0ceca9 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {A seguir {counter}}}",
   "account.follows.empty": "Este utilizador ainda não segue ninguém.",
   "account.follows_you": "Segue-te",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Ir para o perfil",
   "account.hide_reblogs": "Esconder partilhas de @{name}",
   "account.joined_short": "Juntou-se a",
   "account.languages": "Alterar idiomas subscritos",
@@ -182,8 +182,8 @@
   "directory.local": "Apenas de {domain}",
   "directory.new_arrivals": "Recém chegados",
   "directory.recently_active": "Com actividade recente",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Definições da conta",
+  "disabled_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada.",
   "dismissable_banner.community_timeline": "Estas são as publicações públicas mais recentes de pessoas cujas contas são hospedadas por {domain}.",
   "dismissable_banner.dismiss": "Descartar",
   "dismissable_banner.explore_links": "Essas histórias de notícias estão, no momento, a ser faladas por pessoas neste e noutros servidores da rede descentralizada.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Alternar visibilidade",
   "missing_indicator.label": "Não encontrado",
   "missing_indicator.sublabel": "Este recurso não foi encontrado",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada, porque você migrou para {movedToAccount}.",
   "mute_modal.duration": "Duração",
   "mute_modal.hide_notifications": "Esconder notificações deste utilizador?",
   "mute_modal.indefinite": "Indefinidamente",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 9a9933c17..fb341a979 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} подписка} many {{counter} подписок} other {{counter} подписки}}",
   "account.follows.empty": "Этот пользователь пока ни на кого не подписался.",
   "account.follows_you": "Подписан(а) на вас",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Перейти к профилю",
   "account.hide_reblogs": "Скрыть продвижения от @{name}",
   "account.joined_short": "Joined",
   "account.languages": "Изменить языки подписки",
@@ -182,8 +182,8 @@
   "directory.local": "Только с {domain}",
   "directory.new_arrivals": "Новички",
   "directory.recently_active": "Недавно активные",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Настройки учётной записи",
+  "disabled_account_banner.text": "Ваша учётная запись {disabledAccount} в настоящее время отключена.",
   "dismissable_banner.community_timeline": "Это самые последние публичные сообщения от людей, чьи учетные записи размещены в {domain}.",
   "dismissable_banner.dismiss": "Dismiss",
   "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
@@ -386,7 +386,7 @@
   "navigation_bar.pins": "Закреплённые посты",
   "navigation_bar.preferences": "Настройки",
   "navigation_bar.public_timeline": "Глобальная лента",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "Поиск",
   "navigation_bar.security": "Безопасность",
   "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
   "notification.admin.report": "{name} сообщил о {target}",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 88b32ea78..76c579820 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {sledi {count} osebi} two {sledi {count} osebama} few {sledi {count} osebam} other {sledi {count} osebam}}",
   "account.follows.empty": "Ta uporabnik še ne sledi nikomur.",
   "account.follows_you": "Vam sledi",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Pojdi na profil",
   "account.hide_reblogs": "Skrij izpostavitve od @{name}",
   "account.joined_short": "Pridružil/a",
   "account.languages": "Spremeni naročene jezike",
@@ -182,8 +182,8 @@
   "directory.local": "Samo iz {domain}",
   "directory.new_arrivals": "Novi prišleki",
   "directory.recently_active": "Nedavno aktiven/a",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Nastavitve računa",
+  "disabled_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen.",
   "dismissable_banner.community_timeline": "To so najnovejše javne objave oseb, katerih računi gostujejo na {domain}.",
   "dismissable_banner.dismiss": "Opusti",
   "dismissable_banner.explore_links": "O teh novicah ravno zdaj veliko govorijo osebe na tem in drugih strežnikih decentraliziranega omrežja.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}",
   "missing_indicator.label": "Ni najdeno",
   "missing_indicator.sublabel": "Tega vira ni bilo mogoče najti",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.",
   "mute_modal.duration": "Trajanje",
   "mute_modal.hide_notifications": "Ali želite skriti obvestila tega uporabnika?",
   "mute_modal.indefinite": "Nedoločeno",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 3debd623e..f53d140bc 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} i Ndjekur} other {{counter} të Ndjekur}}",
   "account.follows.empty": "Ky përdorues ende s’ndjek kënd.",
   "account.follows_you": "Ju ndjek",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Kalo te profili",
   "account.hide_reblogs": "Fshih përforcime nga @{name}",
   "account.joined_short": "U bë pjesë",
   "account.languages": "Ndryshoni gjuhë pajtimesh",
@@ -182,8 +182,8 @@
   "directory.local": "Vetëm nga {domain}",
   "directory.new_arrivals": "Të ardhur rishtas",
   "directory.recently_active": "Aktivë së fundi",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Rregullime llogarie",
+  "disabled_account_banner.text": "Llogaria juaj {disabledAccount} është aktualisht e çaktivizuar.",
   "dismissable_banner.community_timeline": "Këto janë postime më të freskëta publike nga persona llogaritë e të cilëve strehohen nga {domain}.",
   "dismissable_banner.dismiss": "Hidhe tej",
   "dismissable_banner.explore_links": "Këto histori të reja po tirren nga persona në këtë shërbyes dhe të tjerë të tillë të rrjetit të decentralizuar mu tani.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}",
   "missing_indicator.label": "S’u gjet",
   "missing_indicator.sublabel": "Ky burim s’u gjet dot",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Llogaria juaj {disabledAccount} aktualisht është e çaktivizuar, ngaqë kaluat te {movedToAccount}.",
   "mute_modal.duration": "Kohëzgjatje",
   "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?",
   "mute_modal.indefinite": "E pacaktuar",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index a6bd409da..fbd34dfaf 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -4,14 +4,14 @@
   "about.disclaimer": "Mastodon är fri programvara med öppen källkod och ett varumärke tillhörande Mastodon gGmbH.",
   "about.domain_blocks.comment": "Anledning",
   "about.domain_blocks.domain": "Domän",
-  "about.domain_blocks.preamble": "Mastodon låter dig i allmänhet visa innehåll från, och interagera med, användare från andra servrar i fediversumet. Dessa är undantagen som gjorts på just denna server.",
+  "about.domain_blocks.preamble": "Som regel låter Mastodon dig interagera med användare från andra servrar i fediversumet och se deras innehåll. Detta är de undantag som gjorts på just denna servern.",
   "about.domain_blocks.severity": "Allvarlighetsgrad",
-  "about.domain_blocks.silenced.explanation": "Du kommer i allmänhet inte att se profiler och innehåll från denna server, om du inte uttryckligen slår upp eller samtycker till det genom att följa.",
+  "about.domain_blocks.silenced.explanation": "Såvida du inte uttryckligen söker upp dem eller samtycker till att se dem genom att följa dem kommer du i allmänhet inte se profiler från den här servern, eller deras innehåll.",
   "about.domain_blocks.silenced.title": "Begränsat",
   "about.domain_blocks.suspended.explanation": "Inga data från denna server kommer behandlas, lagras eller bytas ut, vilket omöjliggör kommunikation med användare på denna server.",
   "about.domain_blocks.suspended.title": "Avstängd",
   "about.not_available": "Denna information har inte gjorts tillgänglig på denna server.",
-  "about.powered_by": "Decentraliserat socialt medium drivet av {mastodon}",
+  "about.powered_by": "En decentraliserad plattform for sociala medier, drivet av {mastodon}",
   "about.rules": "Serverregler",
   "account.account_note_header": "Anteckning",
   "account.add_or_remove_from_list": "Lägg till i eller ta bort från listor",
@@ -30,7 +30,7 @@
   "account.endorse": "Visa på profil",
   "account.featured_tags.last_status_at": "Senaste inlägg den {date}",
   "account.featured_tags.last_status_never": "Inga inlägg",
-  "account.featured_tags.title": "{name}s utvalda hashtags",
+  "account.featured_tags.title": "{name}s utvalda hashtaggar",
   "account.follow": "Följ",
   "account.followers": "Följare",
   "account.followers.empty": "Ingen följer denna användare än.",
@@ -39,8 +39,8 @@
   "account.following_counter": "{count, plural, one {{counter} Följer} other {{counter} Följer}}",
   "account.follows.empty": "Denna användare följer inte någon än.",
   "account.follows_you": "Följer dig",
-  "account.go_to_profile": "Go to profile",
-  "account.hide_reblogs": "Dölj boostningar från @{name}",
+  "account.go_to_profile": "Gå till profilen",
+  "account.hide_reblogs": "Dölj puffar från @{name}",
   "account.joined_short": "Gick med",
   "account.languages": "Ändra prenumererade språk",
   "account.link_verified_on": "Ägarskap för denna länk kontrollerades den {date}",
@@ -182,8 +182,8 @@
   "directory.local": "Endast från {domain}",
   "directory.new_arrivals": "Nyanlända",
   "directory.recently_active": "Nyligen aktiva",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Kontoinställningar",
+  "disabled_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat.",
   "dismissable_banner.community_timeline": "Dessa är de senaste offentliga inläggen från personer vars konton tillhandahålls av {domain}.",
   "dismissable_banner.dismiss": "Avfärda",
   "dismissable_banner.explore_links": "Dessa nyheter pratas det om just nu, på denna och på andra servrar i det decentraliserade nätverket.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "Växla synlighet",
   "missing_indicator.label": "Hittades inte",
   "missing_indicator.sublabel": "Den här resursen kunde inte hittas",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.",
   "mute_modal.duration": "Varaktighet",
   "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?",
   "mute_modal.indefinite": "Obestämt",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index 176319d33..044090078 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, other {{counter} กำลังติดตาม}}",
   "account.follows.empty": "ผู้ใช้นี้ยังไม่ได้ติดตามใคร",
   "account.follows_you": "ติดตามคุณ",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "ไปยังโปรไฟล์",
   "account.hide_reblogs": "ซ่อนการดันจาก @{name}",
   "account.joined_short": "เข้าร่วมเมื่อ",
   "account.languages": "เปลี่ยนภาษาที่บอกรับ",
@@ -47,7 +47,7 @@
   "account.locked_info": "มีการตั้งสถานะความเป็นส่วนตัวของบัญชีนี้เป็นล็อคอยู่ เจ้าของตรวจทานผู้ที่สามารถติดตามเขาด้วยตนเอง",
   "account.media": "สื่อ",
   "account.mention": "กล่าวถึง @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "{name} ได้ระบุว่าบัญชีใหม่ของเขาในตอนนี้คือ:",
   "account.mute": "ซ่อน @{name}",
   "account.mute_notifications": "ซ่อนการแจ้งเตือนจาก @{name}",
   "account.muted": "ซ่อนอยู่",
@@ -83,12 +83,12 @@
   "boost_modal.combo": "คุณสามารถกด {combo} เพื่อข้ามสิ่งนี้ในครั้งถัดไป",
   "bundle_column_error.copy_stacktrace": "คัดลอกรายงานข้อผิดพลาด",
   "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
-  "bundle_column_error.error.title": "Oh, no!",
+  "bundle_column_error.error.title": "โอ้ ไม่!",
   "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
   "bundle_column_error.network.title": "ข้อผิดพลาดเครือข่าย",
   "bundle_column_error.retry": "ลองอีกครั้ง",
   "bundle_column_error.return": "กลับไปที่หน้าแรก",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.routing.body": "ไม่พบหน้าที่ขอ คุณแน่ใจหรือไม่ว่า URL ในแถบที่อยู่ถูกต้อง?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "ปิด",
   "bundle_modal_error.message": "มีบางอย่างผิดพลาดขณะโหลดส่วนประกอบนี้",
@@ -182,7 +182,7 @@
   "directory.local": "จาก {domain} เท่านั้น",
   "directory.new_arrivals": "มาใหม่",
   "directory.recently_active": "ใช้งานล่าสุด",
-  "disabled_account_banner.account_settings": "Account settings",
+  "disabled_account_banner.account_settings": "การตั้งค่าบัญชี",
   "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
   "dismissable_banner.community_timeline": "นี่คือโพสต์สาธารณะล่าสุดจากผู้คนที่บัญชีได้รับการโฮสต์โดย {domain}",
   "dismissable_banner.dismiss": "ปิด",
@@ -287,10 +287,10 @@
   "home.column_settings.show_replies": "แสดงการตอบกลับ",
   "home.hide_announcements": "ซ่อนประกาศ",
   "home.show_announcements": "แสดงประกาศ",
-  "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
-  "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
-  "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
-  "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
+  "interaction_modal.description.favourite": "เมื่อมีบัญชีใน Mastodon คุณสามารถชื่นชอบโพสต์นี้เพื่อให้ผู้สร้างทราบว่าคุณชื่นชมโพสต์และบันทึกโพสต์ไว้สำหรับภายหลัง",
+  "interaction_modal.description.follow": "เมื่อมีบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ",
+  "interaction_modal.description.reblog": "เมื่อมีบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแบ่งปันโพสต์กับผู้ติดตามของคุณเอง",
+  "interaction_modal.description.reply": "เมื่อมีบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้",
   "interaction_modal.on_another_server": "ในเซิร์ฟเวอร์อื่น",
   "interaction_modal.on_this_server": "ในเซิร์ฟเวอร์นี้",
   "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
@@ -531,7 +531,7 @@
   "search_results.statuses_fts_disabled": "ไม่มีการเปิดใช้งานการค้นหาโพสต์โดยเนื้อหาของโพสต์ในเซิร์ฟเวอร์ Mastodon นี้",
   "search_results.title": "ค้นหาสำหรับ {q}",
   "search_results.total": "{count, number} {count, plural, other {ผลลัพธ์}}",
-  "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
+  "server_banner.about_active_users": "ผู้คนที่ใช้เซิร์ฟเวอร์นี้ในระหว่าง 30 วันที่ผ่านมา (ผู้ใช้ที่ใช้งานอยู่รายเดือน)",
   "server_banner.active_users": "ผู้ใช้ที่ใช้งานอยู่",
   "server_banner.administered_by": "ดูแลโดย:",
   "server_banner.introduction": "{domain} เป็นส่วนหนึ่งของเครือข่ายสังคมแบบกระจายศูนย์ที่ขับเคลื่อนโดย {mastodon}",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 0ef62d59d..e3df3cd82 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Takip Edilen} other {{counter} Takip Edilen}}",
   "account.follows.empty": "Bu kullanıcı henüz kimseyi takip etmiyor.",
   "account.follows_you": "Seni takip ediyor",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Profile git",
   "account.hide_reblogs": "@{name} kişisinin boostlarını gizle",
   "account.joined_short": "Katıldı",
   "account.languages": "Abone olunan dilleri değiştir",
@@ -182,8 +182,8 @@
   "directory.local": "Yalnızca {domain} adresinden",
   "directory.new_arrivals": "Yeni gelenler",
   "directory.recently_active": "Son zamanlarda aktif",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Hesap ayarları",
+  "disabled_account_banner.text": "{disabledAccount} hesabınız şu an devre dışı.",
   "dismissable_banner.community_timeline": "Bunlar, {domain} sunucusunda hesabı olanların yakın zamandaki herkese açık gönderileridir.",
   "dismissable_banner.dismiss": "Yoksay",
   "dismissable_banner.explore_links": "Bunlar, ademi merkeziyetçi ağda bu ve diğer sunucularda şimdilerde insanların hakkında konuştuğu haber öyküleridir.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle",
   "missing_indicator.label": "Bulunamadı",
   "missing_indicator.sublabel": "Bu kaynak bulunamadı",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına taşıdığınız için şu an devre dışı.",
   "mute_modal.duration": "Süre",
   "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?",
   "mute_modal.indefinite": "Belirsiz",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 5e5853f44..c5cdcb2f5 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} підписка} few {{counter} підписки} many {{counter} підписок} other {{counter} підписки}}",
   "account.follows.empty": "Цей користувач ще ні на кого не підписався.",
   "account.follows_you": "Підписані на вас",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Перейти до профілю",
   "account.hide_reblogs": "Сховати поширення від @{name}",
   "account.joined_short": "Дата приєднання",
   "account.languages": "Змінити обрані мови",
@@ -182,8 +182,8 @@
   "directory.local": "Лише з домену {domain}",
   "directory.new_arrivals": "Нові надходження",
   "directory.recently_active": "Нещодавно активні",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Налаштування облікового запису",
+  "disabled_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений.",
   "dismissable_banner.community_timeline": "Це останні публічні дописи від людей, чиї облікові записи розміщені на {domain}.",
   "dismissable_banner.dismiss": "Відхилити",
   "dismissable_banner.explore_links": "Ці новини розповідають історії про людей на цих та інших серверах децентралізованої мережі прямо зараз.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, one {Приховати зображення} other {Приховати зображення}}",
   "missing_indicator.label": "Не знайдено",
   "missing_indicator.sublabel": "Ресурс не знайдено",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Ваш обліковий запис {disabledAccount} наразі вимкнений, оскільки вас перенесено до {movedToAccount}.",
   "mute_modal.duration": "Тривалість",
   "mute_modal.hide_notifications": "Сховати сповіщення від користувача?",
   "mute_modal.indefinite": "Не визначено",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 60486ba9c..5dfe7e222 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -14,17 +14,17 @@
   "about.powered_by": "Mạng xã hội liên hợp {mastodon}",
   "about.rules": "Quy tắc máy chủ",
   "account.account_note_header": "Ghi chú",
-  "account.add_or_remove_from_list": "Thêm hoặc Xóa khỏi danh sách",
+  "account.add_or_remove_from_list": "Thêm hoặc xóa khỏi danh sách",
   "account.badges.bot": "Bot",
   "account.badges.group": "Nhóm",
   "account.block": "Chặn @{name}",
-  "account.block_domain": "Ẩn mọi thứ từ {domain}",
+  "account.block_domain": "Chặn mọi thứ từ {domain}",
   "account.blocked": "Đã chặn",
   "account.browse_more_on_origin_server": "Truy cập trang của người này",
   "account.cancel_follow_request": "Thu hồi yêu cầu theo dõi",
   "account.direct": "Nhắn riêng @{name}",
-  "account.disable_notifications": "Tắt thông báo khi @{name} đăng tút",
-  "account.domain_blocked": "Người đã chặn",
+  "account.disable_notifications": "Tắt thông báo khi @{name} đăng bài viết",
+  "account.domain_blocked": "Tên miền đã chặn",
   "account.edit_profile": "Sửa hồ sơ",
   "account.enable_notifications": "Nhận thông báo khi @{name} đăng tút",
   "account.endorse": "Tôn vinh người này",
@@ -39,7 +39,7 @@
   "account.following_counter": "{count, plural, one {{counter} Theo dõi} other {{counter} Theo dõi}}",
   "account.follows.empty": "Người này chưa theo dõi ai.",
   "account.follows_you": "Đang theo dõi bạn",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "Xem hồ sơ",
   "account.hide_reblogs": "Ẩn tút @{name} đăng lại",
   "account.joined_short": "Đã tham gia",
   "account.languages": "Đổi ngôn ngữ mong muốn",
@@ -182,8 +182,8 @@
   "directory.local": "Từ {domain}",
   "directory.new_arrivals": "Mới tham gia",
   "directory.recently_active": "Hoạt động gần đây",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "Cài đặt tài khoản",
+  "disabled_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng.",
   "dismissable_banner.community_timeline": "Những tút gần đây của những người có tài khoản thuộc máy chủ {domain}.",
   "dismissable_banner.dismiss": "Bỏ qua",
   "dismissable_banner.explore_links": "Những sự kiện đang được thảo luận nhiều trên máy chủ này và những máy chủ khác thuộc mạng liên hợp của nó.",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}",
   "missing_indicator.label": "Không tìm thấy",
   "missing_indicator.sublabel": "Nội dung này không còn tồn tại",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.",
   "mute_modal.duration": "Thời hạn",
   "mute_modal.hide_notifications": "Ẩn thông báo từ người này?",
   "mute_modal.indefinite": "Vĩnh viễn",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 55f1b58a0..fb83d0f71 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -39,7 +39,7 @@
   "account.following_counter": "正在关注 {counter} 人",
   "account.follows.empty": "此用户目前尚未关注任何人。",
   "account.follows_you": "关注了你",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "转到个人资料",
   "account.hide_reblogs": "隐藏来自 @{name} 的转贴",
   "account.joined_short": "加入于",
   "account.languages": "更改订阅语言",
@@ -182,8 +182,8 @@
   "directory.local": "仅来自 {domain}",
   "directory.new_arrivals": "新来者",
   "directory.recently_active": "最近活跃",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "账户设置",
+  "disabled_account_banner.text": "您的帐户 {disabledAccount} 目前已被禁用。",
   "dismissable_banner.community_timeline": "这些是来自 {domain} 用户的最新公共嘟文。",
   "dismissable_banner.dismiss": "忽略",
   "dismissable_banner.explore_links": "这些新闻故事正被本站和分布式网络上其他站点的用户谈论。",
@@ -258,7 +258,7 @@
   "filter_modal.title.status": "过滤一条嘟文",
   "follow_recommendations.done": "完成",
   "follow_recommendations.heading": "关注你感兴趣的用户!这里有一些推荐。",
-  "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序在你的主页上显示。 别担心,你可以随时取消关注!",
+  "follow_recommendations.lead": "你关注的人的嘟文将按时间顺序显示在你的主页上。别担心,你可以在任何时候取消对别人的关注!",
   "follow_request.authorize": "授权",
   "follow_request.reject": "拒绝",
   "follow_requests.unlocked_explanation": "尽管你没有锁嘟,但是 {domain} 的工作人员认为你也许会想手动审核审核这些账号的关注请求。",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "隐藏图片",
   "missing_indicator.label": "找不到内容",
   "missing_indicator.sublabel": "无法找到此资源",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "您的帐户 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。",
   "mute_modal.duration": "持续时长",
   "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?",
   "mute_modal.indefinite": "无期限",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 2982716a0..37a8ea506 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -1,18 +1,18 @@
 {
-  "about.blocks": "Moderated servers",
-  "about.contact": "Contact:",
-  "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
-  "about.domain_blocks.comment": "Reason",
-  "about.domain_blocks.domain": "Domain",
-  "about.domain_blocks.preamble": "Mastodon generally allows you to view content from and interact with users from any other server in the fediverse. These are the exceptions that have been made on this particular server.",
-  "about.domain_blocks.severity": "Severity",
-  "about.domain_blocks.silenced.explanation": "You will generally not see profiles and content from this server, unless you explicitly look it up or opt into it by following.",
-  "about.domain_blocks.silenced.title": "Limited",
-  "about.domain_blocks.suspended.explanation": "No data from this server will be processed, stored or exchanged, making any interaction or communication with users from this server impossible.",
-  "about.domain_blocks.suspended.title": "Suspended",
-  "about.not_available": "This information has not been made available on this server.",
-  "about.powered_by": "Decentralized social media powered by {mastodon}",
-  "about.rules": "Server rules",
+  "about.blocks": "受管制的伺服器",
+  "about.contact": "聯絡我們:",
+  "about.disclaimer": "Mastodon 是一個自由的開源軟體,為 Mastodon gGmbH 的註冊商標。",
+  "about.domain_blocks.comment": "原因",
+  "about.domain_blocks.domain": "域名",
+  "about.domain_blocks.preamble": "Mastodon 一般允許您閱讀,並和聯邦宇宙上任何伺服器的用戶互動。這些伺服器是本站設下的例外。",
+  "about.domain_blocks.severity": "嚴重性",
+  "about.domain_blocks.silenced.explanation": "一般來說您不會看到來自這個伺服器的個人檔案和內容,除非您明確地打開或著追蹤此個人檔案。",
+  "about.domain_blocks.silenced.title": "受限的",
+  "about.domain_blocks.suspended.explanation": "來自此伺服器的資料將不會被處理、儲存或交換,本站也將無法和此伺服器上的用戶互動或者溝通。",
+  "about.domain_blocks.suspended.title": "已停權",
+  "about.not_available": "此信息在此伺服器上尚未可存取。",
+  "about.powered_by": "由 {mastodon} 提供之去中心化社交媒體",
+  "about.rules": "伺服器規則",
   "account.account_note_header": "筆記",
   "account.add_or_remove_from_list": "從列表中新增或移除",
   "account.badges.bot": "機械人",
@@ -21,40 +21,40 @@
   "account.block_domain": "封鎖來自 {domain} 的一切文章",
   "account.blocked": "已封鎖",
   "account.browse_more_on_origin_server": "瀏覽原服務站上的個人資料頁",
-  "account.cancel_follow_request": "Withdraw follow request",
+  "account.cancel_follow_request": "撤回追蹤請求",
   "account.direct": "私訊 @{name}",
   "account.disable_notifications": "如果 @{name} 發文請不要再通知我",
   "account.domain_blocked": "服務站被封鎖",
   "account.edit_profile": "修改個人資料",
   "account.enable_notifications": "如果 @{name} 發文請通知我",
   "account.endorse": "在個人資料頁推薦對方",
-  "account.featured_tags.last_status_at": "Last post on {date}",
-  "account.featured_tags.last_status_never": "No posts",
-  "account.featured_tags.title": "{name}'s featured hashtags",
+  "account.featured_tags.last_status_at": "上次帖文於 {date}",
+  "account.featured_tags.last_status_never": "沒有帖文",
+  "account.featured_tags.title": "{name} 的精選標籤",
   "account.follow": "關注",
-  "account.followers": "關注者",
-  "account.followers.empty": "尚未有人關注這位使用者。",
-  "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}}關注者",
-  "account.following": "正在關注",
-  "account.following_counter": "正在關注 {count, plural,one {{counter}}other {{counter} 人}}",
-  "account.follows.empty": "這位使用者尚未關注任何人。",
-  "account.follows_you": "關注你",
-  "account.go_to_profile": "Go to profile",
+  "account.followers": "追蹤者",
+  "account.followers.empty": "尚未有人追蹤這位使用者。",
+  "account.followers_counter": "有 {count, plural,one {{counter} 個} other {{counter} 個}} 追蹤者",
+  "account.following": "正在追蹤",
+  "account.following_counter": "正在追蹤 {count, plural,one {{counter}}other {{counter} 人}}",
+  "account.follows.empty": "這位使用者尚未追蹤任何人。",
+  "account.follows_you": "追蹤您",
+  "account.go_to_profile": "前往個人檔案",
   "account.hide_reblogs": "隱藏 @{name} 的轉推",
-  "account.joined_short": "Joined",
-  "account.languages": "Change subscribed languages",
+  "account.joined_short": "加入於",
+  "account.languages": "變更訂閱語言",
   "account.link_verified_on": "此連結的所有權已在 {date} 檢查過",
-  "account.locked_info": "這位使用者將私隱設定為「不公開」,會手動審批誰能關注他/她。",
+  "account.locked_info": "此帳號的隱私狀態被設為鎖定。該擁有者會手動審核追蹤者。",
   "account.media": "媒體",
   "account.mention": "提及 @{name}",
-  "account.moved_to": "{name} has indicated that their new account is now:",
+  "account.moved_to": "{name} 的新帳號現在是:",
   "account.mute": "將 @{name} 靜音",
   "account.mute_notifications": "將來自 @{name} 的通知靜音",
   "account.muted": "靜音",
   "account.posts": "文章",
   "account.posts_with_replies": "包含回覆的文章",
   "account.report": "舉報 @{name}",
-  "account.requested": "等候審批",
+  "account.requested": "正在等待核准。按一下以取消追蹤請求",
   "account.share": "分享 @{name} 的個人資料",
   "account.show_reblogs": "顯示 @{name} 的推文",
   "account.statuses_counter": "{count, plural,one {{counter} 篇}other {{counter} 篇}}文章",
@@ -62,51 +62,51 @@
   "account.unblock_domain": "解除對域名 {domain} 的封鎖",
   "account.unblock_short": "解除封鎖",
   "account.unendorse": "不再於個人資料頁面推薦對方",
-  "account.unfollow": "取消關注",
+  "account.unfollow": "取消追蹤",
   "account.unmute": "取消 @{name} 的靜音",
   "account.unmute_notifications": "取消來自 @{name} 通知的靜音",
   "account.unmute_short": "取消靜音",
   "account_note.placeholder": "按此添加備注",
-  "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
-  "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
-  "admin.dashboard.retention.average": "Average",
-  "admin.dashboard.retention.cohort": "Sign-up month",
-  "admin.dashboard.retention.cohort_size": "New users",
+  "admin.dashboard.daily_retention": "註冊後用戶日計存留率",
+  "admin.dashboard.monthly_retention": "註冊後用戶月計存留率",
+  "admin.dashboard.retention.average": "平均",
+  "admin.dashboard.retention.cohort": "註冊月份",
+  "admin.dashboard.retention.cohort_size": "新用戶",
   "alert.rate_limited.message": "請在 {retry_time, time, medium} 後重試",
   "alert.rate_limited.title": "已限速",
   "alert.unexpected.message": "發生不可預期的錯誤。",
   "alert.unexpected.title": "噢!",
   "announcement.announcement": "公告",
-  "attachments_list.unprocessed": "(unprocessed)",
-  "audio.hide": "Hide audio",
+  "attachments_list.unprocessed": "(未處理)",
+  "audio.hide": "隱藏音訊",
   "autosuggest_hashtag.per_week": "{count} / 週",
   "boost_modal.combo": "如你想在下次路過這顯示,請按{combo},",
-  "bundle_column_error.copy_stacktrace": "Copy error report",
-  "bundle_column_error.error.body": "The requested page could not be rendered. It could be due to a bug in our code, or a browser compatibility issue.",
-  "bundle_column_error.error.title": "Oh, no!",
-  "bundle_column_error.network.body": "There was an error when trying to load this page. This could be due to a temporary problem with your internet connection or this server.",
-  "bundle_column_error.network.title": "Network error",
+  "bundle_column_error.copy_stacktrace": "複製錯誤報告",
+  "bundle_column_error.error.body": "無法提供請求的頁面。這可能是因為代碼出現錯誤或瀏覽器出現相容問題。",
+  "bundle_column_error.error.title": "大鑊!",
+  "bundle_column_error.network.body": "嘗試載入此頁面時發生錯誤。這可能是因為您的網路連線或此伺服器暫時出現問題。",
+  "bundle_column_error.network.title": "網絡錯誤",
   "bundle_column_error.retry": "重試",
-  "bundle_column_error.return": "Go back home",
-  "bundle_column_error.routing.body": "The requested page could not be found. Are you sure the URL in the address bar is correct?",
+  "bundle_column_error.return": "返回主頁",
+  "bundle_column_error.routing.body": "找不到請求的頁面。您確定網址欄中的 URL 正確嗎?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "關閉",
   "bundle_modal_error.message": "加載本組件出錯。",
   "bundle_modal_error.retry": "重試",
-  "closed_registrations.other_server_instructions": "Since Mastodon is decentralized, you can create an account on another server and still interact with this one.",
-  "closed_registrations_modal.description": "Creating an account on {domain} is currently not possible, but please keep in mind that you do not need an account specifically on {domain} to use Mastodon.",
-  "closed_registrations_modal.find_another_server": "Find another server",
-  "closed_registrations_modal.preamble": "Mastodon is decentralized, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
-  "closed_registrations_modal.title": "Signing up on Mastodon",
-  "column.about": "About",
+  "closed_registrations.other_server_instructions": "基於Mastodon去中心化的特性,你可以在其他伺服器上創建賬戶並與本站互動。",
+  "closed_registrations_modal.description": "目前無法在 {domain} 建立新帳號,但您並不一定需要擁有 {domain} 的帳號亦能使用 Mastodon 。",
+  "closed_registrations_modal.find_another_server": "尋找另外的伺服器",
+  "closed_registrations_modal.preamble": "Mastodon 是去中心化的,所以無論您在哪個伺服器建立帳號,都可以追蹤此伺服器上的任何人並與他們互動。您甚至可以自行搭建一個全新的伺服器!",
+  "closed_registrations_modal.title": "在 Mastodon 註冊",
+  "column.about": "關於",
   "column.blocks": "封鎖名單",
   "column.bookmarks": "書籤",
   "column.community": "本站時間軸",
-  "column.direct": "Direct messages",
+  "column.direct": "私訊",
   "column.directory": "瀏覽個人資料",
   "column.domain_blocks": "封鎖的服務站",
   "column.favourites": "最愛的文章",
-  "column.follow_requests": "關注請求",
+  "column.follow_requests": "追蹤請求",
   "column.home": "主頁",
   "column.lists": "列表",
   "column.mutes": "靜音名單",
@@ -124,10 +124,10 @@
   "community.column_settings.local_only": "只顯示本站",
   "community.column_settings.media_only": "只顯示多媒體",
   "community.column_settings.remote_only": "只顯示外站",
-  "compose.language.change": "Change language",
-  "compose.language.search": "Search languages...",
+  "compose.language.change": "更改語言",
+  "compose.language.search": "搜尋語言...",
   "compose_form.direct_message_warning_learn_more": "了解更多",
-  "compose_form.encryption_warning": "Posts on Mastodon are not end-to-end encrypted. Do not share any dangerous information over Mastodon.",
+  "compose_form.encryption_warning": "Mastodon 上的帖文並未端對端加密。請不要透過 Mastodon 分享任何敏感資訊。",
   "compose_form.hashtag_warning": "這文章因為不是公開,所以不會被標籤搜索。只有公開的文章才會被標籤搜索。",
   "compose_form.lock_disclaimer": "你的用戶狀態沒有{locked},任何人都能立即關注你,然後看到「只有關注者能看」的文章。",
   "compose_form.lock_disclaimer.lock": "鎖定",
@@ -138,9 +138,9 @@
   "compose_form.poll.remove_option": "移除此選擇",
   "compose_form.poll.switch_to_multiple": "變更投票為允許多個選項",
   "compose_form.poll.switch_to_single": "變更投票為限定單一選項",
-  "compose_form.publish": "Publish",
+  "compose_form.publish": "發佈",
   "compose_form.publish_loud": "{publish}!",
-  "compose_form.save_changes": "Save changes",
+  "compose_form.save_changes": "儲存變更",
   "compose_form.sensitive.hide": "標記媒體為敏感內容",
   "compose_form.sensitive.marked": "媒體被標示為敏感",
   "compose_form.sensitive.unmarked": "媒體沒有被標示為敏感",
@@ -151,14 +151,14 @@
   "confirmations.block.block_and_report": "封鎖並檢舉",
   "confirmations.block.confirm": "封鎖",
   "confirmations.block.message": "你確定要封鎖{name}嗎?",
-  "confirmations.cancel_follow_request.confirm": "Withdraw request",
-  "confirmations.cancel_follow_request.message": "Are you sure you want to withdraw your request to follow {name}?",
+  "confirmations.cancel_follow_request.confirm": "撤回請求",
+  "confirmations.cancel_follow_request.message": "您確定要撤回追蹤 {name} 的請求嗎?",
   "confirmations.delete.confirm": "刪除",
   "confirmations.delete.message": "你確定要刪除這文章嗎?",
   "confirmations.delete_list.confirm": "刪除",
   "confirmations.delete_list.message": "你確定要永久刪除這列表嗎?",
-  "confirmations.discard_edit_media.confirm": "Discard",
-  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
+  "confirmations.discard_edit_media.confirm": "捨棄",
+  "confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?",
   "confirmations.domain_block.confirm": "封鎖整個網站",
   "confirmations.domain_block.message": "你真的真的確定要封鎖整個 {domain} ?多數情況下,封鎖或靜音幾個特定目標就已經有效,也是比較建議的做法。若然封鎖全站,你將不會再在這裏看到該站的內容和通知。來自該站的關注者亦會被移除。",
   "confirmations.logout.confirm": "登出",
@@ -170,30 +170,30 @@
   "confirmations.redraft.message": "你確定要刪除並重新編輯嗎?所有相關的回覆、轉推與最愛都會被刪除。",
   "confirmations.reply.confirm": "回覆",
   "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
-  "confirmations.unfollow.confirm": "取消關注",
-  "confirmations.unfollow.message": "真的不要繼續關注 {name} 了嗎?",
+  "confirmations.unfollow.confirm": "取消追蹤",
+  "confirmations.unfollow.message": "真的不要繼續追蹤 {name} 了嗎?",
   "conversation.delete": "刪除對話",
   "conversation.mark_as_read": "標為已讀",
   "conversation.open": "檢視對話",
   "conversation.with": "與 {names}",
-  "copypaste.copied": "Copied",
-  "copypaste.copy": "Copy",
+  "copypaste.copied": "已複製",
+  "copypaste.copy": "複製",
   "directory.federated": "來自已知的聯盟網絡",
   "directory.local": "僅來自 {domain}",
   "directory.new_arrivals": "新內容",
   "directory.recently_active": "最近活躍",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
-  "dismissable_banner.dismiss": "Dismiss",
-  "dismissable_banner.explore_links": "These news stories are being talked about by people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.explore_statuses": "These posts from this and other servers in the decentralized network are gaining traction on this server right now.",
-  "dismissable_banner.explore_tags": "These hashtags are gaining traction among people on this and other servers of the decentralized network right now.",
-  "dismissable_banner.public_timeline": "These are the most recent public posts from people on this and other servers of the decentralized network that this server knows about.",
+  "disabled_account_banner.account_settings": "帳號設定",
+  "disabled_account_banner.text": "您的帳號 {disabledAccount} 目前已停用。",
+  "dismissable_banner.community_timeline": "這些是 {domain} 上用戶的最新公開帖文。",
+  "dismissable_banner.dismiss": "關閉",
+  "dismissable_banner.explore_links": "這些新聞內容正在被本站以及去中心化網路上其他伺服器的人們熱烈討論。",
+  "dismissable_banner.explore_statuses": "來自本站以及去中心化網路中其他伺服器的這些帖文正在本站引起關注。",
+  "dismissable_banner.explore_tags": "這些主題標籤正在被本站以及去中心化網路上的人們熱烈討論。",
+  "dismissable_banner.public_timeline": "這些是來自本站以及去中心化網路中其他已知伺服器之最新公開帖文。",
   "embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
   "embed.preview": "看上去會是這樣:",
   "emoji_button.activity": "活動",
-  "emoji_button.clear": "Clear",
+  "emoji_button.clear": "清除",
   "emoji_button.custom": "自訂",
   "emoji_button.flags": "旗幟",
   "emoji_button.food": "飲飲食食",
@@ -213,13 +213,13 @@
   "empty_column.blocks": "你還沒有封鎖任何使用者。",
   "empty_column.bookmarked_statuses": "你還沒建立任何書籤。這裡將會顯示你建立的書籤。",
   "empty_column.community": "本站時間軸暫時未有內容,快寫一點東西來搶頭香啊!",
-  "empty_column.direct": "You don't have any direct messages yet. When you send or receive one, it will show up here.",
+  "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將在此顯示。",
   "empty_column.domain_blocks": "尚未隱藏任何網域。",
-  "empty_column.explore_statuses": "Nothing is trending right now. Check back later!",
+  "empty_column.explore_statuses": "目前沒有熱門話題,請稍候再回來看看!",
   "empty_column.favourited_statuses": "你還沒收藏任何文章。這裡將會顯示你收藏的嘟文。",
   "empty_column.favourites": "還沒有人收藏這則文章。這裡將會顯示被收藏的嘟文。",
   "empty_column.follow_recommendations": "似乎未能替您產生任何建議。您可以試著搜尋您知道的帳戶或者探索熱門主題標籤",
-  "empty_column.follow_requests": "您尚未收到任何關注請求。這裡將會顯示收到的關注請求。",
+  "empty_column.follow_requests": "您尚未收到任何追蹤請求。這裡將會顯示收到的追蹤請求。",
   "empty_column.hashtag": "這個標籤暫時未有內容。",
   "empty_column.home": "你還沒有關注任何使用者。快看看{public},向其他使用者搭訕吧。",
   "empty_column.home.suggestions": "檢視部份建議",
@@ -234,41 +234,41 @@
   "error.unexpected_crash.next_steps_addons": "請嘗試停止使用這些附加元件然後重新載入頁面。如果問題沒有解決,你仍然可以使用不同的瀏覽器或 Mastodon 應用程式來檢視。",
   "errors.unexpected_crash.copy_stacktrace": "複製 stacktrace 到剪貼簿",
   "errors.unexpected_crash.report_issue": "舉報問題",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
-  "filter_modal.added.context_mismatch_explanation": "This filter category does not apply to the context in which you have accessed this post. If you want the post to be filtered in this context too, you will have to edit the filter.",
-  "filter_modal.added.context_mismatch_title": "Context mismatch!",
-  "filter_modal.added.expired_explanation": "This filter category has expired, you will need to change the expiration date for it to apply.",
-  "filter_modal.added.expired_title": "Expired filter!",
-  "filter_modal.added.review_and_configure": "To review and further configure this filter category, go to the {settings_link}.",
-  "filter_modal.added.review_and_configure_title": "Filter settings",
-  "filter_modal.added.settings_link": "settings page",
-  "filter_modal.added.short_explanation": "This post has been added to the following filter category: {title}.",
-  "filter_modal.added.title": "Filter added!",
-  "filter_modal.select_filter.context_mismatch": "does not apply to this context",
-  "filter_modal.select_filter.expired": "expired",
-  "filter_modal.select_filter.prompt_new": "New category: {name}",
-  "filter_modal.select_filter.search": "Search or create",
-  "filter_modal.select_filter.subtitle": "Use an existing category or create a new one",
-  "filter_modal.select_filter.title": "Filter this post",
-  "filter_modal.title.status": "Filter a post",
+  "explore.search_results": "搜尋結果",
+  "explore.suggested_follows": "為您推薦",
+  "explore.title": "探索",
+  "explore.trending_links": "最新消息",
+  "explore.trending_statuses": "帖文",
+  "explore.trending_tags": "主題標籤",
+  "filter_modal.added.context_mismatch_explanation": "此過濾器類別不適用於您所存取帖文的情境。如果您想要此帖文被於此情境被過濾,您必須編輯過濾器。",
+  "filter_modal.added.context_mismatch_title": "情境不符合!",
+  "filter_modal.added.expired_explanation": "此過濾器類別已失效,您需要更新過期日期才能套用。",
+  "filter_modal.added.expired_title": "過期的過濾器!",
+  "filter_modal.added.review_and_configure": "若欲檢視並進一步配置此過濾器類別,請前往 {settings_link}。",
+  "filter_modal.added.review_and_configure_title": "過濾器設定",
+  "filter_modal.added.settings_link": "設定頁面",
+  "filter_modal.added.short_explanation": "此帖文已被新增至以下過濾器類別:{title}。",
+  "filter_modal.added.title": "已新增過濾器!",
+  "filter_modal.select_filter.context_mismatch": "不適用於目前情境",
+  "filter_modal.select_filter.expired": "已過期",
+  "filter_modal.select_filter.prompt_new": "新類別:{name}",
+  "filter_modal.select_filter.search": "搜尋或新增",
+  "filter_modal.select_filter.subtitle": "使用既有類別,或創建一個新類別",
+  "filter_modal.select_filter.title": "過濾此帖文",
+  "filter_modal.title.status": "過濾一則帖文",
   "follow_recommendations.done": "完成",
-  "follow_recommendations.heading": "跟隨人們以看到來自他們的嘟文!這裡有些建議。",
-  "follow_recommendations.lead": "您跟隨對象知嘟文將會以時間順序顯示於您的 home feed 上。別擔心犯下錯誤,您隨時可以取消跟隨人們!",
+  "follow_recommendations.heading": "追蹤人們以看到他們的帖文!這裡有些建議。",
+  "follow_recommendations.lead": "您所追蹤的對象之帖文將會以時間順序顯示於您的首頁時間軸上。別擔心犯下錯誤,您隨時可以取消追蹤任何人!",
   "follow_request.authorize": "批准",
   "follow_request.reject": "拒絕",
-  "follow_requests.unlocked_explanation": "即使您的帳戶未上鎖,{domain} 的工作人員認為您可能想手動審核來自這些帳戶的關注請求。",
-  "footer.about": "About",
-  "footer.directory": "Profiles directory",
-  "footer.get_app": "Get the app",
-  "footer.invite": "Invite people",
-  "footer.keyboard_shortcuts": "Keyboard shortcuts",
-  "footer.privacy_policy": "Privacy policy",
-  "footer.source_code": "View source code",
+  "follow_requests.unlocked_explanation": "即使您的帳號未上鎖,{domain} 的工作人員認為您可能會想手動審核來自這些帳號的追蹤請求。",
+  "footer.about": "關於",
+  "footer.directory": "個人檔案目錄",
+  "footer.get_app": "取得應用程式",
+  "footer.invite": "邀請他人",
+  "footer.keyboard_shortcuts": "鍵盤快速鍵",
+  "footer.privacy_policy": "隱私權政策",
+  "footer.source_code": "查看原始碼",
   "generic.saved": "已儲存",
   "getting_started.heading": "開始使用",
   "hashtag.column_header.tag_mode.all": "以及{additional}",
@@ -280,25 +280,25 @@
   "hashtag.column_settings.tag_mode.any": "任一",
   "hashtag.column_settings.tag_mode.none": "全不",
   "hashtag.column_settings.tag_toggle": "在這欄位加入額外的標籤",
-  "hashtag.follow": "Follow hashtag",
-  "hashtag.unfollow": "Unfollow hashtag",
+  "hashtag.follow": "追蹤主題標籤",
+  "hashtag.unfollow": "取消追蹤主題標籤",
   "home.column_settings.basic": "基本",
   "home.column_settings.show_reblogs": "顯示被轉推的文章",
   "home.column_settings.show_replies": "顯示回應文章",
   "home.hide_announcements": "隱藏公告",
   "home.show_announcements": "顯示公告",
-  "interaction_modal.description.favourite": "With an account on Mastodon, you can favourite this post to let the author know you appreciate it and save it for later.",
-  "interaction_modal.description.follow": "With an account on Mastodon, you can follow {name} to receive their posts in your home feed.",
-  "interaction_modal.description.reblog": "With an account on Mastodon, you can boost this post to share it with your own followers.",
-  "interaction_modal.description.reply": "With an account on Mastodon, you can respond to this post.",
-  "interaction_modal.on_another_server": "On a different server",
-  "interaction_modal.on_this_server": "On this server",
-  "interaction_modal.other_server_instructions": "Simply copy and paste this URL into the search bar of your favourite app or the web interface where you are signed in.",
-  "interaction_modal.preamble": "Since Mastodon is decentralized, you can use your existing account hosted by another Mastodon server or compatible platform if you don't have an account on this one.",
-  "interaction_modal.title.favourite": "Favourite {name}'s post",
-  "interaction_modal.title.follow": "Follow {name}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
+  "interaction_modal.description.favourite": "在 Mastodon 上有個帳號的話,您可以點讚並收藏此帖文,讓作者知道您對它的欣賞。",
+  "interaction_modal.description.follow": "在 Mastodon 上有個帳號的話,您可以追蹤 {name} 以於首頁時間軸接收他們的帖文。",
+  "interaction_modal.description.reblog": "在 Mastodon 上有個帳號的話,您可以向自己的追縱者們轉發此帖文。",
+  "interaction_modal.description.reply": "在 Mastodon 上擁有帳號的話,您可以回覆此帖文。",
+  "interaction_modal.on_another_server": "於不同伺服器",
+  "interaction_modal.on_this_server": "於此伺服器",
+  "interaction_modal.other_server_instructions": "只需簡單地於您慣用的應用程式或有登入您帳號之網頁介面的搜尋欄中複製並貼上此 URL。",
+  "interaction_modal.preamble": "由於 Mastodon 是去中心化的,即使您於此伺服器上沒有帳號,仍可以利用託管於其他 Mastodon 伺服器或相容平台上的既存帳號。",
+  "interaction_modal.title.favourite": "將 {name} 的帖文加入最愛",
+  "interaction_modal.title.follow": "追蹤 {name}",
+  "interaction_modal.title.reblog": "轉發 {name} 的帖文",
+  "interaction_modal.title.reply": "回覆 {name} 的帖文",
   "intervals.full.days": "{number, plural, one {# 天} other {# 天}}",
   "intervals.full.hours": "{number, plural, one {# 小時} other {# 小時}}",
   "intervals.full.minutes": "{number, plural, one {# 分鐘} other {# 分鐘}}",
@@ -308,7 +308,7 @@
   "keyboard_shortcuts.column": "把標示移動到其中一列",
   "keyboard_shortcuts.compose": "把標示移動到文字輸入區",
   "keyboard_shortcuts.description": "描述",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "開啟私訊欄",
   "keyboard_shortcuts.down": "在列表往下移動",
   "keyboard_shortcuts.enter": "打開文章",
   "keyboard_shortcuts.favourite": "收藏文章",
@@ -341,8 +341,8 @@
   "lightbox.expand": "擴大檢視",
   "lightbox.next": "下一頁",
   "lightbox.previous": "上一頁",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
+  "limited_account_hint.action": "一律顯示個人檔案",
+  "limited_account_hint.title": "此個人檔案已被 {domain} 的管理員隱藏。",
   "lists.account.add": "新增到列表",
   "lists.account.remove": "從列表刪除",
   "lists.delete": "刪除列表",
@@ -361,24 +361,24 @@
   "media_gallery.toggle_visible": "隱藏圖片",
   "missing_indicator.label": "找不到內容",
   "missing_indicator.sublabel": "無法找到內容",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
   "mute_modal.duration": "時間",
   "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?",
   "mute_modal.indefinite": "沒期限",
-  "navigation_bar.about": "About",
+  "navigation_bar.about": "關於",
   "navigation_bar.blocks": "封鎖名單",
   "navigation_bar.bookmarks": "書籤",
   "navigation_bar.community_timeline": "本站時間軸",
   "navigation_bar.compose": "撰寫新文章",
-  "navigation_bar.direct": "Direct messages",
+  "navigation_bar.direct": "私訊",
   "navigation_bar.discover": "探索",
   "navigation_bar.domain_blocks": "封鎖的服務站",
   "navigation_bar.edit_profile": "修改個人資料",
-  "navigation_bar.explore": "Explore",
+  "navigation_bar.explore": "探索",
   "navigation_bar.favourites": "最愛的內容",
   "navigation_bar.filters": "靜音詞彙",
-  "navigation_bar.follow_requests": "關注請求",
-  "navigation_bar.follows_and_followers": "關注及關注者",
+  "navigation_bar.follow_requests": "追蹤請求",
+  "navigation_bar.follows_and_followers": "追蹤及追蹤者",
   "navigation_bar.lists": "列表",
   "navigation_bar.logout": "登出",
   "navigation_bar.mutes": "靜音名單",
@@ -386,14 +386,14 @@
   "navigation_bar.pins": "置頂文章",
   "navigation_bar.preferences": "偏好設定",
   "navigation_bar.public_timeline": "跨站時間軸",
-  "navigation_bar.search": "Search",
+  "navigation_bar.search": "搜尋",
   "navigation_bar.security": "安全",
-  "not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
-  "notification.admin.report": "{name} reported {target}",
-  "notification.admin.sign_up": "{name} signed up",
+  "not_signed_in_indicator.not_signed_in": "您需要登入才能存取此資源。",
+  "notification.admin.report": "{name} 檢舉了 {target}",
+  "notification.admin.sign_up": "{name} 已經註冊",
   "notification.favourite": "{name} 喜歡你的文章",
-  "notification.follow": "{name} 開始關注你",
-  "notification.follow_request": "{name} 要求關注你",
+  "notification.follow": "{name} 開始追蹤你",
+  "notification.follow_request": "{name} 要求追蹤你",
   "notification.mention": "{name} 提及你",
   "notification.own_poll": "你的投票已結束",
   "notification.poll": "你參與過的一個投票已經結束",
@@ -409,8 +409,8 @@
   "notifications.column_settings.filter_bar.advanced": "顯示所有分類",
   "notifications.column_settings.filter_bar.category": "快速過濾欄",
   "notifications.column_settings.filter_bar.show_bar": "Show filter bar",
-  "notifications.column_settings.follow": "關注你:",
-  "notifications.column_settings.follow_request": "新的關注請求:",
+  "notifications.column_settings.follow": "新追蹤者:",
+  "notifications.column_settings.follow_request": "新的追蹤請求:",
   "notifications.column_settings.mention": "提及你:",
   "notifications.column_settings.poll": "投票結果:",
   "notifications.column_settings.push": "推送通知",
@@ -424,7 +424,7 @@
   "notifications.filter.all": "全部",
   "notifications.filter.boosts": "轉推",
   "notifications.filter.favourites": "最愛",
-  "notifications.filter.follows": "關注的使用者",
+  "notifications.filter.follows": "追蹤的使用者",
   "notifications.filter.mentions": "提及",
   "notifications.filter.polls": "投票結果",
   "notifications.filter.statuses": "已關注的用戶的最新動態",
@@ -486,7 +486,7 @@
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "轉寄到 {target}",
   "report.forward_hint": "這個帳戶屬於其他服務站。要向該服務站發送匿名的舉報訊息嗎?",
-  "report.mute": "Mute",
+  "report.mute": "靜音",
   "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
   "report.next": "Next",
   "report.placeholder": "額外訊息",
@@ -508,7 +508,7 @@
   "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
   "report.thanks.title": "Don't want to see this?",
   "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
+  "report.unfollow": "取消追蹤 @{name}",
   "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
   "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached",
   "report_notification.categories.other": "Other",
@@ -608,8 +608,8 @@
   "time_remaining.moments": "剩餘時間",
   "time_remaining.seconds": "剩餘 {number, plural, one {# 秒} other {# 秒}}",
   "timeline_hint.remote_resource_not_displayed": "不會顯示來自其他伺服器的 {resource}",
-  "timeline_hint.resources.followers": "關注者",
-  "timeline_hint.resources.follows": "關注中",
+  "timeline_hint.resources.followers": "追蹤者",
+  "timeline_hint.resources.follows": "追蹤中",
   "timeline_hint.resources.statuses": "更早的文章",
   "trends.counter_by_accounts": "{count, plural, one {{counter} person} other {{counter} people}} in the past {days, plural, one {day} other {{days} days}}",
   "trends.trending_now": "現在流行",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 7c3aa6342..e3086e089 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -39,7 +39,7 @@
   "account.following_counter": "正在跟隨 {count, plural,one {{counter}}other {{counter} 人}}",
   "account.follows.empty": "這位使用者尚未跟隨任何人。",
   "account.follows_you": "跟隨了您",
-  "account.go_to_profile": "Go to profile",
+  "account.go_to_profile": "前往個人檔案",
   "account.hide_reblogs": "隱藏來自 @{name} 的轉嘟",
   "account.joined_short": "已加入",
   "account.languages": "變更訂閱的語言",
@@ -182,8 +182,8 @@
   "directory.local": "僅來自 {domain} 網域",
   "directory.new_arrivals": "新人",
   "directory.recently_active": "最近活躍",
-  "disabled_account_banner.account_settings": "Account settings",
-  "disabled_account_banner.text": "Your account {disabledAccount} is currently disabled.",
+  "disabled_account_banner.account_settings": "帳號設定",
+  "disabled_account_banner.text": "您的帳號 {disabledAccount} 目前已停用。",
   "dismissable_banner.community_timeline": "這些是 {domain} 上面託管帳號之最新公開嘟文。",
   "dismissable_banner.dismiss": "關閉",
   "dismissable_banner.explore_links": "這些新聞故事正在被此伺服器以及去中心化網路上的人們熱烈討論著。",
@@ -211,7 +211,7 @@
   "empty_column.account_timeline": "這裡還沒有嘟文!",
   "empty_column.account_unavailable": "無法取得個人檔案",
   "empty_column.blocks": "您還沒有封鎖任何使用者。",
-  "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書簽時,它將於此顯示。",
+  "empty_column.bookmarked_statuses": "您還沒建立任何書籤。當您建立書籤時,它將於此顯示。",
   "empty_column.community": "本站時間軸是空的。快公開嘟些文搶頭香啊!",
   "empty_column.direct": "您還沒有任何私訊。當您私訊別人或收到私訊時,它將於此顯示。",
   "empty_column.domain_blocks": "尚未封鎖任何網域。",
@@ -361,7 +361,7 @@
   "media_gallery.toggle_visible": "切換可見性",
   "missing_indicator.label": "找不到",
   "missing_indicator.sublabel": "找不到此資源",
-  "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
+  "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
   "mute_modal.duration": "持續時間",
   "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?",
   "mute_modal.indefinite": "無期限",
diff --git a/app/javascript/styles/mastodon-light/diff.scss b/app/javascript/styles/mastodon-light/diff.scss
index d960070d6..1214d2519 100644
--- a/app/javascript/styles/mastodon-light/diff.scss
+++ b/app/javascript/styles/mastodon-light/diff.scss
@@ -78,7 +78,7 @@ html {
 .column-header__back-button,
 .column-header__button,
 .column-header__button.active,
-.account__header__bar {
+.account__header {
   background: $white;
 }
 
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index c50b74d23..ba8810451 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -1303,6 +1303,7 @@
   display: inline-block;
   font-weight: 500;
   font-size: 12px;
+  line-height: 17px;
   margin-left: 6px;
 }
 
diff --git a/app/lib/hashtag_normalizer.rb b/app/lib/hashtag_normalizer.rb
index c1f99e163..49fa6101d 100644
--- a/app/lib/hashtag_normalizer.rb
+++ b/app/lib/hashtag_normalizer.rb
@@ -8,7 +8,7 @@ class HashtagNormalizer
   private
 
   def remove_invalid_characters(str)
-    str.gsub(/[^[:alnum:]#{Tag::HASHTAG_SEPARATORS}]/, '')
+    str.gsub(Tag::HASHTAG_INVALID_CHARS_RE, '')
   end
 
   def ascii_folding(str)
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 1ea86862d..dd198f399 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -199,7 +199,8 @@ class Request
         rescue IPAddr::InvalidAddressError
           Resolv::DNS.open do |dns|
             dns.timeouts = 5
-            addresses = dns.getaddresses(host).take(2)
+            addresses = dns.getaddresses(host)
+            addresses = addresses.filter { |addr| addr.is_a?(Resolv::IPv6) }.take(2) + addresses.filter { |addr| !addr.is_a?(Resolv::IPv6) }.take(2)
           end
         end
 
diff --git a/app/models/account.rb b/app/models/account.rb
index ea42302c6..7059c555f 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -64,6 +64,7 @@ class Account < ApplicationRecord
   USERNAME_RE   = /[a-z0-9_]+([a-z0-9_\.-]+[a-z0-9_]+)?/i
   MENTION_RE    = /(?<=^|[^\/[:word:]])@((#{USERNAME_RE})(?:@[[:word:]\.\-]+[[:word:]]+)?)/i
   URL_PREFIX_RE = /\Ahttp(s?):\/\/[^\/]+/
+  USERNAME_ONLY_RE = /\A#{USERNAME_RE}\z/i
 
   include Attachmentable
   include AccountAssociations
@@ -88,7 +89,7 @@ class Account < ApplicationRecord
   validates_with UniqueUsernameValidator, if: -> { will_save_change_to_username? }
 
   # Remote user validations
-  validates :username, format: { with: /\A#{USERNAME_RE}\z/i }, if: -> { !local? && will_save_change_to_username? }
+  validates :username, format: { with: USERNAME_ONLY_RE }, if: -> { !local? && will_save_change_to_username? }
 
   # Local user validations
   validates :username, format: { with: /\A[a-z0-9_]+\z/i }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? && actor_type != 'Application' }
@@ -295,7 +296,7 @@ class Account < ApplicationRecord
 
   def fields
     (self[:fields] || []).map do |f|
-      Field.new(self, f)
+      Account::Field.new(self, f)
     rescue
       nil
     end.compact
@@ -399,48 +400,6 @@ class Account < ApplicationRecord
     requires_review? && !requested_review?
   end
 
-  class Field < ActiveModelSerializers::Model
-    attributes :name, :value, :verified_at, :account
-
-    def initialize(account, attributes)
-      @original_field = attributes
-      string_limit = account.local? ? 255 : 2047
-      super(
-        account:     account,
-        name:        attributes['name'].strip[0, string_limit],
-        value:       attributes['value'].strip[0, string_limit],
-        verified_at: attributes['verified_at']&.to_datetime,
-      )
-    end
-
-    def verified?
-      verified_at.present?
-    end
-
-    def value_for_verification
-      @value_for_verification ||= begin
-        if account.local?
-          value
-        else
-          ActionController::Base.helpers.strip_tags(value)
-        end
-      end
-    end
-
-    def verifiable?
-      value_for_verification.present? && value_for_verification.start_with?('http://', 'https://')
-    end
-
-    def mark_verified!
-      self.verified_at = Time.now.utc
-      @original_field['verified_at'] = verified_at
-    end
-
-    def to_h
-      { name: name, value: value, verified_at: verified_at }
-    end
-  end
-
   class << self
     DISALLOWED_TSQUERY_CHARACTERS = /['?\\:‘’]/.freeze
     TEXTSEARCH = "(setweight(to_tsvector('simple', accounts.display_name), 'A') || setweight(to_tsvector('simple', accounts.username), 'B') || setweight(to_tsvector('simple', coalesce(accounts.domain, '')), 'C'))"
diff --git a/app/models/account/field.rb b/app/models/account/field.rb
new file mode 100644
index 000000000..d74f90b2b
--- /dev/null
+++ b/app/models/account/field.rb
@@ -0,0 +1,87 @@
+# frozen_string_literal: true
+
+class Account::Field < ActiveModelSerializers::Model
+  MAX_CHARACTERS_LOCAL  = 255
+  MAX_CHARACTERS_COMPAT = 2_047
+  ACCEPTED_SCHEMES      = %w(http https).freeze
+
+  attributes :name, :value, :verified_at, :account
+
+  def initialize(account, attributes)
+    # Keeping this as reference allows us to update the field on the account
+    # from methods in this class, so that changes can be saved.
+    @original_field = attributes
+    @account        = account
+
+    super(
+      name:        sanitize(attributes['name']),
+      value:       sanitize(attributes['value']),
+      verified_at: attributes['verified_at']&.to_datetime,
+    )
+  end
+
+  def verified?
+    verified_at.present?
+  end
+
+  def value_for_verification
+    @value_for_verification ||= begin
+      if account.local?
+        value
+      else
+        extract_url_from_html
+      end
+    end
+  end
+
+  def verifiable?
+    return false if value_for_verification.blank?
+
+    # This is slower than checking through a regular expression, but we
+    # need to confirm that it's not an IDN domain.
+
+    parsed_url = Addressable::URI.parse(value_for_verification)
+
+    ACCEPTED_SCHEMES.include?(parsed_url.scheme) &&
+      parsed_url.user.nil? &&
+      parsed_url.password.nil? &&
+      parsed_url.host.present? &&
+      parsed_url.normalized_host == parsed_url.host
+  rescue Addressable::URI::InvalidURIError, IDN::Idna::IdnaError
+    false
+  end
+
+  def requires_verification?
+    !verified? && verifiable?
+  end
+
+  def mark_verified!
+    @original_field['verified_at'] = self.verified_at = Time.now.utc
+  end
+
+  def to_h
+    { name: name, value: value, verified_at: verified_at }
+  end
+
+  private
+
+  def sanitize(str)
+    str.strip[0, character_limit]
+  end
+
+  def character_limit
+    account.local? ? MAX_CHARACTERS_LOCAL : MAX_CHARACTERS_COMPAT
+  end
+
+  def extract_url_from_html
+    doc = Nokogiri::HTML(value).at_xpath('//body')
+
+    return if doc.children.size > 1
+
+    element = doc.children.first
+
+    return if element.name != 'a' || element['href'] != element.text
+
+    element['href']
+  end
+end
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index 9bf9860db..5af6aead8 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -31,6 +31,7 @@ class CustomEmoji < ApplicationRecord
   SCAN_RE = /(?<=[^[:alnum:]:]|\n|^)
     :(#{SHORTCODE_RE_FRAGMENT}):
     (?=[^[:alnum:]:]|$)/x
+  SHORTCODE_ONLY_RE = /\A#{SHORTCODE_RE_FRAGMENT}\z/
 
   IMAGE_MIME_TYPES = %w(image/png image/gif image/webp).freeze
 
@@ -44,7 +45,7 @@ class CustomEmoji < ApplicationRecord
   validates_attachment :image, content_type: { content_type: IMAGE_MIME_TYPES }, presence: true
   validates_attachment_size :image, less_than: LIMIT, unless: :local?
   validates_attachment_size :image, less_than: LOCAL_LIMIT, if: :local?
-  validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
+  validates :shortcode, uniqueness: { scope: :domain }, format: { with: SHORTCODE_ONLY_RE }, length: { minimum: 2 }
 
   scope :local, -> { where(domain: nil) }
   scope :remote, -> { where.not(domain: nil) }
diff --git a/app/models/featured_tag.rb b/app/models/featured_tag.rb
index debae2212..70f949b6a 100644
--- a/app/models/featured_tag.rb
+++ b/app/models/featured_tag.rb
@@ -17,7 +17,7 @@ class FeaturedTag < ApplicationRecord
   belongs_to :account, inverse_of: :featured_tags
   belongs_to :tag, inverse_of: :featured_tags, optional: true # Set after validation
 
-  validates :name, presence: true, format: { with: /\A(#{Tag::HASHTAG_NAME_RE})\z/i }, on: :create
+  validates :name, presence: true, format: { with: Tag::HASHTAG_NAME_RE }, on: :create
 
   validate :validate_tag_uniqueness, on: :create
   validate :validate_featured_tags_limit, on: :create
diff --git a/app/models/public_feed.rb b/app/models/public_feed.rb
index bc8281ef2..a987bb72c 100644
--- a/app/models/public_feed.rb
+++ b/app/models/public_feed.rb
@@ -9,7 +9,6 @@ class PublicFeed
   # @option [Boolean] :remote
   # @option [Boolean] :only_media
   # @option [Boolean] :allow_local_only
-  # @option [String]  :locale
   def initialize(account, options = {})
     @account = account
     @options = options
@@ -30,7 +29,7 @@ class PublicFeed
     scope.merge!(remote_only_scope) if remote_only?
     scope.merge!(account_filters_scope) if account?
     scope.merge!(media_only_scope) if media_only?
-    scope.merge!(language_scope)
+    scope.merge!(language_scope) if account&.chosen_languages.present?
 
     scope.cache_ids.to_a_paginated_by_id(limit, max_id: max_id, since_id: since_id, min_id: min_id)
   end
@@ -100,13 +99,7 @@ class PublicFeed
   end
 
   def language_scope
-    if account&.chosen_languages.present?
-      Status.where(language: account.chosen_languages)
-    elsif @options[:locale].present?
-      Status.where(language: @options[:locale])
-    else
-      Status.all
-    end
+    Status.where(language: account.chosen_languages)
   end
 
   def account_filters_scope
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 8929baf66..b66f85423 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -27,11 +27,14 @@ class Tag < ApplicationRecord
   has_many :followers, through: :passive_relationships, source: :account
 
   HASHTAG_SEPARATORS = "_\u00B7\u200c"
-  HASHTAG_NAME_RE    = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)"
-  HASHTAG_RE         = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_RE})/i
+  HASHTAG_NAME_PAT = "([[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}][[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_])|([[:word:]_]*[[:alpha:]][[:word:]_]*)"
 
-  validates :name, presence: true, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i }
-  validates :display_name, format: { with: /\A(#{HASHTAG_NAME_RE})\z/i }
+  HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_PAT})/i
+  HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i
+  HASHTAG_INVALID_CHARS_RE = /[^[:alnum:]#{HASHTAG_SEPARATORS}]/
+
+  validates :name, presence: true, format: { with: HASHTAG_NAME_RE }
+  validates :display_name, format: { with: HASHTAG_NAME_RE }
   validate :validate_name_change, if: -> { !new_record? && name_changed? }
   validate :validate_display_name_change, if: -> { !new_record? && display_name_changed? }
 
@@ -102,7 +105,7 @@ class Tag < ApplicationRecord
       names = Array(name_or_names).map { |str| [normalize(str), str] }.uniq(&:first)
 
       names.map do |(normalized_name, display_name)|
-        tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(/[^[:alnum:]#{HASHTAG_SEPARATORS}]/, ''))
+        tag = matching_name(normalized_name).first || create(name: normalized_name, display_name: display_name.gsub(HASHTAG_INVALID_CHARS_RE, ''))
 
         yield tag if block_given?
 
diff --git a/app/models/tag_feed.rb b/app/models/tag_feed.rb
index 761a43bb1..fbbdbaae2 100644
--- a/app/models/tag_feed.rb
+++ b/app/models/tag_feed.rb
@@ -12,7 +12,6 @@ class TagFeed < PublicFeed
   # @option [Boolean] :local
   # @option [Boolean] :remote
   # @option [Boolean] :only_media
-  # @option [String]  :locale
   def initialize(tag, account, options = {})
     @tag = tag
     super(account, options)
diff --git a/app/policies/ip_block_policy.rb b/app/policies/ip_block_policy.rb
index 2986a4fdb..8baf6ee2d 100644
--- a/app/policies/ip_block_policy.rb
+++ b/app/policies/ip_block_policy.rb
@@ -5,6 +5,10 @@ class IpBlockPolicy < ApplicationPolicy
     role.can?(:manage_blocks)
   end
 
+  def show?
+    role.can?(:manage_blocks)
+  end
+
   def create?
     role.can?(:manage_blocks)
   end
diff --git a/app/serializers/nodeinfo/serializer.rb b/app/serializers/nodeinfo/serializer.rb
index afae7f00a..f70cc38f0 100644
--- a/app/serializers/nodeinfo/serializer.rb
+++ b/app/serializers/nodeinfo/serializer.rb
@@ -38,7 +38,7 @@ class NodeInfo::Serializer < ActiveModel::Serializer
   end
 
   def metadata
-    []
+    {}
   end
 
   private
diff --git a/app/serializers/rest/admin/account_serializer.rb b/app/serializers/rest/admin/account_serializer.rb
index 2fbc7b1cb..ad98a53e8 100644
--- a/app/serializers/rest/admin/account_serializer.rb
+++ b/app/serializers/rest/admin/account_serializer.rb
@@ -3,7 +3,7 @@
 class REST::Admin::AccountSerializer < ActiveModel::Serializer
   attributes :id, :username, :domain, :created_at,
              :email, :ip, :role, :confirmed, :suspended,
-             :silenced, :disabled, :approved, :locale,
+             :silenced, :sensitized, :disabled, :approved, :locale,
              :invite_request
 
   attribute :created_by_application_id, if: :created_by_application?
@@ -32,6 +32,10 @@ class REST::Admin::AccountSerializer < ActiveModel::Serializer
     object.silenced?
   end
 
+  def sensitized
+    object.sensitized?
+  end
+
   def confirmed
     object.user_confirmed?
   end
diff --git a/app/serializers/rest/report_serializer.rb b/app/serializers/rest/report_serializer.rb
index de68dfc6d..f4e9af249 100644
--- a/app/serializers/rest/report_serializer.rb
+++ b/app/serializers/rest/report_serializer.rb
@@ -9,4 +9,12 @@ class REST::ReportSerializer < ActiveModel::Serializer
   def id
     object.id.to_s
   end
+
+  def status_ids
+    object&.status_ids&.map(&:to_s)
+  end
+
+  def rule_ids
+    object&.rule_ids&.map(&:to_s)
+  end
 end
diff --git a/app/services/account_search_service.rb b/app/services/account_search_service.rb
index 9f2330a94..85538870b 100644
--- a/app/services/account_search_service.rb
+++ b/app/services/account_search_service.rb
@@ -3,6 +3,8 @@
 class AccountSearchService < BaseService
   attr_reader :query, :limit, :offset, :options, :account
 
+  MENTION_ONLY_RE = /\A#{Account::MENTION_RE}\z/i
+
   # Min. number of characters to look for non-exact matches
   MIN_QUERY_LENGTH = 5
 
@@ -180,7 +182,7 @@ class AccountSearchService < BaseService
   end
 
   def username_complete?
-    query.include?('@') && "@#{query}".match?(/\A#{Account::MENTION_RE}\Z/)
+    query.include?('@') && "@#{query}".match?(MENTION_ONLY_RE)
   end
 
   def likely_acct?
diff --git a/app/services/activitypub/fetch_remote_actor_service.rb b/app/services/activitypub/fetch_remote_actor_service.rb
index 17bf2f287..db09c38d8 100644
--- a/app/services/activitypub/fetch_remote_actor_service.rb
+++ b/app/services/activitypub/fetch_remote_actor_service.rb
@@ -56,7 +56,7 @@ class ActivityPub::FetchRemoteActorService < BaseService
     @username, @domain                   = split_acct(webfinger.subject)
 
     unless confirmed_username.casecmp(@username).zero? && confirmed_domain.casecmp(@domain).zero?
-      raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{uri} (stopped at #{@username}@#{@domain})"
+      raise Webfinger::RedirectError, "Too many webfinger redirects for URI #{@uri} (stopped at #{@username}@#{@domain})"
     end
 
     raise Error, "Webfinger response for #{@username}@#{@domain} does not loop back to #{@uri}" if webfinger.link('self', 'href') != @uri
diff --git a/app/services/activitypub/process_account_service.rb b/app/services/activitypub/process_account_service.rb
index 3834d79cc..99bcb3835 100644
--- a/app/services/activitypub/process_account_service.rb
+++ b/app/services/activitypub/process_account_service.rb
@@ -40,7 +40,7 @@ class ActivityPub::ProcessAccountService < BaseService
     unless @options[:only_key] || @account.suspended?
       check_featured_collection! if @account.featured_collection_url.present?
       check_featured_tags_collection! if @json['featuredTags'].present?
-      check_links! unless @account.fields.empty?
+      check_links! if @account.fields.any?(&:requires_verification?)
     end
 
     @account
diff --git a/app/services/report_service.rb b/app/services/report_service.rb
index 8c92cf334..0ce525b07 100644
--- a/app/services/report_service.rb
+++ b/app/services/report_service.rb
@@ -8,7 +8,7 @@ class ReportService < BaseService
     @target_account = target_account
     @status_ids     = options.delete(:status_ids).presence || []
     @comment        = options.delete(:comment).presence || ''
-    @category       = options.delete(:category).presence || 'other'
+    @category       = options[:rule_ids].present? ? 'violation' : (options.delete(:category).presence || 'other')
     @rule_ids       = options.delete(:rule_ids).presence
     @options        = options
 
diff --git a/app/services/resolve_url_service.rb b/app/services/resolve_url_service.rb
index 37c856cf8..52f35daf3 100644
--- a/app/services/resolve_url_service.rb
+++ b/app/services/resolve_url_service.rb
@@ -4,6 +4,8 @@ class ResolveURLService < BaseService
   include JsonLdHelper
   include Authorization
 
+  USERNAME_STATUS_RE = %r{/@(?<username>#{Account::USERNAME_RE})/(?<status_id>[0-9]+)\Z}
+
   def call(url, on_behalf_of: nil)
     @url          = url
     @on_behalf_of = on_behalf_of
@@ -43,7 +45,7 @@ class ResolveURLService < BaseService
 
     # We don't have an index on `url`, so try guessing the `uri` from `url`
     parsed_url = Addressable::URI.parse(@url)
-    parsed_url.path.match(%r{/@(?<username>#{Account::USERNAME_RE})/(?<status_id>[0-9]+)\Z}) do |matched|
+    parsed_url.path.match(USERNAME_STATUS_RE) do |matched|
       parsed_url.path = "/users/#{matched[:username]}/statuses/#{matched[:status_id]}"
       scope = scope.or(Status.where(uri: parsed_url.to_s, url: @url))
     end
diff --git a/app/services/update_account_service.rb b/app/services/update_account_service.rb
index 77f794e17..71976ab00 100644
--- a/app/services/update_account_service.rb
+++ b/app/services/update_account_service.rb
@@ -28,7 +28,7 @@ class UpdateAccountService < BaseService
   end
 
   def check_links(account)
-    VerifyAccountLinksWorker.perform_async(account.id)
+    VerifyAccountLinksWorker.perform_async(account.id) if account.fields.any?(&:requires_verification?)
   end
 
   def process_hashtags(account)
diff --git a/app/views/accounts/show.html.haml b/app/views/accounts/show.html.haml
index a51dcd7be..e8fd27e10 100644
--- a/app/views/accounts/show.html.haml
+++ b/app/views/accounts/show.html.haml
@@ -8,6 +8,9 @@
   %link{ rel: 'alternate', type: 'application/rss+xml', href: @rss_url }/
   %link{ rel: 'alternate', type: 'application/activity+json', href: ActivityPub::TagManager.instance.uri_for(@account) }/
 
+  - @account.fields.select(&:verifiable?).each do |field|
+    %link{ rel: 'me', type: 'text/html', href: field.value }/
+
   = opengraph 'og:type', 'profile'
   = render 'og', account: @account, url: short_account_url(@account, only_path: false)
 
diff --git a/app/workers/admin/account_deletion_worker.rb b/app/workers/admin/account_deletion_worker.rb
index 82f269ad6..6e0eb331b 100644
--- a/app/workers/admin/account_deletion_worker.rb
+++ b/app/workers/admin/account_deletion_worker.rb
@@ -3,7 +3,7 @@
 class Admin::AccountDeletionWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull'
+  sidekiq_options queue: 'pull', lock: :until_executed
 
   def perform(account_id)
     DeleteAccountService.new.call(Account.find(account_id), reserve_username: true, reserve_email: true)
diff --git a/app/workers/scheduler/suspended_user_cleanup_scheduler.rb b/app/workers/scheduler/suspended_user_cleanup_scheduler.rb
new file mode 100644
index 000000000..50768f83c
--- /dev/null
+++ b/app/workers/scheduler/suspended_user_cleanup_scheduler.rb
@@ -0,0 +1,38 @@
+# frozen_string_literal: true
+
+class Scheduler::SuspendedUserCleanupScheduler
+  include Sidekiq::Worker
+
+  # Each processed deletion request may enqueue an enormous
+  # amount of jobs in the `pull` queue, so only enqueue when
+  # the queue is empty or close to being so.
+  MAX_PULL_SIZE = 50
+
+  # Since account deletion is very expensive, we want to avoid
+  # overloading the server by queing too much at once.
+  # This job runs approximately once per 2 minutes, so with a
+  # value of `MAX_DELETIONS_PER_JOB` of 10, a server can
+  # handle the deletion of 7200 accounts per day, provided it
+  # has the capacity for it.
+  MAX_DELETIONS_PER_JOB = 10
+
+  sidekiq_options retry: 0
+
+  def perform
+    return if Sidekiq::Queue.new('pull').size > MAX_PULL_SIZE
+
+    clean_suspended_accounts!
+  end
+
+  private
+
+  def clean_suspended_accounts!
+    # This should be fine because we only process a small amount of deletion requests at once and
+    # `id` and `created_at` should follow the same order.
+    AccountDeletionRequest.reorder(id: :asc).take(MAX_DELETIONS_PER_JOB).each do |deletion_request|
+      next unless deletion_request.created_at < AccountDeletionRequest::DELAY_TO_DELETION.ago
+
+      Admin::AccountDeletionWorker.perform_async(deletion_request.account_id)
+    end
+  end
+end
diff --git a/app/workers/scheduler/user_cleanup_scheduler.rb b/app/workers/scheduler/user_cleanup_scheduler.rb
index 7a6995a1f..63f9ed78c 100644
--- a/app/workers/scheduler/user_cleanup_scheduler.rb
+++ b/app/workers/scheduler/user_cleanup_scheduler.rb
@@ -7,7 +7,6 @@ class Scheduler::UserCleanupScheduler
 
   def perform
     clean_unconfirmed_accounts!
-    clean_suspended_accounts!
     clean_discarded_statuses!
   end
 
@@ -22,12 +21,6 @@ class Scheduler::UserCleanupScheduler
     end
   end
 
-  def clean_suspended_accounts!
-    AccountDeletionRequest.where('created_at <= ?', AccountDeletionRequest::DELAY_TO_DELETION.ago).reorder(nil).find_each do |deletion_request|
-      Admin::AccountDeletionWorker.perform_async(deletion_request.account_id)
-    end
-  end
-
   def clean_discarded_statuses!
     Status.unscoped.discarded.where('deleted_at <= ?', 30.days.ago).find_in_batches do |statuses|
       RemovalWorker.push_bulk(statuses) do |status|
diff --git a/app/workers/verify_account_links_worker.rb b/app/workers/verify_account_links_worker.rb
index 8114d59be..f606e6c26 100644
--- a/app/workers/verify_account_links_worker.rb
+++ b/app/workers/verify_account_links_worker.rb
@@ -3,14 +3,13 @@
 class VerifyAccountLinksWorker
   include Sidekiq::Worker
 
-  sidekiq_options queue: 'pull', retry: false, lock: :until_executed
+  sidekiq_options queue: 'default', retry: false, lock: :until_executed
 
   def perform(account_id)
     account = Account.find(account_id)
 
     account.fields.each do |field|
-      next unless !field.verified? && field.verifiable?
-      VerifyLinkService.new.call(field)
+      VerifyLinkService.new.call(field) if field.requires_verification?
     end
 
     account.save! if account.changed?
diff --git a/chart/Chart.yaml b/chart/Chart.yaml
index b1138b594..6120a7f3a 100644
--- a/chart/Chart.yaml
+++ b/chart/Chart.yaml
@@ -20,7 +20,7 @@ version: 2.0.0
 # This is the version number of the application being deployed. This version number should be
 # incremented each time you make changes to the application. Versions are not expected to
 # follow Semantic Versioning. They should reflect the version the application is using.
-appVersion: 3.3.0
+appVersion: v3.5.3
 
 dependencies:
   - name: elasticsearch
diff --git a/chart/templates/cronjob-media-remove.yaml b/chart/templates/cronjob-media-remove.yaml
index 1dced69ec..d3566e32d 100644
--- a/chart/templates/cronjob-media-remove.yaml
+++ b/chart/templates/cronjob-media-remove.yaml
@@ -27,7 +27,7 @@ spec:
               requiredDuringSchedulingIgnoredDuringExecution:
               - labelSelector:
                   matchExpressions:
-                    - key: component
+                    - key: app.kubernetes.io/part-of
                       operator: In
                       values:
                         - rails
@@ -59,7 +59,7 @@ spec:
                   valueFrom:
                     secretKeyRef:
                       name: {{ template "mastodon.postgresql.secretName" . }}
-                      key: postgres-password
+                      key: password
                 - name: "REDIS_PASSWORD"
                   valueFrom:
                     secretKeyRef:
diff --git a/chart/templates/deployment-sidekiq.yaml b/chart/templates/deployment-sidekiq.yaml
index 4b108d79d..dd707a4d0 100644
--- a/chart/templates/deployment-sidekiq.yaml
+++ b/chart/templates/deployment-sidekiq.yaml
@@ -11,18 +11,20 @@ spec:
   selector:
     matchLabels:
       {{- include "mastodon.selectorLabels" . | nindent 6 }}
-      component: rails
+      app.kubernetes.io/component: sidekiq
+      app.kubernetes.io/part-of: rails
   template:
     metadata:
-    {{- with .Values.podAnnotations }}
       annotations:
+      {{- with .Values.podAnnotations }}
         {{- toYaml . | nindent 8 }}
+      {{- end }}
         # roll the pods to pick up any db migrations
         rollme: {{ randAlphaNum 5 | quote }}
-    {{- end }}
       labels:
         {{- include "mastodon.selectorLabels" . | nindent 8 }}
-        component: rails
+        app.kubernetes.io/component: sidekiq
+        app.kubernetes.io/part-of: rails
     spec:
       {{- with .Values.imagePullSecrets }}
       imagePullSecrets:
@@ -40,7 +42,7 @@ spec:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
-                - key: component
+                - key: app.kubernetes.io/part-of
                   operator: In
                   values:
                     - rails
@@ -76,7 +78,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/deployment-streaming.yaml b/chart/templates/deployment-streaming.yaml
index 564f53f43..7f03c9e23 100644
--- a/chart/templates/deployment-streaming.yaml
+++ b/chart/templates/deployment-streaming.yaml
@@ -11,6 +11,7 @@ spec:
   selector:
     matchLabels:
       {{- include "mastodon.selectorLabels" . | nindent 6 }}
+      app.kubernetes.io/component: streaming
   template:
     metadata:
     {{- with .Values.podAnnotations }}
@@ -19,6 +20,7 @@ spec:
     {{- end }}
       labels:
         {{- include "mastodon.selectorLabels" . | nindent 8 }}
+        app.kubernetes.io/component: streaming
     spec:
       {{- with .Values.imagePullSecrets }}
       imagePullSecrets:
@@ -44,7 +46,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/deployment-web.yaml b/chart/templates/deployment-web.yaml
index 0878aa9b8..fb58b1ade 100644
--- a/chart/templates/deployment-web.yaml
+++ b/chart/templates/deployment-web.yaml
@@ -11,18 +11,20 @@ spec:
   selector:
     matchLabels:
       {{- include "mastodon.selectorLabels" . | nindent 6 }}
-      component: rails
+      app.kubernetes.io/component: web
+      app.kubernetes.io/part-of: rails
   template:
     metadata:
-    {{- with .Values.podAnnotations }}
       annotations:
+      {{- with .Values.podAnnotations }}
         {{- toYaml . | nindent 8 }}
+      {{- end }}
         # roll the pods to pick up any db migrations
         rollme: {{ randAlphaNum 5 | quote }}
-    {{- end }}
       labels:
         {{- include "mastodon.selectorLabels" . | nindent 8 }}
-        component: rails
+        app.kubernetes.io/component: web
+        app.kubernetes.io/part-of: rails
     spec:
       {{- with .Values.imagePullSecrets }}
       imagePullSecrets:
@@ -62,7 +64,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/ingress.yaml b/chart/templates/ingress.yaml
index 7295297fb..811d98a22 100644
--- a/chart/templates/ingress.yaml
+++ b/chart/templates/ingress.yaml
@@ -47,9 +47,9 @@ spec:
               servicePort: {{ $webPort }}
               {{- end }}
             {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }}
-            pathType: ImplementationSpecific
+            pathType: Prefix
             {{- end }}
-          - path: {{ .path }}api/v1/streaming
+          - path: {{ .path }}api/v1/streaming/
             backend:
               {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }}
               service:
@@ -61,7 +61,7 @@ spec:
               servicePort: {{ $streamingPort }}
               {{- end }}
             {{- if or ($.Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress") (not ($.Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress")) }}
-            pathType: ImplementationSpecific
+            pathType: Exact
             {{- end }}
           {{- end }}
     {{- end }}
diff --git a/chart/templates/job-assets-precompile.yaml b/chart/templates/job-assets-precompile.yaml
index 37009822e..9bdec2ab7 100644
--- a/chart/templates/job-assets-precompile.yaml
+++ b/chart/templates/job-assets-precompile.yaml
@@ -27,7 +27,7 @@ spec:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
-                - key: component
+                - key: app.kubernetes.io/part-of
                   operator: In
                   values:
                     - rails
@@ -60,7 +60,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/job-chewy-upgrade.yaml b/chart/templates/job-chewy-upgrade.yaml
index a4bac63ab..556133dd3 100644
--- a/chart/templates/job-chewy-upgrade.yaml
+++ b/chart/templates/job-chewy-upgrade.yaml
@@ -28,7 +28,7 @@ spec:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
-                - key: component
+                - key: app.kubernetes.io/part-of
                   operator: In
                   values:
                     - rails
@@ -61,7 +61,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/job-create-admin.yaml b/chart/templates/job-create-admin.yaml
index c1c0bdaed..94d39dcbb 100644
--- a/chart/templates/job-create-admin.yaml
+++ b/chart/templates/job-create-admin.yaml
@@ -28,7 +28,7 @@ spec:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
-                - key: component
+                - key: app.kubernetes.io/part-of
                   operator: In
                   values:
                     - rails
@@ -66,7 +66,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/job-db-migrate.yaml b/chart/templates/job-db-migrate.yaml
index 848ed3644..e1544d2b6 100644
--- a/chart/templates/job-db-migrate.yaml
+++ b/chart/templates/job-db-migrate.yaml
@@ -27,7 +27,7 @@ spec:
           requiredDuringSchedulingIgnoredDuringExecution:
           - labelSelector:
               matchExpressions:
-                - key: component
+                - key: app.kubernetes.io/part-of
                   operator: In
                   values:
                     - rails
@@ -60,7 +60,7 @@ spec:
               valueFrom:
                 secretKeyRef:
                   name: {{ template "mastodon.postgresql.secretName" . }}
-                  key: postgres-password
+                  key: password
             - name: "REDIS_PASSWORD"
               valueFrom:
                 secretKeyRef:
diff --git a/chart/templates/secrets.yaml b/chart/templates/secrets.yaml
index 2a91c3493..d7ac936ce 100644
--- a/chart/templates/secrets.yaml
+++ b/chart/templates/secrets.yaml
@@ -37,7 +37,7 @@ data:
   {{- end }}
   {{- if not .Values.postgresql.enabled }}
   {{- if not .Values.postgresql.auth.existingSecret }}
-  postgres-password: "{{ .Values.postgresql.auth.password | b64enc }}"
+  password: "{{ .Values.postgresql.auth.password | b64enc }}"
   {{- end }}
   {{- end }}
 {{- end -}}
diff --git a/chart/templates/service-streaming.yaml b/chart/templates/service-streaming.yaml
index a005e617c..bade7b1e5 100644
--- a/chart/templates/service-streaming.yaml
+++ b/chart/templates/service-streaming.yaml
@@ -13,3 +13,4 @@ spec:
       name: streaming
   selector:
     {{- include "mastodon.selectorLabels" . | nindent 4 }}
+    app.kubernetes.io/component: streaming
diff --git a/chart/templates/service-web.yaml b/chart/templates/service-web.yaml
index 3563fde70..acf1233dc 100644
--- a/chart/templates/service-web.yaml
+++ b/chart/templates/service-web.yaml
@@ -13,3 +13,4 @@ spec:
       name: http
   selector:
     {{- include "mastodon.selectorLabels" . | nindent 4 }}
+    app.kubernetes.io/component: web
diff --git a/chart/values.yaml b/chart/values.yaml
index 9125d1a16..170025b50 100644
--- a/chart/values.yaml
+++ b/chart/values.yaml
@@ -8,7 +8,7 @@ image:
   # built from the most recent commit
   #
   # tag: latest
-  tag: v3.5.2
+  tag: ""
   # use `Always` when using `latest` tag
   pullPolicy: IfNotPresent
 
@@ -141,13 +141,15 @@ postgresql:
   # postgresqlHostname: preexisting-postgresql
   auth:
     database: mastodon_production
-    username: postgres
+    username: mastodon
     # you must set a password; the password generated by the postgresql chart will
     # be rotated on each upgrade:
     # https://github.com/bitnami/charts/tree/master/bitnami/postgresql#upgrade
     password: ""
+    # Set same value as above
+    postgresPassword: ""
     # you can also specify the name of an existing Secret
-    # with a key of postgres-password set to the password you want
+    # with a key of password set to the password you want
     existingSecret: ""
 
 # https://github.com/bitnami/charts/tree/master/bitnami/redis#parameters
diff --git a/config/application.rb b/config/application.rb
index 2e54eb6f6..4d6c7ebf1 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -163,6 +163,7 @@ module Mastodon
     # config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
 
     config.active_job.queue_adapter = :sidekiq
+    config.action_mailer.deliver_later_queue_name = 'mailers'
 
     config.middleware.use Rack::Attack
     config.middleware.use Mastodon::RackMiddleware
diff --git a/config/deploy.rb b/config/deploy.rb
index 2bdb11595..b69a83067 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -3,7 +3,7 @@
 lock '3.17.1'
 
 set :repo_url, ENV.fetch('REPO', 'https://github.com/mastodon/mastodon.git')
-set :branch, ENV.fetch('BRANCH', 'master')
+set :branch, ENV.fetch('BRANCH', 'main')
 
 set :application, 'mastodon'
 set :rbenv_type, :user
diff --git a/config/locales/activerecord.cy.yml b/config/locales/activerecord.cy.yml
index b007364df..61cb24161 100644
--- a/config/locales/activerecord.cy.yml
+++ b/config/locales/activerecord.cy.yml
@@ -19,8 +19,20 @@ cy:
         account:
           attributes:
             username:
-              invalid: dim ond llythrennau, rhifau a tanlinellau
+              invalid: gall gynnwys dim ond llythrennau, rhifau a tanlinellau
               reserved: yn neilltuedig
+        admin/webhook:
+          attributes:
+            url:
+              invalid: nid yw'n URL dilys
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: nid yw'n URL dilys
+        import:
+          attributes:
+            data:
+              malformed: wedi'i gamffurfio
         status:
           attributes:
             reblog:
@@ -28,5 +40,16 @@ cy:
         user:
           attributes:
             email:
-              blocked: yn defnyddio darparwr e-bost nas caniateir
-              unreachable: nid yw'n bodoli
+              blocked: yn defnyddio darparwr e-bost nd yw'n cael ei ganiatáu
+              unreachable: nid yw i weld yn bodoli
+            role_id:
+              elevated: nid yw'n gallu bod yn uwch na'ch rôl presennol
+        user_role:
+          attributes:
+            permissions_as_keys:
+              dangerous: yn cynnwys caniatâd nad ydynt yn ddiogel ar gyfer rôl sail
+              elevated: yn methu a chynnwys caniatâd nad yw eich rôl cyfredol yn ei gynnwys
+              own_role: nid oes modd ei newid gyda'ch rôl cyfredol
+            position:
+              elevated: nid yw'n gallu bod yn uwch na'ch rôl cyfredol
+              own_role: nid oes modd ei newid gyda'ch rôl cyfredol
diff --git a/config/locales/activerecord.en-GB.yml b/config/locales/activerecord.en-GB.yml
index ef03d1810..c1a7d39c8 100644
--- a/config/locales/activerecord.en-GB.yml
+++ b/config/locales/activerecord.en-GB.yml
@@ -1 +1,55 @@
+---
 en-GB:
+  activerecord:
+    attributes:
+      poll:
+        expires_at: Deadline
+        options: Choices
+      user:
+        agreement: Service agreement
+        email: E-mail address
+        locale: Locale
+        password: Password
+      user/account:
+        username: Username
+      user/invite_request:
+        text: Reason
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              invalid: must contain only letters, numbers and underscores
+              reserved: is reserved
+        admin/webhook:
+          attributes:
+            url:
+              invalid: is not a valid URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: is not a valid URL
+        import:
+          attributes:
+            data:
+              malformed: is malformed
+        status:
+          attributes:
+            reblog:
+              taken: of post already exists
+        user:
+          attributes:
+            email:
+              blocked: uses a disallowed e-mail provider
+              unreachable: does not seem to exist
+            role_id:
+              elevated: cannot be higher than your current role
+        user_role:
+          attributes:
+            permissions_as_keys:
+              dangerous: include permissions that are not safe for the base role
+              elevated: cannot include permissions your current role does not possess
+              own_role: cannot be changed with your current role
+            position:
+              elevated: cannot be higher than your current role
+              own_role: cannot be changed with your current role
diff --git a/config/locales/activerecord.fy.yml b/config/locales/activerecord.fy.yml
index a3398cfba..cc10d817d 100644
--- a/config/locales/activerecord.fy.yml
+++ b/config/locales/activerecord.fy.yml
@@ -3,8 +3,10 @@ fy:
   activerecord:
     attributes:
       poll:
+        expires_at: Deadline
         options: Karren
       user:
+        agreement: Tsjinstbetingsten
         email: E-mailadres
         locale: Taal
         password: Wachtwurd
@@ -18,7 +20,36 @@ fy:
           attributes:
             username:
               invalid: mei allinnich letters, nûmers en ûnderstreekjes befetsje
+              reserved: reservearre
+        admin/webhook:
+          attributes:
+            url:
+              invalid: is in ûnjildige URL
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: is in ûnjildige URL
+        import:
+          attributes:
+            data:
+              malformed: hat de ferkearde opmaak
+        status:
+          attributes:
+            reblog:
+              taken: fan berjocht bestiet al
         user:
           attributes:
             email:
+              blocked: brûkt in net tastiene e-mailprovider
               unreachable: liket net te bestean
+            role_id:
+              elevated: kin net heger wêze as dyn aktuele rol
+        user_role:
+          attributes:
+            permissions_as_keys:
+              dangerous: rjochten tafoegje dy’t net feilich binne foar de basisrol
+              elevated: kin gjin rjochten tafoegje dy’t dyn aktuele rol net besit
+              own_role: kin net mei dyn aktuele rol wizige wurde
+            position:
+              elevated: kin net heger wêze as dyn aktuele rol
+              own_role: kin net mei dyn aktuele rol wizige wurde
diff --git a/config/locales/activerecord.ga.yml b/config/locales/activerecord.ga.yml
index 64f3e57f8..236cc479e 100644
--- a/config/locales/activerecord.ga.yml
+++ b/config/locales/activerecord.ga.yml
@@ -3,8 +3,10 @@ ga:
   activerecord:
     attributes:
       poll:
+        expires_at: Sprioc-am
         options: Roghanna
       user:
+        agreement: Comhaontú seirbhísí
         email: Seoladh ríomhphoist
         locale: Láthair
         password: Pasfhocal
@@ -12,3 +14,13 @@ ga:
         username: Ainm úsáideora
       user/invite_request:
         text: Fáth
+    errors:
+      models:
+        account:
+          attributes:
+            username:
+              reserved: in áirithe
+        import:
+          attributes:
+            data:
+              malformed: míchumtha
diff --git a/config/locales/activerecord.he.yml b/config/locales/activerecord.he.yml
index 7ad45964f..6fe455678 100644
--- a/config/locales/activerecord.he.yml
+++ b/config/locales/activerecord.he.yml
@@ -29,10 +29,14 @@ he:
           attributes:
             website:
               invalid: היא כתובת לא חוקית
+        import:
+          attributes:
+            data:
+              malformed: בתצורה לא תואמת
         status:
           attributes:
             reblog:
-              taken: של החצרוץ כבר קיים
+              taken: של ההודעה כבר קיים
         user:
           attributes:
             email:
diff --git a/config/locales/activerecord.no.yml b/config/locales/activerecord.no.yml
index 43b589745..eb1793ca7 100644
--- a/config/locales/activerecord.no.yml
+++ b/config/locales/activerecord.no.yml
@@ -6,21 +6,50 @@
         expires_at: Tidsfrist
         options: Valg
       user:
-        email: E-mail address
-        locale: Område
+        agreement: Tjenesteavtale
+        email: E-postadresse
+        locale: Landstandard
         password: Passord
       user/account:
         username: Brukernavn
       user/invite_request:
-        text: Grunn
+        text: Årsak
     errors:
       models:
         account:
           attributes:
             username:
-              invalid: bare bokstaver, tall og understreker
+              invalid: må inneholde kun bokstaver, tall og understrekingstegn
               reserved: er reservert
+        admin/webhook:
+          attributes:
+            url:
+              invalid: er ikke en gyldig nettadresse
+        doorkeeper/application:
+          attributes:
+            website:
+              invalid: er ikke en gyldig nettadresse
+        import:
+          attributes:
+            data:
+              malformed: er feilformet
         status:
           attributes:
             reblog:
-              taken: av status eksisterer allerede
+              taken: av innlegg finnes fra før
+        user:
+          attributes:
+            email:
+              blocked: bruker en forbudt e-postleverandør
+              unreachable: ser ikke ut til å finnes
+            role_id:
+              elevated: kan ikke være høyere enn din nåværende rolle
+        user_role:
+          attributes:
+            permissions_as_keys:
+              dangerous: inkluder tillatelser som ikke er trygge for grunn-rollen
+              elevated: kan ikke inneholde rettigheter som din nåværende rolle ikke innehar
+              own_role: kan ikke endres med din nåværende rolle
+            position:
+              elevated: kan ikke være høyere enn din nåværende rolle
+              own_role: kan ikke endres med din nåværende rolle
diff --git a/config/locales/br.yml b/config/locales/br.yml
index 2de887b6d..a6b971eb7 100644
--- a/config/locales/br.yml
+++ b/config/locales/br.yml
@@ -14,12 +14,12 @@ br:
     last_active: oberiantiz ziwezhañ
     nothing_here: N'eus netra amañ !
     posts:
-      few: Toud
-      many: Toud
-      one: Toud
-      other: Toud
-      two: Toud
-    posts_tab_heading: Toudoù
+      few: Kannadoù
+      many: Kannadoù
+      one: Kannad
+      other: Kannadoù
+      two: Kannadoù
+    posts_tab_heading: Kannadoù
   admin:
     accounts:
       add_email_domain_block: Stankañ an domani postel
@@ -29,10 +29,10 @@ br:
       by_domain: Domani
       change_email:
         changed_msg: Chomlec'h postel kemmet !
-        current_email: Postel bremanel
-        label: Kemm ar postel
+        current_email: Postel a vremañ
+        label: Kemmañ ar postel
         new_email: Postel nevez
-        submit: Kemm ar postel
+        submit: Kemmañ ar postel
       deleted: Dilamet
       domain: Domani
       edit: Aozañ
@@ -55,12 +55,17 @@ br:
       reset: Adderaouekaat
       reset_password: Adderaouekaat ar ger-tremen
       search: Klask
+      statuses: Kannadoù
       suspended: Astalet
       title: Kontoù
       username: Anv
     action_logs:
       action_types:
-        destroy_status: Dilemel ar statud
+        destroy_status: Dilemel ar c'hannad
+        update_status: Hizivaat ar c'hannad
+      actions:
+        destroy_status_html: Dilamet eo bet kannad %{target} gant %{name}
+        update_status_html: Hizivaet eo bet kannad %{target} gant %{name}
     announcements:
       new:
         create: Sevel ur gemenn
@@ -95,6 +100,8 @@ br:
         create: Ouzhpenniñ un domani
     instances:
       by_domain: Domani
+      dashboard:
+        instance_statuses_measure: kannadoù stoket
       moderation:
         all: Pep tra
     invites:
@@ -117,6 +124,7 @@ br:
           other: "%{count} a notennoù"
           two: "%{count} a notennoù"
       are_you_sure: Ha sur oc'h?
+      delete_and_resolve: Dilemel ar c'hannadoù
       notes:
         delete: Dilemel
       status: Statud
@@ -126,6 +134,13 @@ br:
         all: D'an holl dud
     statuses:
       deleted: Dilamet
+      open: Digeriñ ar c'hannad
+      original_status: Kannad orin
+      status_changed: Kannad kemmet
+      title: Kannadoù ar gont
+    strikes:
+      actions:
+        delete_statuses: Dilamet eo bet kannadoù %{target} gant %{name}
     warning_presets:
       add_new: Ouzhpenniñ unan nevez
       delete: Dilemel
@@ -186,7 +201,16 @@ br:
       notifications: Kemennoù
     index:
       delete: Dilemel
+      statuses:
+        few: "%{count} a gannadoù"
+        many: "%{count} a gannadoù"
+        one: "%{count} c'hannad"
+        other: "%{count} a gannadoù"
+        two: "%{count} gannad"
       title: Siloù
+    statuses:
+      index:
+        title: Kannadoù silet
   generic:
     all: Pep tra
     copy: Eilañ
@@ -207,9 +231,17 @@ br:
       title: Heulier nevez
     mention:
       action: Respont
+    reblog:
+      subject: Skignet ho kannad gant %{name}
+    status:
+      subject: Embannet ez eus bet traoù gant %{name}
+    update:
+      subject: Kemmet eo bet ur c'hannad gant %{name}
   otp_authentication:
     enable: Gweredekaat
     setup: Kefluniañ
+  preferences:
+    posting_defaults: Arventennoù embann dre ziouer
   relationships:
     followers: Heulier·ezed·ien
     following: O heuliañ
@@ -257,7 +289,7 @@ br:
     visibilities:
       public: Publik
   stream_entries:
-    pinned: Toud spilhennet
+    pinned: Kannad spilhennet
   themes:
     default: Mastodoñ (Teñval)
     mastodon-light: Mastodoñ (Sklaer)
@@ -272,6 +304,7 @@ br:
     edit: Aozañ
   user_mailer:
     warning:
+      statuses: 'Kannadoù meneget :'
       title:
         none: Diwall
     welcome:
diff --git a/config/locales/ca.yml b/config/locales/ca.yml
index f57d7cc09..b75af2463 100644
--- a/config/locales/ca.yml
+++ b/config/locales/ca.yml
@@ -724,10 +724,10 @@ ca:
         title: Contingut multimèdia
       metadata: Metadada
       no_status_selected: No s’han canviat els estatus perquè cap no ha estat seleccionat
-      open: Obrir apunt
-      original_status: Apunt original
+      open: Obrir publicació
+      original_status: Publicació original
       reblogs: Impulsos
-      status_changed: Apunt canviat
+      status_changed: Publicació canviada
       title: Estats del compte
       trending: Tendència
       visibility: Visibilitat
@@ -792,7 +792,7 @@ ca:
         description_html: Aquestes son publicacions que el teu servidor veu i que ara mateix s'estan compartint i afavorint molt. Poden ajudar als teus nous usuaris i als que retornen a trobar més gent a qui seguir. Cap publicació es mostra publicament fins que no aprovis l'autor i l'autor permeti que el seu compte sigui sugerit a altres. També pots aceptar o rebutjar publicacions individuals.
         disallow: Rebutja publicació
         disallow_account: Rebutja autor
-        no_status_selected: No s'ha canviat els apunts en tendència perquè cap ha estat seleccionat
+        no_status_selected: No s'han canviat les publicacions en tendència perquè cap ha estat seleccionada
         not_discoverable: L'autor no ha activat poder ser detectable
         shared_by:
           one: Compartit o afavorit una vegada
@@ -1099,8 +1099,8 @@ ca:
     edit:
       add_keyword: Afegeix paraula clau
       keywords: Paraules clau
-      statuses: Apunts individuals
-      statuses_hint_html: Aquest filtre aplica als apunts individuals seleccionats independentment de si coincideixen amb les paraules clau de sota. <a href="%{path}">Revisa o elimina els apunts des d'el filtre</a>.
+      statuses: Publicacions individuals
+      statuses_hint_html: Aquest filtre s'aplica a la selecció de publicacions individuals, independentment de si coincideixen amb les paraules clau següents. <a href="%{path}">Revisa o elimina publicacions del filtre</a>.
       title: Editar filtre
     errors:
       deprecated_api_multiple_keywords: Aquests paràmetres no poden ser canviats des d'aquesta aplicació perquè apliquen a més d'un filtre per paraula clau. Utilitza una aplicació més recent o la interfície web.
@@ -1115,11 +1115,11 @@ ca:
         one: "%{count} paraula clau"
         other: "%{count} paraules clau"
       statuses:
-        one: "%{count} apunt"
-        other: "%{count} apunts"
+        one: "%{count} publicació"
+        other: "%{count} publicacions"
       statuses_long:
-        one: "%{count} apunt individual oculta"
-        other: "%{count} apunts individuals ocultats"
+        one: "%{count} publicació individual ocultada"
+        other: "%{count} publicacions individuals ocultades"
       title: Filtres
     new:
       save: Desa el nou filtre
@@ -1129,8 +1129,8 @@ ca:
       batch:
         remove: Eliminar del filtre
       index:
-        hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més apunts a aquest filtre des de l'interfície Web.
-        title: Apunts filtrats
+        hint: Aquest filtre aplica als apunts seleccionats independentment d'altres criteris. Pots afegir més publicacions a aquest filtre des de la interfície Web.
+        title: Publicacions filtrades
   footer:
     trending_now: En tendència
   generic:
diff --git a/config/locales/cs.yml b/config/locales/cs.yml
index 33fed4ee9..eb096ff33 100644
--- a/config/locales/cs.yml
+++ b/config/locales/cs.yml
@@ -247,6 +247,7 @@ cs:
         create_user_role_html: "%{name} vytvořil %{target} roli"
         demote_user_html: Uživatel %{name} degradoval uživatele %{target}
         destroy_announcement_html: Uživatel %{name} odstranil oznámení %{target}
+        destroy_canonical_email_block_html: "%{name} odblokoval e-mail s hashem %{target}"
         destroy_custom_emoji_html: "%{name} odstranil emoji %{target}"
         destroy_domain_allow_html: Uživatel %{name} zakázal federaci s doménou %{target}
         destroy_domain_block_html: Uživatel %{name} odblokoval doménu %{target}
@@ -269,6 +270,7 @@ cs:
         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}
+        resend_user_html: "%{name} znovu odeslal potvrzovací e-mail pro %{target}"
         reset_password_user_html: Uživatel %{name} obnovil heslo uživatele %{target}
         resolve_report_html: Uživatel %{name} vyřešil hlášení %{target}
         sensitive_account_html: "%{name} označil média účtu %{target} jako citlivá"
@@ -703,6 +705,7 @@ cs:
         preamble: Přizpůsobte si webové rozhraní Mastodon.
         title: Vzhled
       branding:
+        preamble: Značka vašeho serveru jej odlišuje od ostatních serverů v síti. Tyto informace se mohou zobrazovat v různých prostředích, například ve webovém rozhraní Mastodonu, v nativních aplikacích, v náhledech odkazů na jiných webových stránkách a v aplikacích pro zasílání zpráv atd. Z tohoto důvodu je nejlepší, aby tyto informace byly jasné, krátké a stručné.
         title: Značka
       content_retention:
         preamble: Určuje, jak je obsah generovaný uživatelem uložen v Mastodonu.
@@ -749,6 +752,7 @@ cs:
       no_status_selected: Nebyly změněny žádné příspěvky, neboť žádné nebyly vybrány
       open: Otevřít příspěvek
       original_status: Původní příspěvek
+      reblogs: Boosty
       status_changed: Příspěvek změněn
       title: Příspěvky účtu
       trending: Populární
@@ -983,6 +987,7 @@ cs:
       title: Nastavení
     sign_up:
       preamble: S účtem na tomto serveru Mastodon budete moci sledovat jakoukoliv jinou osobu v síti bez ohledu na to, kde je jejich účet hostován.
+      title: Pojďme vás nastavit na %{domain}.
     status:
       account_status: Stav účtu
       confirming: Čeká na dokončení potvrzení e-mailu.
@@ -1172,6 +1177,11 @@ cs:
     none: Žádné
     order_by: Seřadit podle
     save_changes: Uložit změny
+    select_all_matching_items:
+      few: Vybrat %{count} položky odpovídající vašemu hledání.
+      many: Vybrat všech %{count} položek odpovídajících vašemu hledání.
+      one: Vybrat %{count} položku odpovídající vašemu hledání.
+      other: Vybrat všech %{count} položek odpovídajících vašemu hledání.
     today: dnes
     validation_errors:
       few: Něco ještě není úplně v pořádku! Zkontrolujte prosím %{count} chyby uvedené níže
diff --git a/config/locales/da.yml b/config/locales/da.yml
index 7df261a4f..b09bb77f7 100644
--- a/config/locales/da.yml
+++ b/config/locales/da.yml
@@ -686,7 +686,7 @@ da:
         title: Indholdsopbevaring
       discovery:
         follow_recommendations: Følg-anbefalinger
-        preamble: At vise interessant indhold er vital ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren.
+        preamble: At vise interessant indhold er vitalt ifm. at få nye brugere om bord, som måske ikke kender nogen på Mastodon. Styr, hvordan forskellige opdagelsesfunktioner fungerer på serveren.
         profile_directory: Profiloversigt
         public_timelines: Offentlige tidslinjer
         title: Opdagelse
diff --git a/config/locales/de.yml b/config/locales/de.yml
index 14bbaf51c..d97b31640 100644
--- a/config/locales/de.yml
+++ b/config/locales/de.yml
@@ -1472,7 +1472,7 @@ de:
     show_more: Mehr anzeigen
     show_newer: Neuere anzeigen
     show_older: Ältere anzeigen
-    show_thread: Zeige Unterhaltung
+    show_thread: Unterhaltung anzeigen
     sign_in_to_participate: Melde dich an, um an der Konversation teilzuhaben
     title: '%{name}: "%{quote}"'
     visibilities:
diff --git a/config/locales/devise.eo.yml b/config/locales/devise.eo.yml
index 1b7fbd198..eaee27b88 100644
--- a/config/locales/devise.eo.yml
+++ b/config/locales/devise.eo.yml
@@ -24,11 +24,11 @@ eo:
         explanation_when_pending: Vi petis inviton al %{host} per ĉi tiu retpoŝta adreso. Kiam vi konfirmas vian retpoŝtan adreson, ni revizios vian kandidatiĝon. Vi ne povas ensaluti ĝis tiam. Se via kandidatiĝo estas rifuzita, viaj datumoj estos forigitaj, do neniu alia ago estos postulita de vi. Se tio ne estis vi, bonvolu ignori ĉi tiun retpoŝton.
         extra_html: Bonvolu rigardi <a href="%{terms_path}">la regulojn de la servilo</a> kaj <a href="%{policy_path}">niajn uzkondiĉojn</a>.
         subject: 'Mastodon: Konfirmaj instrukcioj por %{instance}'
-        title: Konfirmi retadreson
+        title: Konfirmi retpoŝton
       email_changed:
-        explanation: 'La retadreso de via konto ŝanĝiĝas al:'
+        explanation: 'La retpoŝtadreso de via konto ŝanĝiĝas al:'
         extra: Se vi ne volis ŝanĝi vian retadreson, iu verŝajne aliris al via konto. Bonvolu tuj ŝanĝi vian pasvorton aŭ kontakti la administranton de la servilo, se vi estas blokita ekster via konto.
-        subject: 'Mastodon: Retadreso ŝanĝita'
+        subject: 'Mastodon: Retpoŝton ŝanĝiĝis'
         title: Nova retadreso
       password_change:
         explanation: La pasvorto de via konto estis ŝanĝita.
@@ -36,10 +36,10 @@ eo:
         subject: 'Mastodon: Pasvorto ŝanĝita'
         title: Pasvorto ŝanĝita
       reconfirmation_instructions:
-        explanation: Retajpu la novan adreson por ŝanĝi vian retadreson.
+        explanation: Retajpu la novan adreson por ŝanĝi vian retpoŝtadreson.
         extra: Se ĉi tiu ŝanĝo ne estis komencita de vi, bonvolu ignori ĉi tiun retmesaĝon. La retadreso por la Mastodon-konto ne ŝanĝiĝos se vi ne aliras la supran ligilon.
-        subject: 'Mastodon: Konfirmi retadreson por %{instance}'
-        title: Kontrolu retadreson
+        subject: 'Mastodon: Konfirmi retpoŝton por %{instance}'
+        title: Kontrolu retpoŝtadreson
       reset_password_instructions:
         action: Ŝanĝi pasvorton
         explanation: Vi petis novan pasvorton por via konto.
@@ -53,7 +53,7 @@ eo:
       two_factor_enabled:
         explanation: Dufaktora aŭtentigo sukcese ebligita por via akonto. Vi bezonos ĵetonon kreitan per parigitan aplikaĵon por ensaluti.
         subject: 'Mastodon: dufaktora aŭtentigo ebligita'
-        title: la du-etapa aŭtentigo estas ŝaltita
+        title: 2FA aktivigita
       two_factor_recovery_codes_changed:
         explanation: La antaŭaj reakiraj kodoj estis nuligitaj kaj novaj estis generitaj.
         subject: 'Mastodon: Reakiraj kodoj de dufaktora aŭtentigo rekreitaj'
diff --git a/config/locales/devise.gd.yml b/config/locales/devise.gd.yml
index 7b0f0a7bc..c8a34054c 100644
--- a/config/locales/devise.gd.yml
+++ b/config/locales/devise.gd.yml
@@ -92,8 +92,8 @@ gd:
       signed_up_but_inactive: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s nach deach an cunntas agad a ghnìomhachadh fhathast.
       signed_up_but_locked: Tha thu air clàradh leinn. Gidheadh, chan urrainn dhuinn do clàradh a-steach air sgàth ’s gu bheil an cunntas agad glaiste.
       signed_up_but_pending: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Nuair a bhios tu air briogadh air a’ cheangal, nì sinn lèirmheas air d’ iarrtas. Leigidh sinn fios dhut ma thèid aontachadh ris.
-      signed_up_but_unconfirmed: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Lean ris a’ cheangal ud a ghnìomhachadh a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
-      update_needs_confirmation: Chaidh an cunntas agad ùrachadh ach feumaidh sinn an seòladh puist-d ùr agad a dhearbhadh. Thoir sùil air a’ phost-d agad agus lean ris a’ cheangal dearbhaidh a dhearbhadh an t-seòlaidh puist-d ùir agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+      signed_up_but_unconfirmed: Chaidh teachdaireachd le ceangal dearbhaidh a chur dhan t-seòladh puist-d agad. Lean air a’ cheangal ud a ghnìomhachadh a’ chunntais agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
+      update_needs_confirmation: Chaidh an cunntas agad ùrachadh ach feumaidh sinn an seòladh puist-d ùr agad a dhearbhadh. Thoir sùil air a’ phost-d agad agus lean air a’ cheangal dearbhaidh a dhearbhadh an t-seòlaidh puist-d ùir agad. Thoir sùil air pasgan an spama agad mura faigh thu am post-d seo.
       updated: Chaidh an cunntas agad ùrachadh.
     sessions:
       already_signed_out: Chaidh do chlàradh a-mach.
diff --git a/config/locales/devise.no.yml b/config/locales/devise.no.yml
index 4fdc1276b..a5d6cad7a 100644
--- a/config/locales/devise.no.yml
+++ b/config/locales/devise.no.yml
@@ -3,17 +3,17 @@
   devise:
     confirmations:
       confirmed: E-postaddressen din er blitt bekreftet.
-      send_instructions: Du vil motta en e-post med instruksjoner for bekreftelse om noen få minutter.
-      send_paranoid_instructions: Hvis din e-postaddresse finnes i vår database vil du motta en e-post med instruksjoner for bekreftelse om noen få minutter.
+      send_instructions: Du vil motta en e-post med instruksjoner for bekreftelse om noen få minutter. Sjekk spam-mappen hvis du ikke mottok e-posten.
+      send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du om noen få minutter motta en e-post med instruksjoner for bekreftelse. Sjekk spam-mappen din hvis du ikke mottok e-posten.
     failure:
       already_authenticated: Du er allerede innlogget.
-      inactive: Din konto er ikke blitt aktivert ennå.
+      inactive: Kontoen din er ikke blitt aktivert ennå.
       invalid: Ugyldig %{authentication_keys} eller passord.
       last_attempt: Du har ett forsøk igjen før kontoen din låses.
-      locked: Din konto er låst.
+      locked: Kontoen din er låst.
       not_found_in_database: Ugyldig %{authentication_keys} eller passord.
       pending: Kontoen din er fortsatt under gjennomgang.
-      timeout: Økten din løp ut på tid. Logg inn på nytt for å fortsette.
+      timeout: Økten din har utløpt. Logg inn igjen for å fortsette.
       unauthenticated: Du må logge inn eller registrere deg før du kan fortsette.
       unconfirmed: Du må bekrefte e-postadressen din før du kan fortsette.
     mailer:
@@ -22,41 +22,41 @@
         action_with_app: Bekreft og gå tilbake til %{app}
         explanation: Du har laget en konto på %{host} med denne e-postadressen. Du er ett klikk unna å aktivere den. Hvis dette ikke var deg, vennligst se bort fra denne e-posten.
         explanation_when_pending: Du søkte om en invitasjon til %{host} med denne E-postadressen. Når du har bekreftet E-postadressen din, vil vi gå gjennom søknaden din. Du kan logge på for å endre dine detaljer eller slette kontoen din, men du har ikke tilgang til de fleste funksjoner før kontoen din er akseptert. Dersom søknaden din blir avslått, vil dataene dine bli fjernet, så ingen ytterligere handlinger fra deg vil være nødvendige. Dersom dette ikke var deg, vennligst ignorer denne E-posten.
-        extra_html: Vennligst også sjekk ut <a href="%{terms_path}">instansens regler </a> og <a href="%{policy_path}">våre bruksvilkår</a>.
-        subject: 'Mastodon: Instruksjoner for å bekrefte e-postadresse %{instance}'
+        extra_html: Sjekk også ut <a href="%{terms_path}">instansens regler </a> og <a href="%{policy_path}">våre bruksvilkår</a>.
+        subject: 'Mastodon: Instruksjoner for bekreftelse for %{instance}'
         title: Bekreft e-postadresse
       email_changed:
         explanation: 'E-postadressen til din konto endres til:'
-        extra: Hvis du ikke endret din e-postadresse, er det sannsynlig at noen har fått tilgang til din konto. Vennligst endre ditt passord umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din.
-        subject: 'Mastadon: E-postadresse endret'
+        extra: Hvis du ikke endret e-postadressen din, er det sannsynlig at noen har fått tilgang til kontoen din. Vennligst endre passordet ditt umiddelbart eller kontakt instansens administrator dersom du er låst ute fra kontoen din.
+        subject: 'Mastodon: E-postadresse endret'
         title: Ny e-postadresse
       password_change:
-        explanation: Passordet til din konto har blitt endret.
-        extra: Hvis du ikke endret ditt passord, er det sannsynlig at noen har fått tilgang til din konto. Vennligst endre ditt passord umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din.
+        explanation: Passordet til kontoen din har blitt endret.
+        extra: Hvis du ikke endret passordet ditt, er det sannsynlig at noen har fått tilgang til kontoen din. Vennligst endre passordet ditt umiddelbart eller kontakt instansens administrator dersom du er utestengt fra kontoen din.
         subject: 'Mastodon: Passord endret'
         title: Passord endret
       reconfirmation_instructions:
-        explanation: Din nye e-postadresse må bekreftes for å bli endret.
-        extra: Se bort fra denne e-posten dersom du ikke gjorde denne endringen. E-postadressen for Mastadon-kontoen blir ikke endret før du trykker på lenken over.
+        explanation: Bekreft den nye e-postadressen for å endre e-post.
+        extra: Se bort fra denne e-posten dersom du ikke gjorde denne endringen. E-postadressen for Mastodon-kontoen blir ikke endret før du trykker på lenken over.
         subject: 'Mastodon: Bekreft e-postadresse for %{instance}'
         title: Bekreft e-postadresse
       reset_password_instructions:
         action: Endre passord
-        explanation: Du ba om et nytt passord for din konto.
-        extra: Se bort fra denne e-posten dersom du ikke ba om dette. Ditt passord blir ikke endret før du trykker på lenken over og lager et nytt.
+        explanation: Du ba om et nytt passord til kontoen din.
+        extra: Se bort fra denne e-posten dersom du ikke ba om dette. Passordet ditt blir ikke endret før du trykker på lenken over og lager et nytt.
         subject: 'Mastodon: Hvordan nullstille passord'
         title: Nullstill passord
       two_factor_disabled:
-        explanation: 2-trinnsinnlogging for kontoen din har blitt skrudd av. Pålogging er mulig gjennom kun E-postadresse og passord.
-        subject: 'Mastodon: To-faktor autentisering deaktivert'
+        explanation: Tofaktorautentisering for kontoen din har blitt skrudd av. Pålogging er nå mulig ved å bruke kun e-postadresse og passord.
+        subject: 'Mastodon: Tofaktorautentisering deaktivert'
         title: 2FA deaktivert
       two_factor_enabled:
-        explanation: To-faktor autentisering er aktivert for kontoen din. Et symbol som er generert av den sammenkoblede TOTP-appen vil være påkrevd for innlogging.
-        subject: 'Mastodon: To-faktor autentisering aktivert'
+        explanation: Tofaktorautentisering er aktivert for kontoen din. Et token som er generert av appen for tidsbasert engangspassord (TOTP) som er koblet til kontoen kreves for innlogging.
+        subject: 'Mastodon: Tofaktorautentisering aktivert'
         title: 2FA aktivert
       two_factor_recovery_codes_changed:
-        explanation: De forrige gjenopprettingskodene er ugyldig og nye generert.
-        subject: 'Mastodon: 2-trinnsgjenopprettingskoder har blitt generert på nytt'
+        explanation: De forrige gjenopprettingskodene er gjort ugyldige og nye er generert.
+        subject: 'Mastodon: Tofaktor-gjenopprettingskoder har blitt generert på nytt'
         title: 2FA-gjenopprettingskodene ble endret
       unlock_instructions:
         subject: 'Mastodon: Instruksjoner for å gjenåpne konto'
@@ -70,37 +70,39 @@
           subject: 'Mastodon: Sikkerhetsnøkkel slettet'
           title: En av sikkerhetsnøklene dine har blitt slettet
       webauthn_disabled:
+        explanation: Autentisering med sikkerhetsnøkler er deaktivert for kontoen din. Innlogging er nå mulig ved hjelp av kun et token som er generert av engangspassord-appen som er koblet til kontoen.
         subject: 'Mastodon: Autentisering med sikkerhetsnøkler ble skrudd av'
         title: Sikkerhetsnøkler deaktivert
       webauthn_enabled:
+        explanation: Sikkerhetsnøkkel-autentisering er aktivert for din konto. Din sikkerhetsnøkkel kan nå brukes til innlogging.
         subject: 'Mastodon: Sikkerhetsnøkkelsautentisering ble skrudd på'
         title: Sikkerhetsnøkler aktivert
     omniauth_callbacks:
       failure: Kunne ikke autentisere deg fra %{kind} fordi "%{reason}".
-      success: Vellykket autentisering fra %{kind}.
+      success: Vellykket autentisering fra %{kind}-konto.
     passwords:
-      no_token: Du har ingen tilgang til denne siden hvis ikke klikket på en e-post om nullstilling av passord. Hvis du kommer fra en sådan bør du dobbelsjekke at du limte inn hele URLen.
-      send_instructions: Du vil motta en e-post med instruksjoner om nullstilling av passord om noen få minutter.
-      send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter.
+      no_token: Du har ikke tilgang til denne siden hvis du ikke kom hit etter å ha klikket på en e-post om nullstilling av passord. Hvis du kommer fra en sådan bør du dobbelsjekke at du limte inn hele URLen.
+      send_instructions: Hvis e-postadressen din finnes i databasen vår, vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten.
+      send_paranoid_instructions: Hvis e-postadressen din finnes i databasen vår vil du motta en e-post med instruksjoner om nullstilling av passord om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten.
       updated: Passordet ditt er endret. Du er nå logget inn.
       updated_not_active: Passordet ditt er endret.
     registrations:
-      destroyed: Adjø! Kontoen din er slettet. På gjensyn.
+      destroyed: Ha det! Kontoen din er avsluttet. Vi håper å se deg igjen snart.
       signed_up: Velkommen! Registreringen var vellykket.
       signed_up_but_inactive: Registreringen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din ennå ikke har blitt aktivert.
       signed_up_but_locked: Registreringen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din har blitt låst.
-      signed_up_but_pending: En melding med en bekreftelseslink er sendt til din e-postadresse. Etter at du har klikket på koblingen, vil vi gjennomgå søknaden din. Du vil bli varslet hvis den er godkjent.
-      signed_up_but_unconfirmed: En e-post med en bekreftelseslenke har blitt sendt til din innboks. Klikk på lenken i e-posten for å aktivere kontoen din.
-      update_needs_confirmation: Du har oppdatert kontoen din, men vi må bekrefte din nye e-postadresse. Sjekk e-posten din og følg bekreftelseslenken for å bekrefte din nye e-postadresse.
+      signed_up_but_pending: En melding med en bekreftelseslenke er sendt til din e-postadresse. Etter at du har klikket på lenken, vil vi gjennomgå søknaden din. Du vil bli varslet hvis den blir godkjent.
+      signed_up_but_unconfirmed: En melding med en bekreftelseslenke har blitt sendt til din e-postadresse. Klikk på lenken i e-posten for å aktivere kontoen din. Sjekk spam-mappen din hvis du ikke mottok e-posten.
+      update_needs_confirmation: Du har oppdatert kontoen din, men vi må bekrefte din nye e-postadresse. Sjekk e-posten din og følg bekreftelseslenken for å bekrefte din nye e-postadresse. Sjekk spam-mappen din hvis du ikke mottok e-posten.
       updated: Kontoen din ble oppdatert.
     sessions:
       already_signed_out: Logget ut.
       signed_in: Logget inn.
       signed_out: Logget ut.
     unlocks:
-      send_instructions: Du vil motta en e-post med instruksjoner for å åpne kontoen din om noen få minutter.
-      send_paranoid_instructions: Hvis kontoen din eksisterer vil du motta en e-post med instruksjoner for å åpne kontoen din om noen få minutter.
-      unlocked: Kontoen din ble åpnet uten problemer. Logg på for å fortsette.
+      send_instructions: Du vil motta en e-post med instruksjoner for å låse opp kontoen din om noen få minutter. Sjekk spam-mappen din hvis du ikke mottok e-posten.
+      send_paranoid_instructions: Hvis kontoen din eksisterer vil du motta en e-post med instruksjoner for å låse opp kontoen din om noen få minutter. Sjekk spam-katalogen din hvis du ikke mottok denne e-posten.
+      unlocked: Kontoen din er nå låst opp. Logg på for å fortsette.
   errors:
     messages:
       already_confirmed: har allerede blitt bekreftet, prøv å logge på istedet
diff --git a/config/locales/devise.pl.yml b/config/locales/devise.pl.yml
index cc1b670bb..ff086888f 100644
--- a/config/locales/devise.pl.yml
+++ b/config/locales/devise.pl.yml
@@ -3,7 +3,7 @@ pl:
   devise:
     confirmations:
       confirmed: Twój adres e-mail został poprawnie zweryfikowany.
-      send_instructions: W ciągu kilku minut otrzymasz wiadomosć e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
+      send_instructions: W ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
       send_paranoid_instructions: Jeśli Twój adres e-mail już istnieje w naszej bazie danych, w ciągu kilku minut otrzymasz wiadomość e-mail z instrukcją jak potwierdzić Twój adres e-mail. Jeżeli nie otrzymano wiadomości, sprawdź folder ze spamem.
     failure:
       already_authenticated: Jesteś już zalogowany(-a).
diff --git a/config/locales/devise.zh-TW.yml b/config/locales/devise.zh-TW.yml
index baf995812..36ce20351 100644
--- a/config/locales/devise.zh-TW.yml
+++ b/config/locales/devise.zh-TW.yml
@@ -51,7 +51,7 @@ zh-TW:
         subject: Mastodon:已停用兩階段驗證
         title: 已停用 2FA
       two_factor_enabled:
-        explanation: 已對您的帳號啟用兩階段驗證。登入時將需要配對之 TOTP 應用程式所產生之 Token。
+        explanation: 已對您的帳號啟用兩階段驗證。登入時將需要已配對的 TOTP 應用程式所產生之 Token。
         subject: Mastodon:已啟用兩階段驗證
         title: 已啟用 2FA
       two_factor_recovery_codes_changed:
@@ -70,9 +70,9 @@ zh-TW:
           subject: Mastodon:安全密鑰已移除
           title: 您的一支安全密鑰已經被移除
       webauthn_disabled:
-        explanation: 您的帳號並沒有啟用安全密鑰認證方式。只能以 TOTP app 產生地成對 token 登入。
-        subject: Mastodon:安全密鑰認證方式已關閉
-        title: 已關閉安全密鑰
+        explanation: 您的帳號已停用安全密鑰認證。只能透過已配對的 TOTP 應用程式所產生之 Token 登入。
+        subject: Mastodon:安全密鑰認證方式已停用
+        title: 已停用安全密鑰
       webauthn_enabled:
         explanation: 您的帳號已啟用安全密鑰認證。您可以使用安全密鑰登入了。
         subject: Mastodon:已啟用安全密鑰認證
diff --git a/config/locales/doorkeeper.en-GB.yml b/config/locales/doorkeeper.en-GB.yml
index ef03d1810..3f0ea6b7b 100644
--- a/config/locales/doorkeeper.en-GB.yml
+++ b/config/locales/doorkeeper.en-GB.yml
@@ -1 +1,119 @@
+---
 en-GB:
+  activerecord:
+    attributes:
+      doorkeeper/application:
+        name: Application name
+        redirect_uri: Redirect URI
+        scopes: Scopes
+        website: Application website
+    errors:
+      models:
+        doorkeeper/application:
+          attributes:
+            redirect_uri:
+              fragment_present: cannot contain a fragment.
+              invalid_uri: must be a valid URI.
+              relative_uri: must be an absolute URI.
+              secured_uri: must be an HTTPS/SSL URI.
+  doorkeeper:
+    applications:
+      buttons:
+        authorize: Authorise
+        cancel: Cancel
+        destroy: Destroy
+        edit: Edit
+        submit: Submit
+      confirmations:
+        destroy: Are you sure?
+      edit:
+        title: Edit application
+      form:
+        error: Whoops! Check your form for possible errors
+      help:
+        native_redirect_uri: Use %{native_redirect_uri} for local tests
+        redirect_uri: Use one line per URI
+        scopes: Separate scopes with spaces. Leave blank to use the default scopes.
+      index:
+        application: Application
+        callback_url: Callback URL
+        delete: Delete
+        empty: You have no applications.
+        name: Name
+        new: New application
+        scopes: Scopes
+        show: Show
+        title: Your applications
+      new:
+        title: New application
+      show:
+        actions: Actions
+        application_id: Client key
+        callback_urls: Callback URLs
+        scopes: Scopes
+        secret: Client secret
+        title: 'Application: %{name}'
+    authorizations:
+      buttons:
+        authorize: Authorise
+        deny: Deny
+      error:
+        title: An error has occurred
+      new:
+        prompt_html: "%{client_name} would like permission to access your account. It is a third-party application. <strong>If you do not trust it, then you should not authorise it.</strong>"
+        review_permissions: Review permissions
+        title: Authorisation required
+      show:
+        title: Copy this authorisation code and paste it to the application.
+    authorized_applications:
+      buttons:
+        revoke: Revoke
+      confirmations:
+        revoke: Are you sure?
+      index:
+        authorized_at: Authorised on %{date}
+        description_html: These are applications that can access your account using the API. If there are applications you do not recognise here, or an application is misbehaving, you can revoke its access.
+        last_used_at: Last used on %{date}
+        never_used: Never used
+        scopes: Permissions
+        superapp: Internal
+    layouts:
+      application:
+        title: OAuth authorisation required
+    scopes:
+      admin:read: read all data on the server
+      admin:read:accounts: read sensitive information of all accounts
+      admin:read:reports: read sensitive information of all reports and reported accounts
+      admin:write: modify all data on the server
+      admin:write:accounts: perform moderation actions on accounts
+      admin:write:reports: perform moderation actions on reports
+      crypto: use end-to-end encryption
+      follow: modify account relationships
+      push: receive your push notifications
+      read: read all your account's data
+      read:accounts: see accounts information
+      read:blocks: see your blocks
+      read:bookmarks: see your bookmarks
+      read:favourites: see your favourites
+      read:filters: see your filters
+      read:follows: see your follows
+      read:lists: see your lists
+      read:mutes: see your mutes
+      read:notifications: see your notifications
+      read:reports: see your reports
+      read:search: search on your behalf
+      read:statuses: see all posts
+      write: modify all your account's data
+      write:accounts: modify your profile
+      write:blocks: block accounts and domains
+      write:bookmarks: bookmark posts
+      write:conversations: mute and delete conversations
+      write:favourites: favourite posts
+      write:filters: create filters
+      write:follows: follow people
+      write:lists: create lists
+      write:media: upload media files
+      write:mutes: mute people and conversations
+      write:notifications: clear your notifications
+      write:reports: report other people
+      write:statuses: publish posts
diff --git a/config/locales/doorkeeper.eo.yml b/config/locales/doorkeeper.eo.yml
index 473757a37..34b4fafaa 100644
--- a/config/locales/doorkeeper.eo.yml
+++ b/config/locales/doorkeeper.eo.yml
@@ -92,7 +92,7 @@ eo:
         temporarily_unavailable: La rajtiga servilo ne povas nun plenumi la peton pro dumtempa troŝarĝo aŭ servila prizorgado.
         unauthorized_client: Kliento ne rajtas fari ĉi tian peton per ĉi tiu metodo.
         unsupported_grant_type: La tipo de la rajtiga konsento ne estas subtenata de la rajtiga servilo.
-        unsupported_response_type: La rajtiga servilo ne subtenas ĉi tian respondon.
+        unsupported_response_type: La aŭtentiga servilo ne subtenas ĉi tian respondon.
     flash:
       applications:
         create:
@@ -108,6 +108,7 @@ eo:
       title:
         blocks: Blokita
         bookmarks: Legosignoj
+        favourites: Preferaĵoj
         lists: Listoj
         mutes: Silentigitaj
         reports: Raportoj
diff --git a/config/locales/doorkeeper.fr.yml b/config/locales/doorkeeper.fr.yml
index 7e890f3d6..bc4bd20bb 100644
--- a/config/locales/doorkeeper.fr.yml
+++ b/config/locales/doorkeeper.fr.yml
@@ -86,7 +86,7 @@ fr:
         invalid_grant: L’autorisation accordée est invalide, expirée, annulée, ne concorde pas avec l’URL de redirection utilisée dans la requête d’autorisation, ou a été délivrée à un autre client.
         invalid_redirect_uri: L’URL de redirection n’est pas valide.
         invalid_request:
-          missing_param: 'Parramètre requis manquant: %{value}.'
+          missing_param: 'Paramètre requis manquant: %{value}.'
           request_not_authorized: La requête doit être autorisée. Le paramètre requis pour l'autorisation de la requête est manquant ou non valide.
           unknown: La requête omet un paramètre requis, inclut une valeur de paramètre non prise en charge ou est autrement mal formée.
         invalid_resource_owner: Les identifiants fournis par le propriétaire de la ressource ne sont pas valides ou le propriétaire de la ressource ne peut être trouvé
diff --git a/config/locales/doorkeeper.fy.yml b/config/locales/doorkeeper.fy.yml
index 385274868..5e3f3c6c0 100644
--- a/config/locales/doorkeeper.fy.yml
+++ b/config/locales/doorkeeper.fy.yml
@@ -4,6 +4,8 @@ fy:
     attributes:
       doorkeeper/application:
         name: Namme fan applikaasje
+        redirect_uri: Redirect-URI
+        scopes: Tastimmingen
         website: Webstee fan applikaasje
     errors:
       models:
@@ -15,9 +17,169 @@ fy:
               relative_uri: moat in absolute URI wêze.
               secured_uri: moat in HTTPS/SSL URI wêze.
   doorkeeper:
+    applications:
+      buttons:
+        authorize: Autorisearje
+        cancel: Annulearje
+        destroy: Ferneatigje
+        edit: Bewurkje
+        submit: Yntsjinje
+      confirmations:
+        destroy: Bisto wis?
+      edit:
+        title: Tapassing bewurkje
+      form:
+        error: Oeps! Kontrolearje it formulier op flaters
+      help:
+        native_redirect_uri: Brûk %{native_redirect_uri} foar lokale tests
+        redirect_uri: Brûk ien rigel per URI
+        scopes: Tastimmingen mei spaasjes fan inoar skiede. Lit leech om de standerttastimmingen te brûken.
+      index:
+        application: Tapassing
+        callback_url: Callback-URL
+        delete: Fuortsmite
+        empty: Do hast gjin tapassingen konfigurearre.
+        name: Namme
+        new: Nije tapassing
+        scopes: Tastimmingen
+        show: Toane
+        title: Dyn tapassingen
+      new:
+        title: Nije tapassing
+      show:
+        actions: Aksjes
+        application_id: Client-kaai
+        callback_urls: Callback-URL’s
+        scopes: Tastimmingen
+        secret: Client-geheim
+        title: 'Tapassing: %{name}'
+    authorizations:
+      buttons:
+        authorize: Autorisearje
+        deny: Wegerje
+      error:
+        title: Der is in flater bard
+      new:
+        prompt_html: "%{client_name} hat tastimming nedich om tagong te krijen ta dyn account. It giet om in tapassing fan in tredde partij.<strong>Asto dit net fertroust, moatsto gjin tastimming jaan.</strong>"
+        review_permissions: Tastimmingen beoardiele
+        title: Autorisaasje fereaske
+      show:
+        title: Kopiearje dizze autorisaasjekoade en plak it yn de tapassing.
+    authorized_applications:
+      buttons:
+        revoke: Ynlûke
+      confirmations:
+        revoke: Bisto wis?
+      index:
+        authorized_at: Autorisearre op %{date}
+        description_html: Dit binne tapassingen dy’t tagong hawwe ta dyn account fia de API. As der tapassingen tusken steane dy’tsto net werkenst of in tapassing harren misdraacht, kinsto de tagongsrjochten fan de tapassing ynlûke.
+        last_used_at: Lêst brûkt op %{date}
+        never_used: Nea brûkt
+        scopes: Tastimmingen
+        superapp: Yntern
+        title: Dyn autorisearre tapassingen
+    errors:
+      messages:
+        access_denied: De boarne-eigener of autorisaasjeserver hat it fersyk wegere.
+        credential_flow_not_configured: De wachtwurdgegevens-flow fan de boarne-eigener is mislearre, omdat Doorkeeper.configure.resource_owner_from_credentials net ynsteld is.
+        invalid_client: Clientferifikaasje is mislearre troch in ûnbekende client, ûntbrekkende client-autentikaasje of in net stipe autentikaasjemetoade.
+        invalid_grant: De opjûne autorisaasje is ûnjildich, ferrûn, ynlutsen, komt net oerien mei de redirect-URI dy’t opjûn is of útjûn waard oan in oere client.
+        invalid_redirect_uri: De opjûne redirect-URI is ûnjildich.
+        invalid_request:
+          missing_param: 'Untbrekkende fereaske parameter: %{value}.'
+          request_not_authorized: It fersyk moat autorisearre wurde. De fereaske parameter foar it autorisaasjefersyk ûntbrekt of is ûnjildich.
+          unknown: It fersyk mist in fereaske parameter, befettet in net-stipe parameterwearde of is op in oare manier net krekt.
+        invalid_resource_owner: De opjûne boarne-eigenersgegevens binne ûnjildich of de boarne-eigener kin net fûn wurde
+        invalid_scope: De opfrege tastimming is ûnjildich, ûnbekend of net krekt.
+        invalid_token:
+          expired: Tagongskoade ferrûn
+          revoked: Tagongskoade ynlutsen
+          unknown: Tagongskoade ûnjildich
+        resource_owner_authenticator_not_configured: It opsykjen fan de boarne-eigener is mislearre, omdat Doorkeeper.configure.resource_owner_authenticator net ynsteld is.
+        server_error: De autorisaasjeserver is in ûnferwachte situaasje tsjinkaam dy’t it fersyk behindere.
+        temporarily_unavailable: De autorisaasjeserver is op dit stuit net yn steat it fersyk te behanneljen as gefolch fan in tydlike oerbelêsting of ûnderhâld oan de server.
+        unauthorized_client: De client is net autorisearre om dit fersyk op dizze manier út te fieren.
+        unsupported_grant_type: It type autorisaasje wurdt net troch de autorisaasjeserver stipe.
+        unsupported_response_type: De autorisaasjeserver stipet dit antwurdtype net.
+    flash:
+      applications:
+        create:
+          notice: Tapassing oanmakke.
+        destroy:
+          notice: Tapassing fuortsmiten.
+        update:
+          notice: Tapassing bewurke.
+      authorized_applications:
+        destroy:
+          notice: Tapassing ynlutsen.
     grouped_scopes:
+      access:
+        read: Allinnich-lêze-tagong
+        read/write: Lês- en skriuwtagong
+        write: Allinnich skriuwtagong
       title:
+        accounts: Accounts
+        admin/accounts: Accountbehear
+        admin/all: Alle behearfunksjes
+        admin/reports: Rapportaazjebehear
+        all: Alles
+        blocks: Blokkearje
+        bookmarks: Blêdwizers
         conversations: Petearen
+        crypto: End-to-end-fersifering
+        favourites: Favoriten
+        filters: Filters
+        follow: Relaasjes
+        follows: Folgjend
+        lists: Listen
+        media: Mediabylagen
+        mutes: Negearre
+        notifications: Meldingen
+        push: Pushmeldingen
+        reports: Rapportaazjes
+        search: Sykje
+        statuses: Berjochten
+    layouts:
+      admin:
+        nav:
+          applications: Tapassingen
+          oauth2_provider: OAuth2-provider
+      application:
+        title: OAuth-autorisaasje fereaske
     scopes:
+      admin:read: alle gegevens op de server lêze
+      admin:read:accounts: gefoelige ynformaasje fan alle accounts lêze
+      admin:read:reports: gefoelige ynformaasje fan alle rapportaazjes en rapportearre accounts lêze
+      admin:write: wizigje alle gegevens op de server
+      admin:write:accounts: moderaasjemaatregelen tsjin accounts nimme
+      admin:write:reports: moderaasjemaatregelen nimme yn rapportaazjes
+      crypto: end-to-end-encryptie brûke
+      follow: relaasjes tusken accounts bewurkje
+      push: dyn pushmeldingen ûntfange
+      read: alle gegevens fan dyn account lêze
+      read:accounts: accountynformaasje besjen
+      read:blocks: dyn blokkearre brûkers besjen
+      read:bookmarks: dyn blêdwizers besjen
+      read:favourites: dyn favoriten besjen
+      read:filters: dyn filters besjen
+      read:follows: de accounts dy’tsto folgest besjen
+      read:lists: dyn listen besjen
+      read:mutes: dyn negearre brûkers besjen
+      read:notifications: dyn meldingen besjen
+      read:reports: dyn rapportearre berjochten besjen
+      read:search: út dyn namme sykje
+      read:statuses: alle berjochten besjen
+      write: alle gegevens fan dyn account bewurkje
+      write:accounts: dyn profyl bewurkje
+      write:blocks: accounts en domeinen blokkearje
+      write:bookmarks: berjochten oan blêdwizers tafoegje
       write:conversations: petearen negearre en fuortsmite
+      write:favourites: berjochten as favoryt markearje
+      write:filters: filters oanmeitsje
+      write:follows: minsken folgje
+      write:lists: listen oanmeitsje
+      write:media: mediabestannen oplade
       write:mutes: minsken en petearen negearre
+      write:notifications: meldingen fuortsmite
+      write:reports: oare minsken rapportearje
+      write:statuses: berjochten pleatse
diff --git a/config/locales/doorkeeper.ga.yml b/config/locales/doorkeeper.ga.yml
index cd911b60a..73ff9d0fc 100644
--- a/config/locales/doorkeeper.ga.yml
+++ b/config/locales/doorkeeper.ga.yml
@@ -5,6 +5,7 @@ ga:
       doorkeeper/application:
         name: Ainm feidhmchláir
         redirect_uri: Atreoraigh URI
+        website: Suíomh gréasáin feidhmchláir
   doorkeeper:
     applications:
       buttons:
@@ -12,12 +13,17 @@ ga:
         cancel: Cealaigh
         destroy: Scrios
         edit: Cuir in eagar
+        submit: Cuir isteach
       confirmations:
         destroy: An bhfuil tú cinnte?
       index:
         delete: Scrios
         name: Ainm
         show: Taispeáin
+      show:
+        application_id: Eochair chliaint
+        secret: Rún cliaint
+        title: 'Ainm feidhmchláir: %{name}'
     authorizations:
       buttons:
         deny: Diúltaigh
diff --git a/config/locales/doorkeeper.gd.yml b/config/locales/doorkeeper.gd.yml
index 497b7dcdd..6d4cbecfe 100644
--- a/config/locales/doorkeeper.gd.yml
+++ b/config/locales/doorkeeper.gd.yml
@@ -134,8 +134,8 @@ gd:
         lists: Liostaichean
         media: Ceanglachain mheadhanan
         mutes: Mùchaidhean
-        notifications: Fiosan
-        push: Fiosan putaidh
+        notifications: Brathan
+        push: Brathan putaidh
         reports: Gearanan
         search: Lorg
         statuses: Postaichean
@@ -155,17 +155,17 @@ gd:
       admin:write:reports: gnìomhan na maorsainneachd a ghabhail air gearanan
       crypto: crioptachadh o cheann gu ceann a chleachdadh
       follow: dàimhean chunntasan atharrachadh
-      push: na fiosan putaidh agad fhaighinn
+      push: na brathan putaidh agad fhaighinn
       read: dàta sam bith a’ cunntais agad a leughadh
       read:accounts: fiosrachadh nan cunntasan fhaicinn
       read:blocks: na bacaidhean agad fhaicinn
       read:bookmarks: na comharran-lìn agad fhaicinn
       read:favourites: na h-annsachdan agad fhaicinn
       read:filters: na criathragan agad fhaicinn
-      read:follows: faicinn cò air a tha thu a’ leantainn
+      read:follows: faicinn cò a tha thu a’ leantainn
       read:lists: na liostaichean agad fhaicinn
       read:mutes: na mùchaidhean agad fhaicinn
-      read:notifications: na fiosan agad faicinn
+      read:notifications: na brathan agad faicinn
       read:reports: na gearanan agad fhaicinn
       read:search: lorg a dhèanamh às do leth
       read:statuses: na postaichean uile fhaicinn
@@ -176,10 +176,10 @@ gd:
       write:conversations: còmhraidhean a mhùchadh is a sguabadh às
       write:favourites: postaichean a chur ris na h-annsachdan
       write:filters: criathragan a chruthachadh
-      write:follows: leantainn air daoine
+      write:follows: leantainn dhaoine
       write:lists: liostaichean a chruthachadh
       write:media: faidhlichean meadhain a luchdadh suas
       write:mutes: daoine is còmhraidhean a mhùchadh
-      write:notifications: na fiosan agad a ghlanadh às
+      write:notifications: na brathan agad fhalamhachadh
       write:reports: gearan a dhèanamh mu chàch
       write:statuses: postaichean fhoillseachadh
diff --git a/config/locales/doorkeeper.he.yml b/config/locales/doorkeeper.he.yml
index e2f0c3401..eda38153c 100644
--- a/config/locales/doorkeeper.he.yml
+++ b/config/locales/doorkeeper.he.yml
@@ -138,7 +138,7 @@ he:
         push: התראות בדחיפה
         reports: דיווחים
         search: חיפוש
-        statuses: חצרוצים
+        statuses: הודעות
     layouts:
       admin:
         nav:
@@ -168,13 +168,13 @@ he:
       read:notifications: צפיה בהתראותיך
       read:reports: צפיה בדוחותיך
       read:search: חיפוש מטעם עצמך
-      read:statuses: צפיה בכל החצרוצים
+      read:statuses: צפיה בכל ההודעות
       write: להפיץ הודעות בשמך
       write:accounts: שינוי הפרופיל שלך
       write:blocks: חסימת חשבונות ודומיינים
-      write:bookmarks: סימון חצרוצים
+      write:bookmarks: סימון הודעות
       write:conversations: השתקת ומחיקת שיחות
-      write:favourites: חצרוצים מחובבים
+      write:favourites: הודעות מחובבות
       write:filters: יצירת מסננים
       write:follows: עקיבה אחר אנשים
       write:lists: יצירת רשימות
@@ -182,4 +182,4 @@ he:
       write:mutes: השתקת אנשים ושיחות
       write:notifications: ניקוי התראותיך
       write:reports: דיווח על אנשים אחרים
-      write:statuses: פרסום חצרוצים
+      write:statuses: פרסום הודעות
diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml
index 40eff8bb1..7ba1baf7a 100644
--- a/config/locales/doorkeeper.no.yml
+++ b/config/locales/doorkeeper.no.yml
@@ -3,7 +3,7 @@
   activerecord:
     attributes:
       doorkeeper/application:
-        name: Navn
+        name: Applikasjonsnavn
         redirect_uri: Omdirigerings-URI
         scopes: Omfang
         website: Applikasjonsnettside
@@ -12,24 +12,24 @@
         doorkeeper/application:
           attributes:
             redirect_uri:
-              fragment_present: kan ikke inneholde ett fragment.
+              fragment_present: kan ikke inneholde et fragment.
               invalid_uri: må være en gyldig URI.
               relative_uri: må være en absolutt URI.
               secured_uri: må være en HTTPS/SSL URI.
   doorkeeper:
     applications:
       buttons:
-        authorize: Autoriser
+        authorize: Autorisér
         cancel: Avbryt
         destroy: Ødelegg
-        edit: Rediger
+        edit: Redigér
         submit: Send inn
       confirmations:
         destroy: Er du sikker?
       edit:
         title: Endre applikasjon
       form:
-        error: Oops! Sjekk skjemaet ditt for mulige feil
+        error: Oops! Sjekk om du har feil i skjemaet ditt
       help:
         native_redirect_uri: Bruk %{native_redirect_uri} for lokale tester
         redirect_uri: Bruk én linje per URI
@@ -60,6 +60,8 @@
       error:
         title: En feil oppstod
       new:
+        prompt_html: "%{client_name} ønsker tilgang til kontoen din. Det er en tredjeparts applikasjon. <strong>Hvis du ikke stoler på den, bør du ikke autorisere den.</strong>"
+        review_permissions: Gå gjennom tillatelser
         title: Autorisasjon påkrevd
       show:
         title: Kopier denne koden og lim den inn i programmet.
@@ -69,18 +71,24 @@
       confirmations:
         revoke: Opphev?
       index:
+        authorized_at: Autorisert %{date}
+        description_html: Dette er applikasjoner som kan få tilgang til kontoen din ved hjelp av API-et. Hvis det finnes applikasjoner du ikke gjenkjenner her, eller en applikasjon skaper problemer, kan du tilbakekalle tilgangen den har.
+        last_used_at: Sist brukt %{date}
+        never_used: Aldri brukt
+        scopes: Tillatelser
+        superapp: Internt
         title: Dine autoriserte applikasjoner
     errors:
       messages:
-        access_denied: Ressurseieren eller autoriseringstjeneren avviste forespørslen.
+        access_denied: Ressurseieren eller autoriseringsserveren avviste forespørselen.
         credential_flow_not_configured: Ressurseiers passordflyt feilet fordi Doorkeeper.configure.resource_owner_from_credentials ikke var konfigurert.
         invalid_client: Klientautentisering feilet på grunn av ukjent klient, ingen autentisering inkludert, eller autentiseringsmetode er ikke støttet.
-        invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient.
+        invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen i autoriseringsforespørselen eller var utstedt til en annen klient.
         invalid_redirect_uri: Den inkluderte omdirigerings-URLen er ikke gyldig.
         invalid_request:
           missing_param: 'Mangler påkrevd parameter: %{value}.'
-          request_not_authorized: Forespørselen må godkjennes. Påkrevd parameter for godkjenningsforespørselen mangler eller er ugyldig.
-          unknown: Forespørselen mangler en påkrevd parameter, inkluderer en ukjent parameterverdi, eller er utformet for noe annet.
+          request_not_authorized: Forespørselen må autoriseres. Påkrevd parameter for autorisasjonsforespørselen mangler eller er ugyldig.
+          unknown: Forespørselen mangler en påkrevd parameter, inkluderer en parameterverdi som ikke støttes, eller har på annet vis feil struktur.
         invalid_resource_owner: Ressurseierens detaljer er ikke gyldige, eller så er det ikke mulig å finne eieren
         invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur.
         invalid_token:
@@ -89,10 +97,10 @@
           unknown: Tilgangsbeviset er ugyldig
         resource_owner_authenticator_not_configured: Ressurseier kunne ikke finnes fordi Doorkeeper.configure.resource_owner_authenticator ikke er konfigurert.
         server_error: Autoriseringstjeneren støtte på en uventet hendelse som hindret den i å svare på forespørslen.
-        temporarily_unavailable: Autoriseringstjeneren kan ikke håndtere forespørslen grunnet en midlertidig overbelastning eller tjenervedlikehold.
+        temporarily_unavailable: Autoriseringsserveren kan ikke håndtere forespørselen grunnet en midlertidig overbelastning eller vedlikehold av serveren.
         unauthorized_client: Klienten har ikke autorisasjon for å utføre denne forespørslen med denne metoden.
         unsupported_grant_type: Autorisasjonstildelingstypen er ikke støttet av denne autoriseringstjeneren.
-        unsupported_response_type: Autorisasjonsserveren støtter ikke denne typen av forespørsler.
+        unsupported_response_type: Autorisasjonsserveren støtter ikke denne respons-typen.
     flash:
       applications:
         create:
@@ -104,45 +112,74 @@
       authorized_applications:
         destroy:
           notice: Applikasjon opphevet.
+    grouped_scopes:
+      access:
+        read: Kun lesetilgang
+        read/write: Lese- og skrivetilgang
+        write: Kun skrivetilgang
+      title:
+        accounts: Kontoer
+        admin/accounts: Administrasjon av kontoer
+        admin/all: All administrativ funksjonalitet
+        admin/reports: Administrasjon av rapporteringer
+        all: Alt
+        blocks: Blokkeringer
+        bookmarks: Bokmerker
+        conversations: Samtaler
+        crypto: Ende-til-ende-kryptering
+        favourites: Favoritter
+        filters: Filtre
+        follow: Relasjoner
+        follows: Følger
+        lists: Lister
+        media: Mediavedlegg
+        mutes: Dempinger
+        notifications: Varslinger
+        push: Push-varslinger
+        reports: Rapporteringer
+        search: Søk
+        statuses: Innlegg
     layouts:
       admin:
         nav:
           applications: Applikasjoner
-          oauth2_provider: OAuth2-tilbyder
+          oauth2_provider: OAuth2-leverandør
       application:
         title: OAuth-autorisering påkrevet
     scopes:
       admin:read: lese alle data på tjeneren
-      admin:read:accounts: lese sensitiv informasjon om alle kontoer
-      admin:read:reports: lese sensitiv informasjon om alle rapporter og rapporterte kontoer
+      admin:read:accounts: lese sensitiv informasjon for alle kontoer
+      admin:read:reports: lese sensitiv informasjon for alle rapporter og rapporterte kontoer
       admin:write: modifisere alle data på tjeneren
       admin:write:accounts: utføre moderatorhandlinger på kontoer
       admin:write:reports: utføre moderatorhandlinger på rapporter
-      follow: følg, blokkér, avblokkér, avfølg brukere
-      push: motta dine varsler
+      crypto: bruk ende-til-ende-kryptering
+      follow: endre konto-relasjoner
+      push: motta push-varslingene dine
       read: lese dine data
       read:accounts: se informasjon om kontoer
-      read:blocks: se dine blokkeringer
-      read:bookmarks: se dine bokmerker
+      read:blocks: se blokkeringene dine
+      read:bookmarks: se bokmerkene dine
       read:favourites: se dine likinger
-      read:filters: se dine filtre
-      read:follows: se dine følginger
+      read:filters: se filtrene dine
+      read:follows: se hvem du følger
       read:lists: se listene dine
       read:mutes: se dine dempinger
-      read:notifications: se dine varslinger
-      read:reports: se dine rapporter
+      read:notifications: se varslingene dine
+      read:reports: se rapportene dine
       read:search: søke på dine vegne
-      read:statuses: se alle statuser
+      read:statuses: se alle innlegg
       write: poste på dine vegne
       write:accounts: endre på profilen din
       write:blocks: blokkere kontoer og domener
-      write:bookmarks: bokmerke statuser
-      write:favourites: like statuser
-      write:filters: opprett filtre
-      write:follows: følg personer
-      write:lists: opprett lister
-      write:media: last opp mediafiler
+      write:bookmarks: bokmerke innlegg
+      write:conversations: dempe og slette samtaler
+      write:favourites: like innlegg
+      write:filters: opprette filtre
+      write:follows: følge personer
+      write:lists: opprette lister
+      write:media: laste opp mediafiler
       write:mutes: dempe folk og samtaler
-      write:notifications: tømme dine varsler
+      write:notifications: tømme varslingene dine
       write:reports: rapportere andre folk
-      write:statuses: legg ut statuser
+      write:statuses: legge ut innlegg
diff --git a/config/locales/doorkeeper.pt-BR.yml b/config/locales/doorkeeper.pt-BR.yml
index eef5eb146..905dff0e6 100644
--- a/config/locales/doorkeeper.pt-BR.yml
+++ b/config/locales/doorkeeper.pt-BR.yml
@@ -138,7 +138,7 @@ pt-BR:
         push: Notificações push
         reports: Denúncias
         search: Buscar
-        statuses: Posts
+        statuses: Publicações
     layouts:
       admin:
         nav:
diff --git a/config/locales/eo.yml b/config/locales/eo.yml
index 903614649..4cabba498 100644
--- a/config/locales/eo.yml
+++ b/config/locales/eo.yml
@@ -2,9 +2,10 @@
 eo:
   about:
     about_mastodon_html: 'Mastodon estas socia retejo de la estonteco: sen reklamo, sen kompania gvato, etika dezajno kaj malcentraligo! Vi regu viajn datumojn kun Mastodon!'
-    contact_missing: Ne ŝargita
+    contact_missing: Ne elektita
     contact_unavailable: Ne disponebla
     hosted_on: "%{domain} estas nodo de Mastodon"
+    title: Pri
   accounts:
     follow: Sekvi
     followers:
@@ -18,22 +19,22 @@ eo:
     pin_errors:
       following: Vi devas sekvi la homon, kiun vi volas proponi
     posts:
-      one: Mesaĝo
+      one: Afiŝo
       other: Mesaĝoj
-    posts_tab_heading: Mesaĝoj
+    posts_tab_heading: Afiŝoj
   admin:
     account_actions:
       action: Plenumi agon
       title: Plenumi kontrolan agon al %{acct}
     account_moderation_notes:
       create: Lasi noton
-      created_msg: Noto de mederigado sukcese kreita!
+      created_msg: Noto de mederigado estis sukcese kreita!
       destroyed_msg: Noto de moderigado sukcese detruita!
     accounts:
       add_email_domain_block: Bloki retadresan domajnon
       approve: Aprobi
       are_you_sure: Ĉu vi certas?
-      avatar: Rolfiguro
+      avatar: Profilbildo
       by_domain: Domajno
       change_email:
         current_email: Nuna retadreso
@@ -41,22 +42,26 @@ eo:
         new_email: Nova retadreso
         submit: Ŝanĝi retadreson
         title: Ŝanĝi retadreson por %{username}
+      change_role:
+        label: Ŝanĝi rolon
+        no_role: Neniu rolo
+        title: Ŝanĝi rolon por %{username}
       confirm: Konfirmi
       confirmed: Konfirmita
       confirming: Konfirmante
-      custom: Kutimo
+      custom: Aliaj agordoj
       delete: Forigi datumojn
       deleted: Forigita
       demote: Degradi
       disable: Frostigi
-      disable_two_factor_authentication: Malaktivigi 2FA-n
+      disable_two_factor_authentication: Malŝalti 2FA-n
       disabled: Frostigita
       display_name: Montrata nomo
       domain: Domajno
       edit: Redakti
-      email: Retadreso
-      email_status: Retadreso Stato
-      enable: Ebligi
+      email: Retpoŝto
+      email_status: Stato de retpoŝto
+      enable: Malfrostigi
       enabled: Ebligita
       followers: Sekvantoj
       follows: Sekvatoj
@@ -67,7 +72,7 @@ eo:
       ip: IP
       joined: Aliĝis
       location:
-        all: Ĉio
+        all: Ĉiuj
         local: Lokaj
         remote: Foraj
         title: Loko
@@ -76,19 +81,19 @@ eo:
       memorialize: Ŝanĝi al memoro
       memorialized: Memorita
       moderation:
-        active: Aktiva
+        active: Aktivaj
         all: Ĉio
         pending: Pritraktata
         suspended: Suspendita
         title: Moderigado
       moderation_notes: Notoj de moderigado
-      most_recent_activity: Lasta ago
+      most_recent_activity: Lastaj afiŝoj
       most_recent_ip: Lasta IP
       no_account_selected: Neniu konto estis ŝanĝita ĉar neniu estis selektita
       no_limits_imposed: Neniu limito trudita
       not_subscribed: Ne abonita
       pending: Pritraktata recenzo
-      perform_full_suspension: Haltigi
+      perform_full_suspension: Suspendi
       promote: Plirangigi
       protocol: Protokolo
       public: Publika
@@ -100,8 +105,8 @@ eo:
       removed_avatar_msg: La bildo de la rolfiguro de %{username} estas sukcese forigita
       resend_confirmation:
         already_confirmed: Ĉi tiu uzanto jam estas konfirmita
-        send: Resendi konfirman retmesaĝon
-        success: Konfirma retmesaĝo sukcese sendita!
+        send: Resendi konfirman retpoŝton
+        success: Konfirma retpoŝto estis sukcese sendita!
       reset: Restarigi
       reset_password: Restarigi pasvorton
       resubscribe: Reaboni
@@ -119,7 +124,7 @@ eo:
         targeted_reports: Raporitaj de alia
       silence: Mutigita
       silenced: Silentigita
-      statuses: Mesaĝoj
+      statuses: Afiŝoj
       subscribe: Aboni
       suspend: Haltigu
       suspended: Suspendita
@@ -127,7 +132,7 @@ eo:
       title: Kontoj
       unblock_email: Malbloki retpoŝtadresojn
       unblocked_email_msg: Sukcese malblokis la retpoŝtadreson de %{username}
-      unconfirmed_email: Nekonfirmita retadreso
+      unconfirmed_email: Nekonfirmita retpoŝto
       undo_sensitized: Malfari sentema
       undo_silenced: Malfari kaŝon
       undo_suspension: Malfari haltigon
@@ -137,23 +142,23 @@ eo:
       view_domain: Vidi la resumon de la domajno
       warn: Averti
       web: Reto
-      whitelisted: En la blanka listo
+      whitelisted: Permesita por federacio
     action_logs:
       action_types:
         approve_user: Aprobi Uzanton
         assigned_to_self_report: Atribui Raporton
-        change_email_user: Ŝanĝi retadreson de uzanto
-        confirm_user: Konfermi uzanto
-        create_account_warning: Krei averton
+        change_email_user: Ŝanĝi retpoŝton de uzanto
+        confirm_user: Konfirmi uzanton
+        create_account_warning: Krei Averton
         create_announcement: Krei Anoncon
-        create_custom_emoji: Krei Propran emoĝion
+        create_custom_emoji: Krei Propran Emoĝion
         create_domain_allow: Krei Domajnan Permeson
-        create_domain_block: Krei blokadon de domajno
-        create_email_domain_block: Krei blokadon de retpoŝta domajno
+        create_domain_block: Krei Blokadon De Domajno
+        create_email_domain_block: Krei Blokadon De Retpoŝta Domajno
         create_ip_block: Krei IP-regulon
-        demote_user: Malpromocii uzanton
+        demote_user: Malpromocii Uzanton
         destroy_announcement: Forigi Anoncon
-        destroy_custom_emoji: Forigi Propran emoĝion
+        destroy_custom_emoji: Forigi Propran Emoĝion
         destroy_domain_allow: Forigi Domajnan Permeson
         destroy_domain_block: Forigi blokadon de domajno
         destroy_email_domain_block: Forigi blokadon de retpoŝta domajno
@@ -176,12 +181,12 @@ eo:
         resolve_report: Solvitaj reporto
         sensitive_account: Marki tikla la aŭdovidaĵojn de via konto
         silence_account: Silentigi konton
-        suspend_account: Haltigi konton
+        suspend_account: Suspendi la 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
+        unsuspend_account: Reaktivigi la konton
         update_announcement: Ĝisdatigi anoncon
         update_custom_emoji: Ĝisdatigi proprajn emoĝiojn
         update_domain_block: Ĝigdatigi domajnan blokadon
@@ -255,7 +260,7 @@ eo:
       disabled: Neebligita
       disabled_msg: La emoĝio sukcese neebligita
       emoji: Emoĝio
-      enable: Ebligi
+      enable: Enŝalti
       enabled: Ebligita
       enabled_msg: Tiu emoĝio estis sukcese ebligita
       list: Listo
@@ -304,7 +309,7 @@ eo:
           desc_html: "<strong>Kaŝi</strong> igos la mesaĝojn de la konto nevideblaj al tiuj, kiuj ne sekvas tiun. <strong>Haltigi</strong> forigos ĉiujn enhavojn, aŭdovidaĵojn kaj datumojn de la konto. Uzu <strong>Nenio</strong> se vi simple volas malakcepti aŭdovidaĵojn."
           noop: Nenio
           silence: Mutigi
-          suspend: Haltigi
+          suspend: Suspendi
         title: Nova domajna blokado
       obfuscate: Malklara domajna nomo
       private_comment: Privata komento
@@ -343,6 +348,7 @@ eo:
           reject_media: Malakcepti la aŭdovidaĵojn
           reject_reports: Malakcepti raportojn
           silence: Kaŝu
+          suspend: Suspendi
         policy: Politiko
       dashboard:
         instance_accounts_dimension: Plej sekvataj kontoj
@@ -401,7 +407,7 @@ eo:
       description_html: "<strong>Fratara ripetilo</strong> estas survoja servilo, kiu interŝanĝas grandan kvanton de publikaj mesaĝoj inter serviloj, kiuj abonas kaj publikigas al ĝi. <strong>Ĝi povas helpi etajn kaj mezgrandajn servilojn malkovri enhavon de la fediverse</strong>, kio normale postulus al lokaj uzantoj mane sekvi homojn de foraj serviloj."
       disable: Neebligi
       disabled: Neebligita
-      enable: Ebligi
+      enable: Enŝalti
       enable_hint: Post ebligo, via servilo abonos ĉiujn publikajn mesaĝojn de tiu ripetilo, kaj komencos sendi publikajn mesaĝojn de la servilo al ĝi.
       enabled: Ebligita
       inbox_url: URL de la ripetilo
@@ -512,18 +518,18 @@ eo:
       allow: Permesi
       disallow: Malpermesi
       links:
-        allow: Permesi ligilon
-        disallow: Malpermesi ligilon
+        allow: Permesi la ligilon
+        disallow: Malpermesi la ligilon
         title: Tendencantaj ligiloj
       pending_review: Atendante revizion
       statuses:
-        allow: Permesi afiŝon
-        allow_account: Permesi aŭtoron
-        disallow: Malpermesi afiŝon
-        disallow_account: Malpermesi aŭtoron
+        allow: Permesi la afiŝon
+        allow_account: Permesi la aŭtoron
+        disallow: Malpermesi la afiŝon
+        disallow_account: Malpermesi la aŭtoron
         shared_by:
-          one: Kundividita kaj aldonita al preferaĵoj unufoje
-          other: Kundividita kaj aldonita al preferaĵoj %{friendly_count}-foje
+          one: Kundividita kaj aldonita al la preferaĵoj unufoje
+          other: Kundividita kaj aldonita al la preferaĵoj %{friendly_count}-foje
         title: Tendencantaj afiŝoj
       tags:
         dashboard:
@@ -537,10 +543,13 @@ eo:
       delete: Forviŝi
       edit_preset: Redakti la antaŭagordojn de averto
       title: Administri avertajn antaŭagordojn
+    webhooks:
+      enabled: Aktiva
   admin_mailer:
     new_appeal:
       actions:
         disable: por frostigi ties konton
+        suspend: por suspendi iliajn kontojn
     new_pending_account:
       body: La detaloj de la nova konto estas sube. Vi povas aprobi aŭ Malakcepti ĉi kandidatiĝo.
       subject: Nova konto atendas por recenzo en %{instance} (%{username})
@@ -874,7 +883,7 @@ eo:
           trillion: Dn
   otp_authentication:
     code_hint: Enmetu la kodon kreitan de via aŭtentiga aplikaĵo por konfirmi
-    enable: Ebligi
+    enable: Enŝalti
     instructions_html: "<strong>Skanu ĉi tiun QR-kodon per Google Authenticator aŭ per simila aplikaĵo en via poŝtelefono</strong>. De tiam, la aplikaĵo kreos nombrojn, kiujn vi devos enmeti."
     manual_instructions: 'Se vi ne povas skani la QR-kodon kaj bezonas enmeti ĝin mane, jen la tut-teksta sekreto:'
     setup: Agordi
diff --git a/config/locales/fi.yml b/config/locales/fi.yml
index 5ac685370..dc8703af6 100644
--- a/config/locales/fi.yml
+++ b/config/locales/fi.yml
@@ -283,7 +283,7 @@ fi:
         update_ip_block_html: "%{name} muutti sääntöä IP-osoitteelle %{target}"
         update_status_html: "%{name} päivitti viestin %{target}"
         update_user_role_html: "%{name} muutti roolia %{target}"
-      deleted_account: poistettu tili
+      deleted_account: poisti tilin
       empty: Lokeja ei löytynyt.
       filter_by_action: Suodata tapahtuman mukaan
       filter_by_user: Suodata käyttäjän mukaan
diff --git a/config/locales/fy.yml b/config/locales/fy.yml
index c48a0b1b5..9d9064388 100644
--- a/config/locales/fy.yml
+++ b/config/locales/fy.yml
@@ -4,22 +4,116 @@ fy:
     last_active: letst warber
   admin:
     accounts:
+      delete: Gegevens fuortsmite
+      deleted: Fuortsmiten
+      domain: Domein
+      edit: Bewurkje
+      followers: Folgers
+      follows: Folgjend
+      header: Omslachfoto
+      inbox_url: Ynboks-URL
+      ip: IP
+      joined: Registrearre
+      location:
+        all: Alle
+        local: Lokaal
+        remote: Ekstern
+        title: Lokaasje
+      login_status: Oanmeldsteat
+      media_attachments: Mediabylagen
       moderation:
         active: Aktyf
+        all: Alle
+        pending: Yn ôfwachting
+        silenced: Beheind
+        suspended: Utsteld
+        title: Moderaasje
+      perform_full_suspension: Utstelle
+      promote: Promovearje
+      protocol: Protokol
+      public: Iepenbier
+      reject: Wegerje
       security_measures:
         only_password: Allinnich wachtwurd
         password_and_2fa: Wachtwurd en 2FA
+      title: Accounts
+      unblock_email: E-mailadres deblokkearje
+      warn: Warskôgje
+      web: Web-app
+    action_logs:
+      action_types:
+        destroy_announcement: Meidieling fuortsmite
+      deleted_account: fuortsmiten account
+    custom_emojis:
+      copy: Kopiearje
+      delete: Fuortsmite
+      disable: Utskeakelje
+      disabled: Utskeakele
+      emoji: Emoji
+      enable: Ynskeakelje
+      enabled: Ynskeakele
+      image_hint: PNG of GIF net grutter as %{size}
+      list: Yn list
+      listed: Werjaan
+      upload: Oplade
     dashboard:
       active_users: warbere brûkers
+      interactions: ynteraksjes
+      title: Dashboerd
       top_languages: Meast aktive talen
       top_servers: Meast aktive tsjinners
+      website: Website
+    disputes:
+      appeals:
+        empty: Gjin beswieren fûn.
+        title: Beswieren
+    email_domain_blocks:
+      delete: Fuortsmite
+      domain: Domein
+      new:
+        create: Domain tafoegje
+        resolve: Domein opsykje
+    follow_recommendations:
+      status: Steat
     instances:
+      back_to_all: Alle
+      back_to_limited: Beheind
+      back_to_warning: Warskôging
+      by_domain: Domein
       confirm_purge: Wolle jo werklik alle gegevens fan dit domein foar ivich fuortsmite?
+      content_policies:
+        comment: Ynterne reden
+        policies:
+          silence: Beheind
+          suspend: Utsteld
+        policy: Belied
       dashboard:
         instance_accounts_measure: bewarre accounts
+    ip_blocks:
+      delete: Fuortsmite
+    relays:
+      delete: Fuortsmite
+    reports:
+      delete_and_resolve: Berjocht fuortsmite
+      notes:
+        delete: Fuortsmite
+    roles:
+      delete: Fuortsmite
+    rules:
+      delete: Fuortsmite
+    statuses:
+      deleted: Fuortsmiten
     system_checks:
       database_schema_check:
         message_html: Der binne database migraasjes yn ôfwachting. Jo moatte dizze útfiere om der foar te soargjen dat de applikaasje wurkjen bliuwt sa as it heard
+    warning_presets:
+      delete: Fuortsmite
+    webhooks:
+      delete: Fuortsmite
+  auth:
+    delete_account: Account fuortsmite
+  deletes:
+    proceed: Account fuortsmite
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': You don't have permission to view this page.
@@ -33,6 +127,12 @@ fy:
   filters:
     contexts:
       thread: Petearen
+    index:
+      delete: Fuortsmite
+  generic:
+    delete: Fuortsmite
+  invites:
+    delete: Deaktivearje
   notification_mailer:
     mention:
       action: Beäntwurdzje
@@ -43,7 +143,11 @@ fy:
     last_active: Letst warber
   rss:
     content_warning: 'Ynhâldswarskôging:'
+  settings:
+    delete: Account fuortsmite
   statuses:
     content_warning: 'Ynhâldswarskôging: %{warning}'
     pin_errors:
       direct: Berjochten dy allinnich sichtber binne foar fermelde brûkers kinne net fêstset wurde
+  webauthn_credentials:
+    delete: Fuortsmite
diff --git a/config/locales/ga.yml b/config/locales/ga.yml
index 45516c4d5..3c4239f77 100644
--- a/config/locales/ga.yml
+++ b/config/locales/ga.yml
@@ -62,6 +62,19 @@ ga:
       statuses: Postálacha
       title: Cuntais
       web: Gréasán
+    action_logs:
+      action_types:
+        assigned_to_self_report: Sann tuairisc
+        create_account_warning: Cruthaigh rabhadh
+        destroy_announcement: Scrios Fógra
+        destroy_ip_block: Scrios riail IP
+        destroy_status: Scrios postáil
+        reopen_report: Athoscail tuairisc
+        resolve_report: Réitigh tuairisc
+        unassigned_report: Cealaigh tuairisc a shann
+      actions:
+        create_account_warning_html: Sheol %{name} rabhadh do %{target}
+      deleted_account: cuntas scriosta
     announcements:
       live: Beo
       publish: Foilsigh
@@ -87,6 +100,7 @@ ga:
       status: Stádas
     instances:
       back_to_all: Uile
+      back_to_warning: Rabhadh
       content_policies:
         policy: Polasaí
       delivery:
@@ -116,6 +130,7 @@ ga:
       status: Stádas
     reports:
       category: Catagóir
+      delete_and_resolve: Scrios postála
       no_one_assigned: Duine ar bith
       notes:
         delete: Scrios
@@ -124,6 +139,12 @@ ga:
       title: Tuairiscí
     roles:
       delete: Scrios
+      privileges:
+        delete_user_data: Scrios sonraí úsáideora
+    rules:
+      delete: Scrios
+    site_uploads:
+      delete: Scrios comhad uaslódáilte
     statuses:
       account: Údar
       deleted: Scriosta
@@ -131,6 +152,9 @@ ga:
       open: Oscail postáil
       original_status: Bunphostáil
       with_media: Le meáin
+    strikes:
+      actions:
+        delete_statuses: Scrios %{name} postála %{target}
     tags:
       review: Stádas athbhreithnithe
     trends:
@@ -139,6 +163,29 @@ ga:
       statuses:
         allow: Ceadaigh postáil
         allow_account: Ceadaigh údar
+    warning_presets:
+      delete: Scrios
+    webhooks:
+      delete: Scrios
+  admin_mailer:
+    new_appeal:
+      actions:
+        delete_statuses: chun postála acu a scrios
+        none: rabhadh
+  auth:
+    delete_account: Scrios cuntas
+    too_fast: Chuireadh foirm róthapa, bain triail arís.
+  deletes:
+    proceed: Scrios cuntas
+  disputes:
+    strikes:
+      appeal_submitted_at: Achomharc curtha isteach
+      appealed_msg: Bhí d'achomharc curtha isteach. Má ceadaítear é, cuirfidh ar an eolas tú.
+      appeals:
+        submit: Cuir achomharc isteach
+      title_actions:
+        none: Rabhadh
+      your_appeal_pending: Chuir tú achomharc isteach
   errors:
     '400': The request you submitted was invalid or malformed.
     '403': You don't have permission to view this page.
@@ -149,3 +196,33 @@ ga:
     '429': Too many requests
     '500': 
     '503': The page could not be served due to a temporary server failure.
+  filters:
+    contexts:
+      thread: Comhráite
+    index:
+      delete: Scrios
+  generic:
+    delete: Scrios
+  notification_mailer:
+    admin:
+      report:
+        subject: Chuir %{name} tuairisc isteach
+  rss:
+    content_warning: 'Rabhadh ábhair:'
+  statuses:
+    content_warning: 'Rabhadh ábhair: %{warning}'
+    show_more: Taispeáin níos mó
+    show_newer: Taispeáin níos déanaí
+    show_thread: Taispeáin snáithe
+  user_mailer:
+    warning:
+      appeal: Cuir achomharc isteach
+      categories:
+        spam: Turscar
+      reason: 'Fáth:'
+      subject:
+        none: Rabhadh do %{acct}
+      title:
+        none: Rabhadh
+  webauthn_credentials:
+    delete: Scrios
diff --git a/config/locales/gd.yml b/config/locales/gd.yml
index ed6040f68..99f432ea4 100644
--- a/config/locales/gd.yml
+++ b/config/locales/gd.yml
@@ -7,7 +7,7 @@ gd:
     hosted_on: Mastodon ’ga òstadh air %{domain}
     title: Mu dhèidhinn
   accounts:
-    follow: Lean air
+    follow: Lean
     followers:
       few: Luchd-leantainn
       one: Neach-leantainn
@@ -19,7 +19,7 @@ gd:
     link_verified_on: Chaidh dearbhadh cò leis a tha an ceangal seo %{date}
     nothing_here: Chan eil dad an-seo!
     pin_errors:
-      following: Feumaidh tu leantainn air neach mus urrainn dhut a bhrosnachadh
+      following: Feumaidh tu neach a leantainn mus urrainn dhut a bhrosnachadh
     posts:
       few: Postaichean
       one: Post
@@ -75,7 +75,7 @@ gd:
       enabled: An comas
       enabled_msg: Chaidh an cunntas aig %{username} a dhì-reòthadh
       followers: Luchd-leantainn
-      follows: A’ leantainn air
+      follows: A’ leantainn
       header: Bann-cinn
       inbox_url: URL a’ bhogsa a-steach
       invite_request_text: Adhbharan na ballrachd
@@ -400,7 +400,7 @@ gd:
         create: Cruthaich bacadh
         hint: Cha chuir bacadh na h-àrainne crìoch air cruthachadh chunntasan san stòr-dàta ach cuiridh e dòighean maorsainneachd sònraichte an sàs gu fèin-obrachail air a h-uile dàta a tha aig na cunntasan ud.
         severity:
-          desc_html: Falaichidh am <strong>mùchadh</strong> postaichean a’ chunntais do dhuine sam bith nach ail a’ leantainn air. Bheir an <strong>cur à rèim</strong> air falbh gach susbaint, meadhan is dàta pròifil a’ chunntais. Tagh <strong>Chan eil gin</strong> mur eil thu ach airson faidhlichean meadhain a dhiùltadh.
+          desc_html: Falaichidh am <strong>mùchadh</strong> postaichean a’ chunntais do dhuine sam bith nach eil ’ga leantainn. Bheir an <strong>cur à rèim</strong> air falbh gach susbaint, meadhan is dàta pròifil a’ chunntais. Tagh <strong>Chan eil gin</strong> mur eil thu ach airson faidhlichean meadhain a dhiùltadh.
           noop: Chan eil gin
           silence: Mùch
           suspend: Cuir à rèim
@@ -439,7 +439,7 @@ gd:
       resolved_through_html: Chaidh fuasgladh slighe %{domain}
       title: Àrainnean puist-d ’gam bacadh
     follow_recommendations:
-      description_html: "<strong>Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath</strong>. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo ’nan àite. Thèid an àireamhachadh às ùr gach latha stèidhichte air na cunntasan air an robh an conaltradh as trice ’s an luchd-leantainn ionadail as motha sa chànan."
+      description_html: "<strong>Cuidichidh molaidhean leantainn an luchd-cleachdaidh ùr ach an lorg iad susbaint inntinneach gu luath</strong>. Mur an do ghabh cleachdaiche conaltradh gu leòr le càch airson molaidhean leantainn gnàthaichte fhaighinn, mholamaid na cunntasan seo ’nan àite. Thèid an àireamhachadh às ùr gach latha, stèidhichte air na cunntasan air an robh an conaltradh as trice ’s an luchd-leantainn ionadail as motha sa chànan."
       language: Dhan chànan
       status: Staid
       suppress: Mùch na molaidhean leantainn
@@ -547,7 +547,7 @@ gd:
     relays:
       add_new: Cuir ath-sheachadan ùr ris
       delete: Sguab às
-      description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an <strong>ath-sheachadan co-nasgaidh</strong> a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. <strong>’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal</strong> agus às an aonais, bhiodh aig cleachdaichean ionadail leantainn air daoine eile air frithealaichean cèine a làimh."
+      description_html: "’S e frithealaiche eadar-mheadhanach a th’ ann an <strong>ath-sheachadan co-nasgaidh</strong> a nì iomlaid air grunnan mòra de phostaichean poblach eadar na frithealaichean a dh’fho-sgrìobhas ’s a dh’fhoillsicheas dha. <strong>’S urrainn dha cuideachadh a thoirt do dh’fhrithealaichean beaga is meadhanach mòr ach an rùraich iad susbaint sa cho-shaoghal</strong> agus às an aonais, bhiodh aig cleachdaichean ionadail daoine eile a leantainn air frithealaichean cèine a làimh."
       disable: Cuir à comas
       disabled: Chaidh a chur à comas
       enable: Cuir an comas
@@ -578,7 +578,7 @@ gd:
         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.
+        silence_description_html: Chan fhaic ach an fheadhainn a tha ’ga leantainn 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.
         suspend_description_html: Cha ghabh a’ phròifil seo agus an t-susbaint gu leòr aice inntrigeadh gus an dèid a sguabadh às air deireadh na sgeòil. Cha ghabh eadar-ghabhail a dhèanamh leis a’ chunntas. Gabhaidh seo a neo-dhèanamh am broinn 30 latha.
       actions_description_html: Socraich dè a nì thu airson an gearan seo fhuasgladh. Ma chuireas tu peanas air a’ chunntas le gearan air, gheibh iad brath air a’ phost-d mura tagh thu an roinn-seòrsa <strong>Spama</strong>.
       add_to_report: Cuir barrachd ris a’ ghearan
@@ -819,7 +819,7 @@ gd:
       statuses:
         allow: Ceadaich am post
         allow_account: Ceadaich an t-ùghdar
-        description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson leantainn orra. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd.
+        description_html: Seo na postaichean air a bheil am frithealaiche agad eòlach ’s a tha ’gan co-roinneadh is ’nan annsachd gu tric aig an àm seo. Faodaidh iad a bhith ’nan cuideachadh dhan luchd-cleachdaidh ùr no a thill ach an lorg iad daoine airson an leantainn. Cha dèid postaichean a shealltainn gu poblach gus an gabh thu ris an ùghdar agus gus an aontaich an t-ùghdar gun dèid an cunntas aca a mholadh do dhaoine eile. ’S urrainn dhut postaichean àraidh a cheadachadh no a dhiùltadh cuideachd.
         disallow: Na ceadaich am post
         disallow_account: Na ceadaich an t-ùghdar
         no_status_selected: Cha deach post a’ treandadh sam bith atharrachadh o nach deach gin dhiubh a thaghadh
@@ -957,7 +957,7 @@ gd:
     description:
       prefix_invited_by_user: Thug @%{name} cuireadh dhut ach am faigh thu ballrachd air an fhrithealaiche seo de Mhastodon!
       prefix_sign_up: Clàraich le Mastodon an-diugh!
-      suffix: Le cunntas, ’s urrainn dhut leantainn air daoine, naidheachdan a phostadh agus conaltradh leis an luchd-chleachdaidh air frithealaiche Mastodon sam bith is a bharrachd!
+      suffix: Le cunntas, ’s urrainn dhut daoine a leantainn, naidheachdan a phostadh agus conaltradh leis an luchd-chleachdaidh air frithealaiche Mastodon sam bith is a bharrachd!
     didnt_get_confirmation: Nach d’fhuair thu an stiùireadh mun dearbhadh?
     dont_have_your_security_key: Nach eil iuchair tèarainteachd agad?
     forgot_password: Na dhìochuimhnich thu am facal-faire agad?
@@ -988,7 +988,7 @@ gd:
       email_settings_hint_html: Chaidh am post-d dearbhaidh a chur gu %{email}. Mur eil an seòladh puist-d seo mar bu chòir, ’s urrainn dhut atharrachadh ann an roghainnean a’ chunntais.
       title: Suidheachadh
     sign_up:
-      preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut leantainn air neach sam bith air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh.
+      preamble: Le cunntas air an fhrithealaiche Mastodon seo, ’s urrainn dhut neach sam bith a leantainn air an lìonra, ge b’ e càit a bheil an cunntas aca-san ’ga òstadh.
       title: Suidhicheamaid %{domain} dhut.
     status:
       account_status: Staid a’ chunntais
@@ -1000,17 +1000,17 @@ gd:
     too_fast: Chaidh am foirm a chur a-null ro luath, feuch ris a-rithist.
     use_security_key: Cleachd iuchair tèarainteachd
   authorize_follow:
-    already_following: Tha thu a’ leantainn air a’ chunntas seo mu thràth
+    already_following: Tha thu a’ leantainn a’ chunntais seo mu thràth
     already_requested: Chuir thu iarrtas leantainn dhan chunntas seo mu thràth
     error: Gu mì-fhortanach, thachair mearachd le lorg a’ chunntais chèin
-    follow: Lean air
+    follow: Lean
     follow_request: 'Chuir thu iarrtas leantainn gu:'
-    following: 'Taghta! Chaidh leat a’ leantainn air:'
+    following: 'Taghta! Chaidh leat a’ leantainn:'
     post_follow:
       close: Air neo dùin an uinneag seo.
       return: Seall pròifil a’ chleachdaiche
       web: Tadhail air an duilleag-lìn
-    title: Lean air %{acct}
+    title: Lean %{acct}
   challenge:
     confirm: Lean air adhart
     hint_html: "<strong>Gliocas:</strong> Chan iarr sinn am facal-faire agad ort a-rithist fad uair a thìde."
@@ -1215,13 +1215,13 @@ gd:
       merge_long: Cùm na reacordan a tha ann is cuir feadhainn ùr ris
       overwrite: Sgrìobh thairis air
       overwrite_long: Cuir na reacordan ùra an àite na feadhna a tha ann
-    preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine air a leanas tu no a tha thu a’ bacadh."
+    preface: "’S urrainn dhut dàta ion-phortadh a dh’às-phortaich thu o fhrithealaiche eile, can liosta nan daoine a leanas tu no a tha thu a’ bacadh."
     success: Chaidh an dàta agad a luchdadh suas is thèid a phròiseasadh a-nis
     types:
       blocking: Liosta-bhacaidh
       bookmarks: Comharran-lìn
       domain_blocking: Liosta-bhacaidh àrainnean
-      following: Liosta dhen fheadhainn air a leanas tu
+      following: Liosta dhen fheadhainn a leanas tu
       muting: Liosta a’ mhùchaidh
     upload: Luchdaich suas
   invites:
@@ -1317,12 +1317,12 @@ gd:
       subject: Is annsa le %{name} am post agad
       title: Annsachd ùr
     follow:
-      body: Tha %{name} a’ leantainn ort a-nis!
-      subject: Tha %{name} a’ leantainn ort a-nis
+      body: Tha %{name} ’gad leantainn a-nis!
+      subject: Tha %{name} ’gad leantainn a-nis
       title: Neach-leantainn ùr
     follow_request:
       action: Stiùirich na h-iarrtasan leantainn
-      body: Dh’iarr %{name} leantainn ort
+      body: Dh’iarr %{name} leantainn
       subject: 'Neach-leantainn ri dhèiligeadh: %{name}'
       title: Iarrtas leantainn ùr
     mention:
@@ -1392,7 +1392,7 @@ gd:
   relationships:
     activity: Gnìomhachd a’ chunntais
     dormant: Na thàmh
-    follow_selected_followers: Lean air an luchd-leantainn a thagh thu
+    follow_selected_followers: Lean an luchd-leantainn a thagh thu
     followers: Luchd-leantainn
     following: A’ leantainn
     invited: Air cuireadh fhaighinn
@@ -1404,7 +1404,7 @@ gd:
     relationship: Dàimh
     remove_selected_domains: Thoir air falbh a h-uile neach-leantainn o na h-àrainnean a thagh thu
     remove_selected_followers: Thoir air falbh a h-uile neach-leantainn a thagh thu
-    remove_selected_follows: Na lean air na cleachdaichean a thagh thu tuilleadh
+    remove_selected_follows: Na lean na cleachdaichean a thagh thu tuilleadh
     status: Staid a’ chunntais
   remote_follow:
     missing_resource: Cha do lorg sinn URL ath-stiùiridh riatanach a’ chunntais agad
@@ -1542,7 +1542,7 @@ gd:
     visibilities:
       direct: Dìreach
       private: Luchd-leantainn a-mhàin
-      private_long: Na seall dhan luchd-leantainn
+      private_long: Na seall ach dhan luchd-leantainn
       public: Poblach
       public_long: Chì a h-uile duine seo
       unlisted: Falaichte o liostaichean
@@ -1647,7 +1647,7 @@ gd:
         disable: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh ach mairidh a’ phròifil ’s an dàta eile agad. Faodaidh tu lethbhreac-glèidhidh dhen dàta agad iarraidh, roghainnean a’ chunntais atharrachadh no an cunntas agad a sguabadh às.
         mark_statuses_as_sensitive: Chuir maoir %{instance} comharra na frionasachd ri cuid dhe na postaichean agad. Is ciall dha seo gum feumar gnogag a thoirt air na meadhanan sna postaichean mus faicear ro-shealladh. ’S urrainn dhut fhèin comharra a chur gu bheil meadhan frionasach nuair a sgrìobhas tu post san à ri teachd.
         sensitive: O seo a-mach, thèid comharra na frionasachd a chur ri faidhle meadhain sam bith a luchdaicheas tu suas agus thèid am falach air cùlaibh rabhaidh a ghabhas briogadh air.
-        silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha a’ leantainn ort mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch leantainn ort a làimh fhathast."
+        silence: "’S urrainn dhut an cunntas agad a chleachdadh fhathast ach chan fhaic ach na daoine a tha ’gad leantainn mu thràth na postaichean agad air an fhrithealaiche seo agus dh’fhaoidte gun dèid d’ às-dhùnadh o iomadh gleus rùrachaidh. Gidheadh, faodaidh càch ’gad leantainn a làimh fhathast."
         suspend: Chan urrainn dhut an cunntas agad a chleachdadh tuilleadh agus chan fhaigh thu grèim air a’ phròifil no air an dàta eile agad. ’S urrainn dhut clàradh a-steach fhathast airson lethbhreac-glèidhidh dhen dàta agad iarraidh mur dèid an dàta a thoirt air falbh an ceann 30 latha gu slàn ach cumaidh sinn cuid dhen dàta bhunasach ach nach seachain thu an cur à rèim.
       reason: 'Adhbhar:'
       statuses: 'Iomradh air postaichean:'
@@ -1669,16 +1669,16 @@ gd:
         suspend: Cunntas à rèim
     welcome:
       edit_profile_action: Suidhich a’ phròifil agad
-      edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad leantainn ort ma thogras tu."
+      edit_profile_step: "’S urrainn dhut a’ phròifil agad a ghnàthachadh is tu a’ luchdadh suas dealbh pròifil, ag atharrachadh d’ ainm-taisbeanaidh is a bharrachd. ’S urrainn dhut lèirmheas a dhèanamh air daoine mus fhaod iad ’gad leantainn ma thogras tu."
       explanation: Seo gliocas no dhà gus tòiseachadh
       final_action: Tòisich air postadh
-      final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith a’ leantainn ort, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?'
+      final_step: 'Tòisich air postadh! Fiù ’s mur eil duine sam bith ’gad leantainn, chì cuid mhath na postaichean poblach agad, can air an loidhne-ama ionadail no le tagaichean hais. Saoil an innis thu beagan mu d’ dhèidhinn air an taga hais #fàilte?'
       full_handle: D’ ainm-cleachdaiche slàn
-      full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no leantainn ort o fhrithealaiche eile.
+      full_handle_hint: Seo na bheir thu dha na caraidean agad ach an urrainn dhaibh teachdaireachd a chur thugad no ’gad leantainn o fhrithealaiche eile.
       subject: Fàilte gu Mastodon
       title: Fàilte air bòrd, %{name}!
   users:
-    follow_limit_reached: Chan urrainn dhut leantainn air còrr is %{limit} daoine
+    follow_limit_reached: Chan urrainn dhut còrr is %{limit} daoine a leantainn
     invalid_otp_token: Còd dà-cheumnach 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.
diff --git a/config/locales/he.yml b/config/locales/he.yml
index 46fd07d30..6c53ff253 100644
--- a/config/locales/he.yml
+++ b/config/locales/he.yml
@@ -5,6 +5,7 @@ he:
     contact_missing: ללא הגדרה
     contact_unavailable: לא רלוונטי/חסר
     hosted_on: מסטודון שיושב בכתובת %{domain}
+    title: אודות
   accounts:
     follow: לעקוב
     followers:
@@ -20,11 +21,11 @@ he:
     pin_errors:
       following: עליך לעקוב אחרי חשבון לפני שניתן יהיה להמליץ עליו
     posts:
-      many: פוסטים
-      one: פוסט
-      other: פוסטים
-      two: פוסטים
-    posts_tab_heading: חצרוצים
+      many: הודעות
+      one: הודעה
+      other: הודעות
+      two: הודעותיים
+    posts_tab_heading: הודעות
   admin:
     account_actions:
       action: בצע/י פעולה
@@ -179,6 +180,7 @@ he:
         confirm_user: אשר משתמש
         create_account_warning: יצירת אזהרה
         create_announcement: יצירת הכרזה
+        create_canonical_email_block: יצירת חסימת דואל
         create_custom_emoji: יצירת אמוג'י מיוחד
         create_domain_allow: יצירת דומיין מותר
         create_domain_block: יצירת דומיין חסום
@@ -188,13 +190,14 @@ he:
         create_user_role: יצירת תפקיד
         demote_user: הורדת משתמש בדרגה
         destroy_announcement: מחיקת הכרזה
+        destroy_canonical_email_block: מחיקת חסימת דואל
         destroy_custom_emoji: מחיקת אמוג'י יחודי
         destroy_domain_allow: מחיקת דומיין מותר
         destroy_domain_block: מחיקת דומיין חסום
         destroy_email_domain_block: מחיקת חסימת דומיין דוא"ל
         destroy_instance: טיהור דומיין
         destroy_ip_block: מחיקת כלל IP
-        destroy_status: מחיקת פוסט
+        destroy_status: מחיקת הודעה
         destroy_unavailable_domain: מחיקת דומיין בלתי זמין
         destroy_user_role: מחיקת תפקיד
         disable_2fa_user: השעיית זיהוי דו-גורמי
@@ -210,6 +213,7 @@ he:
         reject_user: דחיית משתמש
         remove_avatar_user: הסרת תמונת פרופיל
         reopen_report: פתיחת דו"ח מחדש
+        resend_user: שליחת דואל אישור שוב
         reset_password_user: איפוס סיסמה
         resolve_report: פתירת דו"ח
         sensitive_account: חשבון רגיש לכח
@@ -223,6 +227,7 @@ he:
         update_announcement: עדכון הכרזה
         update_custom_emoji: עדכון סמלון מותאם אישית
         update_domain_block: עדכון חסימת שם מתחם
+        update_ip_block: עדכון כלל IP
         update_status: סטטוס עדכון
         update_user_role: עדכון תפקיד
       actions:
@@ -234,6 +239,7 @@ he:
         confirm_user_html: '%{name} אישר/ה את כותבת הדו"אל של המשתמש %{target}'
         create_account_warning_html: "%{name} שלח/ה אזהרה ל %{target}"
         create_announcement_html: "%{name} יצר/ה הכרזה חדשה %{target}"
+        create_canonical_email_block_html: "%{name} חסם/ה את הדואל %{target}"
         create_custom_emoji_html: "%{name} העלו אמוג'י חדש %{target}"
         create_domain_allow_html: "%{name} אישר/ה פדרציה עם הדומיין %{target}"
         create_domain_block_html: "%{name} חסם/ה את הדומיין %{target}"
@@ -243,13 +249,14 @@ he:
         create_user_role_html: "%{name} יצר את התפקיד של %{target}"
         demote_user_html: "%{name} הוריד/ה בדרגה את המשתמש %{target}"
         destroy_announcement_html: "%{name} מחק/ה את ההכרזה %{target}"
+        destroy_canonical_email_block_html: "%{name} הסיר/ה חסימה מדואל %{target}"
         destroy_custom_emoji_html: "%{name} מחק אמוג'י של %{target}"
         destroy_domain_allow_html: "%{name} לא התיר/ה פדרציה עם הדומיין %{target}"
         destroy_domain_block_html: "%{name} הסיר/ה חסימה מהדומיין %{target}"
         destroy_email_domain_block_html: '%{name} הסיר/ה חסימה מדומיין הדוא"ל %{target}'
         destroy_instance_html: "%{name} טיהר/ה את הדומיין %{target}"
         destroy_ip_block_html: "%{name} מחק/ה את הכלל עבור IP %{target}"
-        destroy_status_html: "%{name} הסיר/ה פוסט מאת %{target}"
+        destroy_status_html: ההודעה של %{target} הוסרה ע"י %{name}
         destroy_unavailable_domain_html: "%{name} התחיל/ה מחדש משלוח לדומיין %{target}"
         destroy_user_role_html: "%{name} ביטל את התפקיד של %{target}"
         disable_2fa_user_html: "%{name} ביטל/ה את הדרישה לאימות דו-גורמי למשתמש %{target}"
@@ -265,6 +272,7 @@ he:
         reject_user_html: "%{name} דחו הרשמה מ-%{target}"
         remove_avatar_user_html: "%{name} הסירו את תמונת הפרופיל של %{target}"
         reopen_report_html: '%{name} פתח מחדש דו"ח %{target}'
+        resend_user_html: "%{name} הפעיל.ה שליחה מחדש של דואל אימות עבור %{target}"
         reset_password_user_html: הסיסמה עבור המשתמש %{target} התאפסה על־ידי %{name}
         resolve_report_html: '%{name} פתר/ה דו"ח %{target}'
         sensitive_account_html: "%{name} סימן/ה את המדיה של %{target} כרגיש"
@@ -278,8 +286,10 @@ he:
         update_announcement_html: "%{name} עדכן/ה הכרזה %{target}"
         update_custom_emoji_html: "%{name} עדכן/ה אמוג'י %{target}"
         update_domain_block_html: "%{name} עדכן/ה חסימת דומיין עבור %{target}"
-        update_status_html: "%{name} עדכן/ה פוסט של %{target}"
+        update_ip_block_html: "%{name} שינה כלל עבור IP %{target}"
+        update_status_html: "%{name} עדכן/ה הודעה של %{target}"
         update_user_role_html: "%{name} שינה את התפקיד של %{target}"
+      deleted_account: חשבון מחוק
       empty: לא נמצאו יומנים.
       filter_by_action: סינון לפי פעולה
       filter_by_user: סינון לפי משתמש
@@ -323,6 +333,7 @@ he:
       listed: ברשימה
       new:
         title: הוספת אמוג'י מיוחד חדש
+      no_emoji_selected: לא בוצעו שינויים ברגשונים שכן לא נבחרו כאלו
       not_permitted: אין לך הרשאות לביצוע פעולה זו
       overwrite: לדרוס
       shortcode: קוד קצר
@@ -351,10 +362,10 @@ he:
         other: "<strong>%{count}</strong> דוחות ממתינים"
         two: "<strong>%{count}</strong> דוחות ממתינים"
       pending_tags_html:
-        many: "<strong>%{count}</strong> האשתגיות ממתינות"
-        one: "<strong>%{count}</strong> האשתג ממתין"
-        other: "<strong>%{count}</strong> האשתגיות ממתינות"
-        two: "<strong>%{count}</strong> האשתגיות ממתינות"
+        many: "<strong>%{count}</strong> תגיות ממתינות"
+        one: תגית <strong>%{count}</strong> ממתינה
+        other: "<strong>%{count}</strong> תגיות ממתינות"
+        two: "<strong>%{count}</strong> תגיות ממתינות"
       pending_users_html:
         many: "<strong>%{count}</strong> משתמשים ממתינים"
         one: "<strong>%{count}</strong> משתמש/ת ממתינ/ה"
@@ -475,7 +486,7 @@ he:
         instance_languages_dimension: שפות מובילות
         instance_media_attachments_measure: קבצי מדיה מאופסנים
         instance_reports_measure: דו"חות אודותיהם
-        instance_statuses_measure: חצרוצים מאופסנים
+        instance_statuses_measure: הודעות מאופסנות
       delivery:
         all: הכל
         clear: ניקוי שגיאות משלוח
@@ -536,11 +547,11 @@ he:
     relays:
       add_new: הוספת ממסר חדש
       delete: מחיקה
-      description_html: "<strong>ממסר פדרטיבי</strong> הוא שרת מתווך שמחליף כמויות גדולות של חצרוצים פומביים בין שרתים שרשומים ומפרסמים אליו. <strong>הוא יכול לעזור לשרתים קטנים ובינוניים לגלות תוכן מהפדרציה</strong>, מה שאחרת היה דורש ממשתמשים מקומיים לעקוב ידנית אחרי אנשים בשרתים מרוחקים."
+      description_html: "<strong>ממסר פדרטיבי</strong> הוא שרת מתווך שמחליף כמויות גדולות של הודעות פומביות בין שרתים שרשומים ומפרסמים אליו. <strong>הוא יכול לעזור לשרתים קטנים ובינוניים לגלות תוכן מהפדרציה</strong>, מה שאחרת היה דורש ממשתמשים מקומיים לעקוב ידנית אחרי אנשים בשרתים מרוחקים."
       disable: השבתה
       disabled: מושבת
       enable: לאפשר
-      enable_hint: מרגע שאופשר, השרת שלך יירשם לכל החצרוצים הפומביים מהממסר הזה, ויתחיל לשלוח את חצרוציו הפומביים לממסר.
+      enable_hint: מרגע שאופשר, השרת שלך יירשם לכל ההודעות הפומביות מהממסר הזה, ויתחיל לשלוח את הודעותיו הפומביות לממסר.
       enabled: מאופשר
       inbox_url: קישורית ממסר
       pending: ממתין לאישור הממסר
@@ -563,8 +574,8 @@ he:
       action_log: ביקורת יומן
       action_taken_by: פעולה בוצעה ע"י
       actions:
-        delete_description_html: הפוסטים המדווחים יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותה חשבון.
-        mark_as_sensitive_description_html: המדיה בחצרוצים מדווחים תסומן כרגישה ועבירה תרשם כדי לעזור לך להסלים באינטראקציות עתידיות עם אותו החשבון.
+        delete_description_html: ההודעות המדווחות יימחקו ותרשם עבירה על מנת להקל בהעלאה של דיווחים עתידיים על אותו החשבון.
+        mark_as_sensitive_description_html: המדיה בהודעות מדווחות תסומן כרגישה ועבירה תרשם כדי לעזור לך להסלים באינטראקציות עתידיות עם אותו החשבון.
         other_description_html: ראו אפשרויות נוספות לשליטה בהתנהגות החשבון וכדי לבצע התאמות בתקשורת עם החשבון המדווח.
         resolve_description_html: אף פעולה לא תבוצע נגד החשבון עליו דווח, לא תירשם עבירה, והדיווח ייסגר.
         silence_description_html: הפרופיל יהיה גלוי אך ורק לאלה שכבר עוקבים אחריו או לאלה שיחפשו אותו ידנית, מה שיגביל מאד את תפוצתו. ניתן תמיד להחזיר את המצב לקדמותו.
@@ -581,7 +592,7 @@ he:
         none: ללא
       comment_description_html: 'על מנת לספק עוד מידע, %{name} כתב\ה:'
       created_at: מדווח
-      delete_and_resolve: מחיקת חצרוצים
+      delete_and_resolve: מחיקת הודעות
       forwarded: קודם
       forwarded_to: קודם ל-%{domain}
       mark_as_resolved: סימון כפתור
@@ -687,35 +698,73 @@ he:
       empty: שום כללי שרת לא הוגדרו עדיין.
       title: כללי שרת
     settings:
+      about:
+        manage_rules: ניהול כללי שרת
+        preamble: תיאור מעמיק על דרכי ניהול השרת, ניהול הדיונים, ומקורות המימון שלו.
+        rules_hint: קיים מקום ייעודי לחוקים שעל המשתמשים שלך לדבוק בהם.
+        title: אודות
+      appearance:
+        preamble: התאמה מיוחדת של מנשק המשתמש של מסטודון.
+        title: מראה
+      branding:
+        preamble: המיתוג של השרת שלך מבדל אותו משרתים אחרים ברשת. המידע יכול להיות מוצג בסביבות שונות כגון מנשק הווב של מסטודון, יישומים מרומיים, בצפיה מקדימה של קישור או בתוך יישומוני הודעות וכולי. מסיבה זו מומלץ לשמור על המידע ברור, קצר וממצה.
+        title: מיתוג
+      content_retention:
+        preamble: שליטה על דרך אחסון תוכן המשתמשים במסטודון.
+        title: תקופת השמירה של תכנים
+      discovery:
+        follow_recommendations: המלצות מעקב
+        preamble: הצפה של תוכן מעניין בקבלת פני משתמשות חדשות שאולי אינן מכירות עדיין א.נשים במסטודון. ניתן לשלוט איך אפשרויות גילוי שונות עובדות על השרת שלך.
+        profile_directory: מדריך פרופילים
+        public_timelines: פידים פומביים
+        title: איתור
+        trends: נושאים חמים
       domain_blocks:
         all: לכולם
         disabled: לאף אחד
         users: למשתמשים מקומיים מחוברים
+      registrations:
+        preamble: שליטה בהרשאות יצירת חשבון בשרת שלך.
+        title: הרשמות
       registrations_mode:
         modes:
           approved: נדרש אישור הרשמה
           none: אף אחד לא יכול להרשם
           open: כל אחד יכול להרשם
+      title: הגדרות שרת
     site_uploads:
       delete: מחיקת קובץ שהועלה
       destroyed_msg: העלאת אתר נמחקה בהצלחה!
     statuses:
+      account: מחבר
+      application: יישום
       back_to_account: חזרה לדף החשבון
       back_to_report: חזרה לעמוד הדיווח
       batch:
         remove_from_report: הסרה מהדיווח
         report: דווח
       deleted: מחוקים
+      favourites: חיבובים
+      history: היסטורית גרסאות
+      in_reply_to: השיבו ל־
+      language: שפה
       media:
         title: מדיה
-      no_status_selected: לא בוצעו שינויים בחצרוצים שכן לא נבחרו חצרוצים
-      title: חצרוצי חשבון
+      metadata: נתוני-מטא
+      no_status_selected: לא בוצעו שינויים בהודעות שכן לא נבחרו כאלו
+      open: פתח הודעה
+      original_status: הודעה מקורית
+      reblogs: שיתופים
+      status_changed: הודעה שונתה
+      title: הודעות החשבון
+      trending: נושאים חמים
+      visibility: נראות
       with_media: עם מדיה
     strikes:
       actions:
-        delete_statuses: "%{name} מחק/ה את חצרוציו של %{target}"
+        delete_statuses: "%{name} מחק/ה את הודעותיו של %{target}"
         disable: "%{name} הקפיא/ה את חשבונו של %{target}"
-        mark_statuses_as_sensitive: "%{name} סימנה את חצרוציו של %{target} כרגישים"
+        mark_statuses_as_sensitive: "%{name} סימנ/ה את הודעותיו של %{target} כרגישים"
         none: "%{name} שלח/ה אזהרה ל-%{target}"
         sensitive: "%{name} סימן/ה את חשבונו של %{target} כרגיש"
         silence: "%{name} הגביל/ה את חשבונו/ה של %{target}"
@@ -737,7 +786,7 @@ he:
         message_html: שום הליכי Sidekiq לא רצים עבור %{value} תור(ות). בחנו בבקשה את הגדרות Sidekiq
     tags:
       review: סקירת מצב
-      updated_msg: הגדרות האשתג עודכנו בהצלחה
+      updated_msg: הגדרות תגיות עודכנו בהצלחה
     title: ניהול
     trends:
       allow: לאפשר
@@ -746,9 +795,12 @@ he:
       links:
         allow: אישור קישורית
         allow_provider: אישור מפרסם
-        description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה חצרוצים מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות.
+        description_html: בקישוריות אלה נעשה כרגע שימוש על ידי חשבונות רבים שהשרת שלך רואה הודעות מהם. זה עשוי לסייע למשתמשיך לברר מה קורה בעולם. שום קישוריות לא יוצגו עד שתאשרו את המפרסם. ניתן גם לאפשר או לדחות קישוריות ספציפיות.
         disallow: לא לאשר קישורית
         disallow_provider: לא לאשר מפרסם
+        no_link_selected: לא בוצעו שינויים בקישורים שכן לא נבחרו כאלו
+        publishers:
+          no_publisher_selected: לא בוצעו שינויים במפרסמים שכן לא נבחרו כאלו
         shared_by_over_week:
           many: הופץ על ידי %{count} אנשים בשבוע האחרון
           one: הופץ על ידי אדם אחד בשבוע האחרון
@@ -765,18 +817,19 @@ he:
         title: מפרסמים
       rejected: דחוי
       statuses:
-        allow: הרשאת פוסט
+        allow: הרשאת הודעה
         allow_account: הרשאת מחבר/ת
-        description_html: אלו הם חצרוצים שהשרת שלך מכיר וזוכים להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. החצרוצים לא מוצגים עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות חצרוצים ספציפיים.
-        disallow: לדחות פוסט
+        description_html: אלו הן הודעות שהשרת שלך מכיר וזוכות להדהודים וחיבובים רבים כרגע. זה עשוי למשתמשיך החדשים והחוזרים למצוא עוד נעקבים. ההודעות לא מוצגות עד שיאושר המחבר/ת, והמחבר/ת יאשרו שחשבונים יומלץ לאחרים. ניתן לאשר או לדחות הודעות ספציפיות.
+        disallow: לדחות הודעה
         disallow_account: לא לאשר מחבר/ת
+        no_status_selected: לא בוצעו שינויים בהודעות חמות שכן לא נבחרו כאלו
         not_discoverable: המחבר/ת לא בחר/ה לאפשר את גילויים
         shared_by:
           many: הודהד וחובב %{friendly_count} פעמים
           one: הודהד או חובב פעם אחת
           other: הודהד וחובב %{friendly_count} פעמים
           two: הודהד וחובב %{friendly_count} פעמים
-        title: חצרוצים חמים
+        title: הודעות חמות
       tags:
         current_score: ציון נוכחי %{score}
         dashboard:
@@ -785,13 +838,14 @@ he:
           tag_servers_dimension: שרתים מובילים
           tag_servers_measure: שרתים שונים
           tag_uses_measure: כלל השימושים
-        description_html: אלו הן האשתגיות שמופיעות הרבה כרגע בחצרוצים המגיעים לשרת. זה עשוי לעזור למשתמשיך למצוא על מה אנשים מרבים לדבר כרגע. שום האשתגיות לא יוצגו בפומבי עד שתאושרנה.
+        description_html: אלו הן התגיות שמופיעות הרבה כרגע בהודעות המגיעות לשרת. זה עשוי לעזור למשתמשיך למצוא על מה אנשים מרבים לדבר כרגע. שום תגיות לא יוצגו בפומבי עד שתאושרנה.
         listable: ניתנות להצעה
+        no_tag_selected: לא בוצעו שינויים בתגיות שכן לא נבחרו כאלו
         not_listable: לא תוצענה
         not_trendable: לא תופענה תחת נושאים חמים
         not_usable: לא שמישות
         peaked_on_and_decaying: הגיע לשיא ב-%{date}, ודועך עכשיו
-        title: האשתגיות חמות
+        title: תגיות חמות
         trendable: עשויה להופיע תחת נושאים חמים
         trending_rank: 'מדורגת #%{rank}'
         usable: ניתנת לשימוש
@@ -812,6 +866,7 @@ he:
     webhooks:
       add_new: הוספת נקודת קצה
       delete: מחיקה
+      description_html: כלי <strong>webhook</strong> מאפשר למסטודון לשגר <strong>התראות זמן-אמת</strong> לגבי אירועים נבחרים ליישומון שלך כדי שהוא יוכל <strong>להגיב אוטומטית</strong>.
       disable: כיבוי
       disabled: כבוי
       edit: עריכת נקודת קצה
@@ -833,9 +888,9 @@ he:
   admin_mailer:
     new_appeal:
       actions:
-        delete_statuses: כדי למחוק את חצרוציהם
+        delete_statuses: כדי למחוק את הודעותיהם
         disable: כדי להקפיא את חשבונם
-        mark_statuses_as_sensitive: כדי לסמן את חצרוציהם כרגישים
+        mark_statuses_as_sensitive: כדי לסמן את הודעותיהם כרגישות
         none: אזהרה
         sensitive: כדי לסמן את חשבונם כרגיש
         silence: כדי להגביל את חשבונם
@@ -855,11 +910,11 @@ he:
       new_trending_links:
         title: נושאים חמים
       new_trending_statuses:
-        title: חצרוצים לוהטים
+        title: הודעות חמות
       new_trending_tags:
-        no_approved_tags: אין כרגע שום האשתגיות חמות מאושרות.
-        requirements: כל אחת מהמועמדות האלה עשויה לעבור את ההאשתגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}.
-        title: האשתגיות חמות
+        no_approved_tags: אין כרגע שום תגיות חמות מאושרות.
+        requirements: כל אחת מהמועמדות האלו עשויה לעבור את התגית החמה המאושרת מדרגה %{rank}, שהיא כרגע %{lowest_tag_name} עם ציון של %{lowest_tag_score}.
+        title: תגיות חמות
       subject: נושאים חמים חדשים מוכנים לסקירה ב-%{instance}
   aliases:
     add_new: יצירת שם נרדף
@@ -870,7 +925,7 @@ he:
     remove: הסרת שם נרדף
   appearance:
     advanced_web_interface: ממשק ווב מתקדם
-    advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות והאשתגיות.'
+    advanced_web_interface_hint: 'אם ברצונך לעשות שימוש במלוא רוחב המסך, ממשק הווב המתקדם מאפשר לך להגדיר עמודות רבות ושונות כדי לראות בו זמנית כמה מידע שתרצה/י: פיד הבית, התראות, פרהסיה ומספר כלשהו של רשימות ותגיות.'
     animations_and_accessibility: הנפשות ונגישות
     confirmation_dialogs: חלונות אישור
     discovery: גילוי
@@ -879,14 +934,14 @@ he:
       guide_link: https://crowdin.com/project/mastodon
       guide_link_text: כולם יכולים לתרום.
     sensitive_content: תוכן רגיש
-    toot_layout: פריסת פוסט
+    toot_layout: פריסת הודעה
   application_mailer:
     notification_preferences: שינוי העדפות דוא"ל
     salutation: "%{name},"
     settings: 'שינוי הגדרות דוא"ל: %{link}'
     view: 'תצוגה:'
     view_profile: צפיה בפרופיל
-    view_status: הצגת פוסט
+    view_status: הצגת הודעה
   applications:
     created: ישום נוצר בהצלחה
     destroyed: ישום נמחק בהצלחה
@@ -895,6 +950,7 @@ he:
     warning: זהירות רבה נדרשת עם מידע זה. אין לחלוק אותו אף פעם עם אף אחד!
     your_token: אסימון הגישה שלך
   auth:
+    apply_for_account: להכנס לרשימת המתנה
     change_password: סיסמה
     delete_account: מחיקת חשבון
     delete_account_html: אם ברצונך למחוק את החשבון, ניתן <a href="%{path}">להמשיך כאן</a>. תתבקש/י לספק אישור נוסף.
@@ -914,6 +970,7 @@ he:
     migrate_account: מעבר לחשבון אחר
     migrate_account_html: אם ברצונך להכווין את החשבון לעבר חשבון אחר, ניתן <a href="%{path}">להגדיר זאת כאן</a>.
     or_log_in_with: או התחבר באמצעות
+    privacy_policy_agreement_html: קארתי והסכמתי ל<a href="%{privacy_policy_path}" target="_blank">מדיניות הפרטיות</a>
     providers:
       cas: CAS
       saml: SAML
@@ -921,12 +978,18 @@ he:
     registration_closed: "%{instance} לא מקבל חברים חדשים"
     resend_confirmation: שלח הוראות אימות בשנית
     reset_password: איפוס סיסמה
+    rules:
+      preamble: אלו נקבעים ונאכפים ע"י המנחים של %{domain}.
+      title: כמה חוקים בסיסיים.
     security: אבטחה
     set_new_password: סיסמה חדשה
     setup:
       email_below_hint_html: אם כתובת הדוא"ל להלן לא נכונה, ניתן לשנותה כאן ולקבל דוא"ל אישור חדש.
       email_settings_hint_html: דוא"ל האישור נשלח ל-%{email}. אם כתובת הדוא"ל הזו לא נכונה, ניתן לשנותה בהגדרות החשבון.
       title: הגדרות
+    sign_up:
+      preamble: כיוון שמסטודון מבוזרת, תוכל/י להשתמש בחשבון שלך משרתי מסטודון או רשתות תואמות אחרות אם אין לך חשבון על שרת זה.
+      title: הבא נקים לך את השרת בכתובת %{domain}.
     status:
       account_status: מצב חשבון
       confirming: ממתין שדוא"ל האישור יושלם.
@@ -984,7 +1047,7 @@ he:
     warning:
       before: 'לפני שנמשיך, נא לקרוא בזהירות את ההערות הבאות:'
       caches: מידע שהוטמן על ידי שרתים אחרים עשוי להתמיד
-      data_removal: חצרוציך וכל מידע אחר יוסרו לתמיד
+      data_removal: הודעותיך וכל מידע אחר יוסרו לתמיד
       email_change_html: ניתן <a href="%{path}">לשנות את כתובת הדוא"ל שלך</a> מבלי למחוק את החשבון
       email_contact_html: אם הוא עדיין לא הגיע, ניתן לקבל עזרה על ידי משלוח דואל ל-<a href="mailto:%{email}">%{email}</a>
       email_reconfirmation_html: אם לא מתקבל דוא"ל האישור, ניתן <a href="%{path}">לבקש אותו שוב</a>
@@ -1008,13 +1071,13 @@ he:
       description_html: אלו הן הפעולות שננקטו כנגד חשבונך והאזהרות שנשלחו אליך על ידי צוות %{instance}.
       recipient: הנמען
       reject_appeal: דחיית ערעור
-      status: 'פוסט #%{id}'
-      status_removed: הפוסט כבר הוסר מהמערכת
+      status: 'הודעה #%{id}'
+      status_removed: ההודעה כבר הוסרה מהמערכת
       title: "%{action} מתאריך %{date}"
       title_actions:
-        delete_statuses: הסרת פוסט
+        delete_statuses: הסרת הודעה
         disable: הקפאת חשבון
-        mark_statuses_as_sensitive: סימון חצרוצים כרגישים
+        mark_statuses_as_sensitive: סימון הודעות כרגישות
         none: אזהרה
         sensitive: סימו חשבון כרגיש
         silence: הגבלת חשבון
@@ -1046,7 +1109,7 @@ he:
     archive_takeout:
       date: תאריך
       download: הורדת הארכיון שלך
-      hint_html: ניתן לבקש ארכיון של <strong>חצרוציך וקבצי המדיה</strong> שלך. המידע המיוצא יהיה בפורמט אקטיביטיפאב, שיכול להיקרא על ידי כל תוכנה התומכת בו. ניתן לבקש ארכיון מדי 7 ימים.
+      hint_html: ניתן לבקש ארכיון של <strong>הודעותיך וקבצי המדיה</strong> שלך. המידע המיוצא יהיה בפורמט אקטיביטיפאב, שיכול להיקרא על ידי כל תוכנה התומכת בו. ניתן לבקש ארכיון מדי 7 ימים.
       in_progress: מייצר את הארכיון שלך...
       request: לבקש את הארכיון שלך
       size: גודל
@@ -1060,8 +1123,8 @@ he:
   featured_tags:
     add_new: הוספת חדש
     errors:
-      limit: המספר המירבי של האשתגיות כבר מוצג
-    hint_html: "<strong>מהן האשתגיות נבחרות?</strong> הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בחצרוציך הפומביים המסמונים בהאשתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך."
+      limit: המספר המירבי של התגיות כבר מוצג
+    hint_html: "<strong>מהן תגיות נבחרות?</strong> הן מוצגות במובלט בפרופיל הפומבי שלך ומאפשר לאנשים לעיין בהודעות הפומביות שלך המסומנות בתגיות אלה. הן כלי אדיר למעקב אחר עבודות יצירה ופרוייקטים לטווח ארוך."
   filters:
     contexts:
       account: פרופילים
@@ -1072,7 +1135,8 @@ he:
     edit:
       add_keyword: הוספת מילת מפתח
       keywords: מילות מפתח
-      statuses: פוסטים יחידים
+      statuses: הודעות מסויימות
+      statuses_hint_html: הסנן פועל על בחירה ידנית של הודעות בין אם הן מתאימות למילות המפתח להלן ואם לאו. posts regardless of whether they match the keywords below. <a href="%{path}">בחינה או הסרה של ההודעות מהסנן</a>.
       title: ערוך מסנן
     errors:
       deprecated_api_multiple_keywords: לא ניתן לשנות פרמטרים אלו מהיישומון הזה בגלל שהם חלים על יותר ממילת מפתח אחת. ניתן להשתמש ביישומון מעודכן יותר או בממשק הוובי.
@@ -1088,6 +1152,16 @@ he:
         one: מילת מפתח %{count}
         other: "%{count} מילות מפתח"
         two: "%{count} מילות מפתח"
+      statuses:
+        many: "%{count} הודעות"
+        one: הודעה %{count}
+        other: "%{count} הודעות"
+        two: "%{count} הודעותיים"
+      statuses_long:
+        many: "%{count} הודעות הוסתרו"
+        one: הודעה %{count} יחידה הוסתרה
+        other: "%{count} הודעות הוסתרו"
+        two: הודעותיים %{count} הוסתרו
       title: מסננים
     new:
       save: שמירת מסנן חדש
@@ -1097,8 +1171,8 @@ he:
       batch:
         remove: הסרה מפילטר
       index:
-        hint: פילטר זה חל באופן של בחירת פוסטים בודדים ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד פוסטים לפילטר זה ממשק הווב.
-        title: פוסטים שסוננו
+        hint: סנן זה חל באופן של בחירת הודעות בודדות ללא תלות בקריטריונים אחרים. תוכלו להוסיף עוד הודעות לסנן זה ממנשק הווב.
+        title: הודעות שסוננו
   footer:
     trending_now: נושאים חמים
   generic:
@@ -1175,7 +1249,7 @@ he:
     title: הסטוריית אימותים
   media_attachments:
     validations:
-      images_and_video: לא ניתן להוסיף וידאו לפוסט שכבר מכיל תמונות
+      images_and_video: לא ניתן להוסיף וידאו להודעה שכבר מכילה תמונות
       not_ready: לא ניתן להצמיד קבצים שהעלאתם לא הסתיימה. נסה/י שוב בעוד רגע!
       too_many: לא ניתן להוסיף יותר מארבעה קבצים
   migrations:
@@ -1215,6 +1289,8 @@ he:
     carry_blocks_over_text: חשבון זה עבר מ-%{acct}, אותו חסמת בעבר.
     carry_mutes_over_text: חשבון זה עבר מ-%{acct}, אותו השתקת בעבר.
     copy_account_note_text: 'חשבון זה הועבר מ-%{acct}, הנה הערותיך הקודמות לגביהם:'
+  navigation:
+    toggle_menu: הצגת\הסתרת תפריט
   notification_mailer:
     admin:
       report:
@@ -1222,8 +1298,8 @@ he:
       sign_up:
         subject: "%{name} נרשמו"
     favourite:
-      body: 'חצרוצך חובב על ידי %{name}:'
-      subject: חצרוצך חובב על ידי %{name}
+      body: 'הודעתך חובבה על ידי %{name}:'
+      subject: הודעתך חובבה על ידי %{name}
       title: חיבוב חדש
     follow:
       body: "%{name} עכשיו במעקב אחריך!"
@@ -1242,13 +1318,13 @@ he:
     poll:
       subject: סקר מאת %{name} הסתיים
     reblog:
-      body: 'חצרוצך הודהד על ידי %{name}:'
-      subject: חצרוצך הודהד על ידי%{name}
+      body: 'הודעתך הודהדה על ידי %{name}:'
+      subject: הודעתך הודהדה על ידי%{name}
       title: הדהוד חדש
     status:
-      subject: "%{name} בדיוק חצרץ"
+      subject: "%{name} בדיוק פרסם"
     update:
-      subject: "%{name} ערכו פוסט"
+      subject: "%{name} ערכו הודעה"
   notifications:
     email_events: ארועים להתראות דוא"ל
     email_events_hint: 'בחר/י ארועים עבורים תרצה/י לקבל התראות:'
@@ -1290,8 +1366,10 @@ he:
       too_many_options: לא יכול להכיל יותר מ-%{max} פריטים
   preferences:
     other: שונות
-    posting_defaults: ברירות מחדל לפוסטים
+    posting_defaults: ברירות מחדל להודעות
     public_timelines: פידים פומביים
+  privacy_policy:
+    title: מדיניות פרטיות
   reactions:
     errors:
       limit_reached: גבול מספר התגובות השונות הושג
@@ -1321,11 +1399,11 @@ he:
   rss:
     content_warning: 'אזהרת תוכן:'
     descriptions:
-      account: פוסטים ציבוריים מחשבון @%{acct}
-      tag: 'פוסטים ציבוריים עם תיוג #%{hashtag}'
+      account: הודעות ציבוריות מחשבון @%{acct}
+      tag: 'הודעות ציבוריות עם תיוג #%{hashtag}'
   scheduled_statuses:
-    over_daily_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים להיום, שהוא %{limit}
-    over_total_limit: חרגת מהמספר המקסימלי של חצרוצים מתוזמנים, שהוא %{limit}
+    over_daily_limit: חרגת מהמספר המקסימלי של הודעות מתוזמנות להיום, שהוא %{limit}
+    over_total_limit: חרגת מהמספר המקסימלי של הודעות מתוזמנות, שהוא %{limit}
     too_soon: תאריך התזמון חייב להיות בעתיד
   sessions:
     activity: פעילות אחרונה
@@ -1380,7 +1458,7 @@ he:
     development: פיתוח
     edit_profile: עריכת פרופיל
     export: יצוא מידע
-    featured_tags: האשתגיות נבחרות
+    featured_tags: תגיות נבחרות
     import: יבוא
     import_and_export: יבוא ויצוא
     migrate: הגירת חשבון
@@ -1388,7 +1466,7 @@ he:
     preferences: העדפות
     profile: פרופיל
     relationships: נעקבים ועוקבים
-    statuses_cleanup: מחיקת חצרוצים אוטומטית
+    statuses_cleanup: מחיקת הודעות אוטומטית
     strikes: עבירות מנהלתיות
     two_factor_authentication: אימות דו-שלבי
     webauthn_authentication: מפתחות אבטחה
@@ -1404,7 +1482,7 @@ he:
         many: "%{count} תמונות"
         one: תמונה %{count}
         other: "%{count} תמונות"
-        two: "%{count} תמונות"
+        two: "%{count} תמונותיים"
       video:
         many: "%{count} סרטונים"
         one: סרטון %{count}
@@ -1414,19 +1492,19 @@ he:
     content_warning: 'אזהרת תוכן: %{warning}'
     default_language: זהה לשפת ממשק
     disallowed_hashtags:
-      many: 'מכיל את ההאשתגיות האסורות: %{tags}'
-      one: 'מכיל את ההאשתג האסור: %{tags}'
-      other: 'מכיל את ההאשתגיות האסורות: %{tags}'
-      two: 'מכיל את ההאשתגיות האסורות: %{tags}'
+      many: 'מכיל את התגיות האסורות: %{tags}'
+      one: 'מכיל את התגית האסורה: %{tags}'
+      other: 'מכיל את התגיות האסורות: %{tags}'
+      two: 'מכיל את התגיות האסורות: %{tags}'
     edited_at_html: נערך ב-%{date}
     errors:
-      in_reply_not_found: נראה שהפוסט שאת/ה מנסה להגיב לו לא קיים.
+      in_reply_not_found: נראה שההודעה שאת/ה מנסה להגיב לה לא קיימת.
     open_in_web: פתח ברשת
     over_character_limit: חריגה מגבול התווים של %{max}
     pin_errors:
-      direct: לא ניתן לקבע חצרוצים שנראותם מוגבלת למכותבים בלבד
-      limit: הגעת למספר החצרוצים המוצמדים המירבי.
-      ownership: חצרוצים של אחרים לא יכולים להיות מוצמדים
+      direct: לא ניתן לקבע הודעות שנראותן מוגבלת למכותבים בלבד
+      limit: הגעת למספר המירבי של ההודעות המוצמדות
+      ownership: הודעות של אחרים לא יכולות להיות מוצמדות
       reblog: אין אפשרות להצמיד הדהודים
     poll:
       total_people:
@@ -1455,26 +1533,26 @@ he:
       unlisted: מוסתר
       unlisted_long: פומבי, אבל לא להצגה בפיד הציבורי
   statuses_cleanup:
-    enabled: מחק חצרוצים ישנים אוטומטית
-    enabled_hint: מוחק אוטומטית את חצרוציך לכשהגיעו לסף גיל שנקבע מראש, אלא אם הם תואמים את אחת ההחרגות למטה
+    enabled: מחק הודעות ישנות אוטומטית
+    enabled_hint: מוחק אוטומטית את הודעותיך לכשהגיעו לסף גיל שנקבע מראש, אלא אם הן תואמות את אחת ההחרגות למטה
     exceptions: החרגות
-    explanation: היות ומחיקת חצרוצים היא פעולה יקרה במשאבים, היא נעשית לאט לאורך זמן כאשר השרת לא עסוק במשימות אחרות. לכן, ייתכן שהחצרוצים שלך ימחקו מעט אחרי שיגיעו לסף הגיל שהוגדר.
+    explanation: היות ומחיקת הודעות היא פעולה יקרה במשאבים, היא נעשית לאט לאורך זמן כאשר השרת לא עסוק במשימות אחרות. לכן, ייתכן שההודעות שלך ימחקו מעט אחרי שיגיעו לסף הגיל שהוגדר.
     ignore_favs: התעלם ממחובבים
     ignore_reblogs: התעלם מהדהודים
     interaction_exceptions: החרגות מבוססות אינטראקציות
-    interaction_exceptions_explanation: שים.י לב שאין עֲרֻבָּה למחיקת חצרוצים אם הם יורדים מתחת לסף החיבובים או ההדהודים לאחר הסריקה הראשונית.
+    interaction_exceptions_explanation: שים.י לב שאין עֲרֻבָּה למחיקת הודעות אם הן יורדות מתחת לסף החיבובים או ההדהודים לאחר הסריקה הראשונית.
     keep_direct: שמירת הודעות ישירות
     keep_direct_hint: לא מוחק אך אחת מההודעות הישירות שלך
-    keep_media: שמור חצרוצים עם מדיה
-    keep_media_hint: לא מוחק את חצרוציך שמצורפים אליהם קבצי מדיה
-    keep_pinned: שמור חצרוצים מוצמדים
-    keep_pinned_hint: לא מוחק אף אחד מהחצרוצים המוצמדים שלך
+    keep_media: שמור הודעות עם מדיה
+    keep_media_hint: לא מוחק את הודעותיך שמצורפים אליהן קבצי מדיה
+    keep_pinned: שמור הודעות מוצמדות
+    keep_pinned_hint: לא מוחק אף אחד מההודעות המוצמדות שלך
     keep_polls: שמור סקרים
     keep_polls_hint: לא מוחר אף אחד מהסקרים שלך
-    keep_self_bookmark: שמור חצרוצים שסימנת
-    keep_self_bookmark_hint: לא מוחק חצרוצים שסימנת
-    keep_self_fav: שמור חצרומים שחיבבת
-    keep_self_fav_hint: לא מוחק חצרוצים שלך אם חיבבת אותם
+    keep_self_bookmark: שמור הודעות שסימנת
+    keep_self_bookmark_hint: לא מוחק הודעות שסימנת
+    keep_self_fav: שמור הודעות שחיבבת
+    keep_self_fav_hint: לא מוחק הודעות שלך אם חיבבת אותם
     min_age:
       '1209600': שבועיים
       '15778476': חצי שנה
@@ -1485,12 +1563,12 @@ he:
       '63113904': שנתיים
       '7889238': 3 חודשים
     min_age_label: סף גיל
-    min_favs: השאר חצרוצים מחובבים לפחות
-    min_favs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של חיבובים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר החיבובים שקיבלו
-    min_reblogs: שמור חצרוצים מהודהדים לפחות
-    min_reblogs_hint: לא מוחק מי מחצרוציך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק חצרוצים ללא קשר למספר ההדהודים שקיבלו
+    min_favs: השאר הודעות מחובבות לפחות
+    min_favs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של חיבובים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר החיבובים שקיבלו
+    min_reblogs: שמור הודעות מהודהדות לפחות
+    min_reblogs_hint: לא מוחק מי מהודעותיך שקיבלו לפחות את המספר הזה של הדהודים. להשאיר ריק כדי למחוק הודעות ללא קשר למספר ההדהודים שקיבלו
   stream_entries:
-    pinned: פוסט נעוץ
+    pinned: הודעה נעוצה
     reblogged: הודהד
     sensitive_content: תוכן רגיש
   strikes:
@@ -1550,34 +1628,36 @@ he:
         spam: ספאם
         violation: התוכן מפר את כללי הקהילה הבאים
       explanation:
-        delete_statuses: כמה מחצרוציך מפרים אחד או יותר מכללי הקהילה וכתוצאה הוסרו על ידי מנחי הקהילה של %{instance}.
+        delete_statuses: כמה מהודעותיך מפרות אחד או יותר מכללי הקהילה וכתוצאה הוסרו על ידי מנחי הקהילה של %{instance}.
         disable: אינך יכול/ה יותר להשתמש בחשבונך, אבל הפרופיל ושאר המידע נשארו על עומדם. ניתן לבקש גיבוי של המידע, לשנות את הגדרות החשבון או למחוק אותו.
-        mark_statuses_as_sensitive: כמה מחצרוציך סומנו כרגישים על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בחצרוצים לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בחצרוציך העתידיים.
+        mark_statuses_as_sensitive: כמה מהודעותיך סומנו כרגישות על ידי מנחי הקהילה של %{instance}. זה אומר שאנשים יצטרכו להקיש על המדיה בהודעות לפני שתופיע תצוגה מקדימה. ניתן לסמן את המידע כרגיש בעצמך בהודעותיך העתידיות.
         sensitive: מעתה ואילך כל קבצי המדיה שיועלו על ידך יסומנו כרגישים ויוסתרו מאחורי אזהרה.
-        silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את חצרוציך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך.
+        silence: ניתן עדיין להשתמש בחשבונך אבל רק אנשים שכבר עוקבים אחריך יראו את הודעותיך בשרת זה, וייתכן שתוחרג/י מאמצעי גילוי משתמשים. עם זאת, אחרים יוכלו עדיין לעקוב אחריך.
         suspend: לא ניתן יותר להשתמש בחשבונך, ופרופילך וכל מידע אחר לא נגישים יותר. ניתן עדיין להתחבר על מנת לבקש גיבוי של המידע שלך עד שיוסר סופית בעוד כ-30 יום, אבל מידע מסויים ישמר על מנת לוודא שלא תחמוק/י מההשעיה.
       reason: 'סיבה:'
-      statuses: 'חצרוצים מצוטטים:'
+      statuses: 'הודעות מצוטטות:'
       subject:
-        delete_statuses: הפוסטים שלכם ב%{acct} הוסרו
+        delete_statuses: ההודעות שלכם ב%{acct} הוסרו
         disable: חשבונך %{acct} הוקפא
-        mark_statuses_as_sensitive: חצרוציך ב-%{acct} סומנו כרגישים
+        mark_statuses_as_sensitive: הודעותיך ב-%{acct} סומנו כרגישות
         none: אזהרה עבור %{acct}
-        sensitive: חצרוציך ב-%{acct} יסומנו כרגישים מעתה ואילך
+        sensitive: הודעותיך ב-%{acct} יסומנו כרגישות מעתה ואילך
         silence: חשבונך %{acct} הוגבל
         suspend: חשבונך %{acct} הושעה
       title:
-        delete_statuses: פוסטים שהוסרו
+        delete_statuses: הודעות הוסרו
         disable: חשבון קפוא
-        mark_statuses_as_sensitive: חצרוצים סומנו כרגישים
+        mark_statuses_as_sensitive: הודעות סומנו כרגישות
         none: אזהרה
         sensitive: החשבון סומן כרגיש
         silence: חשבון מוגבל
         suspend: חשבון מושעה
     welcome:
       edit_profile_action: הגדרת פרופיל
+      edit_profile_step: תוכל.י להתאים אישית את הפרופיל באמצעות העלאת יצגן (אוואטר), כותרת, שינוי כינוי ועוד. אם תרצה.י לסקור את עוקביך/ייך החדשים לפני שתרשה.י להם לעקוב אחריך/ייך.
       explanation: הנה כמה טיפים לעזור לך להתחיל
-      final_action: התחל/ילי לחצרץ
+      final_action: התחל/ילי לפרסם הודעות
+      final_step: 'התחל/ילי לפרסם הודעות! אפילו ללא עוקבים ייתכן שההודעות הפומביות שלך יראו ע"י אחרים, למשל בציר הזמן המקומי או בתגיות הקבצה (האשתגים). כדאי להציג את עצמך תחת התגית #introductions או #היכרות.'
       full_handle: שם המשתמש המלא שלך
       full_handle_hint: זה מה שתאמר.י לחברייך כדי שיוכלו לשלוח לך הודעה או לעקוב אחרייך ממופע אחר.
       subject: ברוכים הבאים למסטודון
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index 9de79cd4e..e6ba07305 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -1534,7 +1534,7 @@ ja:
       subject: アーカイブの準備ができました
       title: アーカイブの取り出し
     suspicious_sign_in:
-      change_password: パスワードを変更する
+      change_password: パスワードを変更
       details: 'ログインの詳細は以下のとおりです:'
       explanation: 新しいIPアドレスからあなたのアカウントへのサインインが検出されました。
       further_actions_html: あなたがログインしていない場合は、すぐに%{action}し、アカウントを安全に保つために二要素認証を有効にすることをお勧めします。
diff --git a/config/locales/lv.yml b/config/locales/lv.yml
index 2712fd48b..ddebd9e5d 100644
--- a/config/locales/lv.yml
+++ b/config/locales/lv.yml
@@ -906,7 +906,7 @@ lv:
     hint_html: Ja vēlies pāriet no cita konta uz šo, šeit vari izveidot aizstājvārdu, kas ir nepieciešams, lai varētu turpināt sekotāju pārvietošanu no vecā konta uz šo. Šī darbība pati par sevi ir <strong>nekaitīga un atgriezeniska</strong>. <strong>Konta migrācija tiek sākta no vecā konta</strong>.
     remove: Atsaistīt aizstājvārdu
   appearance:
-    advanced_web_interface: Paplašinātais web interfeiss
+    advanced_web_interface: Paplašinātā tīmekļa saskarne
     advanced_web_interface_hint: 'Ja vēlies izmantot visu ekrāna platumu, uzlabotā tīmekļa saskarne ļauj konfigurēt daudzas dažādas kolonnas, lai vienlaikus redzētu tik daudz informācijas, cik vēlies: Sākums, paziņojumi, federētā ziņu lenta, neierobežots skaits sarakstu un tēmturu.'
     animations_and_accessibility: Animācijas un pieejamība
     confirmation_dialogs: Apstiprināšanas dialogi
@@ -1095,12 +1095,12 @@ lv:
       in_progress: Notiek tava arhīva apkopošana...
       request: Pieprasi savu arhīvu
       size: Izmērs
-    blocks: Tu bloķē
+    blocks: Bloķētie konti
     bookmarks: Grāmatzīmes
     csv: CSV
     domain_blocks: Bloķētie domēni
     lists: Saraksti
-    mutes: Tu apklusini
+    mutes: Apklusinātie konti
     storage: Mediju krātuve
   featured_tags:
     add_new: Pievienot jaunu
@@ -1186,7 +1186,7 @@ lv:
     errors:
       over_rows_processing_limit: satur vairāk, nekā %{count} rindas
     modes:
-      merge: Savienot
+      merge: Apvienot
       merge_long: Saglabāt esošos ierakstus un pievienot jaunus
       overwrite: Pārrakstīt
       overwrite_long: Nomainīt pašreizējos ierakstus ar jauniem
@@ -1195,9 +1195,9 @@ lv:
     types:
       blocking: Bloķēšanas saraksts
       bookmarks: Grāmatzīmes
-      domain_blocking: Domēnu bloķēšanas saraksts
-      following: Šāds saraksts
-      muting: Izslēgšanas saraksts
+      domain_blocking: Bloķēto domēnu saraksts
+      following: Sekojamo lietotāju saraksts
+      muting: Apklusināto lietotāju saraksts
     upload: Augšupielādēt
   invites:
     delete: Deaktivizēt
@@ -1454,7 +1454,7 @@ lv:
     notifications: Paziņojumi
     preferences: Iestatījumi
     profile: Profils
-    relationships: Man seko un sekotāji
+    relationships: Sekojamie un sekotāji
     statuses_cleanup: Automātiska ziņu dzēšana
     strikes: Moderācijas aizrādījumi
     two_factor_authentication: Divfaktoru Aut
@@ -1476,7 +1476,7 @@ lv:
         zero: "%{count} video"
     boosted_from_html: Paaugstināja %{acct_link}
     content_warning: 'Satura brīdinājums: %{warning}'
-    default_language: Tāda, kā interfeisa valoda
+    default_language: Tāda, kā saskarnes valoda
     disallowed_hashtags:
       one: 'saturēja neatļautu tēmturi: %{tags}'
       other: 'saturēja neatļautus tēmturus: %{tags}'
@@ -1641,7 +1641,7 @@ lv:
       explanation: Šeit ir daži padomi, kā sākt darbu
       final_action: Sāc publicēt
       final_step: 'Sāc publicēt! Pat bez sekotājiem tavas publiskās ziņas var redzēt citi, piemēram, vietējā ziņu lentā vai atsaucēs. Iespējams, tu vēlēsies iepazīstināt ar sevi, izmantojot tēmturi #introductions.'
-      full_handle: Tavs pilnais rokturis
+      full_handle: Tavs pilnais lietotājvārds
       full_handle_hint: Šis ir tas, ko tu pasaki saviem draugiem, lai viņi varētu tev ziņot vai sekot tev no cita servera.
       subject: Laipni lūgts Mastodon
       title: Laipni lūgts uz borta, %{name}!
diff --git a/config/locales/nl.yml b/config/locales/nl.yml
index 59c530fb9..88b224c3e 100644
--- a/config/locales/nl.yml
+++ b/config/locales/nl.yml
@@ -35,7 +35,7 @@ nl:
       approve: Goedkeuren
       approved_msg: Het goedkeuren van het account van %{username} is geslaagd
       are_you_sure: Weet je het zeker?
-      avatar: Avatar
+      avatar: Profielfoto
       by_domain: Domein
       change_email:
         changed_msg: E-mailadres succesvol veranderd!
@@ -116,9 +116,9 @@ nl:
       redownloaded_msg: Het herstellen van het oorspronkelijke profiel van %{username} is geslaagd
       reject: Afwijzen
       rejected_msg: Het afwijzen van het registratieverzoek van %{username} is geslaagd
-      remove_avatar: Avatar verwijderen
+      remove_avatar: Profielfoto verwijderen
       remove_header: Omslagfoto verwijderen
-      removed_avatar_msg: Het verwijderen van de avatar van %{username} is geslaagd
+      removed_avatar_msg: Het verwijderen van de profielfoto van %{username} is geslaagd
       removed_header_msg: Het verwijderen van de omslagfoto van %{username} is geslaagd
       resend_confirmation:
         already_confirmed: Deze gebruiker is al bevestigd
@@ -205,7 +205,7 @@ nl:
         promote_user: Gebruiker promoveren
         reject_appeal: Bezwaar afwijzen
         reject_user: Gebruiker afwijzen
-        remove_avatar_user: Avatar verwijderen
+        remove_avatar_user: Profielfoto verwijderen
         reopen_report: Rapportage heropenen
         resend_user: Bevestigingsmail opnieuw verzenden
         reset_password_user: Wachtwoord opnieuw instellen
@@ -264,7 +264,7 @@ nl:
         promote_user_html: Gebruiker %{target} is door %{name} gepromoveerd
         reject_appeal_html: "%{name} heeft het bezwaar tegen de moderatiemaatregel van %{target} afgewezen"
         reject_user_html: "%{name} heeft de registratie van %{target} afgewezen"
-        remove_avatar_user_html: "%{name} verwijderde de avatar van %{target}"
+        remove_avatar_user_html: "%{name} verwijderde de profielfoto van %{target}"
         reopen_report_html: "%{name} heeft rapportage %{target} heropend"
         resend_user_html: "%{name} heeft de bevestigingsmail voor %{target} opnieuw verzonden"
         reset_password_user_html: Wachtwoord van gebruiker %{target} is door %{name} opnieuw ingesteld
@@ -686,6 +686,7 @@ nl:
         title: Bewaartermijn berichten
       discovery:
         follow_recommendations: Aanbevolen accounts
+        preamble: Het tonen van interessante inhoud is van essentieel belang voor het aan boord halen van nieuwe gebruikers, die mogelijk niemand van Mastodon kennen. Bepaal hoe verschillende functies voor het ontdekken van gebruikers op jouw server werken.
         profile_directory: Gebruikersgids
         public_timelines: Openbare tijdlijnen
         title: Ontdekken
@@ -788,6 +789,7 @@ nl:
       statuses:
         allow: Bericht goedkeuren
         allow_account: Account goedkeuren
+        description_html: Dit zijn berichten die op jouw server bekend zijn en die momenteel veel worden gedeeld en als favoriet worden gemarkeerd. Hiermee kunnen nieuwe en terugkerende gebruikers meer mensen vinden om te volgen. Er worden geen berichten in het openbaar weergegeven totdat het account door jou is goedgekeurd en de gebruiker toestaat dat diens account aan anderen wordt aanbevolen. Je kunt ook individuele berichten goed- of afkeuren.
         disallow: Bericht afkeuren
         disallow_account: Account afkeuren
         no_status_selected: Er werden geen trending berichten gewijzigd, omdat er geen enkele werd geselecteerd
@@ -804,6 +806,7 @@ nl:
           tag_servers_dimension: Populaire servers
           tag_servers_measure: verschillende servers
           tag_uses_measure: totaal aantal keer gebruikt
+        description_html: Deze hashtags verschijnen momenteel in veel berichten die op jouw server zichtbaar zijn. Hiermee kunnen jouw gebruikers zien waar mensen op dit moment het meest over praten. Er worden geen hashtags in het openbaar weergegeven totdat je ze goedkeurt.
         listable: Kan worden aanbevolen
         no_tag_selected: Er werden geen hashtags gewijzigd, omdat er geen enkele werd geselecteerd
         not_listable: Wordt niet aanbevolen
@@ -829,6 +832,7 @@ nl:
     webhooks:
       add_new: Eindpunt toevoegen
       delete: Verwijderen
+      description_html: Met een <strong>webhook</strong> kan Mastodon <strong>meldingen in real-time</strong> over gekozen gebeurtenissen naar jouw eigen toepassing sturen, zodat je applicatie <strong>automatisch reacties kan genereren</strong>.
       disable: Uitschakelen
       disabled: Uitgeschakeld
       edit: Eindpunt bewerken
@@ -873,6 +877,7 @@ nl:
         title: Trending berichten
       new_trending_tags:
         no_approved_tags: Op dit moment zijn er geen goedgekeurde hashtags.
+        requirements: 'Elk van deze kandidaten kan de #%{rank} goedgekeurde trending hashtag overtreffen, die momenteel #%{lowest_tag_name} is met een score van %{lowest_tag_score}.'
         title: Trending hashtags
       subject: Nieuwe trends te beoordelen op %{instance}
   aliases:
@@ -1600,7 +1605,7 @@ nl:
         suspend: Account opgeschort
     welcome:
       edit_profile_action: Profiel instellen
-      edit_profile_step: Je kunt jouw profiel aanpassen door een profielafbeelding (avatar) te uploaden, jouw weergavenaam aan te passen en meer. Je kunt het handmatig goedkeuren van volgers instellen.
+      edit_profile_step: Je kunt jouw profiel aanpassen door een profielfoto te uploaden, jouw weergavenaam aan te passen en meer. Je kunt het handmatig goedkeuren van volgers instellen.
       explanation: Hier zijn enkele tips om je op weg te helpen
       final_action: Begin berichten te plaatsen
       final_step: 'Begin berichten te plaatsen! Zelfs zonder volgers kunnen jouw openbare berichten door anderen bekeken worden, bijvoorbeeld op de lokale tijdlijn en onder hashtags. Je kunt jezelf voorstellen met het gebruik van de hashtag #introductions.'
diff --git a/config/locales/nn.yml b/config/locales/nn.yml
index 34c233b8b..e3915a099 100644
--- a/config/locales/nn.yml
+++ b/config/locales/nn.yml
@@ -255,8 +255,21 @@ nn:
         destroy_user_role_html: "%{name} sletta rolla %{target}"
         disable_2fa_user_html: "%{name} tok vekk krav om tofaktorautentisering for brukaren %{target}"
         disable_custom_emoji_html: "%{name} deaktiverte emojien %{target}"
+        disable_sign_in_token_auth_user_html: "%{name} deaktivert e-post token for godkjenning for %{target}"
+        disable_user_html: "%{name} slo av innlogging for brukaren %{target}"
+        enable_custom_emoji_html: "%{name} aktiverte emojien %{target}"
+        enable_sign_in_token_auth_user_html: "%{name} aktiverte e-post token autentisering for %{target}"
+        enable_user_html: "%{name} aktiverte innlogging for brukaren %{target}"
+        memorialize_account_html: "%{name} endret %{target}s konto til en minneside"
+        promote_user_html: "%{name} fremja brukaren %{target}"
+        reject_appeal_html: "%{name} avviste klagen frå %{target} på modereringa"
         reject_user_html: "%{name} avslo registrering fra %{target}"
+        remove_avatar_user_html: "%{name} fjerna %{target} sitt profilbilete"
+        reopen_report_html: "%{name} opna rapporten %{target} på nytt"
+        resend_user_html: "%{name} sendte bekreftelsesepost for %{target} på nytt"
         reset_password_user_html: "%{name} tilbakestilte passordet for brukaren %{target}"
+        resolve_report_html: "%{name} løyste ein rapport %{target}"
+        sensitive_account_html: "%{name} markerte %{target} sitt media som sensitivt"
         silence_account_html: "%{name} begrenset %{target} sin konto"
       deleted_account: sletta konto
       empty: Ingen loggar funne.
diff --git a/config/locales/no.yml b/config/locales/no.yml
index 7c3867994..d891cd537 100644
--- a/config/locales/no.yml
+++ b/config/locales/no.yml
@@ -37,11 +37,17 @@
       avatar: Profilbilde
       by_domain: Domene
       change_email:
+        changed_msg: E-post ble endret!
         current_email: Nåværende E-post
         label: Endre e-post
         new_email: Ny E-post
         submit: Endre e-post
         title: Endre E-postadressen til %{username}
+      change_role:
+        changed_msg: Rollen ble endret!
+        label: Endre rolle
+        no_role: Ingen rolle
+        title: Endre rolle for %{username}
       confirm: Bekreft
       confirmed: Bekreftet
       confirming: Bekrefte
@@ -91,9 +97,14 @@
       most_recent_ip: Nyligste IP
       no_account_selected: Ingen brukere ble forandret da ingen var valgt
       no_limits_imposed: Ingen grenser er tatt i bruk
+      no_role_assigned: Ingen rolle tildelt
       not_subscribed: Ikke abonnért
       pending: Avventer gjennomgang
       perform_full_suspension: Utfør full utvisning
+      previous_strikes: Tidligere advarsler
+      previous_strikes_description_html:
+        one: Denne kontoen har <strong>en</strong> advarsel.
+        other: Denne kontoen har <strong>%{count}</strong> advarsler.
       promote: Oppgradere
       protocol: Protokoll
       public: Offentlig
@@ -113,12 +124,14 @@
       reset: Tilbakestill
       reset_password: Nullstill passord
       resubscribe: Abonner på nytt
+      role: Rolle
       search: Søk
       search_same_email_domain: Andre brukere med samme E-postdomene
       search_same_ip: Andre brukere med den samme IP-en
       security_measures:
         only_password: Bare passord
         password_and_2fa: Passord og 2FA
+      sensitive: Sensitiv
       sensitized: Merket som følsom
       shared_inbox_url: Delt Innboks URL
       show:
@@ -127,11 +140,14 @@
       silence: Målbind
       silenced: Stilnet
       statuses: Statuser
+      strikes: Tidligere advarsler
       subscribe: Abonnere
       suspended: Suspendert
       suspension_irreversible: Dataene fra denne kontoen har blitt ikke reverserbart slettet. Du kan oppheve suspenderingen av kontoen for å gjøre den brukbart, men den vil ikke gjenopprette alle data den tidligere har hatt.
       suspension_reversible_hint_html: Kontoen har blitt suspendert, og dataene vil bli fullstendig fjernet den %{date}. Frem til da kan kontoen gjenopprettes uten negative effekter. Hvis du ønsker å fjerne alle kontoens data umiddelbart, kan du gjøre det nedenfor.
       title: Kontoer
+      unblock_email: Avblokker e-postadresse
+      unblocked_email_msg: Fjernet blokkering av %{username} sin e-postadresse
       unconfirmed_email: Ubekreftet E-postadresse
       undo_silenced: Angre målbinding
       undo_suspension: Angre utvisning
@@ -148,6 +164,7 @@
         approve_user: Godkjenn bruker
         assigned_to_self_report: Tilordne rapport
         change_email_user: Endre brukerens E-postadresse
+        change_role_user: Endre rolle for brukeren
         confirm_user: Bekreft brukeren
         create_account_warning: Opprett en advarsel
         create_announcement: Opprett en kunngjøring
@@ -156,11 +173,17 @@
         create_domain_block: Opprett domene-blokk
         create_email_domain_block: Opprett e-post domeneblokk
         create_ip_block: Opprett IP-regel
+        create_user_role: Opprett rolle
         demote_user: Degrader bruker
         destroy_announcement: Slett kunngjøringen
+        destroy_canonical_email_block: Slett blokkering av e-post
         destroy_custom_emoji: Slett den tilpassede emojien
+        destroy_domain_block: Slett blokkering av domene
+        destroy_email_domain_block: Slett blokkering av e-postdomene
         destroy_ip_block: Slett IP-regel
         destroy_status: Slett statusen
+        destroy_unavailable_domain: Slett utilgjengelig domene
+        destroy_user_role: Slett rolle
         disable_2fa_user: Skru av 2-trinnsinnlogging
         disable_custom_emoji: Skru av tilpassede emojier
         disable_user: Deaktiver bruker
@@ -175,12 +198,22 @@
         resolve_report: Løs rapport
         silence_account: Demp konto
         suspend_account: Suspender kontoen
+        unblock_email_account: Fjern blokkering av e-postadresse
         unsuspend_account: Opphev suspensjonen av kontoen
         update_announcement: Oppdater kunngjøringen
         update_custom_emoji: Oppdater tilpasset Emoji
+        update_domain_block: Oppdater blokkering av domene
+        update_ip_block: Oppdater IP-regel
         update_status: Oppdater statusen
+        update_user_role: Oppdater rolle
       actions:
         approve_user_html: "%{name} godkjente registrering fra %{target}"
+        change_email_user_html: "%{name} endret e-postadressen til brukeren %{target}"
+        change_role_user_html: "%{name} endret rolle for %{target}"
+        confirm_user_html: "%{name} bekreftet e-postadressen til brukeren %{target}"
+        create_account_warning_html: "%{name} sendte en advarsel til %{target}"
+        create_announcement_html: "%{name} opprettet ny kunngjøring %{target}"
+        create_canonical_email_block_html: "%{name} blokkerte e-post med hash %{target}"
         create_custom_emoji_html: "%{name} lastet opp ny emoji %{target}"
         create_domain_allow_html: "%{name} tillatt føderasjon med domenet %{target}"
         create_domain_block_html: "%{name} blokkert domene %{target}"
@@ -815,6 +848,10 @@
     status: Kontostatus
   remote_follow:
     missing_resource: Kunne ikke finne URLen for din konto
+  rss:
+    descriptions:
+      account: Offentlige innlegg fra @%{acct}
+      tag: 'Offentlige innlegg merket med #%{hashtag}'
   scheduled_statuses:
     over_daily_limit: Du har overskredet grensen på %{limit} planlagte tuter for den dagen
     over_total_limit: Du har overskredet grensen på %{limit} planlagte tuter
@@ -880,6 +917,8 @@
     preferences: Innstillinger
     profile: Profil
     relationships: Følginger og følgere
+    statuses_cleanup: Automatisert sletting av innlegg
+    strikes: Modereringsadvarsler
     two_factor_authentication: Tofaktorautentisering
     webauthn_authentication: Sikkerhetsnøkler
   statuses:
@@ -896,6 +935,10 @@
         other: "%{count} videoer"
     boosted_from_html: Boostet fra %{acct_link}
     content_warning: 'Innholdsadvarsel: %{warning}'
+    disallowed_hashtags:
+      one: 'inneholdt en ikke tillatt hashtag: %{tags}'
+      other: 'inneholdt de ikke tillatte hashtaggene: %{tags}'
+    edited_at_html: Redigert %{date}
     errors:
       in_reply_not_found: Posten du prøver å svare ser ikke ut til eksisterer.
     open_in_web: Åpne i nettleser
@@ -927,6 +970,20 @@
       public_long: Synlig for alle
       unlisted: Uoppført
       unlisted_long: Synlig for alle, men ikke på offentlige tidslinjer
+  statuses_cleanup:
+    enabled: Slett gamle innlegg automatisk
+    enabled_hint: Sletter innleggene dine automatisk når de oppnår en angitt alder, med mindre de samsvarer med ett av unntakene nedenfor
+    exceptions: Unntak
+    min_age:
+      '1209600': 2 uker
+      '15778476': 6 måneder
+      '2629746': 1 måned
+      '31556952': 1 år
+      '5259492': 2 måneder
+      '604800': 1 uke
+      '63113904': 2 år
+      '7889238': 3 måneder
+    min_age_label: Terskel for alder
   stream_entries:
     pinned: Festet tut
     reblogged: fremhevde
@@ -941,6 +998,7 @@
     formats:
       default: "%-d. %b %Y, %H:%M"
       month: "%b %Y"
+      time: "%H:%M"
   two_factor_authentication:
     add: Legg til
     disable: Skru av
@@ -957,22 +1015,41 @@
     recovery_instructions_html: Hvis du skulle miste tilgang til telefonen din, kan du bruke en av gjenopprettingskodene nedenfor til å gjenopprette tilgang til din konto. <strong>Oppbevar gjenopprettingskodene sikkert</strong>, for eksempel ved å skrive dem ut og gjemme dem på et lurt sted bare du vet om.
     webauthn: Sikkerhetsnøkler
   user_mailer:
+    appeal_approved:
+      action: Gå til kontoen din
     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
+    suspicious_sign_in:
+      change_password: endre passord
+      details: 'Her er detaljer om påloggingen:'
+      explanation: Vi har oppdaget en pålogging til din konto fra en ny IP-adresse.
+      further_actions_html: Hvis dette ikke var deg, anbefaler vi at du %{action} umiddelbart og aktiverer tofaktorautentisering for å holde kontoen din sikker.
+      title: En ny pålogging
     warning:
+      categories:
+        spam: Søppelpost
+      reason: 'Årsak:'
+      statuses: 'Innlegg angitt:'
       subject:
+        delete_statuses: Dine innlegg på %{acct} har blitt fjernet
         disable: Kontoen din, %{acct}, har blitt fryst
+        mark_statuses_as_sensitive: Dine innlegg på %{acct} har blitt merket som sensitivt innhold
         none: Advarsel for %{acct}
+        sensitive: Dine innlegg på %{acct} vil bli merket som sensitive fra nå
         silence: Kontoen din, %{acct}, har blitt begrenset
         suspend: Kontoen din, %{acct}, har blitt suspendert
       title:
+        delete_statuses: Innlegg fjernet
         disable: Kontoen er fryst
+        mark_statuses_as_sensitive: Innlegg markert som sensitive
         none: Advarsel
+        sensitive: Konto markert som sensitiv
         silence: Kontoen er begrenset
         suspend: Kontoen er suspendert
     welcome:
       edit_profile_action: Sett opp profil
+      edit_profile_step: Du kan tilpasse profilen din ved å laste opp et profilbilde, endre visningsnavnet ditt og mer. Du kan velge at nye følgere må godkjennes av deg før de får lov til å følge deg.
       explanation: Her er noen tips for å komme i gang
       final_action: Start postingen
       full_handle: Ditt fullstendige brukernavn
@@ -991,9 +1068,11 @@
   webauthn_credentials:
     add: Legg til ny sikkerhetsnøkkel
     create:
+      error: Det oppstod et problem med å legge til sikkerhetsnøkkelen. Prøv igjen.
       success: Sikkerhetsnøkkelen din ble vellykket lagt til.
     delete: Slett
     delete_confirmation: Er du sikker på at du vil slette denne sikkerhetsnøkkelen?
+    description_html: Dersom du aktiverer <strong>sikkerhetsnøkkelautentisering</strong>, vil innlogging kreve at du bruker en av sikkerhetsnøklene dine.
     destroy:
       error: Det oppsto et problem med å slette sikkerhetsnøkkelen. Prøv igjen.
       success: Sikkerhetsnøkkelen din ble vellykket slettet.
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 319aa5e75..37c470d31 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -501,6 +501,7 @@ oc:
       title: Configuracion
     status:
       account_status: Estat del compte
+      functional: Vòstre compte es complètament foncional.
     use_security_key: Utilizar clau de seguretat
   authorize_follow:
     already_following: Seguètz ja aqueste compte
@@ -694,6 +695,7 @@ oc:
       on_cooldown: Sètz en temps de recargament
     followers_count: Seguidors al moment de mudar
     incoming_migrations: Mudar d’un compte diferent
+    incoming_migrations_html: Per venir d’un autre compte cap a aqueste, vos cal d’en primièr <a href="%{path}">crear un alias de compte</a>.
     moved_msg: Vòstre compte manda ara a %{acct} e vòstres seguidors son desplaçats.
     not_redirecting: Vòstre compte manda pas enlòc pel moment.
     past_migrations: Migracions passadas
@@ -859,6 +861,7 @@ oc:
     preferences: Preferéncias
     profile: Perfil
     relationships: Abonaments e seguidors
+    statuses_cleanup: Supression auto de las publicacions
     two_factor_authentication: Autentificacion en dos temps
     webauthn_authentication: Claus de seguretat
   statuses:
@@ -912,13 +915,23 @@ oc:
       unlisted_long: Tot lo monde pòt veire mai serà pas visible sul flux public
   statuses_cleanup:
     enabled: Supression automatica de publicacions ancianas
+    enabled_hint: Suprimís automaticament vòstras publicacions quand correspondon al critèri d’atge causit, levat se correspondon tanben a las excepcions çai-jos
+    explanation: Perque la supression es una operacion costosa en ressorsa, es realizat doçament quand lo servidor es pas ocupat a quicòm mai. Per aquò, vòstras publicacions seràn benlèu pas suprimidas aprèp aver atengut lo critèri d’atge.
+    ignore_favs: Ignorar los favorits
+    ignore_reblogs: Ignorar los partatges
+    interaction_exceptions: Excepcions basadas sus las interaccions
     keep_direct: Gardar los messatges dirèctes
+    keep_direct_hint: Suprimís pas vòstres messatges dirèctes
     keep_media: Gardar las publicacions amb pèça-junta
+    keep_media_hint: Suprimís pas vòstras publicacions s’an de mèdias junts
     keep_pinned: Gardar las publicacions penjadas
+    keep_pinned_hint: Suprimís pas vòstras publicacions penjadas
     keep_polls: Gardar los sondatges
     keep_polls_hint: Suprimir pas vòstres sondatges
     keep_self_bookmark: Gardar las publicacions que metèretz en favorit
+    keep_self_bookmark_hint: Suprimís pas vòstras publicacions se las avètz mesas en marcapaginas
     keep_self_fav: Gardar las publicacions que metèretz en favorit
+    keep_self_fav_hint: Suprimís pas vòstras publicacions se las avètz mesas en favorits
     min_age:
       '1209600': 2 setmanas
       '15778476': 6 meses
@@ -930,6 +943,9 @@ oc:
       '7889238': 3 meses
     min_age_label: Sulhet d’ancianetat
     min_favs: Gardar al mens las publicacion en favorit
+    min_favs_hint: Suprimís pas las publicacions qu’an recebut al mens aquesta quantitat de favorits. Daissar blanc per suprimir las publicacion quina quantitat de favorits qu’ajan
+    min_reblogs: Gardar las publicacions partejadas al mens
+    min_reblogs_hint: Suprimís pas vòstras publicacions qu’an agut aqueste nombre de partiment. Daissar blanc per suprimir las publicacions sens far cas als partiments
   stream_entries:
     pinned: Tut penjat
     reblogged: a partejat
diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml
index f372ef6bc..ec794492b 100644
--- a/config/locales/pt-BR.yml
+++ b/config/locales/pt-BR.yml
@@ -4,7 +4,7 @@ pt-BR:
     about_mastodon_html: 'A rede social do futuro: Sem anúncios, sem vigilância corporativa, com design ético e muita descentralização! Possua seus próprios dados com o Mastodon!'
     contact_missing: Não definido
     contact_unavailable: Não disponível
-    hosted_on: Instância Mastodon em %{domain}
+    hosted_on: Servidor Mastodon em %{domain}
     title: Sobre
   accounts:
     follow: Seguir
@@ -19,9 +19,9 @@ pt-BR:
     pin_errors:
       following: Você deve estar seguindo a pessoa que você deseja sugerir
     posts:
-      one: Toot
-      other: Toots
-    posts_tab_heading: Toots
+      one: Publicação
+      other: Publicações
+    posts_tab_heading: Publicações
   admin:
     account_actions:
       action: Tomar uma atitude
@@ -31,9 +31,9 @@ pt-BR:
       created_msg: Nota de moderação criada com sucesso!
       destroyed_msg: Nota de moderação excluída com sucesso!
     accounts:
-      add_email_domain_block: Adicionar o domínio de e-mail à lista negra
+      add_email_domain_block: Bloquear domínio de e-mail
       approve: Aprovar
-      approved_msg: Aprovado com sucesso o pedido de registro de %{username}
+      approved_msg: O registro de %{username} foi aprovado com sucesso
       are_you_sure: Você tem certeza?
       avatar: Imagem de perfil
       by_domain: Domínio
@@ -45,10 +45,10 @@ pt-BR:
         submit: Alterar e-mail
         title: Alterar e-mail para %{username}
       change_role:
-        changed_msg: Função alterada com sucesso!
-        label: Alterar função
-        no_role: Nenhuma função
-        title: Alterar função para %{username}
+        changed_msg: Cargo alterado com sucesso!
+        label: Alterar cargo
+        no_role: Sem cargo
+        title: Alterar cargo para %{username}
       confirm: Confirmar
       confirmed: Confirmado
       confirming: Confirmando
@@ -60,12 +60,12 @@ pt-BR:
       disable: Congelar
       disable_sign_in_token_auth: Desativar autenticação via token por email
       disable_two_factor_authentication: Desativar autenticação de dois fatores
-      disabled: Desativada
+      disabled: Congelada
       display_name: Nome de exibição
       domain: Domínio
       edit: Editar
       email: E-mail
-      email_status: Status do e-mail
+      email_status: Estado do e-mail
       enable: Descongelar
       enable_sign_in_token_auth: Ativar autenticação via token por email
       enabled: Ativada
@@ -99,7 +99,7 @@ pt-BR:
       most_recent_activity: Atividade mais recente
       most_recent_ip: IP mais recente
       no_account_selected: Nenhuma conta foi alterada, pois nenhuma conta foi selecionada
-      no_limits_imposed: Nenhum limite imposto
+      no_limits_imposed: Sem limite imposto
       no_role_assigned: Nenhuma função atribuída
       not_subscribed: Não inscrito
       pending: Revisão pendente
@@ -142,7 +142,7 @@ pt-BR:
         targeted_reports: Denúncias sobre esta conta
       silence: Silenciar
       silenced: Silenciado
-      statuses: Toots
+      statuses: Publicações
       strikes: Ataques anteriores
       subscribe: Inscrever-se
       suspend: Suspender
@@ -250,7 +250,7 @@ pt-BR:
         destroy_email_domain_block_html: "%{name} adicionou domínio de e-mail %{target} à lista branca"
         destroy_instance_html: "%{name} purgou o domínio %{target}"
         destroy_ip_block_html: "%{name} excluiu regra para o IP %{target}"
-        destroy_status_html: "%{name} excluiu post de %{target}"
+        destroy_status_html: "%{name} removeu a publicação de %{target}"
         destroy_unavailable_domain_html: "%{name} retomou a entrega ao domínio %{target}"
         destroy_user_role_html: "%{name} excluiu a função %{target}"
         disable_2fa_user_html: "%{name} desativou a exigência de autenticação de dois fatores para o usuário %{target}"
@@ -266,6 +266,7 @@ pt-BR:
         reject_user_html: "%{name} rejeitou a inscrição de %{target}"
         remove_avatar_user_html: "%{name} removeu a imagem de perfil de %{target}"
         reopen_report_html: "%{name} reabriu a denúncia %{target}"
+        resend_user_html: "%{name} reenviou um e-mail de confirmação para %{target}"
         reset_password_user_html: "%{name} redefiniu a senha de %{target}"
         resolve_report_html: "%{name} fechou a denúncia %{target}"
         sensitive_account_html: "%{name} marcou a mídia de %{target} como sensível"
@@ -385,7 +386,7 @@ pt-BR:
         create: Criar bloqueio
         hint: O bloqueio de domínio não vai prevenir a criação de entradas de contas na base de dados, mas vai retroativamente e automaticamente aplicar métodos específicos de moderação nessas contas.
         severity:
-          desc_html: "<strong>Silenciar</strong> vai fazer os posts da conta invisíveis para qualquer um que não os esteja seguindo. <strong>Suspender</strong> vai remover todo o conteúdo, mídia, e dados de perfil da conta. Use <strong>Nenhum</strong> se você só quer rejeitar arquivos de mídia."
+          desc_html: "<strong>Silenciar</strong> vai tornar as publicações da conta invisíveis para qualquer um que não o esteja seguindo. <strong>Suspender</strong> vai remover todo o conteúdo, mídia e dados de perfil da conta. Use <strong>Nenhum</strong> se você só quer rejeitar arquivos de mídia."
           noop: Nenhum
           silence: Silenciar
           suspend: Banir
@@ -595,7 +596,7 @@ pt-BR:
       skip_to_actions: Pular para ações
       status: Situação
       statuses: Conteúdo denunciado
-      statuses_description_html: Conteúdo Ofensivo será citado em comunicação com a conta relatada
+      statuses_description_html: Conteúdo ofensivo será citado em comunicação com a conta denunciada
       target_origin: Origem da conta relatada
       title: Denúncias
       unassign: Largar
@@ -618,6 +619,9 @@ pt-BR:
       edit: Editar função de '%{name}'
       everyone: Permissões padrão
       everyone_full_description_html: Esta é a <strong>função base</strong> que afeta <strong>todos os usuários</strong>, mesmo aqueles sem uma função atribuída. Todas as outras funções dela herdam as suas permissões.
+      permissions_count:
+        one: "%{count} permissão"
+        other: "%{count} permissões"
       privileges:
         administrator: Administrador
         administrator_description: Usuários com essa permissão irão ignorar todas as permissões
@@ -670,17 +674,21 @@ pt-BR:
     settings:
       about:
         manage_rules: Gerenciar regras do servidor
+        preamble: Forneça informações detalhadas sobre como o servidor é operado, moderado e financiado.
         rules_hint: Existe uma área dedicada para as regras que os usuários devem aderir.
         title: Sobre
       appearance:
         preamble: Personalize a interface web do Mastodon.
         title: Aparência
       branding:
+        preamble: A marca do seu servidor o diferencia de outros servidores na rede. Essa informação pode ser exibida em vários ambientes, como a interface web do Mastodon, aplicativos nativos, pré-visualizações de links em outros sites, aplicativos de mensagens, etc. Por isso, é melhor manter essa informação clara, curta e concisa.
         title: Marca
       content_retention:
+        preamble: Controlar como o conteúdo gerado pelo usuário é armazenado no Mastodon.
         title: Retenção de conteúdo
       discovery:
         follow_recommendations: Seguir recomendações
+        preamble: Navegar por um conteúdo interessante é fundamental para integrar novos usuários que podem não conhecer ninguém no Mastodon. Controle como várias características de descoberta funcionam no seu servidor.
         profile_directory: Diretório de perfis
         public_timelines: Timelines públicas
         title: Descobrir
@@ -717,12 +725,12 @@ pt-BR:
       media:
         title: Mídia
       metadata: Metadados
-      no_status_selected: Nenhum status foi modificado porque nenhum estava selecionado
-      open: Abrir post
-      original_status: Postagem original
+      no_status_selected: Nenhuma publicação foi modificada porque nenhuma estava selecionada
+      open: Publicação aberta
+      original_status: Publicação original
       reblogs: Reblogs
       status_changed: Publicação alterada
-      title: Toots da conta
+      title: Publicações da conta
       trending: Em alta
       visibility: Visibilidade
       with_media: Com mídia
@@ -755,12 +763,13 @@ pt-BR:
     trends:
       allow: Permitir
       approved: Aprovado
-      disallow: Anular
+      disallow: Impedir
       links:
         allow: Permitir link
         allow_provider: Permitir editor
-        disallow: Proibir link
-        disallow_provider: Anular editor
+        disallow: Impedir link
+        disallow_provider: Impedir publicador
+        no_link_selected: Nenhum link foi alterado como nenhum foi selecionado
         title: Em alta no momento
         usage_comparison: Compartilhado %{today} vezes hoje, em comparação com %{yesterday} de ontem
       only_allowed: Somente permitido
@@ -772,9 +781,11 @@ pt-BR:
         title: Editor
       rejected: Rejeitado
       statuses:
-        allow: Permitir postagem
+        allow: Permitir publicação
         allow_account: Permitir autor
-        description_html: Estes são posts que seu servidor sabe que estão sendo muito compartilhados e favorecidos no momento. Isso pode ajudar seus usuários, novos e retornantes, a encontrar mais pessoas para seguir. Nenhum post é exibido publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar postagens individuais.
+        description_html: Estes são as publicações que seu servidor sabe que estão sendo muito compartilhadas e favorecidas no momento. Isso pode ajudar seus usuários, novos e atuais, a encontrar mais pessoas para seguir. Nenhuma publicação é exibida publicamente até que você aprove o autor e o autor permitir que sua conta seja sugerida a outros. Você também pode permitir ou rejeitar publicações individuais.
+        disallow: Impedir publicação
+        disallow_account: Impedir autor
         title: Publicações em alta
       tags:
         current_score: Pontuação atual %{score}
@@ -783,6 +794,7 @@ pt-BR:
           tag_languages_dimension: Idiomas principais
           tag_servers_dimension: Servidores mais populares
           tag_servers_measure: servidores diferentes
+          tag_uses_measure: usos
         listable: Pode ser sugerido
         not_listable: Não será sugerido
         not_trendable: Não aparecerá em alta
@@ -880,13 +892,14 @@ pt-BR:
     warning: Tenha cuidado com estes dados. Nunca compartilhe com alguém!
     your_token: Seu código de acesso
   auth:
+    apply_for_account: Entrar na lista de espera
     change_password: Senha
     delete_account: Excluir conta
     delete_account_html: Se você deseja excluir sua conta, você pode <a href="%{path}">fazer isso aqui</a>. Uma confirmação será solicitada.
     description:
-      prefix_invited_by_user: "@%{name} convidou você para entrar nesta instância Mastodon!"
+      prefix_invited_by_user: "@%{name} convidou você para entrar neste servidor Mastodon!"
       prefix_sign_up: Crie uma conta no Mastodon hoje!
-      suffix: Com uma conta, você poderá seguir pessoas, postar atualizações, trocar mensagens com usuários de qualquer instância Mastodon e muito mais!
+      suffix: Com uma conta, você poderá seguir pessoas, publicar atualizações, trocar mensagens com usuários de qualquer servidor Mastodon e muito mais!
     didnt_get_confirmation: Não recebeu instruções de confirmação?
     dont_have_your_security_key: Não está com a sua chave de segurança?
     forgot_password: Esqueceu a sua senha?
@@ -906,6 +919,8 @@ pt-BR:
     registration_closed: "%{instance} não está aceitando novos membros"
     resend_confirmation: Reenviar instruções de confirmação
     reset_password: Redefinir senha
+    rules:
+      title: Algumas regras básicas.
     security: Segurança
     set_new_password: Definir uma nova senha
     setup:
@@ -968,7 +983,7 @@ pt-BR:
     success_msg: A sua conta foi excluída com sucesso
     warning:
       before: 'Antes de prosseguir, por favor leia com cuidado:'
-      caches: Conteúdo que foi armazenado em cache por outras instâncias pode continuar a existir
+      caches: Conteúdo que foi armazenado em cache por outros servidores pode continuar a existir
       data_removal: Seus toots e outros dados serão removidos permanentemente
       email_change_html: Você pode <a href="%{path}">alterar seu endereço de e-mail</a> sem excluir sua conta
       email_contact_html: Se você ainda não recebeu, você pode enviar um e-mail pedindo ajuda para <a href="mailto:%{email}">%{email}</a>
@@ -993,13 +1008,13 @@ pt-BR:
       description_html: Estas são ações tomadas contra sua conta e avisos que foram enviados a você pela equipe de %{instance}.
       recipient: Endereçado para
       reject_appeal: Rejeitar recurso
-      status: 'Postagem #%{id}'
-      status_removed: Postagem já removida do sistema
+      status: 'Publicação #%{id}'
+      status_removed: Publicação já removida do sistema
       title: "%{action} de %{date}"
       title_actions:
         delete_statuses: Remoção de publicações
         disable: Congelamento de conta
-        mark_statuses_as_sensitive: Marcar as postagens como sensíveis
+        mark_statuses_as_sensitive: Marcar as publicações como sensíveis
         none: Aviso
         sensitive: Marcar a conta como sensível
         silence: Limitação da conta
@@ -1057,17 +1072,30 @@ pt-BR:
     edit:
       add_keyword: Adicionar palavra-chave
       keywords: Palavras-chave
-      statuses: Postagens individuais
+      statuses: Publicações individuais
       title: Editar filtro
     errors:
       invalid_context: Contexto inválido ou nenhum contexto informado
     index:
       delete: Remover
       empty: Sem filtros.
+      expires_in: Expira em %{distance}
+      expires_on: Expira em %{date}
+      keywords:
+        one: "%{count} palavra-chave"
+        other: "%{count} palavras-chave"
+      statuses:
+        one: "%{count} publicação"
+        other: "%{count} publicações"
       title: Filtros
     new:
       save: Salvar novo filtro
       title: Adicionar filtro
+    statuses:
+      batch:
+        remove: Remover do filtro
+      index:
+        title: Publicações filtradas
   footer:
     trending_now: Em alta no momento
   generic:
@@ -1093,7 +1121,7 @@ pt-BR:
       merge_long: Manter os registros existentes e adicionar novos
       overwrite: Sobrescrever
       overwrite_long: Substituir os registros atuais com os novos
-    preface: Você pode importar dados que você exportou de outra instância, como a lista de pessoas que você segue ou bloqueou.
+    preface: Você pode importar dados que você exportou de outro servidor, como a lista de pessoas que você segue ou bloqueou.
     success: Os seus dados foram enviados com sucesso e serão processados em instantes
     types:
       blocking: Lista de bloqueio
@@ -1119,7 +1147,7 @@ pt-BR:
       one: 1 uso
       other: "%{count} usos"
     max_uses_prompt: Sem limite
-    prompt: Gere e compartilhe links para permitir acesso a essa instância
+    prompt: Gere e compartilhe links para permitir acesso a esse servidor
     table:
       expires_at: Expira em
       uses: Usos
@@ -1187,8 +1215,8 @@ pt-BR:
       sign_up:
         subject: "%{name} se inscreveu"
     favourite:
-      body: "%{name} favoritou seu toot:"
-      subject: "%{name} favoritou seu toot"
+      body: "%{name} favoritou sua publicação:"
+      subject: "%{name} favoritou sua publicação"
       title: Novo favorito
     follow:
       body: "%{name} te seguiu!"
@@ -1211,7 +1239,7 @@ pt-BR:
       subject: "%{name} deu boost no seu toot"
       title: Novo boost
     status:
-      subject: "%{name} acabou de postar"
+      subject: "%{name} acabou de publicar"
     update:
       subject: "%{name} editou uma publicação"
   notifications:
@@ -1257,6 +1285,8 @@ pt-BR:
     other: Outro
     posting_defaults: Padrões de publicação
     public_timelines: Linhas públicas
+  privacy_policy:
+    title: Política de Privacidade
   reactions:
     errors:
       limit_reached: Limite de reações diferentes atingido
@@ -1289,8 +1319,8 @@ pt-BR:
       account: Publicações públicas de @%{acct}
       tag: 'Publicações públicas marcadas com #%{hashtag}'
   scheduled_statuses:
-    over_daily_limit: Você excedeu o limite de %{limit} toots agendados para esse dia
-    over_total_limit: Você excedeu o limite de %{limit} toots agendados
+    over_daily_limit: Você excedeu o limite de %{limit} publicações agendadas para esse dia
+    over_total_limit: Você excedeu o limite de %{limit} publicações agendadas
     too_soon: A data agendada precisa ser no futuro
   sessions:
     activity: Última atividade
@@ -1369,22 +1399,22 @@ pt-BR:
       video:
         one: "%{count} vídeo"
         other: "%{count} vídeos"
-    boosted_from_html: Boost de %{acct_link}
-    content_warning: 'Aviso de Conteúdo: %{warning}'
+    boosted_from_html: Impulso de %{acct_link}
+    content_warning: 'Aviso de conteúdo: %{warning}'
     default_language: Igual ao idioma da interface
     disallowed_hashtags:
       one: 'continha hashtag não permitida: %{tags}'
       other: 'continha hashtags não permitidas: %{tags}'
     edited_at_html: Editado em %{date}
     errors:
-      in_reply_not_found: O toot que você quer responder parece não existir.
+      in_reply_not_found: A publicação que você quer responder parece não existir.
     open_in_web: Abrir no navegador
     over_character_limit: limite de caracteres de %{max} excedido
     pin_errors:
-      direct: Posts visíveis apenas para usuários mencionados não podem ser fixados
+      direct: Publicações visíveis apenas para usuários mencionados não podem ser fixadas
       limit: Quantidade máxima de toots excedida
-      ownership: Toots dos outros não podem ser fixados
-      reblog: Boosts não podem ser fixados
+      ownership: Publicações dos outros não podem ser fixadas
+      reblog: Um impulso não pode ser fixado
     poll:
       total_people:
         one: "%{count} pessoa"
@@ -1401,33 +1431,33 @@ pt-BR:
     title: '%{name}: "%{quote}"'
     visibilities:
       direct: Direto
-      private: Privado
-      private_long: Posta apenas para seguidores
+      private: Apenas seguidores
+      private_long: Exibir apenas para seguidores
       public: Público
-      public_long: Posta em linhas públicas
-      unlisted: Não-listado
-      unlisted_long: Não posta em linhas públicas
+      public_long: Todos podem ver
+      unlisted: Não listado
+      unlisted_long: Todos podem ver, mas não é listado em linhas do tempo públicas
   statuses_cleanup:
     enabled: Excluir publicações antigas automaticamente
     enabled_hint: Exclui suas publicações automaticamente assim que elas alcançam sua validade, a não ser que se enquadrem em alguma das exceções abaixo
     exceptions: Exceções
     explanation: Já que a exclusão de publicações é uma operação custosa, ela é feita lentamente quando o servidor não está ocupado. Por isso suas publicações podem ser excluídas algum tempo depois de alcançarem sua validade.
     ignore_favs: Ignorar favoritos
-    ignore_reblogs: Ignorar boosts
+    ignore_reblogs: Ignorar impulsos
     interaction_exceptions: Exceções baseadas nas interações
     interaction_exceptions_explanation: Note que não há garantia de que as publicações sejam excluídas se ficarem abaixo do limite de favoritos ou boosts depois de tê-lo ultrapassado.
     keep_direct: Manter mensagens diretas
-    keep_direct_hint: Não deleta nenhuma de suas mensagens diretas
+    keep_direct_hint: Não exclui nenhuma de suas mensagens diretas
     keep_media: Manter publicações com mídia
     keep_media_hint: Não exclui nenhuma de suas publicações com mídia
     keep_pinned: Manter publicações fixadas
-    keep_pinned_hint: Não exclui nenhuma publicação fixada
+    keep_pinned_hint: Não exclui nenhuma de suas publicações fixadas
     keep_polls: Manter enquetes
     keep_polls_hint: Não exclui nenhuma de suas enquetes
     keep_self_bookmark: Manter publicações que você salvou
-    keep_self_bookmark_hint: Não exclui suas próprias publicações se você as tiver salvado
+    keep_self_bookmark_hint: Não exclui suas próprias publicações se você as salvou
     keep_self_fav: Manter publicações que você favoritou
-    keep_self_fav_hint: Não exclui suas próprias publicações se você as tiver favoritado
+    keep_self_fav_hint: Não exclui suas próprias publicações se você as favoritou
     min_age:
       '1209600': 2 semanas
       '15778476': 6 meses
@@ -1439,9 +1469,9 @@ pt-BR:
       '7889238': 3 meses
     min_age_label: Validade
     min_favs: Manter publicações favoritadas por ao menos
-    min_favs_hint: Não exclui publicações que tiverem sido favoritados ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de favoritos
-    min_reblogs: Manter publicações boostadas por ao menos
-    min_reblogs_hint: Não exclui publicações que tiverem sido boostadas ao menos essa quantidade de vezes. Deixe em branco para excluir publicações independente da quantidade de boosts
+    min_favs_hint: Não exclui publicações que receberam pelo menos esta quantidade de favoritos. Deixe em branco para excluir publicações independentemente da quantidade de favoritos
+    min_reblogs: Manter publicações impulsionadas por ao menos
+    min_reblogs_hint: Não exclui publicações que receberam pelo menos esta quantidade de impulsos. Deixe em branco para excluir publicações independentemente da quantidade de impulsos
   stream_entries:
     pinned: Toot fixado
     reblogged: deu boost
@@ -1503,6 +1533,7 @@ pt-BR:
         spam: Spam
         violation: O conteúdo viola as seguintes diretrizes da comunidade
       explanation:
+        delete_statuses: Algumas de suas publicações infringiram uma ou mais diretrizes da comunidade e foram removidas pelos moderadores de %{instance}.
         disable: Você não poderá mais usar a sua conta, mas o seu perfil e outros dados permanecem intactos. Você pode solicitar um backup dos seus dados, mudar as configurações ou excluir sua conta.
         sensitive: A partir de agora, todos os seus arquivos de mídia enviados serão marcados como confidenciais e escondidos por trás de um aviso de clique.
       reason: 'Motivo:'
@@ -1518,7 +1549,7 @@ pt-BR:
       title:
         delete_statuses: Publicações removidas
         disable: Conta bloqueada
-        mark_statuses_as_sensitive: Postagens marcadas como sensíveis
+        mark_statuses_as_sensitive: Publicações marcadas como sensíveis
         none: Aviso
         sensitive: Conta marcada como sensível
         silence: Conta silenciada
diff --git a/config/locales/ro.yml b/config/locales/ro.yml
index b96d22dd5..c8e1d8a3e 100644
--- a/config/locales/ro.yml
+++ b/config/locales/ro.yml
@@ -39,6 +39,7 @@ ro:
       avatar: Poză de profil
       by_domain: Domeniu
       change_email:
+        changed_msg: E-mail schimbat cu succes!
         current_email: E-mailul curent
         label: Schimbă adresa de email
         new_email: E-mail nou
@@ -196,6 +197,8 @@ ro:
         update_announcement: Actualizare Anunț
         update_custom_emoji: Actualizare Emoji Personalizat
         update_status: Actualizează Starea
+      actions:
+        create_custom_emoji_html: "%{name} a încărcat noi emoji %{target}"
     announcements:
       live: În direct
       new:
diff --git a/config/locales/ru.yml b/config/locales/ru.yml
index 6d6395952..cfdceff8e 100644
--- a/config/locales/ru.yml
+++ b/config/locales/ru.yml
@@ -212,6 +212,7 @@ ru:
         reject_user: Отклонить
         remove_avatar_user: Удаление аватаров
         reopen_report: Возобновление жалоб
+        resend_user: Повторно отправить письмо с подтверждением
         reset_password_user: Сброс пароля пользователей
         resolve_report: Отметка жалоб «решёнными»
         sensitive_account: Присвоение пользователям отметки «деликатного содержания»
@@ -285,6 +286,7 @@ ru:
         update_ip_block_html: "%{name} изменил(а) правило для IP %{target}"
         update_status_html: "%{name} изменил(а) пост пользователя %{target}"
         update_user_role_html: "%{name} изменил(а) роль %{target}"
+      deleted_account: удалённая учётная запись
       empty: Журнал пуст.
       filter_by_action: Фильтр по действию
       filter_by_user: Фильтр по пользователю
@@ -468,6 +470,8 @@ ru:
       dashboard:
         instance_accounts_dimension: Популярные аккаунты
         instance_accounts_measure: сохраненные учетные записи
+        instance_followers_measure: наши подписчики там
+        instance_follows_measure: их подписчики тут
         instance_languages_dimension: Популярные языки
         instance_media_attachments_measure: сохраненные медиафайлы
         instance_statuses_measure: сохраненные посты
@@ -558,6 +562,8 @@ ru:
       action_log: Журнал аудита
       action_taken_by: 'Действие предпринято:'
       actions:
+        delete_description_html: Обжалованные сообщения будут удалены, а претензия - записана, чтобы помочь вам в решении конфликтов при повторных нарушениях со стороны того же аккаунта.
+        mark_as_sensitive_description_html: Весь медиаконтент в обжалованных сообщениях будет отмечен как чувствительный, а претензия - записана, чтобы помочь вам в решении конфликтов при повторных нарушениях со стороны того же аккаунта.
         resolve_description_html: Никаких действий не будет выполнено относительно доложенного содержимого. Жалоба будет закрыта.
         silence_description_html: Профиль будет просматриваем только пользователями, которые уже подписаны на него, либо открыли его вручную. Это действие можно отменить в любой момент.
         suspend_description_html: Профиль и всё опубликованное в нём содержимое станут недоступны, пока в конечном итоге учётная запись не будет удалена. Пользователи не смогут взаимодействовать с этой учётной записью. Это действие можно отменить в течение 30 дней.
@@ -629,12 +635,21 @@ ru:
         other: "%{count} разрешений"
       privileges:
         administrator: Администратор
+        administrator_description: Пользователи с этим разрешением будут обходить все права
         delete_user_data: Удалить пользовательские данные
         delete_user_data_description: Позволяет пользователям удалять данные других пользователей без задержки
         invite_users: Пригласить пользователей
         invite_users_description: Позволяет пользователям приглашать новых людей на сервер
         manage_announcements: Управление объявлениями
         manage_announcements_description: Позволяет пользователям управлять объявлениями на сервере
+        manage_appeals: Управление апелляциями
+        manage_appeals_description: Позволяет пользователям просматривать апелляции на действия модерации
+        manage_blocks: Управление блоками
+        manage_custom_emojis: Управление смайлами
+        manage_custom_emojis_description: Позволяет пользователям управлять пользовательскими эмодзи на сервере
+        manage_federation: Управление Федерацией
+        manage_federation_description: Позволяет пользователям блокировать или разрешить объединение с другими доменами и контролировать возможность доставки
+        manage_invites: Управление приглашениями
         view_audit_log: Посмотреть журнал аудита
         view_audit_log_description: Позволяет пользователям просматривать историю административных действий на сервере
         view_dashboard: Открыть панель управления
diff --git a/config/locales/simple_form.ca.yml b/config/locales/simple_form.ca.yml
index 2fd51bfea..c392d4061 100644
--- a/config/locales/simple_form.ca.yml
+++ b/config/locales/simple_form.ca.yml
@@ -77,7 +77,7 @@ ca:
         backups_retention_period: Mantenir els arxius d'usuari generats durant el número de dies especificats.
         bootstrap_timeline_accounts: Aquests comptes es fixaran en la part superior de les recomanacions de seguiment dels nous usuaris.
         closed_registrations_message: Mostrat quan el registres estan tancats
-        content_cache_retention_period: Els apunts des d'altres servidors s'esborraran després del número de dies especificat quan es configura un valor positiu. Això pot ser irreversible.
+        content_cache_retention_period: Les publicacions d'altres servidors se suprimiran després del nombre de dies especificat quan s'estableix un valor positiu. Això pot ser irreversible.
         custom_css: Pots aplicar estils personalitzats en la versió web de Mastodon.
         mascot: Anul·la l'ilustració en l'interfície web avançada.
         media_cache_retention_period: Els fitxers multimèdia descarregats s'esborraran després del número de dies especificat quan el valor configurat és positiu, i tornats a descarregats sota demanda.
@@ -91,9 +91,9 @@ ca:
         site_title: Com pot la gent referir-se al teu servidor a part del seu nom de domini.
         theme: El tema que els visitants i els nous usuaris veuen.
         thumbnail: Una imatge d'aproximadament 2:1 mostrada junt l'informació del teu servidor.
-        timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per els apunts públics més recents en el teu servidor.
+        timeline_preview: Els visitants amb sessió no iniciada seran capaços de navegar per les publicacions més recents en el teu servidor.
         trendable_by_default: Omet la revisió manual del contingut en tendència. Els articles individuals poden encara ser eliminats després del fet.
-        trends: Les tendències mostres els apunts, les etiquetes i les noves històries que estan guanyant atenció en el teu servidor.
+        trends: Les tendències mostren quines publicacions, etiquetes i notícies estan guanyant força al vostre servidor.
       form_challenge:
         current_password: Estàs entrant en una àrea segura
       imports:
diff --git a/config/locales/simple_form.en-GB.yml b/config/locales/simple_form.en-GB.yml
index ef03d1810..617fb593c 100644
--- a/config/locales/simple_form.en-GB.yml
+++ b/config/locales/simple_form.en-GB.yml
@@ -1 +1,11 @@
+---
 en-GB:
+  simple_form:
+    hints:
+      account_alias:
+        acct: Specify the username@domain of the account you want to move from
+      account_migration:
+        acct: Specify the username@domain of the account you want to move to
+      account_warning_preset:
+        text: You can use post syntax, such as URLs, hashtags and mentions
+        title: Optional. Not visible to the recipient
diff --git a/config/locales/simple_form.eo.yml b/config/locales/simple_form.eo.yml
index dffffa61c..0bb1264a3 100644
--- a/config/locales/simple_form.eo.yml
+++ b/config/locales/simple_form.eo.yml
@@ -26,7 +26,7 @@ eo:
         ends_at: Laŭvola. La anonco estos aŭtomate maleldonita ĉi tiam
         scheduled_at: Lasi malplena por eldoni la anoncon tuj
         starts_at: Laŭvola. Se via anonco estas ligita al specifa tempo
-        text: Vi povas uzi afiŝo-sintakson. Bonvolu mensemi pri la spaco, kiun la anonco okupos sur la ekrano de la uzanto
+        text: Vi povas uzi la sintakso de afiŝoj. Bonvolu zorgi pri la spaco, kiun la anonco okupos sur la ekrano de la uzanto
       defaults:
         autofollow: Homoj, kiuj registriĝos per la invito aŭtomate sekvos vin
         avatar: Formato PNG, GIF aŭ JPG. Ĝis %{size}. Estos malgrandigita al %{dimensions}px
@@ -108,7 +108,7 @@ eo:
           none: Fari nenion
           sensitive: Tikla
           silence: Silentigi
-          suspend: Haltigi kaj nemalfereble forigi kontajn datumojn
+          suspend: Suspendi
         warning_preset_id: Uzi antaŭagorditan averton
       announcement:
         all_day: Ĉiutaga evento
diff --git a/config/locales/simple_form.ga.yml b/config/locales/simple_form.ga.yml
index 5fa6bb8ba..4be8c4f45 100644
--- a/config/locales/simple_form.ga.yml
+++ b/config/locales/simple_form.ga.yml
@@ -16,6 +16,7 @@ ga:
       account_warning_preset:
         title: Teideal
       admin_account_action:
+        text: Rabhadh saincheaptha
         types:
           none: Seol rabhadh
       announcement:
@@ -28,12 +29,23 @@ ga:
         note: Beathaisnéis
         password: Pasfhocal
         setting_display_media_default: Réamhshocrú
+        setting_display_media_hide_all: Cuir uile i bhfolach
+        setting_display_media_show_all: Taispeáin uile
+        setting_theme: Téama suímh
+        setting_trends: Taispeáin treochta an lae
         title: Teideal
         username: Ainm úsáideora
       featured_tag:
         name: Haischlib
+      filters:
+        actions:
+          hide: Cuir i bhfolach go hiomlán
+          warn: Cuir i bhfolach le rabhadh
       form_admin_settings:
+        site_extended_description: Cur síos fada
+        site_short_description: Cur síos freastalaí
         site_terms: Polasaí príobháideachais
+        site_title: Ainm freastalaí
       ip_block:
         ip: IP
       tag:
diff --git a/config/locales/simple_form.gd.yml b/config/locales/simple_form.gd.yml
index 290546c76..28dc0625e 100644
--- a/config/locales/simple_form.gd.yml
+++ b/config/locales/simple_form.gd.yml
@@ -18,7 +18,7 @@ gd:
           disable: Bac an cleachdaiche o chleachdadh a’ chunntais aca ach na sguab às no falaich an t-susbaint aca.
           none: Cleachd seo airson rabhadh a chur dhan chleachdaiche gun ghnìomh eile a ghabhail.
           sensitive: Èignich comharra gu bheil e frionasach air a h-uile ceanglachan meadhain a’ chleachdaiche seo.
-          silence: Bac an cleachdaiche o bhith a’ postadh le faicsinneachd poblach, falaich na postaichean aca agus brathan o na daoine nach eil ga leantainn.
+          silence: Bac an cleachdaiche o bhith a’ postadh le faicsinneachd poblach, falaich na postaichean aca agus brathan o na daoine nach eil ’ga leantainn.
           suspend: Bac conaltradh sam bith leis a’ chunntas seo agus sguab às an t-susbaint aige. Gabhaidh seo a neo-dhèanamh am broinn 30 latha.
         warning_preset_id: Roghainneil. ’S urrainn dhut teacsa gnàthaichte a chur ri deireadh an ro-sheata fhathast
       announcement:
@@ -30,7 +30,7 @@ gd:
       appeal:
         text: Chan urrainn dhut ath-thagradh a dhèanamh air rabhadh ach aon turas
       defaults:
-        autofollow: Leanaidh na daoine a chlàraicheas leis a cuireadh ort gu fèin-obrachail
+        autofollow: Leanaidh na daoine a chlàraicheas leis a cuireadh thu gu fèin-obrachail
         avatar: PNG, GIF or JPG. %{size} air a char as motha. Thèid a sgèileadh sìos gu %{dimensions}px
         bot: Comharraich do chàch gu bheil an cunntas seo ri gnìomhan fèin-obrachail gu h-àraidh is dh’fhaoidte nach doir duine sam bith sùil air idir
         context: Na co-theacsaichean air am bi a’ chriathrag an sàs
@@ -44,7 +44,7 @@ gd:
         inbox_url: Dèan lethbhreac dhen URL o phrìomh-dhuilleag an ath-sheachadain a bu mhiann leat cleachdadh
         irreversible: Thèid postaichean criathraichte à sealladh gu buan fiù ’s ma bheir thu a’ chriathrag air falbh às dèidh làimhe
         locale: Cànan eadar-aghaidh a’ chleachdaiche, nam post-d ’s nam brathan putaidh
-        locked: Stiùirich cò dh’fhaodas leantainn ort le gabhail ri iarrtasan leantainn a làimh
+        locked: Stiùirich cò dh’fhaodas ’gad leantainn le gabhail ri iarrtasan leantainn a làimh
         password: Cleachd co-dhiù 8 caractaran
         phrase: Thèid a mhaidseadh gun aire air litrichean mòra ’s beaga no air rabhadh susbainte puist
         scopes: Na APIan a dh’fhaodas an aplacaid inntrigeadh. Ma thaghas tu sgòp air ìre as àirde, cha leig thu leas sgòpaichean fa leth a thaghadh.
@@ -54,7 +54,7 @@ gd:
         setting_display_media_default: Falaich meadhanan ris a bheil comharra gu bheil iad frionasach
         setting_display_media_hide_all: Falaich na meadhanan an-còmhnaidh
         setting_display_media_show_all: Seall na meadhanan an-còmhnaidh
-        setting_hide_network: Thèid cò a tha thu a’ leantainn orra ’s an luchd-leantainn agad fhèin a chur am falach air a’ phròifil agad
+        setting_hide_network: Thèid cò a tha thu a’ leantainn ’s an luchd-leantainn agad fhèin a chur am falach air a’ phròifil agad
         setting_noindex: Bheir seo buaidh air a’ phròifil phoblach ’s air duilleagan nam postaichean agad
         setting_show_application: Chithear cò an aplacaid a chleachd thu airson post a sgrìobhadh ann an seallaidhean mionaideach nam postaichean agad
         setting_use_blurhash: Tha caiseadan stèidhichte air dathan nan nithean lèirsinneach a chaidh fhalach ach chan fhaicear am mion-fhiosrachadh
@@ -161,7 +161,7 @@ gd:
       appeal:
         text: Mìnich carson a bu chòir an caochladh a chur orra
       defaults:
-        autofollow: Thoir cuireadh dhaibh airson leantainn air a’ chunntas agad
+        autofollow: Thoir cuireadh dhaibh airson an cunntas agad a leantainn
         avatar: Avatar
         bot: Seo cunntas bot
         chosen_languages: Criathraich na cànain
@@ -210,7 +210,7 @@ gd:
         setting_system_font_ui: Cleachd cruth-clò bunaiteach an t-siostaim
         setting_theme: Ùrlar na làraich
         setting_trends: Seall na treandaichean an-diugh
-        setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de leantainn air cuideigin
+        setting_unfollow_modal: Seall còmhradh dearbhaidh mus sguir thu de chuideigin a leantainn
         setting_use_blurhash: Seall caiseadan dathte an àite meadhanan falaichte
         setting_use_pending_items: Am modh slaodach
         severity: Donad
@@ -254,8 +254,8 @@ gd:
         trends: Cuir na treandaichean an comas
       interactions:
         must_be_follower: Bac na brathan nach eil o luchd-leantainn
-        must_be_following: Bac na brathan o dhaoine air nach lean thu
-        must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine air nach lean thu
+        must_be_following: Bac na brathan o dhaoine nach lean thu
+        must_be_following_dm: Bac teachdaireachdan dìreach o dhaoine nach lean thu
       invite:
         comment: Beachd
       invite_request:
@@ -272,8 +272,8 @@ gd:
         appeal: Tha cuideigin ag ath-thagradh co-dhùnadh na maorsainneachd
         digest: Cuir puist-d le geàrr-chunntas
         favourite: Is annsa le cuideigin am post agad
-        follow: Lean cuideigin ort
-        follow_request: Dh’iarr cuideigin leantainn ort
+        follow: Lean cuideigin thu
+        follow_request: Dh’iarr cuideigin ’gad leantainn
         mention: Thug cuideigin iomradh ort
         pending_account: Tha cunntas ùr feumach air lèirmheas
         reblog: Bhrosnaich cuideigin am post agad
diff --git a/config/locales/simple_form.gl.yml b/config/locales/simple_form.gl.yml
index 9aa9c5745..bcd7453f6 100644
--- a/config/locales/simple_form.gl.yml
+++ b/config/locales/simple_form.gl.yml
@@ -66,6 +66,8 @@ gl:
       email_domain_block:
         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: 'Aquí tes algún dos cancelos que usaches recentemente:'
       filters:
         action: Elixe a acción a realizar cando algunha publicación coincida co filtro
         actions:
diff --git a/config/locales/simple_form.he.yml b/config/locales/simple_form.he.yml
index ffa091b68..ae1ad4fb7 100644
--- a/config/locales/simple_form.he.yml
+++ b/config/locales/simple_form.he.yml
@@ -7,18 +7,18 @@ he:
       account_migration:
         acct: נא לציין משתמש@דומיין של החשבון אליו תרצה/י לעבור
       account_warning_preset:
-        text: ניתן להשתמש בתחביר חצרוצי, כגון קישוריות, האשתגיות ואזכורים
+        text: ניתן להשתמש בתחביר הודעות, כגון קישוריות, תגיות ואזכורים
         title: אופציונלי. בלתי נראה למקבל ההודעה
       admin_account_action:
-        include_statuses: המשתמש יראה אילו חצרוצים גרמו לפעולה או לאזהרה
+        include_statuses: המשתמש יראה אילו הודעות גרמו לפעולה או לאזהרה
         send_email_notification: המשתמש יקבל הסבר מה קרה לחשבונם
-        text_html: אופציונלי. ניתן להשתמש בתחביר חצרוצי. ניתן <a href="%{path}">להוסיף הגדרות אזהרה</a> כדי לחסוך זמן
+        text_html: אופציונלי. ניתן להשתמש בתחביר הודעות. ניתן <a href="%{path}">להוסיף הגדרות אזהרה</a> כדי לחסוך זמן
         type_html: נא לבחור מה לעשות עם <strong>%{acct}</strong>
         types:
           disable: מנעי מהמשתמש להשתמש בחשבונם, מבלי למחוק או להסתיר את תוכנו.
           none: השתמשי בזה כדי לשלוח למשתמש אזהרה, מבלי לגרור פעולות נוספות.
           sensitive: אלצי את כל קבצי המדיה המצורפים על ידי המשתמש להיות מסומנים כרגישים.
-          silence: מנעי מהמשתמש להיות מסוגל לחצרץ בנראות פומבית, החביאי את חצרוציהם והתראותיהם מאנשים שלא עוקבים אחריהם.
+          silence: מנעי מהמשתמש להיות מסוגל לפרסם בנראות פומבית, החביאי את הודעותיהם והתראותיהם מאנשים שלא עוקבים אחריהם.
           suspend: מנעי כל התקשרות עם חשבון זה ומחקי את תוכנו. ניתן לשחזור תוך 30 יום.
         warning_preset_id: אופציונלי. ניתן עדיין להוסיף טקסט ייחודי לסוף ההגדרה
       announcement:
@@ -26,7 +26,7 @@ he:
         ends_at: אופציונלי. הכרזות יוסרו באופן אוטומטי בזמן זה
         scheduled_at: נא להשאיר ריק כדי לפרסם את ההכרזה באופן מיידי
         starts_at: אופציונלי. במקרה שהכרזתך כבולה לטווח זמן ספציפי
-        text: ניתן להשתמש בתחביר חצרוצי. נא לשים לב לשטח שתתפוס ההכרזה על מסך המשתמש
+        text: ניתן להשתמש בתחביר הודעות. נא לשים לב לשטח שתתפוס ההכרזה על מסך המשתמש
       appeal:
         text: ניתן לערער על עברה רק פעם אחת
       defaults:
@@ -42,13 +42,13 @@ he:
         fields: ניתן להציג עד ארבעה פריטים כטבלה בפרופילך
         header: PNG, GIF או JPG. מקסימום %{size}. גודל התמונה יוקטן %{dimensions}px
         inbox_url: נא להעתיק את הקישורית מדף הבית של הממסר בו תרצה/י להשתמש
-        irreversible: חצרוצים מסוננים יעלמו באופן בלתי הפיך, אפילו אם מאוחר יותר יוסר המסנן
+        irreversible: הודעות מסוננות יעלמו באופן בלתי הפיך, אפילו אם מאוחר יותר יוסר המסנן
         locale: שפת ממשק המשתמש, הדוא"ל וההתראות בדחיפה
         locked: מחייב אישור עוקבים באופן ידני. פרטיות ההודעות תהיה עוקבים-בלבד אלא אם יצוין אחרת
         password: נא להשתמש בלפחות 8 תוים
-        phrase: התאמה תמצא ללא תלות באזהרת תוכן בפוסט
+        phrase: התאמה תמצא ללא תלות באזהרת תוכן בהודעה
         scopes: לאיזה ממשק יורשה היישום לגשת. בבחירת תחום כללי, אין צורך לבחור ממשקים ספציפיים.
-        setting_aggregate_reblogs: לא להראות הדהודים של חצרוצים שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן)
+        setting_aggregate_reblogs: לא להראות הדהודים של הודעות שהודהדו לאחרונה (משפיע רק על הדהודים שהתקבלו לא מזמן)
         setting_always_send_emails: בדרך כלל התראות דוא"ל לא יישלחו בזמן שימוש פעיל במסטודון
         setting_default_sensitive: מדיה רגישה מוסתרת כברירת מחדל וניתן להציגה בקליק
         setting_display_media_default: הסתרת מדיה המסומנת כרגישה
@@ -56,7 +56,7 @@ he:
         setting_display_media_show_all: גלה מדיה תמיד
         setting_hide_network: עוקבייך ונעקבייך יוסתרו בפרופילך
         setting_noindex: משפיע על הפרופיל הציבורי שלך ועמודי ההודעות
-        setting_show_application: היישום בו נעשה שימוש כדי לפרסם פוסט יופיע בתצוגה המפורטת של הפוסט
+        setting_show_application: היישום בו נעשה שימוש כדי לפרסם הודעה יופיע בתצוגה המפורטת של ההודעה
         setting_use_blurhash: הגראדיינטים מבוססים על תוכן התמונה המוסתרת, אבל מסתירים את כל הפרטים
         setting_use_pending_items: הסתר עדכוני פיד מאחורי קליק במקום לגלול את הפיד אוטומטית
         username: שם המשתמש שלך יהיה ייחודי ב-%{domain}
@@ -67,12 +67,33 @@ he:
         domain: זה יכול להיות שם הדומיין המופיע בכתובת הדוא"ל או רשומת ה-MX בה הוא משתמש. הם ייבדקו בהרשמה.
         with_dns_records: ייעשה נסיון למצוא את רשומות ה-DNS של דומיין נתון והתוצאות ייחסמו גם הן
       featured_tag:
-        name: 'הנה כמה מההאשטגים שהשתמשת בהם לאחרונה:'
+        name: 'הנה כמה מהתגיות שהשתמשת בהן לאחרונה:'
       filters:
-        action: בחרו איזו פעולה לבצע כאשר פוסט מתאים למסנן
+        action: בחרו איזו פעולה לבצע כאשר הודעה מתאימה למסנן
         actions:
           hide: הסתר את התוכן המסונן, כאילו לא היה קיים
           warn: הסתר את התוכן המסונן מאחורי אזהרה עם כותרת המסנן
+      form_admin_settings:
+        backups_retention_period: לשמור ארכיון משתמש שנוצר למשך מספר הימים המצוין.
+        bootstrap_timeline_accounts: חשבונות אלו יוצמדו לראש רשימת המלצות המעקב של משתמשים חדשים.
+        closed_registrations_message: להציג כאשר הרשמות חדשות אינן מאופשרות
+        content_cache_retention_period: הודעות משרתים אחרים ימחקו אחרי מספר הימים המצוין כאשר מצוין מספר חיובי. פעולה זו אינה הפיכה.
+        custom_css: ניתן לבחור ערכות סגנון אישיות בגרסת הדפדפן של מסטודון.
+        mascot: בחירת ציור למנשק הווב המתקדם.
+        media_cache_retention_period: קבצי מדיה שהורדו ימחקו אחרי מספר הימים שיצוינו אם נבחר מספר חיובי, או-אז יורדו שוב מחדש בהתאם לצורך.
+        profile_directory: מדריך הפרופילים מפרט את כל המשתמשים שביקשו להיות ניתנים לגילוי.
+        require_invite_text: כאשר הרשמות דורשות אישור ידני, הפיכת טקסט ה"מדוע את/ה רוצה להצטרף" להכרחי במקום אופציונלי
+        site_contact_email: מה היא הדרך ליצור איתך קשר לצורך תמיכה או לצורך תאימות עם החוק.
+        site_contact_username: כיצד יכולים אחרים ליצור איתך קשר על רשת מסטודון.
+        site_extended_description: מידע נוסף שיהיה מועיל למבקרים ולמשתמשים שלך. ניתן לכתוב בתחביר מארקדאון.
+        site_short_description: תיאור קצר שיעזור להבחין בייחודיות השרת שלך. מי מריץ אותו, למי הוא מיועד?
+        site_terms: נסחו מדיניות פרטיות או השאירו ריק כדי להשתמש בברירת המחדל. ניתן לנסח בעזרת תחביר מארקדאון.
+        site_title: כיצד יקרא השרת שלך על ידי הקהל מלבד שם המתחם.
+        theme: ערכת המראה שיראו משתמשים חדשים ולא מחוברים.
+        thumbnail: תמונה ביחס 2:1 בערך שתוצג ליד המידע על השרת שלך.
+        timeline_preview: משתמשים מנותקים יוכלו לדפדף בהודעות ציר הזמן הציבורי שעל השרת.
+        trendable_by_default: לדלג על בדיקה ידנית של התכנים החמים. פריטים ספציפיים עדיין ניתנים להסרה לאחר מעשה.
+        trends: נושאים חמים יציגו אילו הודעות, תגיות וידיעות חדשות צוברות חשיפה על השרת שלך.
       form_challenge:
         current_password: את.ה נכנס. ת לאזור מאובטח
       imports:
@@ -96,7 +117,7 @@ he:
       tag:
         name: ניתן רק להחליף בין אותיות קטנות וגדולות, למשל כדי לשפר את הקריאות
       user:
-        chosen_languages: אם פעיל, רק חצרוצים בשפות הנבחרות יוצגו לפידים הפומביים
+        chosen_languages: אם פעיל, רק הודעות בשפות הנבחרות יוצגו לפידים הפומביים
         role: התפקיד שולט על אילו הרשאות יש למשתמש
       user_role:
         color: צבע לתפקיד בממשק המשתמש, כ RGB בפורמט הקסדצימלי
@@ -120,7 +141,7 @@ he:
         text: טקסט קבוע מראש
         title: כותרת
       admin_account_action:
-        include_statuses: כלול חצרוצים מדווחים בהודעת הדוא"ל
+        include_statuses: כלול הודעות מדווחות בהודעת הדוא"ל
         send_email_notification: יידע את המשתמש באמצעות דוא"ל
         text: התראה בהתאמה אישית
         type: פעולה
@@ -171,8 +192,8 @@ he:
         setting_always_send_emails: תמיד שלח התראות לדוא"ל
         setting_auto_play_gif: ניגון אוטומטי של גיפים
         setting_boost_modal: הצגת דיאלוג אישור לפני הדהוד
-        setting_crop_images: קטום תמונות בחצרוצים לא מורחבים ל 16 על 9
-        setting_default_language: שפת ברירת מחדל לפוסט
+        setting_crop_images: קטום תמונות בהודעות לא מורחבות ל 16 על 9
+        setting_default_language: שפת ברירת מחדל להודעה
         setting_default_privacy: פרטיות ההודעות
         setting_default_sensitive: תמיד לתת סימון "רגיש" למדיה
         setting_delete_modal: להראות תיבת אישור לפני מחיקת חיצרוץ
@@ -181,11 +202,11 @@ he:
         setting_display_media_default: ברירת מחדל
         setting_display_media_hide_all: להסתיר הכל
         setting_display_media_show_all: להציג הכול
-        setting_expand_spoilers: להרחיב תמיד חצרוצים מסומנים באזהרת תוכן
+        setting_expand_spoilers: להרחיב תמיד הודעות מסומנות באזהרת תוכן
         setting_hide_network: להחביא את הגרף החברתי שלך
         setting_noindex: לבקש הסתרה ממנועי חיפוש
         setting_reduce_motion: הפחתת תנועה בהנפשות
-        setting_show_application: הצגת הישום ששימש לפרסום הפוסט
+        setting_show_application: הצגת הישום ששימש לפרסום ההודעה
         setting_system_font_ui: להשתמש בגופן ברירת המחדל של המערכת
         setting_theme: ערכת העיצוב של האתר
         setting_trends: הצגת הנושאים החמים
@@ -202,11 +223,35 @@ he:
       email_domain_block:
         with_dns_records: לכלול רשומות MX וכתובות IP של הדומיין
       featured_tag:
-        name: האשתג
+        name: תגית
       filters:
         actions:
           hide: הסתרה כוללת
           warn: הסתרה עם אזהרה
+      form_admin_settings:
+        backups_retention_period: תקופת השמירה של ארכיון המשתמש
+        bootstrap_timeline_accounts: המלצה על חשבונות אלה למשתמשים חדשים
+        closed_registrations_message: הודעה מיוחדת כשההרשמה לא מאופשרת
+        content_cache_retention_period: תקופת שמירת מטמון תוכן
+        custom_css: CSS בהתאמה אישית
+        mascot: סמל השרת (ישן)
+        media_cache_retention_period: תקופת שמירת מטמון מדיה
+        profile_directory: הפעלת ספריית פרופילים
+        registrations_mode: מי יכולים לפתוח חשבון
+        require_invite_text: לדרוש סיבה להצטרפות
+        show_domain_blocks: הצגת חסימת דומיינים
+        show_domain_blocks_rationale: הצגת סיבות חסימה למתחמים
+        site_contact_email: דואל ליצירת קשר
+        site_contact_username: שם משתמש של איש קשר
+        site_extended_description: תיאור מורחב
+        site_short_description: תיאור השרת
+        site_terms: מדיניות פרטיות
+        site_title: שם השרת
+        theme: ערכת נושא ברירת מחדל
+        thumbnail: תמונה ממוזערת מהשרת
+        timeline_preview: הרשאת גישה בלתי מאומתת לפיד הפומבי
+        trendable_by_default: הרשאה לפריטים להופיע בנושאים החמים ללא אישור מוקדם
+        trends: אפשר פריטים חמים (טרנדים)
       interactions:
         must_be_follower: חסימת התראות משאינם עוקבים
         must_be_following: חסימת התראות משאינם נעקבים
@@ -226,21 +271,21 @@ he:
       notification_emails:
         appeal: מישהם מערערים על החלטת מנהל קהילה
         digest: שליחת הודעות דוא"ל מסכמות
-        favourite: שליחת דוא"ל כשמחבבים פוסט
+        favourite: שליחת דוא"ל כשמחבבים הודעה
         follow: שליחת דוא"ל כשנוספות עוקבות
         follow_request: שליחת דוא"ל כשמבקשים לעקוב
         mention: שליחת דוא"ל כשפונים אלייך
         pending_account: נדרשת סקירה של חשבון חדש
-        reblog: שליחת דוא"ל כשמהדהדים פוסט שלך
+        reblog: שליחת דוא"ל כשמהדהדים הודעה שלך
         report: דו"ח חדש הוגש
         trending_tag: נושאים חמים חדשים דורשים סקירה
       rule:
         text: כלל
       tag:
-        listable: הרשה/י להאשתג זה להופיע בחיפושים והצעות
-        name: האשתג
-        trendable: הרשה/י להאשתג זה להופיע תחת נושאים חמים
-        usable: הרשה/י לחצרוצים להכיל האשתג זה
+        listable: הרשה/י לתגית זו להופיע בחיפושים והצעות
+        name: תגית
+        trendable: הרשה/י לתגית זו להופיע תחת נושאים חמים
+        usable: הרשה/י להודעות להכיל תגית זו
       user:
         role: תפקיד
       user_role:
diff --git a/config/locales/simple_form.it.yml b/config/locales/simple_form.it.yml
index dd9207b44..2f33fb622 100644
--- a/config/locales/simple_form.it.yml
+++ b/config/locales/simple_form.it.yml
@@ -3,7 +3,7 @@ it:
   simple_form:
     hints:
       account_alias:
-        acct: Indica il nomeutente@dominio dell'account da cui vuoi trasferirti
+        acct: Indica il nomeutente@dominio dell'account dal quale vuoi trasferirti
       account_migration:
         acct: Indica il nomeutente@dominio dell'account al quale vuoi trasferirti
       account_warning_preset:
diff --git a/config/locales/simple_form.lv.yml b/config/locales/simple_form.lv.yml
index 7f31232a1..8b5b1dce3 100644
--- a/config/locales/simple_form.lv.yml
+++ b/config/locales/simple_form.lv.yml
@@ -54,7 +54,7 @@ lv:
         setting_display_media_default: Paslēpt mediju, kas atzīmēts kā sensitīvs
         setting_display_media_hide_all: Vienmēr slēpt medijus
         setting_display_media_show_all: Vienmēr rādīt medijus
-        setting_hide_network: Kam tu seko un kurš seko tev, tavā profilā tiks paslēps
+        setting_hide_network: Tavā profilā netiks rādīts, kam tu seko un kurš seko tev
         setting_noindex: Ietekmē tavu publisko profilu un ziņu lapas
         setting_show_application: Lietojumprogramma, ko tu izmanto publicēšanai, tiks parādīta tavu ziņu detalizētajā skatā
         setting_use_blurhash: Gradientu pamatā ir paslēpto vizuālo attēlu krāsas, bet neskaidras visas detaļas
@@ -120,7 +120,7 @@ lv:
         chosen_languages: Ja ieķeksēts, publiskos laika grafikos tiks parādītas tikai ziņas noteiktajās valodās
         role: Loma kontrolē, kādas atļaujas ir lietotājam
       user_role:
-        color: Krāsa, kas jāizmanto lomai visā lietotāja interfeisā, kā RGB hex formātā
+        color: Krāsa, kas jāizmanto lomai visā lietotāja saskarnē, kā RGB hex formātā
         highlighted: Tas padara lomu publiski redzamu
         name: Lomas publiskais nosaukums, ja loma ir iestatīta rādīšanai kā emblēma
         permissions_as_keys: Lietotājiem ar šo lomu būs piekļuve...
@@ -179,7 +179,7 @@ lv:
         honeypot: "%{label} (neaizpildi)"
         inbox_url: URL vai releja pastkaste
         irreversible: Nomest, nevis paslēpt
-        locale: Interfeisa valoda
+        locale: Saskarnes valoda
         locked: Pieprasīt sekotāju pieprasījumus
         max_uses: Maksimālais lietojumu skaits
         new_password: Jauna parole
@@ -187,7 +187,7 @@ lv:
         otp_attempt: Divfaktoru kods
         password: Parole
         phrase: Atslēgvārds vai frāze
-        setting_advanced_layout: Iespējot paplašināto web interfeisu
+        setting_advanced_layout: Iespējot paplašināto tīmekļa saskarni
         setting_aggregate_reblogs: Grupēt paaugstinājumus ziņu lentās
         setting_always_send_emails: Vienmēr sūtīt e-pasta paziņojumus
         setting_auto_play_gif: Automātiski atskaņot animētos GIF
@@ -203,7 +203,7 @@ lv:
         setting_display_media_hide_all: Paslēpt visu
         setting_display_media_show_all: Parādīt visu
         setting_expand_spoilers: Vienmēr izvērst ziņas, kas apzīmētas ar brīdinājumiem par saturu
-        setting_hide_network: Slēpt savu sociālo diagrammu
+        setting_hide_network: Slēpt savu sociālo grafu
         setting_noindex: Atteikties no meklētājprogrammu indeksēšanas
         setting_reduce_motion: Ierobežot kustību animācijās
         setting_show_application: Atklāt lietojumprogrammu, ko izmanto ziņu nosūtīšanai
diff --git a/config/locales/simple_form.nl.yml b/config/locales/simple_form.nl.yml
index 7d627b8f7..44db45390 100644
--- a/config/locales/simple_form.nl.yml
+++ b/config/locales/simple_form.nl.yml
@@ -64,6 +64,7 @@ nl:
       domain_allow:
         domain: Dit domein is in staat om gegevens van deze server op te halen, en binnenkomende gegevens worden verwerkt en opgeslagen
       email_domain_block:
+        domain: Dit kan de domeinnaam zijn die wordt weergegeven in het e-mailadres of in het MX-record dat het gebruikt. Ze worden gecontroleerd tijdens de registratie.
         with_dns_records: Er wordt een poging gewaagd om de desbetreffende DNS-records op te zoeken, waarna de resultaten ook worden geblokkeerd
       featured_tag:
         name: 'Hier zijn enkele van de hashtags die je onlangs hebt gebruikt:'
@@ -84,7 +85,9 @@ nl:
         require_invite_text: Maak het invullen van "Waarom wil je je hier registreren?" verplicht in plaats van optioneel, wanneer registraties handmatig moeten worden goedgekeurd
         site_contact_email: Hoe mensen je kunnen bereiken voor juridische vragen of support.
         site_contact_username: Hoe mensen je op Mastodon kunnen bereiken.
-        site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown syntax.
+        site_extended_description: Alle aanvullende informatie die nuttig kan zijn voor bezoekers en jouw gebruikers. Kan worden opgemaakt met Markdown.
+        site_short_description: Een korte beschrijving om het unieke karakter van je server te tonen. Wie beheert de server, wat is de doelgroep?
+        site_terms: Gebruik je eigen privacybeleid of laat leeg om de standaardwaarde te gebruiken. Kan worden opgemaakt met Markdown.
         site_title: Hoe mensen buiten de domeinnaam naar je server kunnen verwijzen.
         theme: Thema die (niet ingelogde) bezoekers en nieuwe gebruikers zien.
         thumbnail: Een afbeelding van ongeveer een verhouding van 2:1 die naast jouw serverinformatie wordt getoond.
@@ -121,6 +124,7 @@ nl:
         highlighted: Dit maakt de rol openbaar zichtbaar
         name: Openbare naam van de rol, wanneer de rol als badge op profielpagina's wordt getoond
         permissions_as_keys: Gebruikers met deze rol hebben toegang tot...
+        position: Een hogere rol beslist in bepaalde situaties over het oplossen van conflicten. Bepaalde acties kunnen alleen worden uitgevoerd op rollen met een lagere prioriteit
       webhook:
         events: Selecteer de te verzenden gebeurtenissen
         url: Waar gebeurtenissen naartoe worden verzonden
@@ -158,7 +162,7 @@ nl:
         text: Leg uit waarom deze beslissing volgens jou teruggedraaid moet worden
       defaults:
         autofollow: Uitnodigen om jouw account te volgen
-        avatar: Avatar
+        avatar: Profielfoto
         bot: Dit is een bot-account
         chosen_languages: Talen filteren
         confirm_new_password: Nieuw wachtwoord bevestigen
diff --git a/config/locales/simple_form.nn.yml b/config/locales/simple_form.nn.yml
index 0343dc457..50dacf53a 100644
--- a/config/locales/simple_form.nn.yml
+++ b/config/locales/simple_form.nn.yml
@@ -3,14 +3,14 @@ nn:
   simple_form:
     hints:
       account_alias:
-        acct: Spesifiser brukarnamn@domenet til brukaren du vil flytja frå
+        acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta frå
       account_migration:
-        acct: Spesifiser brukarnamn@domenet til brukaren du vil flytja til
+        acct: Angi brukarnamn@domene til brukaren du ynskjer å flytta til
       account_warning_preset:
         text: Du kan bruka tut-syntaks, som t. d. URL-ar, emneknaggar og nemningar
         title: Valfritt. Ikkje synleg for mottakar
       admin_account_action:
-        include_statuses: Brukaren får sjå kva tut som gjorde moderatorhandllinga eller -åtvaringa
+        include_statuses: Brukaren får sjå kva tut som førte til moderatorhandlinga eller -åtvaringa
         send_email_notification: Brukaren får ei forklåring av kva som har hendt med kontoen sin
         text_html: Valfritt. Du kan bruka tut-syntaks. Du kan <a href="%{path}">leggja til åtvaringsførehandsinnstillingar</a> for å spara tid
         type_html: Vel det du vil gjera med <strong>%{acct}</strong>
@@ -56,18 +56,44 @@ nn:
         setting_display_media_show_all: Vis alltid media
         setting_hide_network: Kven du fylgjer og kven som fylgjer deg vert ikkje vist på profilen din
         setting_noindex: Påverkar den offentlege profilen og statussidene dine
-        setting_show_application: Programmet du brukar for å tuta synast i den detaljerte visninga av tuta dine
-        setting_use_blurhash: Overgangar er bygt på dei løynde sine leter, men gjer detaljar utydelege
-        setting_use_pending_items: Gøym tidslineoppdateringar ved eit klikk, i staden for å bla ned hendestraumen automatisk
+        setting_show_application: Programmet du brukar for å tuta blir vist i den detaljerte visninga av tuta dine
+        setting_use_blurhash: Overgangar er basert på fargane til skjulte grafikkelement, men gjer detaljar utydelege
+        setting_use_pending_items: Gøym tidslineoppdateringar bak eit klikk, i staden for å rulla ned automatisk
         username: Brukarnamnet ditt vert unikt på %{domain}
         whole_word: Når søkjeordet eller setninga berre er alfanumerisk, nyttast det berre om det samsvarar med heile ordet
       domain_allow:
         domain: Dette domenet er i stand til å henta data frå denne tenaren og innkomande data vert handsama og lagra
       email_domain_block:
         domain: Dette kan vera domenenamnet som blir vist i e-postadressa eller den MX-oppføringa den brukar. Dei vil bli kontrollert ved registrering.
-        with_dns_records: Eit forsøk på å løysa gjeve domene som DNS-data vil vera gjord og resultata vert svartelista
+        with_dns_records: Det vil bli gjort eit forsøk på å avgjera DNS-oppføringa til domenet og resultata vil bli tilsvarande blokkert
       featured_tag:
-        name: 'Her er nokre av dei mest brukte hashtaggane dine i det siste:'
+        name: 'Her er nokre av emneknaggane du har brukt i det siste:'
+      filters:
+        action: Velg kva som skal gjerast når eit innlegg samsvarar med filteret
+        actions:
+          hide: Skjul filtrert innhald fullstendig og lat som om det ikkje finst
+          warn: Skjul det filtrerte innhaldet bak ei åtvaring som nemner tittelen på filteret
+      form_admin_settings:
+        backups_retention_period: Ta vare på genererte brukararkiv i angitt antal dagar.
+        bootstrap_timeline_accounts: Desse kontoane vil bli festa øverst på fylgjaranbefalingane til nye brukarar.
+        closed_registrations_message: Vist når det er stengt for registrering
+        content_cache_retention_period: Innlegg frå andre tenarar vil bli sletta etter det angitte talet på dagar når det er sett til ein positiv verdi. Dette kan vera irreversibelt.
+        custom_css: Du kan bruka eigendefinerte stilar på nettversjonen av Mastodon.
+        mascot: Overstyrer illustrasjonen i det avanserte webgrensesnittet.
+        media_cache_retention_period: Mediafiler som har blitt lasta ned vil bli sletta etter det angitte talet på dagar når det er sett til ein positiv verdi, og lasta ned på nytt ved etterspørsel.
+        profile_directory: Profilkatalogen viser alle brukarar som har valt å kunne bli oppdaga.
+        require_invite_text: Når registrering krev manuell godkjenning, lyt du gjera tekstfeltet "Kvifor vil du bli med?" obligatorisk i staden for valfritt
+        site_contact_email: Korleis kan ein få tak i deg når det gjeld juridiske spørsmål eller spørsmål om støtte.
+        site_contact_username: Korleis folk kan koma i kontakt med deg på Mastodon.
+        site_extended_description: Tilleggsinformasjon som kan vera nyttig for besøkjande og brukarar. Kan strukturerast med Markdown-syntaks.
+        site_short_description: Ein kort omtale for lettare å finne tenaren blant alle andre. Kven driftar han, kven er i målgruppa?
+        site_terms: Bruk eigen personvernpolicy eller la stå tom for å bruka standard. Kan strukturerast med Markdown-syntaks.
+        site_title: Kva ein kan kalla tenaren, utanom domenenamnet.
+        theme: Tema som er synleg for nye brukarar og besøkjande som ikkje er logga inn.
+        thumbnail: Eit omlag 2:1 bilete vist saman med informasjon om tenaren.
+        timeline_preview: Besøkjande som ikkje er logga inn vil kunne bla gjennom dei siste offentlege innlegga på tenaren.
+        trendable_by_default: Hopp over manuell gjennomgang av populært innhald. Enkeltståande innlegg kan fjernast frå trendar i etterkant.
+        trends: Trendar viser kva for nokre innlegg, emneknaggar og nyheiter som er i støytet på tenaren.
       form_challenge:
         current_password: Du går inn i eit trygt område
       imports:
@@ -75,25 +101,33 @@ nn:
       invite_request:
         text: Dette kjem til å hjelpa oss med å gå gjennom søknaden din
       ip_block:
-        comment: Valgfritt. Husk hvorfor du la til denne regelen.
-        expires_in: IP-adressene er en helt begrenset ressurs, de deles og endres ofte hender. Ubestemte IP-blokker anbefales ikke.
-        ip: Skriv inn en IPv4 eller IPv6-adresse. Du kan blokkere alle områder ved å bruke CIDR-syntaksen. Pass på å ikke låse deg selv!
+        comment: Valfritt. Hugs kvifor du la til denne regelen.
+        expires_in: IP-adresser er ein avgrensa ressurs, er av og til delte og byter ofte eigar. På grunn av dette er det ikkje tilrådd med uavgrensa IP-blokkeringar.
+        ip: Skriv inn ei IPv4 eller IPv6 adresse. Du kan blokkere heile IP-områder ved bruk av CIDR-syntaks. Pass på å ikkje blokkera deg sjølv!
         severities:
           no_access: Blokker tilgang til alle ressurser
-          sign_up_requires_approval: Nye registreringer vil kreve din godkjenning
-        severity: Velg hva som vil skje med forespørsler fra denne IP
+          sign_up_block: Nye registreringar vil ikkje vera mogleg
+          sign_up_requires_approval: Du må godkjenna nye registreringar
+        severity: Vel kva som skal skje ved førespurnader frå denne IP
       rule:
-        text: Beskriv en regel eller krav til brukere på denne serveren. Prøv å holde den kort og enkelt
+        text: Forklar ein regel eller eit krav for brukarar på denne tenaren. Prøv å skriva kort og lettfattleg
       sessions:
         otp: Angi tofaktorkoden fra din telefon eller bruk en av dine gjenopprettingskoder.
+        webauthn: Om det er ein USB-nøkkel må du setja han inn og om nødvendig trykkja på han.
       tag:
         name: Du kan berre endra bruken av store/små bokstavar, t. d. for å gjera det meir leseleg
       user:
         chosen_languages: Når merka vil berre tuta på dei valde språka synast på offentlege tidsliner
         role: Rolla kontrollerer kva tilgangar brukaren har
       user_role:
+        color: Fargen som skal nyttast for denne rolla i heile brukargrensesnittet, som RGB i hex-format
         highlighted: Dette gjer rolla synleg offentleg
+        name: Offentleg namn på rolla, dersom rolla skal visast som eit emblem
         permissions_as_keys: Brukarar med denne rolla vil ha tilgang til...
+        position: Høgare rolle avgjer konfliktløysing i visse situasjonar. Visse handlingar kan kun utførast på rollar med lågare prioritet
+      webhook:
+        events: Vel hendingar å senda
+        url: Kvar hendingar skal sendast
     labels:
       account:
         fields:
@@ -114,7 +148,7 @@ nn:
         types:
           disable: Slå av innlogging
           none: Gjer inkje
-          sensitive: Sensitiv
+          sensitive: Ømtolig
           silence: Togn
           suspend: Utvis og slett kontodata for godt
         warning_preset_id: Bruk åtvaringsoppsett
@@ -124,6 +158,8 @@ nn:
         scheduled_at: Planlegg publisering
         starts_at: Byrjing av hendinga
         text: Lysing
+      appeal:
+        text: Forklar kvifor denne avgjerda bør gjerast om
       defaults:
         autofollow: Bed om å fylgja kontoen din
         avatar: Bilete
@@ -192,6 +228,30 @@ nn:
         actions:
           hide: Gøym totalt
           warn: Gøym med ei advarsel
+      form_admin_settings:
+        backups_retention_period: Arkiveringsperiode for brukararkiv
+        bootstrap_timeline_accounts: Tilrå alltid desse kontoane for nye brukarar
+        closed_registrations_message: Eigendefinert melding når registrering ikkje er mogleg
+        content_cache_retention_period: Oppbevaringsperiode for innhaldsbuffer
+        custom_css: Egendefinert CSS
+        mascot: Eigendefinert maskot (eldre funksjon)
+        media_cache_retention_period: Oppbevaringsperiode for mediebuffer
+        profile_directory: Aktiver profilkatalog
+        registrations_mode: Kven kan registrera seg
+        require_invite_text: Krev ei grunngjeving for å få bli med
+        show_domain_blocks: Vis domeneblokkeringar
+        show_domain_blocks_rationale: Vis grunngjeving for domeneblokkeringar
+        site_contact_email: E-postadresse for kontakt
+        site_contact_username: Brukarnamn for kontakt
+        site_extended_description: Utvida omtale av tenaren
+        site_short_description: Stutt om tenaren
+        site_terms: Personvernsreglar
+        site_title: Tenarnamn
+        theme: Standardtema
+        thumbnail: Miniatyrbilete for tenaren
+        timeline_preview: Tillat uautentisert tilgang til offentleg tidsline
+        trendable_by_default: Tillat trendar utan gjennomgang på førehand
+        trends: Aktiver trendar
       interactions:
         must_be_follower: Gøym varslingar frå folk som ikkje fylgjer deg
         must_be_following: Gøym varslingar frå folk du ikkje fylgjer
@@ -205,9 +265,11 @@ nn:
         ip: IP
         severities:
           no_access: Blokker tilgang
+          sign_up_block: Blokker registrering
           sign_up_requires_approval: Begrens påmeldinger
         severity: Oppføring
       notification_emails:
+        appeal: Nokon klagar på ei moderatoravgjerd
         digest: Send samandrag på e-post
         favourite: Send e-post når nokon merkjer statusen din som favoritt
         follow: Send e-post når nokon fylgjer deg
@@ -216,6 +278,7 @@ nn:
         pending_account: Send e-post når ein ny konto treng gjennomgang
         reblog: Send e-post når nokon framhevar statusen din
         report: Ny rapport er sendt
+        trending_tag: Ny trend krev gjennomgang
       rule:
         text: Regler
       tag:
@@ -226,11 +289,16 @@ nn:
       user:
         role: Rolle
       user_role:
+        color: Emblemfarge
+        highlighted: Vis rolle som emblem på brukarprofil
         name: Namn
+        permissions_as_keys: Løyve
         position: Prioritet
       webhook:
+        events: Aktiverte hendingar
         url: Endepunkts-URL
     'no': Nei
+    not_recommended: Ikkje anbefalt
     recommended: Tilrådt
     required:
       mark: "*"
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 7d7a15245..c074b8945 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -40,6 +40,7 @@ oc:
         phrase: Serà pres en compte que siá en majuscula o minuscula o dins un avertiment de contengut sensible
         scopes: A quinas APIs poiràn accedir las aplicacions. Se seleccionatz un encastre de naut nivèl, fa pas mestièr de seleccionar los nivèls mai basses.
         setting_aggregate_reblogs: Mostrar pas los nòus partatges que son estats partejats recentament (afecta pas que los nòus partatges recebuts)
+        setting_always_send_emails: Normalament enviam pas los corrièls de notificacion se sètz a utilizar Mastodon activament
         setting_default_sensitive: Los mèdias sensibles son resconduts per defaut e se revelhan amb un clic
         setting_display_media_default: Rescondre los mèdias marcats coma sensibles
         setting_display_media_hide_all: Totjorn rescondre los mèdias
@@ -135,6 +136,7 @@ oc:
         phrase: Senhal o frasa
         setting_advanced_layout: Activar l’interfàcia web avançada
         setting_aggregate_reblogs: Agropar los partatges dins lo flux d’actualitat
+        setting_always_send_emails: Totjorn enviar los corrièls de notificacion
         setting_auto_play_gif: Lectura automatica dels GIFS animats
         setting_boost_modal: Mostrar una fenèstra de confirmacion abans de partejar un estatut
         setting_crop_images: Retalhar los imatges dins los tuts pas desplegats a 16x9
diff --git a/config/locales/simple_form.pt-BR.yml b/config/locales/simple_form.pt-BR.yml
index c2d3b9ffe..aa2d6ef8d 100644
--- a/config/locales/simple_form.pt-BR.yml
+++ b/config/locales/simple_form.pt-BR.yml
@@ -67,9 +67,9 @@ pt-BR:
         domain: Este pode ser o nome de domínio que aparece no endereço de e-mail ou no registro MX que ele utiliza. Eles serão verificados após a inscrição.
         with_dns_records: Será feita uma tentativa de resolver os registros DNS do domínio em questão e os resultados também serão colocados na lista negra
       featured_tag:
-        name: 'Aqui estão algumas ‘hashtags’ utilizadas recentemente:'
+        name: 'Aqui estão algumas hashtags usadas recentemente:'
       filters:
-        action: Escolher qual ação executar quando um post corresponder ao filtro
+        action: Escolher qual ação executar quando uma publicação corresponder ao filtro
         actions:
           hide: Esconder completamente o conteúdo filtrado, comportando-se como se ele não existisse
           warn: Ocultar o conteúdo filtrado por trás de um aviso mencionando o título do filtro
@@ -79,10 +79,11 @@ pt-BR:
         closed_registrations_message: Exibido quando as inscrições estiverem fechadas
         site_contact_username: Como as pessoas podem chegar até você no Mastodon.
         site_extended_description: Quaisquer informações adicionais que possam ser úteis para os visitantes e seus usuários. Podem ser estruturadas com formato Markdown.
+        site_title: Como as pessoas podem se referir ao seu servidor além do nome do domínio.
       form_challenge:
         current_password: Você está entrando em uma área segura
       imports:
-        data: Arquivo CSV exportado de outra instância Mastodon
+        data: Arquivo CSV exportado de outro servidor Mastodon
       invite_request:
         text: Isso vai nos ajudar a revisar sua aplicação
       ip_block:
@@ -206,8 +207,16 @@ pt-BR:
           hide: Ocultar completamente
           warn: Ocultar com um aviso
       form_admin_settings:
+        custom_css: CSS personalizável
+        profile_directory: Ativar diretório de perfis
         registrations_mode: Quem pode se inscrever
         site_contact_email: E-mail de contato
+        site_extended_description: Descrição estendida
+        site_short_description: Descrição do servidor
+        site_terms: Política de privacidade
+        site_title: Nome do servidor
+        theme: Tema padrão
+        thumbnail: Miniatura do servidor
         trends: Habilitar tendências
       interactions:
         must_be_follower: Bloquear notificações de não-seguidores
@@ -222,6 +231,7 @@ pt-BR:
         ip: IP
         severities:
           no_access: Bloquear acesso
+          sign_up_block: Bloquear registros
           sign_up_requires_approval: Limitar novas contas
         severity: Regra
       notification_emails:
@@ -242,10 +252,18 @@ pt-BR:
         name: Hashtag
         trendable: Permitir que esta hashtag fique em alta
         usable: Permitir que toots usem esta hashtag
+      user:
+        role: Cargo
+      user_role:
+        color: Cor do emblema
+        name: Nome
+        permissions_as_keys: Permissões
+        position: Prioridade
       webhook:
         events: Eventos habilitados
         url: URL do Endpoint
     'no': Não
+    not_recommended: Não recomendado
     recommended: Recomendado
     required:
       mark: "*"
diff --git a/config/locales/simple_form.th.yml b/config/locales/simple_form.th.yml
index 758549c6f..021def2fd 100644
--- a/config/locales/simple_form.th.yml
+++ b/config/locales/simple_form.th.yml
@@ -42,7 +42,7 @@ th:
         fields: คุณสามารถมีได้มากถึง 4 รายการแสดงเป็นตารางในโปรไฟล์ของคุณ
         header: PNG, GIF หรือ JPG สูงสุด %{size} จะถูกย่อขนาดเป็น %{dimensions}px
         inbox_url: คัดลอก URL จากหน้าแรกของรีเลย์ที่คุณต้องการใช้
-        irreversible: โพสต์ที่กรองจะหายไปอย่างถาวร แม้ว่าจะเอาตัวกรองออกในภายหลัง
+        irreversible: โพสต์ที่กรองอยู่จะหายไปอย่างถาวร แม้ว่าจะเอาตัวกรองออกในภายหลัง
         locale: ภาษาของส่วนติดต่อผู้ใช้, อีเมล และการแจ้งเตือนแบบผลัก
         locked: ควบคุมผู้ที่สามารถติดตามคุณด้วยตนเองได้โดยอนุมัติคำขอติดตาม
         password: ใช้อย่างน้อย 8 ตัวอักษร
@@ -75,6 +75,14 @@ th:
           warn: ซ่อนเนื้อหาที่กรองอยู่หลังคำเตือนที่กล่าวถึงชื่อเรื่องของตัวกรอง
       form_admin_settings:
         closed_registrations_message: แสดงเมื่อมีการปิดการลงทะเบียน
+        mascot: เขียนทับภาพประกอบในส่วนติดต่อเว็บขั้นสูง
+        site_contact_email: วิธีที่ผู้คนสามารถเข้าถึงคุณสำหรับการสอบถามด้านกฎหมายหรือการสนับสนุน
+        site_contact_username: วิธีที่ผู้คนสามารถเข้าถึงคุณใน Mastodon
+        site_terms: ใช้นโยบายความเป็นส่วนตัวของคุณเองหรือเว้นว่างไว้เพื่อใช้ค่าเริ่มต้น สามารถจัดโครงสร้างด้วยไวยากรณ์ Markdown
+        site_title: วิธีที่ผู้คนอาจอ้างอิงถึงเซิร์ฟเวอร์ของคุณนอกเหนือจากชื่อโดเมนของเซิร์ฟเวอร์
+        theme: ชุดรูปแบบที่ผู้เยี่ยมชมที่ออกจากระบบและผู้ใช้ใหม่เห็น
+        thumbnail: แสดงภาพ 2:1 โดยประมาณควบคู่ไปกับข้อมูลเซิร์ฟเวอร์ของคุณ
+        timeline_preview: ผู้เยี่ยมชมที่ออกจากระบบจะสามารถเรียกดูโพสต์สาธารณะล่าสุดที่มีในเซิร์ฟเวอร์
         trends: แนวโน้มแสดงว่าโพสต์, แฮชแท็ก และเรื่องข่าวใดกำลังได้รับความสนใจในเซิร์ฟเวอร์ของคุณ
       form_challenge:
         current_password: คุณกำลังเข้าสู่พื้นที่ปลอดภัย
@@ -212,6 +220,8 @@ th:
           warn: ซ่อนด้วยคำเตือน
       form_admin_settings:
         backups_retention_period: ระยะเวลาการเก็บรักษาการเก็บถาวรผู้ใช้
+        bootstrap_timeline_accounts: แนะนำบัญชีเหล่านี้ให้กับผู้ใช้ใหม่เสมอ
+        closed_registrations_message: ข้อความที่กำหนดเองเมื่อการลงทะเบียนไม่พร้อมใช้งาน
         content_cache_retention_period: ระยะเวลาการเก็บรักษาแคชเนื้อหา
         custom_css: CSS ที่กำหนดเอง
         mascot: มาสคอตที่กำหนดเอง (ดั้งเดิม)
@@ -220,6 +230,7 @@ th:
         registrations_mode: ผู้ที่สามารถลงทะเบียน
         require_invite_text: ต้องมีเหตุผลที่จะเข้าร่วม
         show_domain_blocks: แสดงการปิดกั้นโดเมน
+        show_domain_blocks_rationale: แสดงเหตุผลที่โดเมนได้รับการปิดกั้น
         site_contact_email: อีเมลสำหรับติดต่อ
         site_contact_username: ชื่อผู้ใช้สำหรับติดต่อ
         site_extended_description: คำอธิบายแบบขยาย
@@ -228,6 +239,7 @@ th:
         site_title: ชื่อเซิร์ฟเวอร์
         theme: ชุดรูปแบบเริ่มต้น
         thumbnail: ภาพขนาดย่อเซิร์ฟเวอร์
+        timeline_preview: อนุญาตการเข้าถึงเส้นเวลาสาธารณะที่ไม่ได้รับรองความถูกต้อง
         trendable_by_default: อนุญาตแนวโน้มโดยไม่มีการตรวจทานล่วงหน้า
         trends: เปิดใช้งานแนวโน้ม
       interactions:
diff --git a/config/locales/simple_form.tr.yml b/config/locales/simple_form.tr.yml
index 6eb379ad8..5ccb60169 100644
--- a/config/locales/simple_form.tr.yml
+++ b/config/locales/simple_form.tr.yml
@@ -3,7 +3,7 @@ tr:
   simple_form:
     hints:
       account_alias:
-        acct: Taşıyacağınız hesabı kullanıcıadı@alanadı şeklinde belirtin
+        acct: Taşımak istediğiniz hesabı kullanıcıadı@alanadı şeklinde belirtin
       account_migration:
         acct: Yeni hesabınızı kullanıcıadı@alanadını şeklinde belirtin
       account_warning_preset:
diff --git a/config/locales/sv.yml b/config/locales/sv.yml
index 8392ece91..c2a249b59 100644
--- a/config/locales/sv.yml
+++ b/config/locales/sv.yml
@@ -686,6 +686,7 @@ sv:
         title: Bibehållande av innehåll
       discovery:
         follow_recommendations: Följrekommendationer
+        preamble: Att visa intressant innehåll är avgörande i onboarding av nya användare som kanske inte känner någon på Mastodon. Styr hur olika upptäcktsfunktioner fungerar på din server.
         profile_directory: Profilkatalog
         public_timelines: Offentliga tidslinjer
         title: Upptäck
@@ -861,16 +862,22 @@ sv:
       body: "%{target} överklagade ett modereringsbeslut av typen %{type}, taget av %{action_taken_by} den %{date}. De skrev:"
       next_steps: Du kan godkänna överklagan för att ångra modereringsbeslutet, eller ignorera det.
       subject: "%{username} överklagar ett modereringsbeslut på %{instance}"
+    new_pending_account:
+      body: Detaljerna för det nya kontot finns nedan. Du kan godkänna eller avvisa denna ansökan.
+      subject: Nytt konto flaggat för granskning på %{instance} (%{username})
     new_report:
       body: "%{reporter} har rapporterat %{target}"
       body_remote: Någon från %{domain} har rapporterat %{target}
       subject: Ny rapport för %{instance} (#%{id})
     new_trends:
+      body: 'Följande objekt behöver granskas innan de kan visas publikt:'
       new_trending_links:
         title: Trendande länkar
       new_trending_statuses:
         title: Trendande inlägg
       new_trending_tags:
+        no_approved_tags: Det finns för närvarande inga godkända trendande hashtaggar.
+        requirements: 'Någon av dessa kandidater skulle kunna överträffa #%{rank} godkända trendande hashtaggar, som för närvarande är #%{lowest_tag_name} med en poäng på %{lowest_tag_score}.'
         title: Trendande hashtaggar
       subject: Nya trender tillgängliga för granskning på %{instance}
   aliases:
@@ -878,9 +885,11 @@ sv:
     created_msg: Ett nytt alias skapades. Du kan nu initiera flytten från det gamla kontot.
     deleted_msg: Aliaset togs bort. Att flytta från det kontot till detta kommer inte längre vara möjligt.
     empty: Du har inga alias.
+    hint_html: Om du vill flytta från ett annat konto till detta kan du skapa ett alias här, detta krävs innan du kan fortsätta med att flytta följare från det gamla kontot till detta. Denna åtgärd är <strong>ofarlig och kan ångras</strong>. <strong>Kontomigreringen initieras från det gamla kontot.</strong>.
     remove: Avlänka alias
   appearance:
     advanced_web_interface: Avancerat webbgränssnitt
+    advanced_web_interface_hint: 'Om du vill utnyttja hela skärmens bredd så kan du i det avancerade webbgränssnittet ställa in många olika kolumner för att se så mycket information samtidigt som du vill: Hem, notiser, federerad tidslinje, valfritt antal listor och hashtaggar.'
     animations_and_accessibility: Animationer och tillgänglighet
     confirmation_dialogs: Bekräftelsedialoger
     discovery: Upptäck
@@ -944,6 +953,7 @@ sv:
       title: Ställ in
     sign_up:
       preamble: Med ett konto på denna Mastodon-server kan du följa alla andra personer på nätverket, oavsett vilken server deras konto tillhör.
+      title: Låt oss få igång dig på %{domain}.
     status:
       account_status: Kontostatus
       confirming: Väntar på att e-postbekräftelsen ska slutföras.
diff --git a/config/locales/th.yml b/config/locales/th.yml
index 2a56a6cdf..a941977e6 100644
--- a/config/locales/th.yml
+++ b/config/locales/th.yml
@@ -665,6 +665,7 @@ th:
         disabled: ให้กับไม่มีใคร
         users: ให้กับผู้ใช้ในเซิร์ฟเวอร์ที่เข้าสู่ระบบ
       registrations:
+        preamble: ควบคุมผู้ที่สามารถสร้างบัญชีในเซิร์ฟเวอร์ของคุณ
         title: การลงทะเบียน
       registrations_mode:
         modes:
@@ -888,6 +889,7 @@ th:
     resend_confirmation: ส่งคำแนะนำการยืนยันใหม่
     reset_password: ตั้งรหัสผ่านใหม่
     rules:
+      preamble: มีการตั้งและบังคับใช้กฎโดยผู้ควบคุมของ %{domain}
       title: กฎพื้นฐานบางประการ
     security: ความปลอดภัย
     set_new_password: ตั้งรหัสผ่านใหม่
diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml
index ba69d52f2..9c0c2a74d 100644
--- a/config/locales/zh-TW.yml
+++ b/config/locales/zh-TW.yml
@@ -1146,7 +1146,7 @@ zh-TW:
     success: 資料檔上傳成功,正在匯入,請稍候
     types:
       blocking: 您封鎖的使用者名單
-      bookmarks: 我的最愛
+      bookmarks: 書籤
       domain_blocking: 域名封鎖名單
       following: 您跟隨的使用者名單
       muting: 您靜音的使用者名單
@@ -1282,7 +1282,7 @@ zh-TW:
     code_hint: 請輸入您驗證應用程式所產生的代碼以確認
     description_html: 若您啟用使用驗證應用程式的<strong>兩階段驗證</strong>,您每次登入都需要輸入由您的手機所產生之 Token。
     enable: 啟用
-    instructions_html: "<strong>請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code</strong>。從現在開始,該應用程式將會產生您每次登入都必須輸入的權杖。"
+    instructions_html: "<strong>請用您手機上的 Google Authenticator 或類似的 TOTP 應用程式掃描此 QR code</strong>。從現在開始,該應用程式將會產生您每次登入都必須輸入的 token。"
     manual_instructions: 如果您無法掃描 QR code,則必須手動輸入此明文密碼:
     setup: 設定
     wrong_code: 您輸入的驗證碼無效!伺服器時間或是裝置時間無誤嗎?
@@ -1470,8 +1470,8 @@ zh-TW:
     keep_pinned_hint: 不會刪除您的釘選嘟文
     keep_polls: 保留投票
     keep_polls_hint: 不會刪除您的投票
-    keep_self_bookmark: 保留您已標記為書簽之嘟文
-    keep_self_bookmark_hint: 不會刪除您已標記為書簽之嘟文
+    keep_self_bookmark: 保留您已標記為書籤之嘟文
+    keep_self_bookmark_hint: 不會刪除您已標記為書籤之嘟文
     keep_self_fav: 保留您已標記為最愛之嘟文
     keep_self_fav_hint: 不會刪除您已標記為最愛之嘟文
     min_age:
diff --git a/config/routes.rb b/config/routes.rb
index 84f58c1eb..126eae084 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -27,6 +27,7 @@ Rails.application.routes.draw do
     /blocks
     /domain_blocks
     /mutes
+    /statuses/(*any)
   ).freeze
 
   root 'home#index'
@@ -706,7 +707,7 @@ Rails.application.routes.draw do
     get path, to: 'home#index'
   end
 
-  get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' }
+  get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' }, format: false
   get '/about',      to: 'about#show'
   get '/about/more', to: redirect('/about')
 
diff --git a/config/sidekiq.yml b/config/sidekiq.yml
index e3156aa34..71e7cb33d 100644
--- a/config/sidekiq.yml
+++ b/config/sidekiq.yml
@@ -53,3 +53,7 @@
     interval: 1 minute
     class: Scheduler::AccountsStatusesCleanupScheduler
     queue: scheduler
+  suspended_user_cleanup_scheduler:
+    interval: 1 minute
+    class: Scheduler::SuspendedUserCleanupScheduler
+    queue: scheduler
diff --git a/dist/nginx.conf b/dist/nginx.conf
index 5c16693d0..5bc960e25 100644
--- a/dist/nginx.conf
+++ b/dist/nginx.conf
@@ -58,7 +58,7 @@ server {
 
   # If Docker is used for deployment and Rails serves static files,
   # then needed must replace line `try_files $uri =404;` with `try_files $uri @proxy;`.
-  location = sw.js {
+  location = /sw.js {
     add_header Cache-Control "public, max-age=604800, must-revalidate";
     add_header Strict-Transport-Security "max-age=63072000; includeSubDomains";
     try_files $uri =404;
diff --git a/spec/lib/webfinger_resource_spec.rb b/spec/lib/webfinger_resource_spec.rb
index 236e9f3e2..5c7f475d6 100644
--- a/spec/lib/webfinger_resource_spec.rb
+++ b/spec/lib/webfinger_resource_spec.rb
@@ -50,7 +50,7 @@ describe WebfingerResource do
       end
 
       it 'finds the username in a mixed case http route' do
-        resource = 'HTTp://exAMPLEe.com/users/alice'
+        resource = 'HTTp://exAMPLe.com/users/alice'
 
         result = WebfingerResource.new(resource).username
         expect(result).to eq 'alice'
diff --git a/spec/models/account/field_spec.rb b/spec/models/account/field_spec.rb
new file mode 100644
index 000000000..fcb2a884a
--- /dev/null
+++ b/spec/models/account/field_spec.rb
@@ -0,0 +1,138 @@
+require 'rails_helper'
+
+RSpec.describe Account::Field, type: :model do
+  describe '#verified?' do
+    let(:account) { double('Account', local?: true) }
+
+    subject { described_class.new(account, 'name' => 'Foo', 'value' => 'Bar', 'verified_at' => verified_at) }
+
+    context 'when verified_at is set' do
+      let(:verified_at) { Time.now.utc.iso8601 }
+
+      it 'returns true' do
+        expect(subject.verified?).to be true
+      end
+    end
+
+    context 'when verified_at is not set' do
+      let(:verified_at) { nil }
+
+      it 'returns false' do
+        expect(subject.verified?).to be false
+      end
+    end
+  end
+
+  describe '#mark_verified!' do
+    let(:account) { double('Account', local?: true) }
+    let(:original_hash) { { 'name' => 'Foo', 'value' => 'Bar' } }
+
+    subject { described_class.new(account, original_hash) }
+
+    before do
+      subject.mark_verified!
+    end
+
+    it 'updates verified_at' do
+      expect(subject.verified_at).to_not be_nil
+    end
+
+    it 'updates original hash' do
+      expect(original_hash['verified_at']).to_not be_nil
+    end
+  end
+
+  describe '#verifiable?' do
+    let(:account) { double('Account', local?: local) }
+
+    subject { described_class.new(account, 'name' => 'Foo', 'value' => value) }
+
+    context 'for local accounts' do
+      let(:local) { true }
+
+      context 'for a URL with misleading authentication' do
+        let(:value) { 'https://spacex.com                                                                                            @h.43z.one' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for a URL' do
+        let(:value) { 'https://example.com' }
+
+        it 'returns true' do
+          expect(subject.verifiable?).to be true
+        end
+      end
+
+      context 'for an IDN URL' do
+        let(:value) { 'http://twitter.com∕dougallj∕status∕1590357240443437057.ê.cc/twitter.html' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for text that is not a URL' do
+        let(:value) { 'Hello world' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for text that contains a URL' do
+        let(:value) { 'Hello https://example.com world' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+    end
+
+    context 'for remote accounts' do
+      let(:local) { false }
+
+      context 'for a link' do
+        let(:value) { '<a href="https://www.patreon.com/mastodon" target="_blank" rel="nofollow noopener noreferrer me"><span class="invisible">https://www.</span><span class="">patreon.com/mastodon</span><span class="invisible"></span></a>' }
+
+        it 'returns true' do
+          expect(subject.verifiable?).to be true
+        end
+      end
+
+      context 'for a link with misleading authentication' do
+        let(:value) { '<a href="https://google.com                                                                                            @h.43z.one" target="_blank" rel="nofollow noopener noreferrer me"><span class="invisible">https://</span><span class="">google.com</span><span class="invisible">                                                                                            @h.43z.one</span></a>' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for HTML that has more than just a link' do
+        let(:value) { '<a href="https://google.com" target="_blank" rel="nofollow noopener noreferrer me"><span class="invisible">https://</span><span class="">google.com</span><span class="invisible"></span></a>                                                                                            @h.43z.one' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for a link with different visible text' do
+        let(:value) { '<a href="https://google.com/bar">https://example.com/foo</a>' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+
+      context 'for text that is a URL but is not linked' do
+        let(:value) { 'https://example.com/foo' }
+
+        it 'returns false' do
+          expect(subject.verifiable?).to be false
+        end
+      end
+    end
+  end
+end
diff --git a/spec/models/account_spec.rb b/spec/models/account_spec.rb
index 467d41836..edae05f9d 100644
--- a/spec/models/account_spec.rb
+++ b/spec/models/account_spec.rb
@@ -255,7 +255,7 @@ RSpec.describe Account, type: :model do
         Fabricate(:status, reblog: original_status, account: author)
       end
 
-      it 'is is true when this account has favourited it' do
+      it 'is true when this account has favourited it' do
         Fabricate(:favourite, status: original_reblog, account: subject)
 
         expect(subject.favourited?(original_status)).to eq true
@@ -267,7 +267,7 @@ RSpec.describe Account, type: :model do
     end
 
     context 'when the status is an original status' do
-      it 'is is true when this account has favourited it' do
+      it 'is true when this account has favourited it' do
         Fabricate(:favourite, status: original_status, account: subject)
 
         expect(subject.favourited?(original_status)).to eq true
@@ -755,7 +755,7 @@ RSpec.describe Account, type: :model do
         expect(account).to model_have_error_on_field(:username)
       end
 
-      it 'is invalid if the username is longer then 30 characters' do
+      it 'is invalid if the username is longer than 30 characters' do
         account = Fabricate.build(:account, username: Faker::Lorem.characters(number: 31))
         account.valid?
         expect(account).to model_have_error_on_field(:username)
@@ -801,7 +801,7 @@ RSpec.describe Account, type: :model do
         expect(account).to model_have_error_on_field(:username)
       end
 
-      it 'is valid even if the username is longer then 30 characters' do
+      it 'is valid even if the username is longer than 30 characters' do
         account = Fabricate.build(:account, domain: 'domain', username: Faker::Lorem.characters(number: 31))
         account.valid?
         expect(account).not_to model_have_error_on_field(:username)