about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-03-16 23:12:59 +0100
committerClaire <claire.github-309c@sitedethib.com>2023-03-16 23:12:59 +0100
commit193250556cb4e6b1b3e2f9bd1ac023b290176fd4 (patch)
tree3bd6148ff028b8fe089cae9d805a7e587eaeec11 /app
parentf5daa20f2a90098c9d689c5ec9d95ce9887b3a33 (diff)
parent681dcd3fa35e886a21853ca829ff1be7f220e83a (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `README.md`:
  Upstream changed their README, we have our own.
  Kept ours.
- `app/helpers/application_helper.rb`:
  Minor code style fix upstream, on a line that is different in glitch-soc
  due to the different theming system.
  Applied the code style fix to our own code.
- `app/views/settings/preferences/appearance/show.html.haml`:
  Code style fix on a line next to lines exclusive to glitch-soc.
  Applied upstream changes.
- `yarn.lock`:
  Upstream updated a dependency textually close to a glitch-soc-only
  dependency.
  Updated the dependency like upstream did.
Diffstat (limited to 'app')
-rw-r--r--app/controllers/api/v1/instances/translation_languages_controller.rb23
-rw-r--r--app/controllers/backups_controller.rb27
-rw-r--r--app/controllers/concerns/signature_verification.rb2
-rw-r--r--app/helpers/application_helper.rb4
-rw-r--r--app/javascript/mastodon/actions/server.js27
-rw-r--r--app/javascript/mastodon/components/status_content.jsx13
-rw-r--r--app/javascript/mastodon/features/ui/index.jsx3
-rw-r--r--app/javascript/mastodon/locales/af.json2
-rw-r--r--app/javascript/mastodon/locales/an.json2
-rw-r--r--app/javascript/mastodon/locales/ar.json2
-rw-r--r--app/javascript/mastodon/locales/ast.json22
-rw-r--r--app/javascript/mastodon/locales/be.json8
-rw-r--r--app/javascript/mastodon/locales/bg.json6
-rw-r--r--app/javascript/mastodon/locales/bn.json2
-rw-r--r--app/javascript/mastodon/locales/br.json2
-rw-r--r--app/javascript/mastodon/locales/bs.json2
-rw-r--r--app/javascript/mastodon/locales/ca.json4
-rw-r--r--app/javascript/mastodon/locales/ckb.json72
-rw-r--r--app/javascript/mastodon/locales/co.json2
-rw-r--r--app/javascript/mastodon/locales/cs.json2
-rw-r--r--app/javascript/mastodon/locales/csb.json2
-rw-r--r--app/javascript/mastodon/locales/cy.json2
-rw-r--r--app/javascript/mastodon/locales/da.json2
-rw-r--r--app/javascript/mastodon/locales/de.json32
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json8
-rw-r--r--app/javascript/mastodon/locales/el.json2
-rw-r--r--app/javascript/mastodon/locales/en-GB.json2
-rw-r--r--app/javascript/mastodon/locales/eo.json36
-rw-r--r--app/javascript/mastodon/locales/es-AR.json2
-rw-r--r--app/javascript/mastodon/locales/es-MX.json2
-rw-r--r--app/javascript/mastodon/locales/es.json2
-rw-r--r--app/javascript/mastodon/locales/et.json8
-rw-r--r--app/javascript/mastodon/locales/eu.json2
-rw-r--r--app/javascript/mastodon/locales/fa.json2
-rw-r--r--app/javascript/mastodon/locales/fi.json4
-rw-r--r--app/javascript/mastodon/locales/fo.json2
-rw-r--r--app/javascript/mastodon/locales/fr-QC.json2
-rw-r--r--app/javascript/mastodon/locales/fr.json6
-rw-r--r--app/javascript/mastodon/locales/fy.json2
-rw-r--r--app/javascript/mastodon/locales/ga.json2
-rw-r--r--app/javascript/mastodon/locales/gd.json2
-rw-r--r--app/javascript/mastodon/locales/gl.json2
-rw-r--r--app/javascript/mastodon/locales/he.json2
-rw-r--r--app/javascript/mastodon/locales/hi.json2
-rw-r--r--app/javascript/mastodon/locales/hr.json2
-rw-r--r--app/javascript/mastodon/locales/hu.json2
-rw-r--r--app/javascript/mastodon/locales/hy.json2
-rw-r--r--app/javascript/mastodon/locales/id.json2
-rw-r--r--app/javascript/mastodon/locales/ig.json2
-rw-r--r--app/javascript/mastodon/locales/io.json2
-rw-r--r--app/javascript/mastodon/locales/is.json2
-rw-r--r--app/javascript/mastodon/locales/it.json2
-rw-r--r--app/javascript/mastodon/locales/ja.json4
-rw-r--r--app/javascript/mastodon/locales/ka.json2
-rw-r--r--app/javascript/mastodon/locales/kab.json2
-rw-r--r--app/javascript/mastodon/locales/kk.json2
-rw-r--r--app/javascript/mastodon/locales/kn.json2
-rw-r--r--app/javascript/mastodon/locales/ko.json2
-rw-r--r--app/javascript/mastodon/locales/ku.json2
-rw-r--r--app/javascript/mastodon/locales/kw.json4
-rw-r--r--app/javascript/mastodon/locales/la.json2
-rw-r--r--app/javascript/mastodon/locales/lt.json2
-rw-r--r--app/javascript/mastodon/locales/lv.json16
-rw-r--r--app/javascript/mastodon/locales/mk.json2
-rw-r--r--app/javascript/mastodon/locales/ml.json2
-rw-r--r--app/javascript/mastodon/locales/mr.json2
-rw-r--r--app/javascript/mastodon/locales/ms.json2
-rw-r--r--app/javascript/mastodon/locales/my.json286
-rw-r--r--app/javascript/mastodon/locales/nl.json4
-rw-r--r--app/javascript/mastodon/locales/nn.json12
-rw-r--r--app/javascript/mastodon/locales/no.json2
-rw-r--r--app/javascript/mastodon/locales/oc.json2
-rw-r--r--app/javascript/mastodon/locales/pa.json2
-rw-r--r--app/javascript/mastodon/locales/pl.json6
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json2
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json2
-rw-r--r--app/javascript/mastodon/locales/ro.json2
-rw-r--r--app/javascript/mastodon/locales/ru.json2
-rw-r--r--app/javascript/mastodon/locales/sa.json760
-rw-r--r--app/javascript/mastodon/locales/sc.json2
-rw-r--r--app/javascript/mastodon/locales/sco.json2
-rw-r--r--app/javascript/mastodon/locales/si.json2
-rw-r--r--app/javascript/mastodon/locales/sk.json8
-rw-r--r--app/javascript/mastodon/locales/sl.json2
-rw-r--r--app/javascript/mastodon/locales/sq.json2
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json124
-rw-r--r--app/javascript/mastodon/locales/sr.json120
-rw-r--r--app/javascript/mastodon/locales/sv.json2
-rw-r--r--app/javascript/mastodon/locales/szl.json2
-rw-r--r--app/javascript/mastodon/locales/ta.json2
-rw-r--r--app/javascript/mastodon/locales/tai.json2
-rw-r--r--app/javascript/mastodon/locales/te.json2
-rw-r--r--app/javascript/mastodon/locales/th.json10
-rw-r--r--app/javascript/mastodon/locales/tr.json2
-rw-r--r--app/javascript/mastodon/locales/tt.json144
-rw-r--r--app/javascript/mastodon/locales/ug.json2
-rw-r--r--app/javascript/mastodon/locales/uk.json2
-rw-r--r--app/javascript/mastodon/locales/ur.json2
-rw-r--r--app/javascript/mastodon/locales/uz.json2
-rw-r--r--app/javascript/mastodon/locales/vi.json2
-rw-r--r--app/javascript/mastodon/locales/zgh.json2
-rw-r--r--app/javascript/mastodon/locales/zh-CN.json2
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json2
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json4
-rw-r--r--app/javascript/mastodon/reducers/server.js9
-rw-r--r--app/lib/admin/system_check.rb1
-rw-r--r--app/lib/admin/system_check/media_privacy_check.rb105
-rw-r--r--app/lib/admin/system_check/message.rb11
-rw-r--r--app/lib/request.rb4
-rw-r--r--app/lib/translation_service.rb4
-rw-r--r--app/lib/translation_service/deepl.rb30
-rw-r--r--app/lib/translation_service/libre_translate.rb18
-rw-r--r--app/models/backup.rb2
-rw-r--r--app/models/status.rb10
-rw-r--r--app/serializers/rest/status_serializer.rb6
-rw-r--r--app/services/translate_status_service.rb16
-rw-r--r--app/views/admin/account_actions/new.html.haml2
-rw-r--r--app/views/admin/accounts/show.html.haml2
-rw-r--r--app/views/admin/action_logs/index.html.haml2
-rw-r--r--app/views/admin/change_emails/show.html.haml2
-rw-r--r--app/views/admin/custom_emojis/index.html.haml4
-rw-r--r--app/views/admin/dashboard/index.html.haml4
-rw-r--r--app/views/application/_card.html.haml2
-rw-r--r--app/views/auth/registrations/_sessions.html.haml2
-rw-r--r--app/views/auth/sessions/new.html.haml2
-rw-r--r--app/views/layouts/mailer.html.haml2
-rw-r--r--app/views/notification_mailer/_status.html.haml2
-rw-r--r--app/views/notification_mailer/favourite.html.haml2
-rw-r--r--app/views/notification_mailer/follow_request.html.haml2
-rw-r--r--app/views/settings/exports/show.html.haml2
-rw-r--r--app/views/settings/login_activities/_login_activity.html.haml2
-rw-r--r--app/views/settings/preferences/appearance/show.html.haml4
-rw-r--r--app/views/statuses/_detailed_status.html.haml6
-rw-r--r--app/views/statuses/_og_image.html.haml2
-rw-r--r--app/views/statuses/_status.html.haml2
-rw-r--r--app/views/user_mailer/backup_ready.html.haml2
-rw-r--r--app/views/user_mailer/backup_ready.text.erb2
-rw-r--r--app/views/user_mailer/suspicious_sign_in.html.haml2
-rw-r--r--app/views/user_mailer/webauthn_credential_added.html.haml2
-rw-r--r--app/views/user_mailer/webauthn_credential_deleted.html.haml2
140 files changed, 1314 insertions, 911 deletions
diff --git a/app/controllers/api/v1/instances/translation_languages_controller.rb b/app/controllers/api/v1/instances/translation_languages_controller.rb
new file mode 100644
index 000000000..3910a499e
--- /dev/null
+++ b/app/controllers/api/v1/instances/translation_languages_controller.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class Api::V1::Instances::TranslationLanguagesController < Api::BaseController
+  skip_before_action :require_authenticated_user!, unless: :whitelist_mode?
+
+  before_action :set_languages
+
+  def show
+    expires_in 1.day, public: true
+    render json: @languages
+  end
+
+  private
+
+  def set_languages
+    if TranslationService.configured?
+      @languages = Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages }
+      @languages['und'] = @languages.delete(nil) if @languages.key?(nil)
+    else
+      @languages = {}
+    end
+  end
+end
diff --git a/app/controllers/backups_controller.rb b/app/controllers/backups_controller.rb
new file mode 100644
index 000000000..2f4b400b8
--- /dev/null
+++ b/app/controllers/backups_controller.rb
@@ -0,0 +1,27 @@
+# frozen_string_literal: true
+
+class BackupsController < ApplicationController
+  include RoutingHelper
+
+  skip_before_action :require_functional!
+
+  before_action :authenticate_user!
+  before_action :set_backup
+
+  def download
+    case Paperclip::Attachment.default_options[:storage]
+    when :s3
+      redirect_to @backup.dump.expiring_url(10)
+    when :fog
+      redirect_to @backup.dump.expiring_url(Time.now.utc + 10)
+    when :filesystem
+      redirect_to full_asset_url(@backup.dump.url)
+    end
+  end
+
+  private
+
+  def set_backup
+    @backup = current_user.backups.find(params[:id])
+  end
+end
diff --git a/app/controllers/concerns/signature_verification.rb b/app/controllers/concerns/signature_verification.rb
index b0a087d53..931725943 100644
--- a/app/controllers/concerns/signature_verification.rb
+++ b/app/controllers/concerns/signature_verification.rb
@@ -138,7 +138,7 @@ module SignatureVerification
   end
 
   def signed_headers
-    signature_params.fetch('headers', signature_algorithm == 'hs2019' ? '(created)' : 'date').downcase.split(' ')
+    signature_params.fetch('headers', signature_algorithm == 'hs2019' ? '(created)' : 'date').downcase.split
   end
 
   def verify_signature_strength!
diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb
index 0605457e8..2cac2de59 100644
--- a/app/helpers/application_helper.rb
+++ b/app/helpers/application_helper.rb
@@ -112,7 +112,7 @@ module ApplicationHelper
   def fa_icon(icon, attributes = {})
     class_names = attributes[:class]&.split(' ') || []
     class_names << 'fa'
-    class_names += icon.split(' ').map { |cl| "fa-#{cl}" }
+    class_names += icon.split.map { |cl| "fa-#{cl}" }
 
     content_tag(:i, nil, attributes.merge(class: class_names.join(' ')))
   end
@@ -164,7 +164,7 @@ module ApplicationHelper
   end
 
   def body_classes
-    output = (@body_classes || '').split(' ')
+    output = (@body_classes || '').split
     output << "flavour-#{current_flavour.parameterize}"
     output << "skin-#{current_skin.parameterize}"
     output << 'system-font' if current_account&.user&.setting_system_font_ui
diff --git a/app/javascript/mastodon/actions/server.js b/app/javascript/mastodon/actions/server.js
index 31d4aea10..091af0f0f 100644
--- a/app/javascript/mastodon/actions/server.js
+++ b/app/javascript/mastodon/actions/server.js
@@ -5,6 +5,10 @@ export const SERVER_FETCH_REQUEST = 'Server_FETCH_REQUEST';
 export const SERVER_FETCH_SUCCESS = 'Server_FETCH_SUCCESS';
 export const SERVER_FETCH_FAIL    = 'Server_FETCH_FAIL';
 
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST = 'SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST';
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS = 'SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS';
+export const SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL    = 'SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL';
+
 export const EXTENDED_DESCRIPTION_REQUEST = 'EXTENDED_DESCRIPTION_REQUEST';
 export const EXTENDED_DESCRIPTION_SUCCESS = 'EXTENDED_DESCRIPTION_SUCCESS';
 export const EXTENDED_DESCRIPTION_FAIL    = 'EXTENDED_DESCRIPTION_FAIL';
@@ -37,6 +41,29 @@ const fetchServerFail = error => ({
   error,
 });
 
+export const fetchServerTranslationLanguages = () => (dispatch, getState) => {
+  dispatch(fetchServerTranslationLanguagesRequest());
+
+  api(getState)
+    .get('/api/v1/instance/translation_languages').then(({ data }) => {
+      dispatch(fetchServerTranslationLanguagesSuccess(data));
+    }).catch(err => dispatch(fetchServerTranslationLanguagesFail(err)));
+};
+
+const fetchServerTranslationLanguagesRequest = () => ({
+  type: SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
+});
+
+const fetchServerTranslationLanguagesSuccess = translationLanguages => ({
+  type: SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
+  translationLanguages,
+});
+
+const fetchServerTranslationLanguagesFail = error => ({
+  type: SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
+  error,
+});
+
 export const fetchExtendedDescription = () => (dispatch, getState) => {
   dispatch(fetchExtendedDescriptionRequest());
 
diff --git a/app/javascript/mastodon/components/status_content.jsx b/app/javascript/mastodon/components/status_content.jsx
index f9c9fe079..67a487b00 100644
--- a/app/javascript/mastodon/components/status_content.jsx
+++ b/app/javascript/mastodon/components/status_content.jsx
@@ -3,6 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import PropTypes from 'prop-types';
 import { FormattedMessage, injectIntl } from 'react-intl';
 import { Link } from 'react-router-dom';
+import { connect } from 'react-redux';
 import classnames from 'classnames';
 import PollContainer from 'mastodon/containers/poll_container';
 import Icon from 'mastodon/components/icon';
@@ -47,7 +48,12 @@ class TranslateButton extends React.PureComponent {
 
 }
 
-export default @injectIntl
+const mapStateToProps = state => ({
+  languages: state.getIn(['server', 'translationLanguages', 'items']),
+});
+
+export default @connect(mapStateToProps)
+@injectIntl
 class StatusContent extends React.PureComponent {
 
   static contextTypes = {
@@ -63,6 +69,7 @@ class StatusContent extends React.PureComponent {
     onClick: PropTypes.func,
     collapsable: PropTypes.bool,
     onCollapsedToggle: PropTypes.func,
+    languages: ImmutablePropTypes.map,
     intl: PropTypes.object,
   };
 
@@ -220,7 +227,9 @@ class StatusContent extends React.PureComponent {
 
     const hidden = this.props.onExpandedToggle ? !this.props.expanded : this.state.hidden;
     const renderReadMore = this.props.onClick && status.get('collapsed');
-    const renderTranslate = this.props.onTranslate && status.get('translatable');
+    const contentLocale = intl.locale.replace(/[_-].*/, '');
+    const targetLanguages = this.props.languages?.get(status.get('language') || 'und');
+    const renderTranslate = this.props.onTranslate && this.context.identity.signedIn && ['public', 'unlisted'].includes(status.get('visibility')) && status.get('contentHtml').length > 0 && targetLanguages?.includes(contentLocale);
 
     const content = { __html: status.get('translation') ? status.getIn(['translation', 'content']) : status.get('contentHtml') };
     const spoilerContent = { __html: status.get('spoilerHtml') };
diff --git a/app/javascript/mastodon/features/ui/index.jsx b/app/javascript/mastodon/features/ui/index.jsx
index 2dd59f95d..083707220 100644
--- a/app/javascript/mastodon/features/ui/index.jsx
+++ b/app/javascript/mastodon/features/ui/index.jsx
@@ -13,7 +13,7 @@ import { debounce } from 'lodash';
 import { uploadCompose, resetCompose, changeComposeSpoilerness } from '../../actions/compose';
 import { expandHomeTimeline } from '../../actions/timelines';
 import { expandNotifications } from '../../actions/notifications';
-import { fetchServer } from '../../actions/server';
+import { fetchServer, fetchServerTranslationLanguages } from '../../actions/server';
 import { clearHeight } from '../../actions/height_cache';
 import { focusApp, unfocusApp, changeLayout } from 'mastodon/actions/app';
 import { synchronouslySubmitMarkers, submitMarkers, fetchMarkers } from 'mastodon/actions/markers';
@@ -399,6 +399,7 @@ class UI extends React.PureComponent {
       this.props.dispatch(fetchMarkers());
       this.props.dispatch(expandHomeTimeline());
       this.props.dispatch(expandNotifications());
+      this.props.dispatch(fetchServerTranslationLanguages());
 
       setTimeout(() => this.props.dispatch(fetchServer()), 3000);
     }
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 7d7724618..c04cae948 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Blokkeer die hele domein",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Teken Uit",
   "confirmations.logout.message": "Is jy seker jy wil uitteken?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json
index 389c512fe..9f66c8d13 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tiens cambios sin alzar en a descripción u vista previa d'o fichero audiovisual, descartar-los de totz modos?",
   "confirmations.domain_block.confirm": "Amagar dominio entero",
   "confirmations.domain_block.message": "Yes seguro que quiers blocar lo dominio {domain} entero? En cheneral ye prou, y preferible, fer uns quantos bloqueyos y silenciaus concretos. Los tuyos seguidros d'ixe dominio serán eliminaus.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Zarrar sesión",
   "confirmations.logout.message": "Yes seguro de querer zarrar la sesión?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index cf5dfb55b..d7d3baf4e 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "لديك تغييرات غير محفوظة لوصف الوسائط أو معاينتها، تجاهلها على أي حال؟",
   "confirmations.domain_block.confirm": "حظر اِسم النِّطاق بشكلٍ كامل",
   "confirmations.domain_block.message": "متأكد من أنك تود حظر اسم النطاق {domain} بالكامل ؟ في غالب الأحيان يُستَحسَن كتم أو حظر بعض الحسابات بدلا من حظر نطاق بالكامل.\nلن تتمكن مِن رؤية محتوى هذا النطاق لا على خيوطك العمومية و لا في إشعاراتك. سوف يتم كذلك إزالة كافة متابعيك المنتمين إلى هذا النطاق.",
+  "confirmations.edit.confirm": "تعديل",
+  "confirmations.edit.message": "التعديل في الحين سوف يُعيد كتابة الرسالة التي أنت بصدد تحريرها. متأكد من أنك تريد المواصلة؟",
   "confirmations.logout.confirm": "خروج",
   "confirmations.logout.message": "متأكد من أنك تريد الخروج؟",
   "confirmations.mute.confirm": "أكتم",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index 018d950d7..2881911a6 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -38,7 +38,7 @@
   "account.follows.empty": "Esti perfil entá nun sigue a naide.",
   "account.follows_you": "Síguete",
   "account.go_to_profile": "Go to profile",
-  "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.hide_reblogs": "Anubrir los artículos compartíos de @{name}",
   "account.joined_short": "Data de xunión",
   "account.languages": "Change subscribed languages",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
@@ -65,7 +65,7 @@
   "account.unfollow": "Dexar de siguir",
   "account.unmute": "Activar los avisos de @{name}",
   "account.unmute_notifications": "Activar los avisos de @{name}",
-  "account.unmute_short": "Unmute",
+  "account.unmute_short": "Activar los avisos",
   "account_note.placeholder": "Calca equí p'amestar una nota",
   "admin.dashboard.daily_retention": "User retention rate by day after sign-up",
   "admin.dashboard.monthly_retention": "User retention rate by month after sign-up",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Bloquiar tol dominiu",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "La edición va sobrescribir el mensaxe que tas escribiendo. ¿De xuru que quies siguir?",
   "confirmations.logout.confirm": "Zarrar la sesión",
   "confirmations.logout.message": "¿De xuru que quies zarrar la sesión?",
   "confirmations.mute.confirm": "Mute",
@@ -213,7 +215,7 @@
   "empty_column.account_unavailable": "Profile unavailable",
   "empty_column.blocks": "Entá nun bloquiesti a nengún perfil.",
   "empty_column.bookmarked_statuses": "Entá nun tienes nengún artículu en Marcadores. Cuando amiestes dalgún, apaez equí.",
-  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+  "empty_column.community": "La llinia de tiempu llocal ta balera. ¡Espubliza daqué públicamente pa comenzar l'alderique!",
   "empty_column.direct": "Entá nun tienes nengún mensaxe direutu. Cuando unvies o recibas dalgún, apaez equí.",
   "empty_column.domain_blocks": "Entá nun hai nengún dominiu bloquiáu.",
   "empty_column.explore_statuses": "Agora nun hai nada en tendencia. ¡Volvi equí dempués!",
@@ -233,7 +235,7 @@
   "error.unexpected_crash.explanation": "Pola mor d'un fallu nel códigu o un problema de compatibilidá del restolador, esta páxina nun se pudo amosar correutamente.",
   "error.unexpected_crash.explanation_addons": "Esta páxina nun se pudo amosar correutamente. Ye probable que dalgún complementu del restolador o dalguna ferramienta de traducción automática produxere esti error.",
   "error.unexpected_crash.next_steps": "Prueba a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.",
-  "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.",
+  "error.unexpected_crash.next_steps_addons": "Prueba a desactivalos ya a anovar la páxina. Si nun sirve, ye posible que tovía seyas a usar Mastodon pente otru restolador o una aplicación nativa.",
   "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
   "errors.unexpected_crash.report_issue": "Report issue",
   "explore.search_results": "Resultaos de la busca",
@@ -274,7 +276,7 @@
   "footer.source_code": "Ver el códigu fonte",
   "footer.status": "Estáu",
   "generic.saved": "Guardóse",
-  "getting_started.heading": "Getting started",
+  "getting_started.heading": "Comienzu",
   "hashtag.column_header.tag_mode.all": "y {additional}",
   "hashtag.column_header.tag_mode.any": "o {additional}",
   "hashtag.column_header.tag_mode.none": "ensin {additional}",
@@ -491,7 +493,7 @@
   "report.comment.title": "¿Hai daqué más qu'habríemos saber?",
   "report.forward": "Reunviar a {target}",
   "report.forward_hint": "La cuenta ye d'otru sirvidor. ¿Quies unviar a esi sirvidor una copia anónima del informe?",
-  "report.mute": "Mute",
+  "report.mute": "Desactivar los avisos",
   "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": "Siguiente",
   "report.placeholder": "Comentarios adicionales",
@@ -508,11 +510,11 @@
   "report.statuses.subtitle": "Select all that apply",
   "report.statuses.title": "¿Hai dalgún artículu qu'apoye esti informe?",
   "report.submit": "Unviar",
-  "report.target": "Report {target}",
+  "report.target": "Informe de: {target}",
   "report.thanks.take_action": "Equí tienes les opciones pa controlar qué ves en Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
+  "report.thanks.take_action_actionable": "Mentanto revisamos esti informe, pues tomar midíes contra @{name}:",
+  "report.thanks.title": "¿Nun quies ver esti conteníu?",
+  "report.thanks.title_actionable": "Gracies pol informe, el casu xá ta n'investigación.",
   "report.unfollow": "Dexar de siguir a @{name}",
   "report.unfollow_explanation": "Sigues a esta cuenta. Pa dexar de ver los sos artículos nel to feed d'aniciu, dexa de siguila.",
   "report_notification.attached_statuses": "{count, plural, one {Axuntóse {count} artículu} other {Axuntáronse {count} artículos}}",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index 08aa5ef3b..05c328f6a 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "У вас ёсць незахаваныя змены ў апісанні або прэв'ю, усе роўна скасаваць іх?",
   "confirmations.domain_block.confirm": "Заблакіраваць дамен цалкам",
   "confirmations.domain_block.message": "Вы абсалютна дакладна ўпэўнены, што хочаце заблакіраваць {domain} зусім? У большасці выпадкаў, дастаткова некалькіх мэтавых блакіровак ці ігнараванняў. Вы перастанеце бачыць змесціва з гэтага дамену ва ўсіх стужках і апавяшчэннях. Вашы падпіскі з гэтага дамену будуць выдаленыя.",
+  "confirmations.edit.confirm": "Рэдагаваць",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Выйсці",
   "confirmations.logout.message": "Вы ўпэўненыя, што хочаце выйсці?",
   "confirmations.mute.confirm": "Ігнараваць",
@@ -203,7 +205,7 @@
   "emoji_button.not_found": "Адпаведныя эмодзі не знойдзены",
   "emoji_button.objects": "Прадметы",
   "emoji_button.people": "Людзі",
-  "emoji_button.recent": "Карыстаныя найчасцей",
+  "emoji_button.recent": "Чата выкарыстаныя",
   "emoji_button.search": "Пошук...",
   "emoji_button.search_results": "Вынікі пошуку",
   "emoji_button.symbols": "Сімвалы",
@@ -354,10 +356,10 @@
   "lists.edit.submit": "Змяніць назву",
   "lists.new.create": "Дадаць спіс",
   "lists.new.title_placeholder": "Назва новага спіса",
-  "lists.replies_policy.followed": "Любы карыстальнік, за якім вы падпісаліся",
+  "lists.replies_policy.followed": "Любы карыстальнік, на якога вы падпісаліся",
   "lists.replies_policy.list": "Удзельнікі гэтага спісу",
   "lists.replies_policy.none": "Нікога",
-  "lists.replies_policy.title": "Паказаць адказы да:",
+  "lists.replies_policy.title": "Паказваць адказы:",
   "lists.search": "Шукайце сярод людзей, на якіх Вы падпісаны",
   "lists.subheading": "Вашыя спісы",
   "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} other {# новых элементаў}}",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index cd6baafac..248fd1ccb 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -18,7 +18,7 @@
   "account.block": "Блокиране на @{name}",
   "account.block_domain": "Блокиране на домейн {domain}",
   "account.blocked": "Блокирани",
-  "account.browse_more_on_origin_server": "Разглеждане на още в първообразния профил",
+  "account.browse_more_on_origin_server": "Разглеждане на още в оригиналния профил",
   "account.cancel_follow_request": "Оттегляне на заявката за последване",
   "account.direct": "Директно съобщение до @{name}",
   "account.disable_notifications": "Сприране на известия при публикуване от @{name}",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Не сте запазили промени на описанието или огледа на мултимедията, отхвърляте ли ги?",
   "confirmations.domain_block.confirm": "Блокиране на целия домейн",
   "confirmations.domain_block.message": "Наистина ли искате да блокирате целия {domain}? В повечето случаи няколко блокирания или заглушавания са достатъчно и за предпочитане. Няма да виждате съдържание от домейна из публични часови оси или известията си. Вашите последователи от този домейн ще се премахнат.",
+  "confirmations.edit.confirm": "Редактиране",
+  "confirmations.edit.message": "Редактирането сега ще замени съобщението, което в момента съставяте. Сигурни ли сте, че искате да продължите?",
   "confirmations.logout.confirm": "Излизане",
   "confirmations.logout.message": "Наистина ли искате да излезете?",
   "confirmations.mute.confirm": "Заглушаване",
@@ -353,7 +355,7 @@
   "lists.edit": "Промяна на списъка",
   "lists.edit.submit": "Промяна на заглавие",
   "lists.new.create": "Добавяне на списък",
-  "lists.new.title_placeholder": "Име на нов списък",
+  "lists.new.title_placeholder": "Ново заглавие на списъка",
   "lists.replies_policy.followed": "Някой последван потребител",
   "lists.replies_policy.list": "Членуващите в списъка",
   "lists.replies_policy.none": "Никого",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index 07609a478..7da6f78dc 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "এই ডোমেন থেকে সব লুকান",
   "confirmations.domain_block.message": "আপনি কি সত্যিই সত্যই নিশ্চিত যে আপনি পুরো {domain}'টি ব্লক করতে চান? বেশিরভাগ ক্ষেত্রে কয়েকটি লক্ষ্যযুক্ত ব্লক বা নীরবতা যথেষ্ট এবং পছন্দসই। আপনি কোনও পাবলিক টাইমলাইন বা আপনার বিজ্ঞপ্তিগুলিতে সেই ডোমেন থেকে সামগ্রী দেখতে পাবেন না। সেই ডোমেন থেকে আপনার অনুসরণকারীদের সরানো হবে।",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "প্রস্থান",
   "confirmations.logout.message": "আপনি লগ আউট করতে চান?",
   "confirmations.mute.confirm": "সরিয়ে ফেলুন",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index bb19a0452..5cc331af4 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Bez ez eus kemmoù n'int ket enrollet e deskrivadur ar media pe ar rakwel, nullañ anezho evelato?",
   "confirmations.domain_block.confirm": "Berzañ an domani a-bezh",
   "confirmations.domain_block.message": "Ha sur oc'h e fell deoc'h berzañ an {domain} a-bezh? Peurvuiañ eo trawalc'h berzañ pe mudañ un nebeud implijer·ezed·ien. Ne welot danvez ebet o tont eus an domani-mañ. Dilamet e vo ar c'houmanantoù war an domani-mañ.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Digevreañ",
   "confirmations.logout.message": "Ha sur oc'h e fell deoc'h digevreañ ?",
   "confirmations.mute.confirm": "Kuzhat",
diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json
index bd89ec9fd..d67f73c00 100644
--- a/app/javascript/mastodon/locales/bs.json
+++ b/app/javascript/mastodon/locales/bs.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 381deaa0c..ebfafcbd3 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tens canvis no desats en la descripció del contingut o en la previsualització, els vols descartar?",
   "confirmations.domain_block.confirm": "Bloca el domini sencer",
   "confirmations.domain_block.message": "Segur que vols blocar {domain} del tot? En la majoria dels casos, només amb blocar o silenciar uns pocs comptes n'hi ha prou i és millor. No veuràs el contingut d’aquest domini en cap de les línies de temps ni en les notificacions. S'eliminaran els teus seguidors d’aquest domini.",
+  "confirmations.edit.confirm": "Edita",
+  "confirmations.edit.message": "Editant ara sobreescriuràs el missatge que estàs editant. Segur que vols continuar?",
   "confirmations.logout.confirm": "Tanca la sessió",
   "confirmations.logout.message": "Segur que vols tancar la sessió?",
   "confirmations.mute.confirm": "Silencia",
@@ -437,7 +439,7 @@
   "notifications.group": "{count} notificacions",
   "notifications.mark_as_read": "Marca cada notificació com a llegida",
   "notifications.permission_denied": "Les notificacions d’escriptori no estan disponibles perquè prèviament s’ha denegat el permís al navegador",
-  "notifications.permission_denied_alert": "No es poden activar les notificacions de l'escriptori perquè el permís del navegador ha estat denegat abans",
+  "notifications.permission_denied_alert": "No es poden activar les notificacions de l'escriptori perquè abans s'ha denegat el permís del navegador",
   "notifications.permission_required": "Les notificacions d'escriptori no estan disponibles perquè el permís requerit no ha estat concedit.",
   "notifications_permission_banner.enable": "Activa les notificacions d’escriptori",
   "notifications_permission_banner.how_to_control": "Per a rebre notificacions quan Mastodon no és obert cal activar les notificacions d’escriptori. Pots controlar amb precisió quins tipus d’interaccions generen notificacions d’escriptori després d’activar el botó {icon} de dalt.",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index 8349e34bc..7623b5b99 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -54,7 +54,7 @@
   "account.posts_with_replies": "توتس و وەڵامەکان",
   "account.report": "گوزارشت @{name}",
   "account.requested": "چاوەڕێی ڕەزامەندین. کرتە بکە بۆ هەڵوەشاندنەوەی داواکاری شوێنکەوتن",
-  "account.requested_follow": "{name} has requested to follow you",
+  "account.requested_follow": "{name} داوای کردووە شوێنت بکەوێت",
   "account.share": "پرۆفایلی @{name} هاوبەش بکە",
   "account.show_reblogs": "پیشاندانی بەرزکردنەوەکان لە @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} Following} other {{counter} Following}}",
@@ -128,7 +128,7 @@
   "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.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.hashtag_warning": "ئەم بڵاوکراوەیە لە ژێر هیچ هاشتاگێکدا دا نانرێت وەک ئەوەیە، کە گشتی نەبێت. تەنها بڵاوکراوە گشتیەکان دەتوانرێ بە هاشتاگ گەڕانی بۆ بکرێت.",
   "compose_form.lock_disclaimer": "هەژمێرەکەی لە حاڵەتی {locked}. هەر کەسێک دەتوانێت شوێنت بکەوێت بۆ پیشاندانی بابەتەکانی تەنها دوایخۆی.",
   "compose_form.lock_disclaimer.lock": "قفڵ دراوە",
   "compose_form.placeholder": "چی لە مێشکتدایە?",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "گۆڕانکاریت لە وەسف یان پێشبینی میدیادا هەڵنەگیراوە، بەهەر حاڵ فڕێیان بدە؟",
   "confirmations.domain_block.confirm": "بلۆککردنی هەموو دۆمەینەکە",
   "confirmations.domain_block.message": "ئایا بەڕاستی، بەڕاستی تۆ دەتەوێت هەموو {domain} بلۆک بکەیت؟ لە زۆربەی حاڵەتەکاندا چەند بلۆکێکی ئامانجدار یان بێدەنگەکان پێویست و پەسەندن. تۆ ناوەڕۆک ێک نابینیت لە دۆمەینەکە لە هیچ هێڵی کاتی گشتی یان ئاگانامەکانت. شوێنکەوتوانی تۆ لەو دۆمەینەوە لادەبرێن.",
+  "confirmations.edit.confirm": "دەستکاری",
+  "confirmations.edit.message": "دەستکاری کردنی ئێستا: دەبێتە هۆی نووسینەوەی ئەو پەیامەی، کە ئێستا داتدەڕشت. ئایا دڵنیای، کە دەتەوێت بەردەوام بیت؟",
   "confirmations.logout.confirm": "چوونە دەرەوە",
   "confirmations.logout.message": "ئایا دڵنیایت لەوەی دەتەوێت بچیتە دەرەوە?",
   "confirmations.mute.confirm": "بێدەنگ",
@@ -221,7 +223,7 @@
   "empty_column.favourites": "کەس ئەم توتەی دڵخواز نەکردووە،کاتێک کەسێک وا بکات، لێرە دەرئەکەون.",
   "empty_column.follow_recommendations": "پێدەچێت هیچ پێشنیارێک بۆ تۆ دروست نەکرێت. دەتوانیت هەوڵبدەیت گەڕان بەکاربهێنیت بۆ گەڕان بەدوای ئەو کەسانەی کە ڕەنگە بیانناسیت یان بەدوای هاشتاگە ڕەوتەکاندا بگەڕێیت.",
   "empty_column.follow_requests": "تۆ هێشتا هیچ داواکارییەکی بەدواداچووت نیە. کاتێک یەکێکت بۆ هات، لێرە دەرئەکەویت.",
-  "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
+  "empty_column.followed_tags": "تۆ هێشتا شوێن هیچ هاشتاگێک نەکەوتوویت. کاتێک کردت، ئەوان لێرە دەردەکەون.",
   "empty_column.hashtag": "هێشتا هیچ شتێک لەم هاشتاگەدا نییە.",
   "empty_column.home": "تایم لاینی ماڵەوەت بەتاڵە! سەردانی {public} بکە یان گەڕان بەکاربێنە بۆ دەستپێکردن و بینینی بەکارهێنەرانی تر.",
   "empty_column.home.suggestions": "چەند پێشنیارێک ببینە",
@@ -237,42 +239,42 @@
   "errors.unexpected_crash.copy_stacktrace": "کۆپیکردنی ستێکتراسی بۆ کلیپ بۆرد",
   "errors.unexpected_crash.report_issue": "کێشەی گوزارشت",
   "explore.search_results": "ئەنجامەکانی گەڕان",
-  "explore.suggested_follows": "For you",
+  "explore.suggested_follows": "بۆ تۆ",
   "explore.title": "گەڕان",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
+  "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 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",
+  "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": "بابەتەکانی ئەو کەسانەی کە بەدوایدا دەگەڕێیت بە فەرمانی کرۆنۆلۆجی لە خواردنەکانی ماڵەکەت دەردەکەون. مەترسە لە هەڵەکردن، دەتوانیت بە ئاسانی خەڵک هەڵبکەیت هەر کاتێک!",
   "follow_request.authorize": "ده‌سه‌ڵاتپێدراو",
   "follow_request.reject": "ڕەتکردنەوە",
   "follow_requests.unlocked_explanation": "هەرچەندە هەژمارەکەت داخراو نییە، ستافی {domain} وا بیریان کردەوە کە لەوانەیە بتانەوێت پێداچوونەوە بە داواکاریەکانی ئەم هەژمارەدا بکەن بە دەستی.",
-  "followed_tags": "Followed hashtags",
-  "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.status": "Status",
+  "followed_tags": "هاشتاگە شوێنکەوتووەکان",
+  "footer.about": "دەربارە",
+  "footer.directory": "ڕابەری پەڕەی ناساندن",
+  "footer.get_app": "بەرنامەکە بەدەست بێنە",
+  "footer.invite": "بانگهێشتکردنی خەڵک",
+  "footer.keyboard_shortcuts": "کورتەڕێکانی تەختەکلیک",
+  "footer.privacy_policy": "سیاسەتی تایبەتمەندێتی",
+  "footer.source_code": "پیشاندانی کۆدی سەرچاوە",
+  "footer.status": "دۆخ",
   "generic.saved": "پاشکەوتکرا",
   "getting_started.heading": "دەست پێکردن",
   "hashtag.column_header.tag_mode.all": "و {additional}",
@@ -284,19 +286,19 @@
   "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.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": "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",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index 9b75ceeb1..2ede2311e 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Piattà tuttu u duminiu",
   "confirmations.domain_block.message": "Site veramente sicuru·a che vulete piattà tuttu à {domain}? Saria forse abbastanza di bluccà ò piattà alcuni conti da quallà. Ùn viderete più nunda da quallà indè e linee pubbliche o e nutificazione. I vostri abbunati da stu duminiu saranu tolti.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Scunnettassi",
   "confirmations.logout.message": "Site sicuru·a che vulete scunnettà vi?",
   "confirmations.mute.confirm": "Piattà",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index e07ad6ae1..97bc50c86 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Máte neuložené změny popisku médií nebo náhledu, chcete je přesto zahodit?",
   "confirmations.domain_block.confirm": "Blokovat celou doménu",
   "confirmations.domain_block.message": "Opravdu chcete blokovat celou doménu {domain}? Ve většině případů stačí blokovat nebo skrýt pár konkrétních uživatelů, což také doporučujeme. Z této domény neuvidíte obsah v žádné veřejné časové ose ani v oznámeních. Vaši sledující z této domény budou odstraněni.",
+  "confirmations.edit.confirm": "Upravit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Odhlásit se",
   "confirmations.logout.message": "Opravdu se chcete odhlásit?",
   "confirmations.mute.confirm": "Skrýt",
diff --git a/app/javascript/mastodon/locales/csb.json b/app/javascript/mastodon/locales/csb.json
index 884020da1..03c5af685 100644
--- a/app/javascript/mastodon/locales/csb.json
+++ b/app/javascript/mastodon/locales/csb.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index c664046f0..21c0cd2be 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Mae gennych newidiadau heb eu cadw i'r disgrifiad cyfryngau neu'r rhagolwg, eu taflu beth bynnag?",
   "confirmations.domain_block.confirm": "Blocio parth cyfan",
   "confirmations.domain_block.message": "Ydych chi wir, wir eisiau blocio'r holl {domain}? Fel arfer, mae blocio neu dewi pobl penodol yn broses mwy effeithiol. Fyddwch chi ddim yn gweld cynnwys o'r parth hwnnw mewn ffrydiau cyhoeddus neu yn eich hysbysiadau. Bydd eich dilynwyr o'r parth hwnnw yn cael eu ddileu.",
+  "confirmations.edit.confirm": "Golygu",
+  "confirmations.edit.message": "Bydd golygu nawr yn trosysgrifennu'r neges rydych yn ei ysgrifennu ar hyn o bryd. Ydych chi'n siŵr eich bod eisiau gwneud hyn?",
   "confirmations.logout.confirm": "Allgofnodi",
   "confirmations.logout.message": "Ydych chi'n siŵr eich bod am allgofnodi?",
   "confirmations.mute.confirm": "Tewi",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index 1db8b030d..6caa763f0 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Der er ugemte ændringer i mediebeskrivelsen eller forhåndsvisningen, kassér dem alligevel?",
   "confirmations.domain_block.confirm": "Blokér hele domænet",
   "confirmations.domain_block.message": "Er du fuldstændig sikker på, at du vil blokere hele {domain}-domænet? Oftest vil nogle få målrettede blokeringer eller skjulninger være tilstrækkelige og at foretrække. Du vil ikke se indhold fra dette domæne i nogle offentlige tidslinjer eller i dine notifikationer, og dine følgere herfra fjernes ligeledes.",
+  "confirmations.edit.confirm": "Redigér",
+  "confirmations.edit.message": "Redigeres nu, overskrive den besked, der forfattes pt. Fortsæt alligevel?",
   "confirmations.logout.confirm": "Log ud",
   "confirmations.logout.message": "Er du sikker på, at du vil logge ud?",
   "confirmations.mute.confirm": "Skjul (mute)",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index b3cdd4fda..dfc478ae5 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -53,7 +53,7 @@
   "account.posts": "Beiträge",
   "account.posts_with_replies": "Beiträge und Antworten",
   "account.report": "@{name} melden",
-  "account.requested": "Warte auf Genehmigung. Klicke hier, um die Anfrage zum Folgen abzubrechen",
+  "account.requested": "Die Genehmigung steht noch aus. Klicke hier, um die Folgeanfrage abzubrechen",
   "account.requested_follow": "{name} hat angefragt, dir folgen zu dürfen",
   "account.share": "Profil von @{name} teilen",
   "account.show_reblogs": "Geteilte Beiträge von @{name} wieder anzeigen",
@@ -106,7 +106,7 @@
   "column.directory": "Profile durchsuchen",
   "column.domain_blocks": "Gesperrte Domains",
   "column.favourites": "Favoriten",
-  "column.follow_requests": "Follower-Anfragen",
+  "column.follow_requests": "Folgeanfragen",
   "column.home": "Startseite",
   "column.lists": "Listen",
   "column.mutes": "Stummgeschaltete Profile",
@@ -162,8 +162,10 @@
   "confirmations.discard_edit_media.message": "Du hast Änderungen an der Medienbeschreibung oder -vorschau vorgenommen, die noch nicht gespeichert sind. Trotzdem verwerfen?",
   "confirmations.domain_block.confirm": "Domain sperren",
   "confirmations.domain_block.message": "Bist du dir wirklich sicher, dass du die ganze Domain {domain} sperren willst? In den meisten Fällen reichen ein paar gezielte Sperren oder Stummschaltungen aus. Du wirst den Inhalt von dieser Domain nicht in irgendwelchen öffentlichen Timelines oder den Benachrichtigungen finden. Auch deine Follower von dieser Domain werden entfernt.",
+  "confirmations.edit.confirm": "Bearbeiten",
+  "confirmations.edit.message": "Das Bearbeiten überschreibt die Nachricht, die du gerade verfasst. Bist du dir sicher, dass du fortfahren möchtest?",
   "confirmations.logout.confirm": "Abmelden",
-  "confirmations.logout.message": "Bist du sicher, dass du dich abmelden möchtest?",
+  "confirmations.logout.message": "Bist du dir sicher, dass du dich abmelden möchtest?",
   "confirmations.mute.confirm": "Stummschalten",
   "confirmations.mute.explanation": "Dies wird Beiträge von dieser Person und Beiträge, die diese Person erwähnen, ausblenden, aber es wird der Person trotzdem erlauben, deine Beiträge zu sehen und dir zu folgen.",
   "confirmations.mute.message": "Bist du dir sicher, dass du {name} stummschalten möchtest?",
@@ -220,7 +222,7 @@
   "empty_column.favourited_statuses": "Du hast noch keine Beiträge favorisiert. Sobald du einen favorisierst, wird er hier erscheinen.",
   "empty_column.favourites": "Noch niemand hat diesen Beitrag favorisiert. Sobald es jemand tut, wird das hier angezeigt.",
   "empty_column.follow_recommendations": "Es sieht so aus, als könnten keine Vorschläge für dich generiert werden. Du kannst versuchen, nach Leuten zu suchen, die du vielleicht kennst, oder du kannst angesagte Hashtags erkunden.",
-  "empty_column.follow_requests": "Es liegen derzeit keine Follower-Anfragen vor. Sobald du eine erhältst, wird sie hier angezeigt.",
+  "empty_column.follow_requests": "Es liegen derzeit keine Folgeanfragen vor. Sobald du eine erhältst, wird sie hier angezeigt.",
   "empty_column.followed_tags": "Du folgst noch keinen Hashtags. Wenn du dies tust, werden sie hier erscheinen.",
   "empty_column.hashtag": "Unter diesem Hashtag gibt es noch nichts.",
   "empty_column.home": "Die Timeline deiner Startseite ist leer! Folge mehr Leuten, um sie zu füllen. {suggestions}",
@@ -331,7 +333,7 @@
   "keyboard_shortcuts.pinned": "Liste angehefteter Beiträge öffnen",
   "keyboard_shortcuts.profile": "Profil öffnen",
   "keyboard_shortcuts.reply": "auf Beitrag antworten",
-  "keyboard_shortcuts.requests": "Liste der Follower-Anfragen öffnen",
+  "keyboard_shortcuts.requests": "Liste der Folgeanfragen öffnen",
   "keyboard_shortcuts.search": "Suchleiste fokussieren",
   "keyboard_shortcuts.spoilers": "Inhaltswarnung anzeigen/ausblenden",
   "keyboard_shortcuts.start": "„Erste Schritte“-Spalte öffnen",
@@ -381,9 +383,9 @@
   "navigation_bar.explore": "Entdecken",
   "navigation_bar.favourites": "Favoriten",
   "navigation_bar.filters": "Stummgeschaltete Wörter",
-  "navigation_bar.follow_requests": "Follower-Anfragen",
+  "navigation_bar.follow_requests": "Folgeanfragen",
   "navigation_bar.followed_tags": "Gefolgte Hashtags",
-  "navigation_bar.follows_and_followers": "Folge ich und Follower",
+  "navigation_bar.follows_and_followers": "Follower und Folge ich",
   "navigation_bar.lists": "Listen",
   "navigation_bar.logout": "Abmelden",
   "navigation_bar.mutes": "Stummgeschaltete Profile",
@@ -415,7 +417,7 @@
   "notifications.column_settings.filter_bar.category": "Filterleiste:",
   "notifications.column_settings.filter_bar.show_bar": "Filterleiste anzeigen",
   "notifications.column_settings.follow": "Neue Follower:",
-  "notifications.column_settings.follow_request": "Neue Follower-Anfragen:",
+  "notifications.column_settings.follow_request": "Neue Folgeanfragen:",
   "notifications.column_settings.mention": "Erwähnungen:",
   "notifications.column_settings.poll": "Umfrageergebnisse:",
   "notifications.column_settings.push": "Push-Benachrichtigungen",
@@ -502,7 +504,7 @@
   "report.reasons.spam": "Das ist Spam",
   "report.reasons.spam_description": "Bösartige Links, gefälschtes Engagement oder wiederholte Antworten",
   "report.reasons.violation": "Er verstößt gegen Serverregeln",
-  "report.reasons.violation_description": "Du bist dir bewusst, dass es gegen bestimmte Regeln verstößt",
+  "report.reasons.violation_description": "Du bist dir sicher, dass eine bestimmte Regel gebrochen wurde",
   "report.rules.subtitle": "Wähle alle zutreffenden Inhalte aus",
   "report.rules.title": "Welche Regeln werden verletzt?",
   "report.statuses.subtitle": "Wähle alle zutreffenden Inhalte aus",
@@ -523,10 +525,10 @@
   "search.placeholder": "Suche",
   "search.search_or_paste": "Suchen oder URL einfügen",
   "search_popout.search_format": "Erweiterte Suche",
-  "search_popout.tips.full_text": "Einfache Texteingabe gibt Beiträge, die du geschrieben, favorisiert und geteilt hast, zurück; außerdem auch Beiträge, in denen du erwähnt wurdest, aber auch passende Profilnamen, Anzeigenamen oder Hashtags.",
+  "search_popout.tips.full_text": "Die Freitextsuche findet Beiträge, die du geschrieben, favorisiert und geteilt hast – oder in denen du erwähnt worden bist. Außerdem gibt sie übereinstimmende Anzeigenamen, Profilnamen und Hashtags aus.",
   "search_popout.tips.hashtag": "Hashtag",
   "search_popout.tips.status": "Beitrag",
-  "search_popout.tips.text": "Einfache Texteingabe gibt Anzeigenamen, Profilnamen und Hashtags zurück",
+  "search_popout.tips.text": "Die Freitextsuche findet Anzeigenamen, Profilnamen und Hashtags",
   "search_popout.tips.user": "Profil",
   "search_results.accounts": "Profile",
   "search_results.all": "Alles",
@@ -620,14 +622,14 @@
   "trends.counter_by_accounts": "{count, plural, one {{counter} Profil} other {{counter} Profile}} {days, plural, one {seit gestern} other {in {days} Tagen}}",
   "trends.trending_now": "Aktuelle Trends",
   "ui.beforeunload": "Dein Entwurf geht verloren, wenn du Mastodon verlässt.",
-  "units.short.billion": "{count} Mrd",
-  "units.short.million": "{count} Mio",
-  "units.short.thousand": "{count} Tsd",
+  "units.short.billion": "{count} Mrd.",
+  "units.short.million": "{count} Mio.",
+  "units.short.thousand": "{count} Tsd.",
   "upload_area.title": "Zum Hochladen hereinziehen",
   "upload_button.label": "Bilder, Videos oder Audios hinzufügen",
   "upload_error.limit": "Dateiupload-Limit überschritten.",
   "upload_error.poll": "Medien-Anhänge sind zusammen mit Umfragen nicht erlaubt.",
-  "upload_form.audio_description": "Für Gehörlose und hörbehinderte Menschen beschreiben",
+  "upload_form.audio_description": "Beschreibe für Menschen mit Hörbehinderung",
   "upload_form.description": "Beschreibe für Menschen mit Sehbehinderung",
   "upload_form.description_missing": "Keine Beschreibung hinzugefügt",
   "upload_form.edit": "Bearbeiten",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index c09411f65..536566945 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -834,6 +834,14 @@
         "id": "confirmations.reply.message"
       },
       {
+        "defaultMessage": "Edit",
+        "id": "confirmations.edit.confirm"
+      },
+      {
+        "defaultMessage": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
+        "id": "confirmations.edit.message"
+      },
+      {
         "defaultMessage": "Hide entire domain",
         "id": "confirmations.domain_block.confirm"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index 3d71f3c5c..0813a9857 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Έχετε μη αποθηκευμένες αλλαγές στην περιγραφή πολυμέσων ή στην προεπισκόπηση, απορρίψτε τις ούτως ή άλλως;",
   "confirmations.domain_block.confirm": "Απόκρυψη ολόκληρου του τομέα",
   "confirmations.domain_block.message": "Σίγουρα θες να μπλοκάρεις ολόκληρο το {domain}; Συνήθως μερικά εστιασμένα μπλοκ ή αποσιωπήσεις επαρκούν και προτιμούνται. Δεν θα βλέπεις περιεχόμενο από αυτό τον κόμβο σε καμία δημόσια ροή, ούτε στις ειδοποιήσεις σου. Όσους ακόλουθους έχεις αυτό αυτό τον κόμβο θα αφαιρεθούν.",
+  "confirmations.edit.confirm": "Επεξεργασία",
+  "confirmations.edit.message": "Αν το επεξεργαστείτε τώρα θα αντικατασταθεί το μήνυμα που συνθέτετε. Είστε σίγουροι ότι θέλετε να συνεχίσετε;",
   "confirmations.logout.confirm": "Αποσύνδεση",
   "confirmations.logout.message": "Σίγουρα θέλεις να αποσυνδεθείς;",
   "confirmations.mute.confirm": "Αποσιώπηση",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 4ce198b90..974c6dd84 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Block 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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index fde163628..93b668d35 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -138,8 +138,8 @@
   "compose_form.poll.remove_option": "Forigi ĉi tiu elekteblon",
   "compose_form.poll.switch_to_multiple": "Ŝanĝi la balotenketon por permesi multajn elektojn",
   "compose_form.poll.switch_to_single": "Ŝanĝi la balotenketon por permesi unu solan elekton",
-  "compose_form.publish": "Hup",
-  "compose_form.publish_form": "Hup",
+  "compose_form.publish": "Afiŝi",
+  "compose_form.publish_form": "Afiŝi",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Konservi ŝanĝojn",
   "compose_form.sensitive.hide": "{count, plural, one {Marki la plurmedio kiel tikla} other {Marki la plurmedioj kiel tiklaj}}",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Vi havas nekonservitajn ŝanĝojn de la priskribo aŭ la antaŭmontro de la plurmedio, ĉu vi forĵetu ilin malgraŭe?",
   "confirmations.domain_block.confirm": "Bloki la tutan domajnon",
   "confirmations.domain_block.message": "Ĉu vi vere, vere certas, ke vi volas tute bloki {domain}? Plej ofte, trafa blokado kaj silentigado sufiĉas kaj preferindas. Vi ne vidos enhavon de tiu domajno en publika templinio aŭ en viaj sciigoj. Viaj sekvantoj de tiu domajno estos forigitaj.",
+  "confirmations.edit.confirm": "Redakti",
+  "confirmations.edit.message": "Redakti nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
   "confirmations.logout.confirm": "Adiaŭi",
   "confirmations.logout.message": "Ĉu vi certas ke vi volas adiaŭi?",
   "confirmations.mute.confirm": "Silentigi",
@@ -170,7 +172,7 @@
   "confirmations.redraft.confirm": "Forigi kaj reskribi",
   "confirmations.redraft.message": "Ĉu vi certas ke vi volas forigi tiun afiŝon kaj reskribi ĝin? Ĉiuj diskonigoj kaj stelumoj estos perditaj, kaj respondoj al la originala mesaĝo estos senparentaj.",
   "confirmations.reply.confirm": "Respondi",
-  "confirmations.reply.message": "Respondi nun anstataŭigos la mesaĝon, kiun vi nun skribas. Ĉu vi certas, ke vi volas daŭrigi?",
+  "confirmations.reply.message": "Respondi nun anstataŭigos la skribatan afiŝon. Ĉu vi certas, ke vi volas daŭrigi?",
   "confirmations.unfollow.confirm": "Ne plu sekvi",
   "confirmations.unfollow.message": "Ĉu vi certas, ke vi volas ĉesi sekvi {name}?",
   "conversation.delete": "Forigi konversacion",
@@ -188,10 +190,10 @@
   "dismissable_banner.community_timeline": "Jen la plej novaj publikaj afiŝoj de uzantoj, kies kontojn gastigas {domain}.",
   "dismissable_banner.dismiss": "Eksigi",
   "dismissable_banner.explore_links": "Tiuj novaĵoj estas aktuale priparolataj de uzantoj en tiu ĉi kaj aliaj serviloj, sur la malcentrigita reto.",
-  "dismissable_banner.explore_statuses": "Ĉi tiuj mesaĝoj de ĉi tiu kaj aliaj serviloj en la malcentra reto pli populariĝas en ĉi tiu servilo nun.",
+  "dismissable_banner.explore_statuses": "Ĉi tiuj afiŝoj de ĉi tiu kaj aliaj serviloj en la malcentra reto pli populariĝas en ĉi tiu servilo nun.",
   "dismissable_banner.explore_tags": "Ĉi tiuj kradvostoj populariĝas en ĉi tiu kaj aliaj serviloj en la malcentraliza reto nun.",
-  "dismissable_banner.public_timeline": "Ĉi tiuj estas plej lastaj publika mesaĝoj de personoj ĉe ĉi tiu kaj aliaj serviloj de la malcentra reto kiun ĉi tiu servilo scias.",
-  "embed.instructions": "Enkorpigu ĉi tiun mesaĝon en vian retejon per kopio de la suba kodo.",
+  "dismissable_banner.public_timeline": "Ĉi tiuj estas plej lastaj publikaj afiŝoj de personoj ĉe ĉi tiu kaj aliaj serviloj de la malcentra reto kiun tiu ĉi servilo scias.",
+  "embed.instructions": "Enkorpigu ĉi tiun afiŝon en vian retejon per kopio de la suba kodo.",
   "embed.preview": "Ĝi aperos tiel:",
   "emoji_button.activity": "Agadoj",
   "emoji_button.clear": "Forviŝi",
@@ -209,23 +211,23 @@
   "emoji_button.symbols": "Simboloj",
   "emoji_button.travel": "Vojaĝoj kaj lokoj",
   "empty_column.account_suspended": "Konto suspendita",
-  "empty_column.account_timeline": "Neniu mesaĝo ĉi tie!",
+  "empty_column.account_timeline": "Neniu afiŝo ĉi tie!",
   "empty_column.account_unavailable": "Profilo ne disponebla",
   "empty_column.blocks": "Vi ankoraŭ ne blokis uzanton.",
-  "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis mesaĝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.",
+  "empty_column.bookmarked_statuses": "Vi ankoraŭ ne aldonis afiŝon al viaj legosignoj. Kiam vi aldonos iun, tiu aperos ĉi tie.",
   "empty_column.community": "La loka templinio estas malplena. Skribu ion por plenigi ĝin!",
-  "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, ĝi aperos ĉi tie.",
+  "empty_column.direct": "Vi ankoraŭ ne havas rektan mesaĝon. Kiam vi sendos aŭ ricevos iun, tiu aperos ĉi tie.",
   "empty_column.domain_blocks": "Ankoraŭ neniu domajno estas blokita.",
   "empty_column.explore_statuses": "Nenio tendencas nun. Rekontrolu poste!",
   "empty_column.favourited_statuses": "Vi ankoraŭ ne stelumis afiŝon. Kiam vi stelumos iun, ĝi aperos ĉi tie.",
-  "empty_column.favourites": "Ankoraŭ neniu stelumis tiun mesaĝon. Kiam iu faros tion, tiu aperos ĉi tie.",
+  "empty_column.favourites": "Ankoraŭ neniu stelumis ĉi tiun afiŝon. Kiam iu faros tion, tiu aperos ĉi tie.",
   "empty_column.follow_recommendations": "Ŝajnas, ke neniuj sugestoj povis esti generitaj por vi. Vi povas provi uzi serĉon por serĉi homojn, kiujn vi eble konas, aŭ esplori tendencajn kradvortojn.",
   "empty_column.follow_requests": "Vi ne ankoraŭ havas iun peton de sekvado. Kiam vi ricevos unu, ĝi aperos ĉi tie.",
   "empty_column.followed_tags": "Vi ankoraŭ ne sekvas iujn kradvortojn. Kiam vi faras, ili aperos ĉi tie.",
   "empty_column.hashtag": "Ankoraŭ estas nenio per ĉi tiu kradvorto.",
   "empty_column.home": "Via hejma tempolinio estas malplena! Vizitu {public} aŭ uzu la serĉilon por renkonti aliajn uzantojn.",
   "empty_column.home.suggestions": "Vidu iujn sugestojn",
-  "empty_column.list": "Ankoraŭ estas nenio en ĉi tiu listo. Kiam membroj de ĉi tiu listo afiŝos novajn mesaĝojn, ili aperos ĉi tie.",
+  "empty_column.list": "Ankoraŭ estas nenio en ĉi tiu listo. Kiam membroj de ĉi tiu listo afiŝos novajn afiŝojn, ili aperos ĉi tie.",
   "empty_column.lists": "Vi ankoraŭ ne havas liston. Kiam vi kreos iun, ĝi aperos ĉi tie.",
   "empty_column.mutes": "Vi ne ankoraŭ silentigis iun uzanton.",
   "empty_column.notifications": "Vi ankoraŭ ne havas sciigojn. Interagu kun aliaj por komenci konversacion.",
@@ -242,7 +244,7 @@
   "explore.trending_links": "Novaĵoj",
   "explore.trending_statuses": "Afiŝoj",
   "explore.trending_tags": "Kradvortoj",
-  "filter_modal.added.context_mismatch_explanation": "Ĉi tiu filtrilkategorio ne kongruas la kuntekston de ĉi tiu mesaĝo. Vi devas redakti la filtrilon.",
+  "filter_modal.added.context_mismatch_explanation": "Ĉi tiu filtrilkategorio ne kongruas kun la kunteksto en kiu vi akcesis ĉi tiun afiŝon. Se vi volas ke la afiŝo estas ankaŭ filtrita en ĉi tiu kunteksto, vi devus redakti la filtrilon.",
   "filter_modal.added.context_mismatch_title": "Ne kongruas la kunteksto!",
   "filter_modal.added.expired_explanation": "Ĉi tiu filtrilkategorio eksvalidiĝis, vu bezonos ŝanĝi la eksvaliddaton por ĝi.",
   "filter_modal.added.expired_title": "Eksvalida filtrilo!",
@@ -402,8 +404,8 @@
   "notification.mention": "{name} menciis vin",
   "notification.own_poll": "Via enketo finiĝis",
   "notification.poll": "Partoprenita balotenketo finiĝis",
-  "notification.reblog": "{name} diskonigis vian mesaĝon",
-  "notification.status": "{name} ĵus afiŝita",
+  "notification.reblog": "{name} diskonigis vian afiŝon",
+  "notification.status": "{name} ĵus afiŝis",
   "notification.update": "{name} redaktis afiŝon",
   "notifications.clear": "Forviŝi sciigojn",
   "notifications.clear_confirmation": "Ĉu vi certas, ke vi volas porĉiame forviŝi ĉiujn viajn sciigojn?",
@@ -523,7 +525,7 @@
   "search.placeholder": "Serĉi",
   "search.search_or_paste": "Serĉu aŭ algluu URL-on",
   "search_popout.search_format": "Detala serĉo",
-  "search_popout.tips.full_text": "Simplaj tekstoj montras la mesaĝojn, kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.",
+  "search_popout.tips.full_text": "Simpla teksto retrovas la afiŝojn kiujn vi skribis, stelumis, diskonigis, aŭ en kiuj vi estis menciita, sed ankaŭ kongruajn uzantnomojn, montratajn nomojn, kaj kradvortojn.",
   "search_popout.tips.hashtag": "kradvorto",
   "search_popout.tips.status": "afiŝoj",
   "search_popout.tips.text": "Simpla teksto montras la kongruajn afiŝitajn nomojn, uzantnomojn kaj kradvortojn",
@@ -551,7 +553,7 @@
   "status.block": "Bloki @{name}",
   "status.bookmark": "Aldoni al la legosignoj",
   "status.cancel_reblog_private": "Ne plu diskonigi",
-  "status.cannot_reblog": "Ĉi tiu mesaĝo ne diskonigeblas",
+  "status.cannot_reblog": "Ĉi tiun afiŝon ne eblas diskonigi",
   "status.copy": "Kopii la ligilon al la mesaĝo",
   "status.delete": "Forigi",
   "status.detailed_status": "Detala konversacia vido",
@@ -579,7 +581,7 @@
   "status.reblog": "Diskonigi",
   "status.reblog_private": "Diskonigi kun la sama videbleco",
   "status.reblogged_by": "{name} diskonigis",
-  "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun mesaĝon. Kiam iu faras tion, ri aperos ĉi tie.",
+  "status.reblogs.empty": "Ankoraŭ neniu diskonigis tiun afiŝon. Kiam iu faras tion, ri aperos ĉi tie.",
   "status.redraft": "Forigi kaj reskribi",
   "status.remove_bookmark": "Forigi legosignon",
   "status.replied_to": "Respondis al {name}",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index f48187e5d..93238efbc 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tenés cambios sin guardar en la descripción de medios o en la vista previa, ¿querés descartarlos de todos modos?",
   "confirmations.domain_block.confirm": "Bloquear dominio entero",
   "confirmations.domain_block.message": "¿Estás completamente seguro que querés bloquear el {domain} entero? En la mayoría de los casos, unos cuantos bloqueos y silenciados puntuales son suficientes y preferibles. No vas a ver contenido de ese dominio en ninguna de tus líneas temporales o en tus notificaciones. Tus seguidores de ese dominio serán quitados.",
+  "confirmations.edit.confirm": "Editar",
+  "confirmations.edit.message": "Editar ahora sobreescribirá el mensaje que estás redactando actualmente. ¿Estás seguro que querés seguir?",
   "confirmations.logout.confirm": "Cerrar sesión",
   "confirmations.logout.message": "¿Estás seguro que querés cerrar la sesión?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 0c6b49593..56e891611 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo, ¿deseas descartarlos de cualquier manera?",
   "confirmations.domain_block.confirm": "Ocultar dominio entero",
   "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.",
+  "confirmations.edit.confirm": "Editar",
+  "confirmations.edit.message": "Editar sobrescribirá el mensaje que estás escribiendo. ¿Estás seguro de que deseas continuar?",
   "confirmations.logout.confirm": "Cerrar sesión",
   "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 47c6edd82..61e831526 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tienes cambios sin guardar en la descripción o vista previa del archivo audiovisual, ¿descartarlos de todos modos?",
   "confirmations.domain_block.confirm": "Ocultar dominio entero",
   "confirmations.domain_block.message": "¿Seguro de que quieres bloquear al dominio {domain} entero? En general unos cuantos bloqueos y silenciados concretos es suficiente y preferible.",
+  "confirmations.edit.confirm": "Editar",
+  "confirmations.edit.message": "Editar ahora reemplazará el mensaje que está escribiendo. ¿Está seguro que quiere proceder?",
   "confirmations.logout.confirm": "Cerrar sesión",
   "confirmations.logout.message": "¿Estás seguro de querer cerrar la sesión?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index 0f9f33080..9b8c83563 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Sul on salvestamata muudatusi meediakirjelduses või eelvaates, kas hülgad need?",
   "confirmations.domain_block.confirm": "Peida terve domeen",
   "confirmations.domain_block.message": "Oled ikka päris-päris kindel, et soovid blokeerida terve {domain}? Enamikel juhtudel piisab mõnest sihitud blokist või vaigistusest, mis on eelistatavam. Sa ei näe selle domeeni sisu ühelgi avalikul ajajoonel või enda teadetes. Su jälgijad sellest domeenist eemaldatakse.",
+  "confirmations.edit.confirm": "Muuda",
+  "confirmations.edit.message": "Muutes praegu kirjutatakse hetkel loodav sõnum üle. Kas oled kindel, et soovid jätkata?",
   "confirmations.logout.confirm": "Välju",
   "confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
   "confirmations.mute.confirm": "Vaigista",
@@ -398,8 +400,8 @@
   "notification.admin.sign_up": "{name} registreerus",
   "notification.favourite": "{name} märkis su postituse lemmikuks",
   "notification.follow": "{name} alustas su jälgimist",
-  "notification.follow_request": "{name} soovib teid jälgida",
-  "notification.mention": "{name} mainis teid",
+  "notification.follow_request": "{name} soovib sind jälgida",
+  "notification.mention": "{name} mainis sind",
   "notification.own_poll": "Su küsitlus on lõppenud",
   "notification.poll": "Küsitlus, milles osalesid, on lõppenud",
   "notification.reblog": "{name} jagas edasi postitust",
@@ -603,7 +605,7 @@
   "subscribed_languages.save": "Salvesta muudatused",
   "subscribed_languages.target": "Muuda tellitud keeli {target} jaoks",
   "suggestions.dismiss": "Eira soovitust",
-  "suggestions.header": "Teid võib huvitada…",
+  "suggestions.header": "Sind võib huvitada…",
   "tabs_bar.federated_timeline": "Föderatiivne",
   "tabs_bar.home": "Kodu",
   "tabs_bar.local_timeline": "Kohalik",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 39eaeda02..e5f2116bc 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Multimediaren deskribapen edo aurrebistan gorde gabeko aldaketak daude, baztertu nahi dituzu?",
   "confirmations.domain_block.confirm": "Ezkutatu domeinu osoa",
   "confirmations.domain_block.message": "Ziur, erabat ziur, {domain} domeinu osoa blokeatu nahi duzula? Gehienetan gutxi batzuk blokeatu edo mututzearekin nahikoa da. Ez duzu domeinu horretako edukirik ikusiko denbora lerroetan edo jakinarazpenetan. Domeinu horretako zure jarraitzaileak kenduko dira ere.",
+  "confirmations.edit.confirm": "Editatu",
+  "confirmations.edit.message": "Orain editatzen baduzu, idazten zauden mezua gainidatziko da. Ziur al zaude jarraitu nahi duzula?",
   "confirmations.logout.confirm": "Amaitu saioa",
   "confirmations.logout.message": "Ziur saioa amaitu nahi duzula?",
   "confirmations.mute.confirm": "Mututu",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 10c1b12fb..acb7525b2 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "تغییرات ذخیره نشده‌ای در توضیحات یا پیش‌نمایش رسانه دارید. همگی نادیده گرفته شوند؟",
   "confirmations.domain_block.confirm": "مسدود کردن تمام دامنه",
   "confirmations.domain_block.message": "آیا جدی جدی می‌خواهید تمام دامنهٔ {domain} را مسدود کنید؟ در بیشتر موارد مسدود کردن یا خموشاندن چند حساب خاص کافی است و توصیه می‌شود. پس از این کار شما هیچ محتوایی را از این دامنه در خط زمانی عمومی یا آگاهی‌هایتان نخواهید دید. پی‌گیرانتان از این دامنه هم برداشته خواهند شد.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "خروج از حساب",
   "confirmations.logout.message": "مطمئنید می‌خواهید خارج شوید؟",
   "confirmations.mute.confirm": "خموش",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index f41082ed7..8cff515bd 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Sinulla on tallentamattomia muutoksia median kuvaukseen tai esikatseluun, hylätäänkö ne silti?",
   "confirmations.domain_block.confirm": "Estä koko palvelu",
   "confirmations.domain_block.message": "Haluatko aivan varmasti estää palvelun {domain} täysin? Useimmiten muutama kohdistettu esto tai mykistys on riittävä ja suositeltava toimenpide. Et näe kyseisen sisältöä kyseiseltä verkkoalueelta missään julkisissa aikajanoissa tai ilmoituksissa. Tälle verkkoalueelle kuuluvat seuraajasi poistetaan.",
+  "confirmations.edit.confirm": "Muokkaa",
+  "confirmations.edit.message": "Tässä tilanteessa muokkaus korvaa tällä hetkellä työstämäsi viestin. Haluatko varmasti jatkaa?",
   "confirmations.logout.confirm": "Kirjaudu ulos",
   "confirmations.logout.message": "Haluatko varmasti kirjautua ulos?",
   "confirmations.mute.confirm": "Mykistä",
@@ -563,7 +565,7 @@
   "status.favourite": "Lisää suosikkeihin",
   "status.filter": "Suodata tämä viesti",
   "status.filtered": "Suodatettu",
-  "status.hide": "Piilota viesti",
+  "status.hide": "Piilota julkaisu",
   "status.history.created": "{name} luotu {date}",
   "status.history.edited": "{name} muokkasi {date}",
   "status.load_more": "Lataa lisää",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 3b67c3d75..db2247c4b 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tú hevur broytingar í miðlalýsingini ella undansýningini, sum ikki eru goymdar. Vilt tú kortini vraka?",
   "confirmations.domain_block.confirm": "Banna heilum økisnavni",
   "confirmations.domain_block.message": "Ert tú púra, púra vís/ur í, at tú vilt banna øllum {domain}? Í flestu førum er nóg mikið og betri, bert at banna ella doyva onkrum ávísum. Tú fert eingi evni at síggja frá økisnavninum á nakrari almennari tíðarrás ella í tínum fráboðanum. Tínir fylgjarar undir økisnavninum verða eisini strikaðir.",
+  "confirmations.edit.confirm": "Rætta",
+  "confirmations.edit.message": "Rættingar, sum verða gjørdar nú, skriva yvir boðini, sum tú ert í holt við. Ert tú vís/ur í, at tú vilt halda fram?",
   "confirmations.logout.confirm": "Rita út",
   "confirmations.logout.message": "Ert tú vís/ur í, at tú vilt útrita teg?",
   "confirmations.mute.confirm": "Doyv",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index 4b7258685..fe7055d57 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, voulez-vous quand même les supprimer?",
   "confirmations.domain_block.confirm": "Bloquer ce domaine entier",
   "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Se déconnecter",
   "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter?",
   "confirmations.mute.confirm": "Masquer",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 1dcf41c85..2c38ad496 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Vous avez des modifications non enregistrées de la description ou de l'aperçu du média, les supprimer quand même ?",
   "confirmations.domain_block.confirm": "Bloquer tout le domaine",
   "confirmations.domain_block.message": "Voulez-vous vraiment, vraiment bloquer {domain} en entier ? Dans la plupart des cas, quelques blocages ou masquages ciblés sont suffisants et préférables. Vous ne verrez plus de contenu provenant de ce domaine, ni dans vos fils publics, ni dans vos notifications. Vos abonné·e·s utilisant ce domaine seront retiré·e·s.",
+  "confirmations.edit.confirm": "Éditer",
+  "confirmations.edit.message": "Modifier maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?",
   "confirmations.logout.confirm": "Se déconnecter",
   "confirmations.logout.message": "Voulez-vous vraiment vous déconnecter ?",
   "confirmations.mute.confirm": "Masquer",
@@ -170,7 +172,7 @@
   "confirmations.redraft.confirm": "Supprimer et ré-écrire",
   "confirmations.redraft.message": "Êtes-vous sûr·e de vouloir effacer ce statut pour le réécrire ? Ses partages ainsi que ses mises en favori seront perdus et ses réponses seront orphelines.",
   "confirmations.reply.confirm": "Répondre",
-  "confirmations.reply.message": "Répondre maintenant écrasera le message que vous rédigez actuellement. Voulez-vous vraiment continuer ?",
+  "confirmations.reply.message": "Répondre maintenant écrasera votre message en cours de rédaction. Voulez-vous vraiment continuer ?",
   "confirmations.unfollow.confirm": "Ne plus suivre",
   "confirmations.unfollow.message": "Voulez-vous vraiment vous désabonner de {name} ?",
   "conversation.delete": "Supprimer la conversation",
@@ -298,7 +300,7 @@
   "interaction_modal.on_another_server": "Sur un autre serveur",
   "interaction_modal.on_this_server": "Sur ce serveur",
   "interaction_modal.other_server_instructions": "Copiez et collez cette URL dans le champ de recherche de votre application Mastodon préférée ou de l'interface web de votre serveur Mastodon.",
-  "interaction_modal.preamble": "Puisque Mastodon est décentralisé, vous pouvez utiliser votre compte existant hébergé par un autre serveur Mastodon ou une plateforme compatible si vous n'avez pas de compte sur celui-ci.",
+  "interaction_modal.preamble": "Mastodon étant décentralisé, vous pouvez utiliser votre compte existant sur un autre serveur Mastodon, ou sur une autre plateforme compatible, si vous n'avez pas de compte ici.",
   "interaction_modal.title.favourite": "Ajouter le message de {name} aux favoris",
   "interaction_modal.title.follow": "Suivre {name}",
   "interaction_modal.title.reblog": "Partager le message de {name}",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index 61273f58f..4ac165471 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Jo hawwe net-bewarre wizigingen yn de mediabeskriuwing of foarfertoaning, wolle jo dizze dochs fuortsmite?",
   "confirmations.domain_block.confirm": "Hide entire domain",
   "confirmations.domain_block.message": "Binne jo echt wis dat jo alles fan {domain} negearje wolle? Yn de measte gefallen is it blokkearjen of negearjen fan in pear spesifike persoanen genôch en better. Jo sille gjin berjochten fan dizze server op iepenbiere tiidlinen sjen of yn jo meldingen. Jo folgers fan dizze server wurde fuortsmiten.",
+  "confirmations.edit.confirm": "Bewurkje",
+  "confirmations.edit.message": "Troch no te bewurkjen sil it berjocht dat jo no oan it skriuwen binne oerskreaun wurde. Wolle jo trochgean?",
   "confirmations.logout.confirm": "Ofmelde",
   "confirmations.logout.message": "Bisto wis datsto ôfmelde wolst?",
   "confirmations.mute.confirm": "Negearje",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 9212d16bd..12769ba13 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -162,6 +162,8 @@
   "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": "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.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Logáil amach",
   "confirmations.logout.message": "An bhfuil tú cinnte gur mhaith leat logáil amach?",
   "confirmations.mute.confirm": "Balbhaigh",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index ca3dd0f2f..f5eb5c140 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -162,6 +162,8 @@
   "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 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.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "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",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 1033e6d7d..dc5bd31d6 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tes cambios sen gardar para a vista previa ou descrición do multimedia, descartamos os cambios?",
   "confirmations.domain_block.confirm": "Agochar dominio enteiro",
   "confirmations.domain_block.message": "Tes a certeza de querer bloquear todo de {domain}? Na meirande parte dos casos uns bloqueos ou silenciados específicos son suficientes. Non verás máis o contido deste dominio en ningunha cronoloxía pública ou nas túas notificacións. As túas seguidoras deste dominio serán eliminadas.",
+  "confirmations.edit.confirm": "Editar",
+  "confirmations.edit.message": "Ao editar sobrescribirás a mensaxe que estás a compor. Tes a certeza de que queres continuar?",
   "confirmations.logout.confirm": "Pechar sesión",
   "confirmations.logout.message": "Desexas pechar a sesión?",
   "confirmations.mute.confirm": "Acalar",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 7e3cee334..f5e6230b8 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "יש לך שינויים לא שמורים לתיאור המדיה. להשליך אותם בכל זאת?",
   "confirmations.domain_block.confirm": "חסמו לגמרי את שם המתחם (דומיין)",
   "confirmations.domain_block.message": "בטוחה שברצונך באמת לחסום את קהילת {domain}? ברב המקרים השתקה וחסימה של מספר משתמשים עשוייה להספיק. לא תראי תוכל מכלל שם המתחם בפידים הציבוריים או בהתראות שלך. העוקבים שלך מהקהילה הזאת יוסרו",
+  "confirmations.edit.confirm": "עריכה",
+  "confirmations.edit.message": "עריכת תגובה קודמת תדרוס את ההודעה שכבר התחלת לכתוב. האם את.ה בטוח.ה שברצונך להמשיך?",
   "confirmations.logout.confirm": "התנתקות",
   "confirmations.logout.message": "האם אתם בטוחים שאתם רוצים להתנתק?",
   "confirmations.mute.confirm": "להשתיק",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 24745cca5..8b0569860 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "लिस्ट में जोड़ें",
   "confirmations.domain_block.confirm": "संपूर्ण डोमेन छिपाएं",
   "confirmations.domain_block.message": "क्या आप वास्तव में, वास्तव में आप पूरे {domain} को ब्लॉक करना चाहते हैं? ज्यादातर मामलों में कुछ लक्षित ब्लॉक या म्यूट पर्याप्त और बेहतर हैं। आप किसी भी सार्वजनिक समय-सीमा या अपनी सूचनाओं में उस डोमेन की सामग्री नहीं देखेंगे। उस डोमेन से आपके फॉलोवर्स को हटा दिया जाएगा।",
+  "confirmations.edit.confirm": "संशोधित करें",
+  "confirmations.edit.message": "अभी संपादन किया तो वो संदेश मिट जायेगा जिसे आप लिख रहे थे। क्या आप जारी रखना चाहते हैं?",
   "confirmations.logout.confirm": "लॉग आउट करें",
   "confirmations.logout.message": "आप सुनिश्चित हैं कि लॉगआउट करना चाहते हैं?",
   "confirmations.mute.confirm": "शांत",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 9be500a7e..2ee74d460 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Postoje nespremljene promjene u opisu medija ili u pretpregledu, svejedno ih odbaciti?",
   "confirmations.domain_block.confirm": "Blokiraj cijelu domenu",
   "confirmations.domain_block.message": "Jeste li zaista, zaista sigurni da želite blokirati cijelu domenu {domain}? U većini slučajeva dovoljno je i preferirano nekoliko ciljanih blokiranja ili utišavanja. Nećete vidjeti sadržaj s te domene ni u kojim javnim vremenskim crtama ili Vašim obavijestima. Vaši pratitelji s te domene bit će uklonjeni.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Odjavi se",
   "confirmations.logout.message": "Jeste li sigurni da se želite odjaviti?",
   "confirmations.mute.confirm": "Utišaj",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index b5ca1ef3b..4447aa2d1 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Elmentetlen változtatásaid vannak a média leírásában vagy előnézetében. Eldobjuk őket?",
   "confirmations.domain_block.confirm": "Teljes domain elrejtése",
   "confirmations.domain_block.message": "Biztos, hogy le szeretnéd tiltani a teljes {domain} domaint? A legtöbb esetben néhány célzott tiltás vagy némítás elegendő, és kívánatosabb megoldás. Semmilyen tartalmat nem fogsz látni ebből a domainből se az idővonalakon, se az értesítésekben. Az ebben a domainben lévő követőidet is eltávolítjuk.",
+  "confirmations.edit.confirm": "Szerkesztés",
+  "confirmations.edit.message": "Ha most szerkeszted, ez felülírja a most szerkesztés alatt álló üzenetet. Mégis ezt szeretnéd?",
   "confirmations.logout.confirm": "Kijelentkezés",
   "confirmations.logout.message": "Biztos, hogy kijelentkezel?",
   "confirmations.mute.confirm": "Némítás",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index cb1dd1bd2..87ecee646 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Թաքցնել ամբողջ տիրույթը",
   "confirmations.domain_block.message": "Հաստատ֊հաստա՞տ վստահ ես, որ ուզում ես արգելափակել ամբողջ {domain} տիրոյթը։ Սովորաբար մի երկու թիրախաւորուած արգելափակում կամ լռեցում բաւական է ու նախընտրելի։",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Ելք",
   "confirmations.logout.message": "Համոզո՞ւած ես, որ ուզում ես դուրս գալ",
   "confirmations.mute.confirm": "Լռեցնել",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index a6db3207d..1f93219c8 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan deskripsi atau pratinjau media, buang saja?",
   "confirmations.domain_block.confirm": "Sembunyikan keseluruhan domain",
   "confirmations.domain_block.message": "Apakah Anda benar-benar yakin untuk memblokir keseluruhan {domain}? Dalam kasus tertentu beberapa pemblokiran atau penyembunyian lebih baik.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Keluar",
   "confirmations.logout.message": "Apakah Anda yakin ingin keluar?",
   "confirmations.mute.confirm": "Bisukan",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index 69e4ae08a..3d2cd7772 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index fedabed58..b6f61d23b 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Vu havas nesparita chanji di mediodeskript o prevido, vu volas jus efacar?",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Ekirez",
   "confirmations.logout.message": "Ka tu certe volas ekirar?",
   "confirmations.mute.confirm": "Silencigez",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index 0d5b08b68..3611b26ed 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Þú ert með óvistaðar breytingar á lýsingu myndefnis eða forskoðunar, henda þeim samt?",
   "confirmations.domain_block.confirm": "Útiloka allt lénið",
   "confirmations.domain_block.message": "Ertu alveg algjörlega viss um að þú viljir loka á allt {domain}? Í flestum tilfellum er vænlegra að nota færri en markvissari útilokanir eða að þagga niður tiltekna aðila. Þú munt ekki sjá efni frá þessu léni í neinum opinberum tímalínum eða í tilkynningunum þínum. Fylgjendur þínir frá þessu léni verða fjarlægðir.",
+  "confirmations.edit.confirm": "Breyta",
+  "confirmations.edit.message": "Ef þú breytir núna verður skrifað yfir skilaboðin sem þú ert að semja núna. Ertu viss um að þú viljir halda áfram?",
   "confirmations.logout.confirm": "Skrá út",
   "confirmations.logout.message": "Ertu viss um að þú viljir skrá þig út?",
   "confirmations.mute.confirm": "Þagga",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index 7914b54ab..ce8f45fab 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Hai delle modifiche non salvate alla descrizione o anteprima del media, scartarle comunque?",
   "confirmations.domain_block.confirm": "Blocca l'intero dominio",
   "confirmations.domain_block.message": "Sei davvero sicuro di voler bloccare l'intero {domain}? In gran parte dei casi, è sufficiente e preferibile bloccare o silenziare alcuni profili. Non visualizzerai i contenuti da quel dominio in alcuna cronologia pubblica o tra le tue notifiche. I tuoi seguaci da quel dominio saranno rimossi.",
+  "confirmations.edit.confirm": "Modifica",
+  "confirmations.edit.message": "Modificare ora sovrascriverà il messaggio che stai correntemente componendo. Sei sicuro di voler procedere?",
   "confirmations.logout.confirm": "Disconnettiti",
   "confirmations.logout.message": "Sei sicuro di volerti disconnettere?",
   "confirmations.mute.confirm": "Silenzia",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index e5c752f32..172da89ce 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -166,6 +166,8 @@
   "confirmations.discard_edit_media.message": "メディアの説明またはプレビューに保存されていない変更があります。それでも破棄しますか?",
   "confirmations.domain_block.confirm": "ドメイン全体をブロック",
   "confirmations.domain_block.message": "本当に{domain}全体を非表示にしますか? 多くの場合は個別にブロックやミュートするだけで充分であり、また好ましいです。公開タイムラインにそのドメインのコンテンツが表示されなくなり、通知も届かなくなります。そのドメインのフォロワーはアンフォローされます。",
+  "confirmations.edit.confirm": "編集",
+  "confirmations.edit.message": "今編集すると現在作成中のメッセージが上書きされます。本当に実行しますか?",
   "confirmations.logout.confirm": "ログアウト",
   "confirmations.logout.message": "本当にログアウトしますか?",
   "confirmations.mute.confirm": "ミュート",
@@ -248,7 +250,7 @@
   "explore.trending_tags": "ハッシュタグ",
   "filter_modal.added.context_mismatch_explanation": "このフィルターカテゴリーはあなたがアクセスした投稿のコンテキストには適用されません。この投稿のコンテキストでもフィルターを適用するにはフィルターを編集する必要があります。",
   "filter_modal.added.context_mismatch_title": "コンテキストが一致しません!",
-  "filter_modal.added.expired_explanation": "このフィルターカテゴリは有効期限が切れています。適用するには有効期限を更新してください。",
+  "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": "フィルター設定",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 2158a8e0f..9ebdfc989 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "მთელი დომენის დამალვა",
   "confirmations.domain_block.message": "ნაღდად, ნაღდად, დარწმუნებული ხართ, გსურთ დაბლოკოთ მთელი {domain}? უმეტეს შემთხვევაში რამდენიმე გამიზნული ბლოკი ან გაჩუმება საკმარისი და უკეთესია. კონტენტს ამ დომენიდან ვერ იხილავთ ვერც ერთ ღია თაიმლაინზე ან თქვენს შეტყობინებებში. ამ დომენიდან არსებული მიმდევრები ამოიშლება.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "გაჩუმება",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index c3eb3d37c..cf02895c5 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Ffer taɣult meṛṛa",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Ffeɣ",
   "confirmations.logout.message": "D tidet tebɣiḍ ad teffɣeḍ?",
   "confirmations.mute.confirm": "Sgugem",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index 297885a19..6a9195c4b 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Бұл доменді бұғатта",
   "confirmations.domain_block.message": "Бұл домендегі {domain} жазбаларды шынымен бұғаттайсыз ба? Кейде үнсіз қылып тастау да жеткілікті.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Шығу",
   "confirmations.logout.message": "Шығатыныңызға сенімдісіз бе?",
   "confirmations.mute.confirm": "Үнсіз қылу",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 4c7ed9a84..f81a47fa9 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index e5a73258d..babd3b1dd 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "미디어 설명이나 미리보기에 대한 저장하지 않은 변경사항이 있습니다. 버리시겠습니까?",
   "confirmations.domain_block.confirm": "도메인 전체를 차단",
   "confirmations.domain_block.message": "정말로 {domain} 전체를 차단하시겠습니까? 대부분의 경우 개별 차단이나 뮤트로 충분합니다. 모든 공개 타임라인과 알림에서 해당 도메인에서 작성된 콘텐츠를 보지 못합니다. 해당 도메인에 속한 팔로워와의 관계가 사라집니다.",
+  "confirmations.edit.confirm": "수정",
+  "confirmations.edit.message": "지금 수정하면 작성 중인 메시지를 덮어쓰게 됩니다. 정말 진행합니까?",
   "confirmations.logout.confirm": "로그아웃",
   "confirmations.logout.message": "정말로 로그아웃 하시겠습니까?",
   "confirmations.mute.confirm": "뮤트",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index ad53c3577..c927d9658 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Guhertinên neqedandî di danasîna an pêşdîtina medyayê de hene, wan bi her awayî bavêje?",
   "confirmations.domain_block.confirm": "Tevahiya navperê asteng bike",
   "confirmations.domain_block.message": "Tu pê bawerî ku tu dixwazî tevahiya {domain} asteng bikî? Di gelek rewşan de astengkirin an jî bêdengkirin têrê dike û tê hilbijartin. Tu nikarî naveroka vê navperê di demnameyê an jî agahdariyên xwe de bibînî. Şopînerên te yê di vê navperê wê werin jêbirin.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Derkeve",
   "confirmations.logout.message": "Ma tu dixwazî ku derkevî?",
   "confirmations.mute.confirm": "Bêdeng bike",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index db4f0022e..9a20c2ebf 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -1,5 +1,5 @@
 {
-  "about.blocks": "Moderated servers",
+  "about.blocks": "Leurennow koswys",
   "about.contact": "Contact:",
   "about.disclaimer": "Mastodon is free, open-source software, and a trademark of Mastodon gGmbH.",
   "about.domain_blocks.no_reason_available": "Reason not available",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Lettya gorfarth dhien",
   "confirmations.domain_block.message": "Owgh hwi wir, wir sur a vynnes lettya'n {domain} dhien? Y'n brassa rann a gasow, boghes lettyansow medrys po tawheansow yw lowr ha gwell. Ny wrewgh hwi gweles dalgh a'n worfarth na yn py amserlin boblek pynag po yn agas gwarnyansow. Agas holyoryon an worfarth na a vydh diles.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Digelmi",
   "confirmations.logout.message": "Owgh hwi sur a vynnes digelmi?",
   "confirmations.mute.confirm": "Tawhe",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index 2634a6f06..173ca7c61 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Confutare",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index a2dac91ca..fd4bbdd95 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index ba14ec5c0..9a3e3219e 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -12,7 +12,7 @@
   "about.powered_by": "Decentralizētu sociālo tīklu nodrošina {mastodon}",
   "about.rules": "Servera noteikumi",
   "account.account_note_header": "Piezīme",
-  "account.add_or_remove_from_list": "Pievienot vai noņemt no saraksta",
+  "account.add_or_remove_from_list": "Pievienot vai Noņemt no sarakstiem",
   "account.badges.bot": "Robots",
   "account.badges.group": "Grupa",
   "account.block": "Bloķēt @{name}",
@@ -105,7 +105,7 @@
   "column.direct": "Privātie ziņojumi",
   "column.directory": "Pārlūkot profilus",
   "column.domain_blocks": "Bloķētie domēni",
-  "column.favourites": "Izlase",
+  "column.favourites": "Izlases",
   "column.follow_requests": "Sekošanas pieprasījumi",
   "column.home": "Sākums",
   "column.lists": "Saraksti",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tev ir nesaglabātas izmaiņas multivides aprakstā vai priekšskatījumā. Vēlies tās atmest?",
   "confirmations.domain_block.confirm": "Bloķēt visu domēnu",
   "confirmations.domain_block.message": "Vai tu tiešām vēlies bloķēt visu domēnu {domain}? Parasti pietiek, ja nobloķē vai apklusini kādu. Tu neredzēsi saturu vai paziņojumus no šī domēna nevienā laika līnijā. Tavi sekotāji no šī domēna tiks noņemti.",
+  "confirmations.edit.confirm": "Rediģēt",
+  "confirmations.edit.message": "Rediģējot, tiks pārrakstīts ziņojums, kuru tu šobrīd raksti. Vai tiešām vēlies turpināt?",
   "confirmations.logout.confirm": "Iziet",
   "confirmations.logout.message": "Vai tiešām vēlies izrakstīties?",
   "confirmations.mute.confirm": "Apklusināt",
@@ -217,8 +219,8 @@
   "empty_column.direct": "Pašreiz tev nav privātu ziņu. Tiklīdz tādu nosūtīsi vai saņemsi, tās parādīsies šeit.",
   "empty_column.domain_blocks": "Vēl nav neviena bloķēta domēna.",
   "empty_column.explore_statuses": "Pašlaik nekā aktuāla nav. Pārbaudi vēlāk!",
-  "empty_column.favourited_statuses": "Pašreiz tev nav neviena izceltā ieraksta. Kad kādu izcelsi, tas parādīsies šeit.",
-  "empty_column.favourites": "Neviens šo ziņojumu vel nav izcēlis. Kad kāds to izdarīs, tas parādīsies šeit.",
+  "empty_column.favourited_statuses": "Tev vēl nav nevienas iecienītākās ziņas. Kad pievienosi kādu izlasei, tas tiks parādīts šeit.",
+  "empty_column.favourites": "Šo ziņu neviens vēl nav pievienojis izlasei. Kad kāds to izdarīs, tas parādīsies šeit.",
   "empty_column.follow_recommendations": "Neizdevās ģenerēt tev pielāgotus ieteikumus. Vari mēģināt izmantot meklēšanu, lai meklētu cilvēkus, kurus tu varētu pazīt, vai izpētīt populārākos tēmturus.",
   "empty_column.follow_requests": "Šobrīd tev nav sekošanas pieprasījumu. Kad kāds pieteiksies tev sekot, pieprasījums parādīsies šeit.",
   "empty_column.followed_tags": "Tu vēl neesi sekojis nevienam tēmturim. Kad to izdarīsi, tie tiks parādīti šeit.",
@@ -324,7 +326,7 @@
   "keyboard_shortcuts.legend": "Parādīt šo leģendu",
   "keyboard_shortcuts.local": "Atvērt vietējo laika līniju",
   "keyboard_shortcuts.mention": "Pieminēt autoru",
-  "keyboard_shortcuts.muted": "Atvērt apklusināto lietotāju sarakstu",
+  "keyboard_shortcuts.muted": "Atvērt noklusināto lietotāju sarakstu",
   "keyboard_shortcuts.my_profile": "Atvērt savu profilu",
   "keyboard_shortcuts.notifications": "Atvērt paziņojumu kolonnu",
   "keyboard_shortcuts.open_media": "Atvērt multividi",
@@ -396,7 +398,7 @@
   "not_signed_in_indicator.not_signed_in": "Lai piekļūtu šim resursam, tev ir jāpierakstās.",
   "notification.admin.report": "{name} sūdzējās par {target}",
   "notification.admin.sign_up": "{name} pierakstījās",
-  "notification.favourite": "{name} patika tava ziņa",
+  "notification.favourite": "{name} pievienoja tavu ziņu izlasei",
   "notification.follow": "{name} uzsāka tev sekot",
   "notification.follow_request": "{name} nosūtīja tev sekošanas pieprasījumu",
   "notification.mention": "{name} pieminēja tevi",
@@ -523,7 +525,7 @@
   "search.placeholder": "Meklēšana",
   "search.search_or_paste": "Meklē vai iekopē URL",
   "search_popout.search_format": "Paplašināts meklēšanas formāts",
-  "search_popout.tips.full_text": "Vienkāršs teksts atgriež ierakstus, kurus rakstīji, atzīmēji kā favorītus, pastiprināji vai pieminēji, kā arī atbilstošus lietotājvārdus, parādāmos vārdus un tēmturus.",
+  "search_popout.tips.full_text": "Vienkāršs teksts atgriež ziņas, kuras esi rakstījis, pievienojis izlasei, izcēlis vai pieminējis, kā arī atbilstošos lietotājvārdus, parādāmos vārdus un atsauces.",
   "search_popout.tips.hashtag": "tēmturis",
   "search_popout.tips.status": "ieraksts",
   "search_popout.tips.text": "Vienkāršs teksts atgriež atbilstošus parādāmos vārdus, lietotājvārdus un tēmturus",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index b9e5cda1e..a84cc9168 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Сокриј цел домеин",
   "confirmations.domain_block.message": "Дали скроз сте сигурни дека ќе блокирате сѐ од {domain}? Во повеќето случаеви неколку таргетирани блокирања или заќутувања се доволни и предложени. Нема да ја видите содржината од тој домеин во никој јавен времеплов или вашите нотификации. Вашите следбеници од тој домеин ќе бидат остранети.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Одјави се",
   "confirmations.logout.message": "Дали сте сигурни дека сакате да се одјавите?",
   "confirmations.mute.confirm": "Заќути",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index 3574ede02..5d29c55d0 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "മുഴുവൻ ഡൊമെയ്‌നും തടയുക",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "പുറത്തുകടക്കുക",
   "confirmations.logout.message": "നിങ്ങൾക്ക് ലോഗ് ഔട്ട് ചെയ്യണമെന്ന് ഉറപ്പാണോ?",
   "confirmations.mute.confirm": "നിശ്ശബ്ദമാക്കുക",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index 1ba6aa957..680aea770 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "संपूर्ण डोमेन लपवा",
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "तुमची खात्री आहे की तुम्ही लॉग आउट करू इच्छिता?",
   "confirmations.mute.confirm": "आवाज बंद करा",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index a003f42f4..3a374884b 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Anda belum menyimpan perubahan pada penerangan atau pratonton media. Anda ingin membuangnya?",
   "confirmations.domain_block.confirm": "Sekat keseluruhan domain",
   "confirmations.domain_block.message": "Adakah anda betul-betul, sungguh-sungguh pasti anda ingin menyekat keseluruhan {domain}? Selalunya, beberapa sekatan atau pembisuan tersasar sudah memadai dan lebih diutamakan. Anda tidak akan nampak kandungan daripada domain tersebut di mana-mana garis masa awam mahupun pemberitahuan anda. Pengikut anda daripada domain tersebut juga akan dibuang.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log keluar",
   "confirmations.logout.message": "Adakah anda pasti anda ingin log keluar?",
   "confirmations.mute.confirm": "Bisukan",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index 3c1cec63f..cf5b3406c 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -62,7 +62,7 @@
   "account.unblock_domain": " {domain} ဒိုမိန်းကိုပြန်ဖွင့်မည်",
   "account.unblock_short": "ဘလော့ဖြုတ်ရန်",
   "account.unendorse": "အကောင့်ပရိုဖိုင်တွင်မဖော်ပြပါ",
-  "account.unfollow": "ဖောလိုးဖြုတ်မည်",
+  "account.unfollow": "စောင့်ကြည့်ခြင်းအား ပယ်ဖျက်မည်",
   "account.unmute": "{name} ကို ပြန်ဖွင့်ရန်",
   "account.unmute_notifications": "{name}ထံမှသတိပေးချက်ပြန်ဖွင့်မည်",
   "account.unmute_short": "ပြန်ဖွင့်ရန်",
@@ -106,7 +106,7 @@
   "column.directory": "ပရိုဖိုင်များကို ရှာဖွေမည်\n",
   "column.domain_blocks": "  ဒိုမိန်းကိုပိတ်မည်",
   "column.favourites": "အကြိုက်ဆုံးများ",
-  "column.follow_requests": "တောင်းဆိုချက်များကိုလိုက်နာပါ။",
+  "column.follow_requests": "စောင့်ကြည့်ရန် တောင်းဆိုမှုများ",
   "column.home": "ပင်မစာမျက်နှာ",
   "column.lists": "စာရင်းများ",
   "column.mutes": "မပေါ်အောင်ပိတ်ထားသောအသုံးပြုသူများ",
@@ -123,7 +123,7 @@
   "column_subheading.settings": "ဆက်တင်များ",
   "community.column_settings.local_only": "ပြည်တွင်း၌သာ",
   "community.column_settings.media_only": "Media only",
-  "community.column_settings.remote_only": "Remote only",
+  "community.column_settings.remote_only": "အဝေးမှသာ",
   "compose.language.change": "ဘာသာစကား ပြောင်းမည်",
   "compose.language.search": "ဘာသာစကားကိုရှာမည်",
   "compose_form.direct_message_warning_learn_more": "ထပ်သိရှိလိုသည်",
@@ -153,15 +153,17 @@
   "confirmations.block.confirm": "ဘလော့မည်",
   "confirmations.block.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?",
   "confirmations.cancel_follow_request.confirm": "ပန်ကြားချက်ကို ပယ်ဖျက်မည်",
-  "confirmations.cancel_follow_request.message": "{name} ကိုဖော်လိုပယ်ဖျက်ရန် သေချာပါသလား။",
+  "confirmations.cancel_follow_request.message": "{name} ကို စောင့်ကြည့်ခြင်းအားပယ်ဖျက်ရန် သေချာပါသလား။",
   "confirmations.delete.confirm": "ဖျက်မည်",
   "confirmations.delete.message": "Are you sure you want to delete this status?",
   "confirmations.delete_list.confirm": "ဖျက်မည်",
   "confirmations.delete_list.message": "ဖျက်ရန် သေချာပါသလား?",
   "confirmations.discard_edit_media.confirm": "ဖယ်ထုတ်ပါ",
-  "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
+  "confirmations.discard_edit_media.message": "သင်သည် မီဒီယာဖော်ပြချက် သို့မဟုတ် အစမ်းကြည့်ရှုခြင်းတွင် မသိမ်းဆည်းရသေးသော အပြောင်းအလဲများရှိသည်။ မည်သို့ပင်ဖြစ်စေ ဖျက်ပစ်မည်လား။",
   "confirmations.domain_block.confirm": "Hide entire domain",
   "confirmations.domain_block.message": "{domain} တစ်ခုလုံးကို ဘလော့လုပ်ရန် တကယ် သေချာပါသလား? များသောအားဖြင့် အနည်းစုကို ပစ်မှတ်ထား ဘလော့လုပ်ခြင်းသည် လုံလောက်ပါသည်။ ထို ဒိုမိန်းမှ အကြောင်းအရာ တစ်ခုမှ မြင်ရမည်မဟုတ်သည့်အပြင် ထို ဒိုမိန်းတွင်ရှိသော သင်၏ စောင့်ကြည့်သူများပါ ဖယ်ရှားပစ်မည်ဖြစ်သည်။",
+  "confirmations.edit.confirm": "ပြင်ရန်",
+  "confirmations.edit.message": "ယခုပြင်ဆင်ခြင်းတွင် သင်လက်ရှိမက်ဆေ့ချ်ကို ဖျက်ပစ်ပြီး အသစ်ရေးပါမည်။ ရှေ့ဆက်လိုသည်မှာ သေချာပါသလား။",
   "confirmations.logout.confirm": "အကောင့်မှထွက်မည်",
   "confirmations.logout.message": "အကောင့်မှ ထွက်ရန် သေချာပါသလား?",
   "confirmations.mute.confirm": "ပိတ်ထားရန်",
@@ -171,29 +173,29 @@
   "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
   "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 ကိုကြည့်မည်",
   "conversation.with": "{အမည်များ} ဖြင့်",
   "copypaste.copied": "ကူယူပြီးပါပြီ",
   "copypaste.copy": "ကူးယူပါ",
-  "directory.federated": "From known fediverse",
+  "directory.federated": "သင် သိသော ဖက်ဒီမှ",
   "directory.local": "{domain} မှသာလျှင်\n",
   "directory.new_arrivals": "အသစ်ရောက်ရှိမှုများ",
   "directory.recently_active": "မကြာသေးခင်က ဖွင့်ထားသော",
   "disabled_account_banner.account_settings": "အကောင့်ဆက်တင်များ",
   "disabled_account_banner.text": "{disabledAccount} သည်လတ်တလောပိတ်ခံထားရသည်",
-  "dismissable_banner.community_timeline": "These are the most recent public posts from people whose accounts are hosted by {domain}.",
+  "dismissable_banner.community_timeline": "အကောင့်များမှ လတ်တလောတင်ထားသည့်အများမြင်ပို့စ်များမှာ {domain} တွင် တင်ထားသောပို့စ်များဖြစ်သည်။",
   "dismissable_banner.dismiss": "ပယ်ရန်",
   "dismissable_banner.explore_links": "ဤသတင်းများကို ယခုအချိန်တွင် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်၏ အခြားဆာဗာများမှ လူများက ပြောဆိုနေကြပါသည်။",
   "dismissable_banner.explore_statuses": "ဤစာများနှင့် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်ရှိ အခြားဆာဗာများမှ ဤပို့စ်များသည် ယခုဆာဗာပေါ်တွင် ဆွဲဆောင်မှု ရှိလာပါသည်။",
   "dismissable_banner.explore_tags": "ဤ hashtag များသည် ယခုအချိန်တွင် ဗဟိုချုပ်ကိုင်မှုလျှော့ချထားသော ကွန်ရက်၏ အခြားဆာဗာများပေါ်ရှိ လူများကြားတွင် ဆွဲဆောင်မှုရှိလာပါသည်",
-  "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 this status on your website by copying the code below.",
   "embed.preview": "Here is what it will look like:",
-  "emoji_button.activity": "Activity",
+  "emoji_button.activity": "လုပ်ဆောင်ချက်",
   "emoji_button.clear": "ရှင်းလင်းမည်",
   "emoji_button.custom": "စိတ်ကြိုက်",
   "emoji_button.flags": "Flags",
@@ -213,28 +215,28 @@
   "empty_column.account_unavailable": "ပရိုဖိုင် မရနိုင်ပါ",
   "empty_column.blocks": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ",
   "empty_column.bookmarked_statuses": "သင့်တွင် မှတ်သားထားသော ပို့စ်များ မရှိသေးပါ။ တစ်ခုကို အမှတ်အသားပြုလိုက်ပါက ၎င်းကို ဤနေရာတွင် ပြထားပါမည်။",
-  "empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
+  "empty_column.community": "ဒေသတွင်းစာမျက်နှာမှာ အလွတ်ဖြစ်နေသည်။ အများမြင်နိုင်ရန်အတွက် တစ်ခုခုရေးပါ။",
   "empty_column.direct": "သင့်တွင် တိုက်ရိုက်မက်ဆေ့ချ်များ မရှိသေးပါ။ ပေးပို့ထားပါက သို့မဟုတ် လက်ခံထားပါက ၎င်းတို့ကို ဤနေရာတွင် ပြထားပါမည်။",
   "empty_column.domain_blocks": "သင်ပိတ်ထားသော ဒိုမိန်းမရှိသေးပါ",
   "empty_column.explore_statuses": "အခုလောလောဆယ်တွင် ရေပန်းစားနေသောပို့စ်များ မရှိသေးပါ။ နောက်မှ ပြန်စစ်ဆေးပါရန်။",
   "empty_column.favourited_statuses": "သင့်တွင် အကြိုက်ဆုံးပို့စ်များ မရှိသေးပါ။ တစ်ခုကို သင်နှစ်သက်ထားပါက ၎င်းကို ဤနေရာတွင် ပြထားပါမည်။",
   "empty_column.favourites": "ဤပို့စ်ကို အကြိုက်တွေ့သူ မရှိသေးပါ။ တစ်စုံတစ်ယောက်က ကြိုက်နှစ်သက်ပါက ဤနေရာတွင် ပြထားပါမည်။",
-  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
+  "empty_column.follow_recommendations": "သင့်အတွက် အကြံဉာဏ်များ မရရှိနိုင်ပါ။ သင်သိနိုင်သည့်လူများ သို့မဟုတ် ခေတ်စားနေသည့် hashtags များ ရှာဖွေရန်တို့အတွက် ရှာဖွေမှုကို အသုံးပြုနိုင်သည်။",
   "empty_column.follow_requests": "သင့်တွင် စောင့်ကြည့်ရန် တောင်းဆိုမှုများ မရှိသေးပါ။ သင်လက်ခံရရှိပါက ၎င်းကို ဤနေရာတွင် ပြထားပါမည်။",
-  "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they 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.followed_tags": "သင်သည် မည်သည့် hashtag ကိုမျှ စောင့်မကြည့်ရသေးပါ။ စောင့်ကြည့်ပါက ဤနေရာတွင် ပြပေးပါမည်။",
+  "empty_column.hashtag": "ဤ hashtag တွင် မည်သည့်အရာမျှ မရှိသေးပါ။",
+  "empty_column.home": "သင့်ပင်မစာမျက်နှာမှာ အလွတ်ဖြစ်နေပါသည်။ ဖြည့်ရန်အတွက် လူများကို စောင့်ကြည့်ပါ {suggestions}",
   "empty_column.home.suggestions": "ဆက်လက်ဖတ်ရှုမည်",
   "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": "သင့်တွင် List မရှိသေးပါ။ List အသစ်ဖွင့်လျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်မည်",
   "empty_column.mutes": "ပိတ်ထားသောအကောင့်များမရှိသေးပါ",
   "empty_column.notifications": "သတိပေးချက်မရှိသေးပါ။ သတိပေးချက်အသစ်ရှိလျှင် ဤနေရာတွင်ကြည့်ရှုနိုင်သည်",
-  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
+  "empty_column.public": "ဤနေရာတွင် မည်သည့်အရာမျှမရှိပါ။ တစ်ခုခုရေးပါ သို့မဟုတ် ဖြည့်စွက်ရန်အတွက် အခြားဆာဗာ အသုံးပြုသူများကို စောင့်ကြည့်ပါ။",
+  "error.unexpected_crash.explanation": " ကျွန်ုပ်တို့၏ကုဒ်တွင် ချွတ်ယွင်းချက်တစ်ခု သို့မဟုတ် ဘရောက်ဆာနှင့် အဆင်မပြေမှုတို့ကြောင့် ဤစာမျက်နှာကို မှန်ကန်စွာ မပြသနိုင်ပါ။",
   "error.unexpected_crash.explanation_addons": "ဤစာမျက်နှာကို မှန်ကန်စွာ မပြသနိုင်ခဲ့ပါ။ ဤအမှားသည် Browser add-on ထည့်သွင်းထားမှုများ သို့မဟုတ် အလိုအလျောက် ဘာသာပြန်ကိရိယာများကြောင့် ဖြစ်နိုင်သည်။",
   "error.unexpected_crash.next_steps": "စာမျက်နှာကို ပြန်လည်စတင်ကြည့်ပါ။ ၎င်းမှာ အကူအညီမဖြစ်ပါက သင်သည် အခြား Browser သို့မဟုတ် မူရင်းအက်ပ်မှတစ်ဆင့် Mastodon ကို ဆက်လက်အသုံးပြုနိုင်ပါမည်။",
-  "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",
+  "error.unexpected_crash.next_steps_addons": "၎င်းတို့ကို ပိတ်ပြီး စာမျက်နှာကို ပြန်လည်စတင်ကြည့်ပါ။ အဆင်မပြေပါက အခြားဘရောက်ဆာ သို့မဟုတ် မူရင်းအက်ပ်မှတစ်ဆင့် Mastodon ကို ဆက်ပြီးအသုံးပြုနိုင်ပါမည်။",
+  "errors.unexpected_crash.copy_stacktrace": "stacktrace ကို ကလစ်ဘုတ်သို့ ကူးယူပါ",
   "errors.unexpected_crash.report_issue": "အဆင်မပြေမှုကို တိုင်ကြားရန်",
   "explore.search_results": "ရှာဖွေမှုရလဒ်များ",
   "explore.suggested_follows": "သင့်အတွက်",
@@ -242,16 +244,16 @@
   "explore.trending_links": "သတင်းများ",
   "explore.trending_statuses": "ပို့စ်တင်မယ်",
   "explore.trending_tags": "ဟက်ရှ်တက်များ",
-  "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.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": "settings page",
+  "filter_modal.added.settings_link": "သတ်မှတ်ချက်များစာမျက်နှာ",
   "filter_modal.added.short_explanation": "ဤပို့စ်ကို အောက်ပါ စစ်ထုတ်မှုအမျိုးအစားတွင် ပေါင်းထည့်ထားပါသည် - {title}။",
   "filter_modal.added.title": "စစ်ထုတ်မှု ထည့်သွင်းပြီးပါပြီ။",
-  "filter_modal.select_filter.context_mismatch": "does not apply to this context",
+  "filter_modal.select_filter.context_mismatch": "ဤအကြောင်းအရာနှင့် မသက်ဆိုင်ပါ",
   "filter_modal.select_filter.expired": "သက်တမ်းကုန်သွားပါပြီ",
   "filter_modal.select_filter.prompt_new": "အမျိုးအစားအသစ် - {name}",
   "filter_modal.select_filter.search": "ရှာရန် သို့မဟုတ် ဖန်တီးရန်",
@@ -260,11 +262,11 @@
   "filter_modal.title.status": "ပို့စ်တစ်ခု စစ်ထုတ်ပါ",
   "follow_recommendations.done": "ပြီးပါပြီ",
   "follow_recommendations.heading": "သင်မြင်လိုသော သူများထံမှ ပို့စ်များကို စောင့်ကြည့်ပါ။ ဤတွင် အကြံပြုချက်အချို့ရှိပါသည်။",
-  "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": "Authorize",
+  "follow_recommendations.lead": "သင်စောင့်ကြည့်ထားသူများ၏ ပို့စ်များမှာ သင့်ပင်မစာမျက်နှာတွင် အချိန်နှင့်တပြေးညီ ပေါ်လာပါမည်။ မကြောက်ပါနှင့်။ အချိန်မရွေး စောင့်ကြည့်ခြင်းအား ရပ်တန့်နိုင်ပါသည်။",
+  "follow_request.authorize": "လုပ်ပိုင်ခွင့်",
   "follow_request.reject": "ဖယ်ရှားပါ",
   "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.",
-  "followed_tags": "Followed hashtags",
+  "followed_tags": "Hashtag ကို စောင့်ကြည့်ပါမည်",
   "footer.about": "အကြောင်း",
   "footer.directory": "ပရိုဖိုင်များလမ်းညွှန်",
   "footer.get_app": "အက်ပ်ကို ရယူပါ",
@@ -279,29 +281,29 @@
   "hashtag.column_header.tag_mode.any": "သို့မဟုတ် {additional}",
   "hashtag.column_header.tag_mode.none": "မပါဘဲ {additional}",
   "hashtag.column_settings.select.no_options_message": "အကြံပြုချက်မတွေ့ပါ",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "hashtag.column_settings.select.placeholder": "hashtag သို့ ဝင်ရောက်နေခြင်း...",
+  "hashtag.column_settings.tag_mode.all": "ဤအရာအားလုံး",
+  "hashtag.column_settings.tag_mode.any": "ဤအရာထဲမှ တစ်ခု",
+  "hashtag.column_settings.tag_mode.none": "တစ်ခုမှ မဟုတ်ပါ။",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
   "hashtag.follow": "Hashtag ကို စောင့်ကြည့်မယ်",
   "hashtag.unfollow": "Hashtag ကို မစောင့်ကြည့်ပါ",
   "home.column_settings.basic": "အခြေခံ",
-  "home.column_settings.show_reblogs": "Show boosts",
+  "home.column_settings.show_reblogs": "Boost များကို ပြပါ",
   "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.description.favourite": "Mastodon အကောင့်တစ်ခုဖြင့် ဤပို့စ်ကို နှစ်သက်ကြောင်းနှင့် စာရေးသူအား သင်နှစ်သက်ကြောင်း အသိပေးပြီးနောက် ၎င်းကို နောက်မှ သိမ်းဆည်းနိုင်သည်။",
+  "interaction_modal.description.follow": "Mastodon အကောင့်ဖြင့် သင်၏ ပင်မစာမျက်နှာတွင် ၎င်းတို့၏ ပို့စ်များကို ရရှိရန်အတွက် {name} ကို စောင့်ကြည့်နိုင်ပါသည်။",
+  "interaction_modal.description.reblog": "Mastodon အကောင့်တစ်ခုဖြင့် သင်၏စောင့်ကြည့်သူများကို မျှဝေရန်အတွက် ဤပို့စ်ကို Boost လုပ်ပါ။",
+  "interaction_modal.description.reply": "Mastodon အကောင့်တစ်ခုဖြင့် သင် ဤပို့စ်ကို တုံ့ပြန်နိုင်ပါသည်။",
+  "interaction_modal.on_another_server": "တခြားဆာဗာပေါ်တွင်",
   "interaction_modal.on_this_server": "ဤဆာဗာတွင်",
-  "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.other_server_instructions": "သင်အကြိုက်ဆုံး Mastodon အက်ပ် သို့မဟုတ် သင့် Mastodon ဆာဗာ၏ ဝဘ်ရှိ ရှာဖွေမှုနေရာတွင် ဤ 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.reblog": "{name} ၏ ပို့စ်ကို Boost လုပ်ပါ",
   "interaction_modal.title.reply": "{name} ၏ ပို့စ်ကို စာပြန်မယ်",
   "intervals.full.days": "{number, plural, one {# day} other {# days}}",
   "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
@@ -341,10 +343,10 @@
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
   "lightbox.close": "ပိတ်ပါ",
-  "lightbox.compress": "Compress image view box",
+  "lightbox.compress": "ရုပ်ပုံမြင်ကွင်းအကွက်ကို ချုံ့ပါ",
   "lightbox.expand": "ပုံကိုဖွင့်ပါ",
   "lightbox.next": "ရှေ့သို့",
-  "lightbox.previous": "Previous",
+  "lightbox.previous": "ရှေ့သို့",
   "limited_account_hint.action": "ဘာပဲဖြစ်ဖြစ် ပရိုဖိုင်ကို ပြပါ",
   "limited_account_hint.title": "ဤပရိုဖိုင်ကို {domain} ၏ စိစစ်သူများမှ ဖျောက်ထားသည်။",
   "lists.account.add": "စာရင်းထဲသို့ထည့်ပါ",
@@ -354,10 +356,10 @@
   "lists.edit.submit": "ခေါင်းစဥ် ပြောင်းလဲရန်",
   "lists.new.create": "စာရင်းသွင်းပါ",
   "lists.new.title_placeholder": "စာရင်းသစ်ခေါင်းစဥ်",
-  "lists.replies_policy.followed": "Any followed user",
+  "lists.replies_policy.followed": "မည်သည့်စောင့်ကြည့်သူမဆို",
   "lists.replies_policy.list": "စာရင်းထဲမှ အဖွဲ့ဝင်များ",
   "lists.replies_policy.none": "တစ်ယောက်မှမရှိပါ",
-  "lists.replies_policy.title": "Show replies to:",
+  "lists.replies_policy.title": "ပြန်စာများကို ပြရန် -",
   "lists.search": "မိမိဖောလိုးထားသူများမှရှာဖွေမည်",
   "lists.subheading": "သင့်၏စာရင်းများ",
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
@@ -373,31 +375,31 @@
   "navigation_bar.blocks": "ဘလော့ထားသောအကောင့်များ",
   "navigation_bar.bookmarks": "မှတ်ထားသည်များ",
   "navigation_bar.community_timeline": "ဒေသစံတော်ချိန်",
-  "navigation_bar.compose": "Compose new post",
+  "navigation_bar.compose": "ပို့စ်အသစ်ရေးပါ",
   "navigation_bar.direct": "တိုက်ရိုက်မက်ဆေ့ချ်များ",
-  "navigation_bar.discover": "Discover",
+  "navigation_bar.discover": "ရှာဖွေပါ",
   "navigation_bar.domain_blocks": "Hidden domains",
   "navigation_bar.edit_profile": "ကိုယ်ရေးမှတ်တမ်းပြင်ဆင်မည်",
-  "navigation_bar.explore": "Explore",
+  "navigation_bar.explore": "စူးစမ်းရန်",
   "navigation_bar.favourites": "အကြိုက်ဆုံးများ",
-  "navigation_bar.filters": "Muted words",
+  "navigation_bar.filters": "စကားလုံးများ ပိတ်ထားပါ",
   "navigation_bar.follow_requests": "တောင်းဆိုချက်များကို စောင့်ကြည့်ပါ",
-  "navigation_bar.followed_tags": "Followed hashtags",
+  "navigation_bar.followed_tags": "Hashtag ကို စောင့်ကြည့်မယ်",
   "navigation_bar.follows_and_followers": "စောင့်ကြည့်သူများနှင့် စောင့်ကြည့်စာရင်း",
   "navigation_bar.lists": "စာရင်းများ",
   "navigation_bar.logout": "ထွက်မယ်",
-  "navigation_bar.mutes": "Muted users",
+  "navigation_bar.mutes": "အသုံးပြုသူများကို ပိတ်ထားပါ",
   "navigation_bar.personal": "ကိုယ်ရေးကိုယ်တာ",
   "navigation_bar.pins": "ပင်တွဲထားသောပို့စ်များ",
-  "navigation_bar.preferences": "Preferences",
-  "navigation_bar.public_timeline": "Federated timeline",
+  "navigation_bar.preferences": "စိတ်ကြိုက်သတ်မှတ်ချက်များ",
+  "navigation_bar.public_timeline": "ဖက်ဒီစာမျက်နှာ",
   "navigation_bar.search": "ရှာရန်",
   "navigation_bar.security": "လုံခြုံရေး",
   "not_signed_in_indicator.not_signed_in": "ဤရင်းမြစ်သို့ ဝင်ရောက်ရန်အတွက် သင်သည် အကောင့်ဝင်ရန် လိုအပ်ပါသည်။",
-  "notification.admin.report": "{name} reported {target}",
+  "notification.admin.report": "{name} က {target} ကို တိုင်ကြားခဲ့သည်",
   "notification.admin.sign_up": "{name} က အကောင့်ဖွင့်ထားသည်",
   "notification.favourite": "{name} favourited your status",
-  "notification.follow": "{name} သင့်ကို စောင့်ကြည့်ခဲ့သည်",
+  "notification.follow": "{name} က သင့်ကို စောင့်ကြည့်ခဲ့သည်",
   "notification.follow_request": "{name} က သင့်ကို စောင့်ကြည့်ရန် တောင်းဆိုထားသည်",
   "notification.mention": "{name} က သင့်ကို ဖော်ပြခဲ့သည်",
   "notification.own_poll": "စစ်တမ်းကောက်မှု ပြီးဆုံးပါပြီ",
@@ -407,45 +409,45 @@
   "notification.update": "{name} က ပို့စ်တစ်ခုကို ပြင်ဆင်ခဲ့သည်",
   "notifications.clear": "အသိပေးချက်များအား ရှင်းလင်းပါ",
   "notifications.clear_confirmation": "သတိပေးချက်အားလုံးကို အပြီးတိုင်ဖယ်ရှားမည်",
-  "notifications.column_settings.admin.report": "New reports:",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
+  "notifications.column_settings.admin.report": "တိုင်ကြားစာအသစ်များ -",
+  "notifications.column_settings.admin.sign_up": "အကောင့်အသစ်များ -",
   "notifications.column_settings.alert": "Desktop သတိပေးချက်များ",
   "notifications.column_settings.favourite": "ကြိုက်နှစ်သက်မှုများ",
   "notifications.column_settings.filter_bar.advanced": "ခေါင်းစဥ်အားလုံးများကိုဖော်ပြပါ",
   "notifications.column_settings.filter_bar.category": "Quick filter bar",
   "notifications.column_settings.filter_bar.show_bar": "စစ်ထုတ်မှုဘားကို ပြပါ",
   "notifications.column_settings.follow": "စောင့်ကြည့်သူအသစ်များ -",
-  "notifications.column_settings.follow_request": "New follow requests:",
-  "notifications.column_settings.mention": "Mentions:",
+  "notifications.column_settings.follow_request": "စောင့်ကြည့်ရန် တောင်းဆိုမှုအသစ်များ -",
+  "notifications.column_settings.mention": "ဖော်ပြချက်များ -",
   "notifications.column_settings.poll": "စစ်တမ်းရလဒ်",
   "notifications.column_settings.push": "အသိပေးချက်များအား ရအောင်ပို့ခြင်း",
-  "notifications.column_settings.reblog": "Boosts:",
+  "notifications.column_settings.reblog": "Boosts -",
   "notifications.column_settings.show": "ကော်လံတွင်ပြပါ",
   "notifications.column_settings.sound": "အသံဖွင့်မည်",
   "notifications.column_settings.status": "ပို့စ်အသစ်များ -",
   "notifications.column_settings.unread_notifications.category": "မဖတ်ရသေးသောအသိပေးချက်များ -",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
+  "notifications.column_settings.unread_notifications.highlight": "မဖတ်ရသေးသော အသိပေးချက်များကို ဖော်ပြပါ",
   "notifications.column_settings.update": "ပြင်ဆင်ထားမှုများ -",
   "notifications.filter.all": "အားလုံး",
   "notifications.filter.boosts": "အားပေးမည်",
   "notifications.filter.favourites": "ကြိုက်နှစ်သက်မှုများ",
-  "notifications.filter.follows": "ဖောလိုးမည်",
+  "notifications.filter.follows": "စောင့်ကြည့်မယ်",
   "notifications.filter.mentions": " မန်းရှင်းမည်",
   "notifications.filter.polls": "စစ်တမ်းရလဒ်",
   "notifications.filter.statuses": "သင်စောင့်ကြည့်သူများထံမှ အပ်ဒိတ်များ",
   "notifications.grant_permission": "ခွင့်ပြုချက်ပေးမည်",
   "notifications.group": "အသိပေးချက်များ {count} ခု",
   "notifications.mark_as_read": "အသိပေးချက်တိုင်းကို ဖတ်ပြီးကြောင်း အမှတ်အသားပြုပါ",
-  "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
-  "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
-  "notifications_permission_banner.enable": "Enable desktop notifications",
+  "notifications.permission_denied": "ဘရောက်ဆာခွင့်ပြုချက်များ တောင်းဆိုမှုအား ငြင်းခဲ့သောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို မရရှိနိုင်ပါ",
+  "notifications.permission_denied_alert": "ဘရောက်ဆာခွင့်ပြုချက်ကို ငြင်းပယ်ခဲ့သောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို ဖွင့်၍မရပါ",
+  "notifications.permission_required": "လိုအပ်သောခွင့်ပြုချက်ကို မပေးထားသောကြောင့် ဒက်စ်တော့ အသိပေးချက်များကို မရရှိနိုင်ပါ။",
+  "notifications_permission_banner.enable": "ဒက်စ်တော့ အသိပေးချက်များကို ဖွင့်ပါ",
   "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
-  "notifications_permission_banner.title": "Never miss a thing",
-  "picture_in_picture.restore": "Put it back",
+  "notifications_permission_banner.title": "လက်လွတ်မခံပါနှင့်",
+  "picture_in_picture.restore": "ပြန်ထားပါ",
   "poll.closed": "ပိတ်သွားပြီ",
   "poll.refresh": "ပြန်ဖွင့်မည်",
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
+  "poll.total_people": "{count, plural, one {# person} other {# people}}\n",
   "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
   "poll.vote": "မဲပေးမည်",
   "poll.voted": "သင်ဤအဖြေကိုမဲပေးခဲ့သည်",
@@ -456,20 +458,20 @@
   "privacy.direct.long": "မန်းရှင်းခေါ်သူသီးသန့်",
   "privacy.direct.short": "Direct",
   "privacy.private.long": "ဖော်လိုးလုပ်သူသီးသန့်",
-  "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
-  "privacy.public.short": "Public",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
-  "privacy.unlisted.short": "Unlisted",
-  "privacy_policy.last_updated": "Last updated {date}",
+  "privacy.private.short": "စောင့်ကြည့်သူများသာ",
+  "privacy.public.long": "အားလုံး မြင်နိုင်သည်",
+  "privacy.public.short": "အများကိုပြမည်",
+  "privacy.unlisted.long": "အားလုံးမြင်နိုင်သော်လည်း ရှာဖွေမှုများမှ ဖယ်ထုတ်ထားသည်",
+  "privacy.unlisted.short": "စာရင်းမသွင်းထားပါ",
+  "privacy_policy.last_updated": "နောက်ဆုံး ပြင်ဆင်ခဲ့သည့်ရက်စွဲ {date}",
   "privacy_policy.title": "ကိုယ်ရေးအချက်အလက်မူဝါဒ",
   "refresh": "ပြန်လည်စတင်ပါ",
   "regeneration_indicator.label": "လုပ်ဆောင်နေသည်…",
-  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
+  "regeneration_indicator.sublabel": "သင့်ပင်မစာမျက်နှာကို ပြင်ဆင်နေပါသည်။",
   "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.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.hours": "{number}h",
@@ -479,12 +481,12 @@
   "relative_time.today": "ယနေ့",
   "reply_indicator.cancel": "ပယ်ဖျက်မည်",
   "report.block": "ဘလော့မည်",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
+  "report.block_explanation": "၎င်းတို့ရဲ့ ပို့စ်တွေကို မြင်ရမှာမဟုတ်ဘူး။ သင့်ပို့စ်များကို မမြင်နိုင်သလို သင့်ကို စောင့်ကြည့်၍ရမည်လည်းမဟုတ်ပါ။ ၎င်းတို့ကို ပိတ်ပင်ထားပါသည်။",
   "report.categories.other": "အခြား",
   "report.categories.spam": "ပြင်ပစာများ",
   "report.categories.violation": "ဤစာတွင် သတ်မှတ်ထားသောစည်းကမ်းများကို ဖောက်ဖျက်သောအကြောင်းအရာပါဝင်နေသည်",
   "report.category.subtitle": "အကိုက်ညီဆုံးကိုရွေးချယ်ပါ",
-  "report.category.title": "Tell us what's going on with this {type}",
+  "report.category.title": "ဤ {type} တွင် ဘာဖြစ်နေသည်ကို ပြောပြပါ",
   "report.category.title_account": "ကိုယ်ရေးမှတ်တမ်း",
   "report.category.title_status": "ပို့စ်",
   "report.close": "ပြီးပြီ",
@@ -492,34 +494,34 @@
   "report.forward": "{target} သို့တစ်ဆင့်ပို့ပေးမည်",
   "report.forward_hint": "ဤအကောင့်မှာတစ်ခြားဆာဗာမှဖြစ်သည်။ အမည်မသိတိုင်းကြားချက်ဖွင့်လိုပါသလား?",
   "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.mute_explanation": "၎င်းတို့၏ပို့စ်များကို သင်မြင်ရမည်မဟုတ်ပါ။ ၎င်းတို့မှာ သင့်ကို စောင့်ကြည့်၍ ပို့စ်များကို မြင်နိုင်ဆဲဖြစ်ပြီး ၎င်းတို့ကို အသံပိတ်ထားကြောင်း သိမည်မဟုတ်ပါ။\n",
   "report.next": "ရှေ့သို့",
   "report.placeholder": "Type or paste additional comments",
   "report.reasons.dislike": "မကြိုက်ပါ",
   "report.reasons.dislike_description": "ပိုမိုမြင်လိုသည်ရှိပါသလား",
   "report.reasons.other": "တစ်ခုခုဖြစ်နေသည်",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.other_description": "ဤအချက်မှာ အခြားအမျိုးအစားများနှင့် မကိုက်ညီပါ။",
+  "report.reasons.spam": "၎င်းမှာ Spam ဖြစ်သည်",
+  "report.reasons.spam_description": "အန္တရာယ်ရှိသော လင့်ခ်များ၊ အတုအယောင်များ သို့မဟုတ် ထပ်တလဲလဲ ပြန်ကြားမှုများ",
+  "report.reasons.violation": "၎င်းမှာ ဆာဗာစည်းမျဉ်းများကို ချိုးဖောက်ထားသည်",
+  "report.reasons.violation_description": "သတ်မှတ်ထားသော စည်းကမ်းများကို ချိုးဖောက်ထားကြောင်း သင် သိရှိထားသည်။",
+  "report.rules.subtitle": "သက်ဆိုင်သမျှကို ရွေးပါ",
+  "report.rules.title": "မည်သည့်စည်းကမ်းများကို ချိုးဖောက်ထားပါသလဲ။",
+  "report.statuses.subtitle": "သက်ဆိုင်သမျှကို ရွေးပါ",
+  "report.statuses.title": "ဤတိုင်ကြားစာကို အရန်ကူးထားသည့် ပို့စ်များ ရှိပါသလား။",
   "report.submit": "Submit report",
   "report.target": "Report {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
+  "report.thanks.take_action": "ဤသည်မှာ Mastodon တွင် သင်မြင်ရသည့်အရာများ ထိန်းချုပ်ရန်အတွက် ရွေးချယ်ရမည့်နေရာဖြစ်သည် -",
+  "report.thanks.take_action_actionable": "၎င်းကို ကျွန်ုပ်တို့ သုံးသပ်နေချိန်တွင် သင်သည် @{name} ကို အရေးယူနိုင်သည် -",
+  "report.thanks.title": "ဒါကို မမြင်ချင်ဘူးလား။",
+  "report.thanks.title_actionable": "တိုင်ကြားခြင်းအတွက် ကျေးဇူးတင်ပါသည်၊ ဤအရာကို ကျွန်ုပ်တို့ စစ်ဆေးပါမည်။",
+  "report.unfollow": "@{name} ကို မစောင့်ကြည့်တော့ပါ",
+  "report.unfollow_explanation": "သင် ဤအကောင့်ကို စောင့်ကြည့်နေသည်။ သင့်ပင်မစာမျက်နှာတွင် ၎င်းတို့၏ပို့စ်များကို ထပ်ပြီးမတွေ့ချင်တော့ပါက စောင့်ကြည့်ခြင်းကို ရပ်တန့်နိုင်ပါသည်။",
   "report_notification.attached_statuses": "{count, plural, one {{count} post} other {{count} posts}} attached",
   "report_notification.categories.other": "အခြား",
   "report_notification.categories.spam": "Spam",
-  "report_notification.categories.violation": "Rule violation",
-  "report_notification.open": "Open report",
+  "report_notification.categories.violation": "စည်းကမ်းဖောက်ဖျက်ခြင်း",
+  "report_notification.open": "အစီရင်ခံစာကိုဖွင့်ပါ",
   "search.placeholder": "ရှာဖွေရန်",
   "search.search_or_paste": "URL ရိုက်ထည့်ပါ သို့မဟုတ် ရှာဖွေပါ",
   "search_popout.search_format": "အဆင့်မြင့်ရှာဖွေမှုပုံစံ",
@@ -533,59 +535,59 @@
   "search_results.hashtags": "ဟက်ရှ်တက်များ",
   "search_results.nothing_found": "ရှာဖွေလိုသောအရာမရှိပါ",
   "search_results.statuses": "ပို့စ်တင်မယ်",
-  "search_results.statuses_fts_disabled": "Searching posts by their content is not enabled on this Mastodon server.",
+  "search_results.statuses_fts_disabled": "ဤ Mastodon ဆာဗာတွင် ၎င်းတို့၏ အကြောင်းအရာအလိုက် ပို့စ်များရှာဖွေခြင်းကို ဖွင့်မထားပါ။",
   "search_results.title": "{q} ကို ရှာပါ",
   "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
-  "server_banner.about_active_users": "People using this server during the last 30 days (Monthly Active Users)",
+  "server_banner.about_active_users": "ပြီးခဲ့သည့် ရက်ပေါင်း ၃၀ အတွင်း ဤဆာဗာကို အသုံးပြုသူများ (လအလိုက် လက်ရှိအသုံးပြုသူများ)",
   "server_banner.active_users": "လက်ရှိအသုံးပြုသူများ",
-  "server_banner.administered_by": "Administered by:",
-  "server_banner.introduction": "{domain} is part of the decentralized social network powered by {mastodon}.",
+  "server_banner.administered_by": "မှ စီမံခန့်ခွဲသည် -",
+  "server_banner.introduction": "{domain} သည် {mastodon} မှ ပံ့ပိုးပေးထားသော ဗဟိုချုပ်ကိုင်မှုမရှိသည့် လူမှုကွန်ရက်တစ်ခုဖြစ်သည်။",
   "server_banner.learn_more": "ပိုမိုသိရှိရန်",
-  "server_banner.server_stats": "Server stats:",
+  "server_banner.server_stats": "ဆာဗာအား လက်ရှိအသုံးပြုသူများ -",
   "sign_in_banner.create_account": "အကောင့်ဖန်တီးမည်",
   "sign_in_banner.sign_in": "အကောင့်ဝင်မည်",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_domain": "Open moderation interface for {domain}",
+  "sign_in_banner.text": "ပရိုဖိုင်များ သို့မဟုတ် hashtags များ၊ အကြိုက်ဆုံး၊ မျှဝေပြီး ပို့စ်များနှင့် ပို့စ် ပြန်ကြားစာများ ကြည့်ရှုရန်အတွက် အကောင့်ဝင်ရောက်ပါ။ အခြားဆာဗာတစ်ခုပေါ်ရှိ သင့်အကောင့်မှလည်း အပြန်အလှန် ဖလှယ်နိုင်ပါသည်။",
+  "status.admin_account": "@{name} အတွက် စိစစ်ခြင်းကြားခံနယ်ကို ဖွင့်ပါ",
+  "status.admin_domain": "{domain} အတွက် စိစစ်ခြင်းကြားခံနယ်ကို ဖွင့်ပါ",
   "status.admin_status": "Open this status in the moderation interface",
   "status.block": "@{name} ကိုဘလော့မည်",
   "status.bookmark": "မှတ်ထားသည်များ",
   "status.cancel_reblog_private": "Unboost",
-  "status.cannot_reblog": "This post cannot be boosted",
+  "status.cannot_reblog": "ဤပို့စ်ကို Boost ၍ မရပါ",
   "status.copy": "Copy link to status",
   "status.delete": "ဖျက်ရန်",
-  "status.detailed_status": "Detailed conversation view",
+  "status.detailed_status": "အသေးစိတ်စကားပြောဆိုမှုမြင်ကွင်း",
   "status.direct": "@{name} ကို တိုက်ရိုက်စာပို့မည်",
   "status.edit": "ပြင်ဆင်ရန်",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
+  "status.edited": "{date} ကို ပြင်ဆင်ပြီးပါပြီ",
+  "status.edited_x_times": "{count, plural, one {{count} time} other {{count} times}} ပြင်ဆင်ခဲ့သည်",
   "status.embed": "Embed",
   "status.favourite": "ကြိုက်နှစ်သက်မှုများ",
-  "status.filter": "Filter this post",
-  "status.filtered": "Filtered",
+  "status.filter": "ဤပို့စ်ကို စစ်ထုတ်ပါ",
+  "status.filtered": "စစ်ထုတ်ထားသည်",
   "status.hide": "ပို့စ်ကိုပိတ်ထားမည်",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
-  "status.load_more": "Load more",
-  "status.media_hidden": "Media hidden",
-  "status.mention": "Mention @{name}",
-  "status.more": "More",
-  "status.mute": "Mute @{name}",
-  "status.mute_conversation": "Mute conversation",
+  "status.history.created": "{name} က {date} က ဖန်တီးခဲ့သည်",
+  "status.history.edited": "{name} က {date} က ပြင်ဆင်ခဲ့သည်",
+  "status.load_more": "ပို၍ဆောင်ရွက်ပါ",
+  "status.media_hidden": "မီဒီယာကို ဖျောက်ထားပါ",
+  "status.mention": "@{name} ကို ဖော်ပြထားသည်",
+  "status.more": "နောက်ထပ်",
+  "status.mute": "@{name} ကို ပိတ်ထားရန်",
+  "status.mute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်",
   "status.open": "ပို့စ်ကိုချဲ့ထွင်မည်",
-  "status.pin": "Pin on profile",
+  "status.pin": "ပရိုဖိုင်တွင် ပင်ထားပါ",
   "status.pinned": "ပင်တွဲထားသောပို့စ်",
   "status.read_more": "ပိုမိုဖတ်ရှုရန်",
   "status.reblog": "Boost",
-  "status.reblog_private": "Boost with original visibility",
-  "status.reblogged_by": "{name} boosted",
-  "status.reblogs.empty": "No one has boosted this post yet. When someone does, they will show up here.",
-  "status.redraft": "Delete & re-draft",
+  "status.reblog_private": "မူရင်းပုံစံဖြင့် Boost လုပ်ပါ",
+  "status.reblogged_by": "{name} က Boost လုပ်ထားသည်",
+  "status.reblogs.empty": "ဤပို့စ်ကို မည်သူမှ Boost လုပ်ထားခြင်းမရှိသေးပါ။ တစ်ယောက်ယောက်မှ Boost လုပ်ပါက ဤနေရာတွင်ပေါ်လာပါမည်။",
+  "status.redraft": "ဖျက်ပြီး ပြန်ရေးပါ",
   "status.remove_bookmark": "မှတ်ထားသည်များကို ဖယ်ရှားပါ",
   "status.replied_to": "{name} ကို စာပြန်ခဲ့သည်",
   "status.reply": "စာပြန်ရန်",
-  "status.replyAll": "Reply to thread",
-  "status.report": "Report @{name}",
+  "status.replyAll": "thread သို့ စာပြန်ပါ",
+  "status.report": "@{name} ကို တိုင်ကြားရန်",
   "status.sensitive_warning": "သတိထားရသော အကြောင်းအရာ",
   "status.share": "မျှဝေ",
   "status.show_filter_reason": "မည်သို့ပင်ဖြစ်စေ ပြပါ",
@@ -597,13 +599,13 @@
   "status.translate": "ဘာသာပြန်ပါ",
   "status.translated_from_with": "{provider} ကို အသုံးပြု၍ {lang} မှ ဘာသာပြန်ထားသည်",
   "status.uncached_media_warning": "မရနိုင်ပါ",
-  "status.unmute_conversation": "Unmute conversation",
-  "status.unpin": "Unpin from profile",
-  "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.",
+  "status.unmute_conversation": "စကားဝိုင်းကို ပိတ်ထားရန်",
+  "status.unpin": "ပရိုဖိုင်မှ ပင်ဖြုတ်ပါ။",
+  "subscribed_languages.lead": "ပြောင်းလဲပြီးနောက် ရွေးချယ်ထားသော ဘာသာစကားများ၏ ပို့စ်များကိုသာ သင့် ပင်မစာမျက်နှာနှင့် စာရင်းစာမျက်နှာတွင်သာ ပေါ်လာမည်ဖြစ်ပါသည်။ ဘာသာစကားအားလုံး၏ ပို့စ်များအား ကြည့်ရှုလိုပါက အပြောင်းအလဲမပြုလုပ်ပါနှင့်။",
   "subscribed_languages.save": "ပြောင်းလဲမှုများကို သိမ်းဆည်းပါ",
   "subscribed_languages.target": "{target} အတွက် စာရင်းသွင်းထားသော ဘာသာစကားများကို ပြောင်းပါ",
-  "suggestions.dismiss": "Dismiss suggestion",
-  "suggestions.header": "You might be interested in…",
+  "suggestions.dismiss": "အကြံပြုချက်ကို ဖယ်လိုက်ပါ",
+  "suggestions.header": "စိတ်ဝင်စားနိုင်သည်...",
   "tabs_bar.federated_timeline": "ဖက်ဒီ",
   "tabs_bar.home": "ပင်မစာမျက်နှာ",
   "tabs_bar.local_timeline": "ပြည်တွင်း",
@@ -611,7 +613,7 @@
   "time_remaining.days": "{number, plural, one {# day} other {# days}} left",
   "time_remaining.hours": "{number, plural, one {# hour} other {# hours}} left",
   "time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} left",
-  "time_remaining.moments": "Moments remaining",
+  "time_remaining.moments": "အခိုက်အတန့်များ ကျန်ရှိနေသေးသည်",
   "time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} left",
   "timeline_hint.remote_resource_not_displayed": "အခြားဆာဗာများမှ {resource} ကို ပြသမည်မဟုတ်ပါ။",
   "timeline_hint.resources.followers": "စောင့်ကြည့်သူများ",
@@ -619,11 +621,11 @@
   "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": "လက်ရှိခေတ်စားနေသော ပို့စ်များ",
-  "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
+  "ui.beforeunload": "Mastodon မှ ထွက်ခွာပါက သင့်မူကြမ်း ဆုံးရှုံးသွားပါမည်။",
   "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": "ပို့စ်တင်ရန် ဆွဲချလိုက်ပါ",
   "upload_button.label": "ပုံများ၊ ဗီဒီယို သို့မဟုတ် အသံဖိုင်တစ်ခု ထည့်ပါ",
   "upload_error.limit": "ဖိုင်အများဆုံးတင်နိုင်မည့်ကန့်သတ်ချက်ကို ကျော်သွားပါပြီ။",
   "upload_error.poll": "စစ်တမ်းနှင့်အတူဖိုင်များတင်ခွင့်မပြုပါ",
@@ -631,19 +633,19 @@
   "upload_form.description": "အမြင်အာရုံချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်",
   "upload_form.description_missing": "ဖော်ပြချက် မထည့်ပါ",
   "upload_form.edit": "ပြင်ရန်",
-  "upload_form.thumbnail": "Change thumbnail",
+  "upload_form.thumbnail": "ပုံသေးကို ပြောင်းပါ",
   "upload_form.undo": "ဖျက်ရန်",
   "upload_form.video_description": "အမြင်အာရုံနှင့်အကြားအာရုံ ချို့ယွင်းသော ခက်ခဲသောသူများအတွက် ဖော်ပြထားသည်",
-  "upload_modal.analyzing_picture": "Analyzing picture…",
-  "upload_modal.apply": "Apply",
-  "upload_modal.applying": "Applying…",
+  "upload_modal.analyzing_picture": "ပုံအား ပိုင်းခြားစိတ်ဖြာနေသည်...",
+  "upload_modal.apply": "သုံးပါ",
+  "upload_modal.applying": "အသုံးချနေသည်...",
   "upload_modal.choose_image": "ပုံရွေးပါ",
   "upload_modal.description_placeholder": "သီဟိုဠ်မှ ဉာဏ်ကြီးရှင်သည် အာယုဝဍ္ဎနဆေးညွှန်းစာကို ဇလွန်ဈေးဘေး ဗာဒံပင်ထက် အဓိဋ္ဌာန်လျက် ဂဃနဏဖတ်ခဲ့သည်",
-  "upload_modal.detect_text": "Detect text from picture",
+  "upload_modal.detect_text": "ပုံမှစာသားကို ရှာဖွေပါ",
   "upload_modal.edit_media": "မီဒီယာကို ပြင်ဆင်ရန်",
   "upload_modal.hint": "Click or drag the circle on the preview to choose the focal point which will always be in view on all thumbnails.",
   "upload_modal.preparing_ocr": "OCR ပြင်ဆင်နေသည်…",
-  "upload_modal.preview_label": "Preview ({ratio})",
+  "upload_modal.preview_label": "({ratio}) အစမ်းကြည့်ရှုရန်",
   "upload_progress.label": "တင်နေသည်...",
   "upload_progress.processing": "လုပ်ဆောင်နေသည်…",
   "video.close": "ဗီဒီယိုကို ပိတ်ပါ",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index 91ca4ebf2..c2679ddef 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Je hebt niet-opgeslagen wijzigingen in de mediabeschrijving of voorvertonning, wil je deze toch weggooien?",
   "confirmations.domain_block.confirm": "Blokkeer alles van deze server",
   "confirmations.domain_block.message": "Weet je het echt heel erg zeker dat je alles van {domain} wilt blokkeren? In de meeste gevallen is het blokkeren of negeren van een paar specifieke personen voldoende en beter. Je zult geen berichten van deze server op openbare tijdlijnen zien of in jouw meldingen. Jouw volgers van deze server worden verwijderd.",
+  "confirmations.edit.confirm": "Bewerken",
+  "confirmations.edit.message": "Door nu te reageren overschrijf je het bericht dat je op dit moment aan het schrijven bent. Weet je zeker dat je verder wil gaan?",
   "confirmations.logout.confirm": "Uitloggen",
   "confirmations.logout.message": "Weet je zeker dat je wilt uitloggen?",
   "confirmations.mute.confirm": "Negeren",
@@ -559,7 +561,7 @@
   "status.edit": "Bewerken",
   "status.edited": "Bewerkt op {date}",
   "status.edited_x_times": "{count, plural, one {{count} keer} other {{count} keer}} bewerkt",
-  "status.embed": "Insluiten",
+  "status.embed": "Embedden",
   "status.favourite": "Favoriet",
   "status.filter": "Dit bericht filteren",
   "status.filtered": "Gefilterd",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 33026253a..76b1ebf2a 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -47,7 +47,7 @@
   "account.mention": "Nemn @{name}",
   "account.moved_to": "{name} seier at deira nye konto no er:",
   "account.mute": "Målbind @{name}",
-  "account.mute_notifications": "Målbind varsel frå @{name}",
+  "account.mute_notifications": "Demp varsel frå @{name}",
   "account.muted": "Målbunden",
   "account.open_original_page": "Opne originalsida",
   "account.posts": "Tut",
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Du har ulagra endringar i mediaskildringa eller førehandsvisinga. Vil du forkaste dei likevel?",
   "confirmations.domain_block.confirm": "Skjul alt frå domenet",
   "confirmations.domain_block.message": "Er du heilt, heilt sikker på at du vil skjula heile {domain}? I dei fleste tilfelle er det godt nok og føretrekt med nokre få målretta blokkeringar eller målbindingar. Du kjem ikkje til å sjå innhald frå domenet i fødererte tidsliner eller i varsla dine. Fylgjarane dine frå domenet vert fjerna.",
+  "confirmations.edit.confirm": "Rediger",
+  "confirmations.edit.message": "Å redigera no vil overskriva den meldinga du er i ferd med å skriva. Er du sikker på at du vil halda fram?",
   "confirmations.logout.confirm": "Logg ut",
   "confirmations.logout.message": "Er du sikker på at du vil logga ut?",
   "confirmations.mute.confirm": "Målbind",
@@ -221,7 +223,7 @@
   "empty_column.favourites": "Ingen har merkt dette tutet som favoritt enno. Når nokon gjer det, så dukkar det opp her.",
   "empty_column.follow_recommendations": "Det ser ikkje ut til at noko forslag kunne genererast til deg. Prøv søkjefunksjonen for å finna folk du kjenner, eller utforsk populære emneknaggar.",
   "empty_column.follow_requests": "Du har ingen følgjeførespurnadar ennå. Når du får ein, så vil den dukke opp her.",
-  "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
+  "empty_column.followed_tags": "Du fylgjer ingen emneknaggar enno. Når du gjer det, vil dei syna her.",
   "empty_column.hashtag": "Det er ingenting i denne emneknaggen enno.",
   "empty_column.home": "Heime-tidslina di er tom! Følg fleire folk for å fylle ho med innhald. {suggestions}",
   "empty_column.home.suggestions": "Sjå nokre forslag",
@@ -264,7 +266,7 @@
   "follow_request.authorize": "Autoriser",
   "follow_request.reject": "Avvis",
   "follow_requests.unlocked_explanation": "Sjølv om kontoen din ikkje er låst tenkte dei som driv {domain} at du kanskje ville gå gjennom førespurnadar frå desse kontoane manuelt.",
-  "followed_tags": "Followed hashtags",
+  "followed_tags": "Fylgde emneknaggar",
   "footer.about": "Om",
   "footer.directory": "Profilmappe",
   "footer.get_app": "Få appen",
@@ -382,7 +384,7 @@
   "navigation_bar.favourites": "Favorittar",
   "navigation_bar.filters": "Målbundne ord",
   "navigation_bar.follow_requests": "Fylgjeførespurnader",
-  "navigation_bar.followed_tags": "Fulgte emneknagger",
+  "navigation_bar.followed_tags": "Fylgde emneknaggar",
   "navigation_bar.follows_and_followers": "Fylgje og fylgjarar",
   "navigation_bar.lists": "Lister",
   "navigation_bar.logout": "Logg ut",
@@ -544,7 +546,7 @@
   "server_banner.server_stats": "Tenarstatistikk:",
   "sign_in_banner.create_account": "Opprett konto",
   "sign_in_banner.sign_in": "Logg inn",
-  "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
+  "sign_in_banner.text": "Logg inn for å fylgja profilar eller emneknaggar, og for å lika, dela og svara på innlegg. Du kan òg samhandla med aktivitet på denne tenaren frå kontoar på andre tenarar.",
   "status.admin_account": "Opne moderasjonsgrensesnitt for @{name}",
   "status.admin_domain": "Opna moderatorgrensesnittet for {domain}",
   "status.admin_status": "Opne denne statusen i moderasjonsgrensesnittet",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 0cc3f121b..372902e8b 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -162,6 +162,8 @@
   "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.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Logg ut",
   "confirmations.logout.message": "Er du sikker på at du vil logge ut?",
   "confirmations.mute.confirm": "Demp",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 4bce24d07..cde922c05 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Amagar tot lo domeni",
   "confirmations.domain_block.message": "Volètz vertadièrament blocar complètament {domain} ? De còps cal pas que blocar o rescondre unas personas solament.\nVeiretz pas cap de contengut d’aquel domeni dins cap de flux public o dins vòstras notificacions. Vòstres seguidors d’aquel domeni seràn levats.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Desconnexion",
   "confirmations.logout.message": "Volètz vertadièrament vos desconnectar ?",
   "confirmations.mute.confirm": "Rescondre",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index e22ab1f22..b81bb1356 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 50966c266..4dadec0c0 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -17,7 +17,7 @@
   "account.badges.group": "Grupa",
   "account.block": "Blokuj @{name}",
   "account.block_domain": "Blokuj wszystko z {domain}",
-  "account.blocked": "Zablokowany(-a)",
+  "account.blocked": "Zablokowano",
   "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu",
   "account.cancel_follow_request": "Wycofaj żądanie obserwowania",
   "account.direct": "Wyślij wiadomość bezpośrednią do @{name}",
@@ -166,6 +166,8 @@
   "confirmations.discard_edit_media.message": "Masz niezapisane zmiany w opisie lub podglądzie, odrzucić je mimo to?",
   "confirmations.domain_block.confirm": "Ukryj wszystko z domeny",
   "confirmations.domain_block.message": "Czy na pewno chcesz zablokować całą domenę {domain}? Zwykle lepszym rozwiązaniem jest blokada lub wyciszenie kilku użytkowników.",
+  "confirmations.edit.confirm": "Edytuj",
+  "confirmations.edit.message": "Edytowanie wpisu nadpisze wiadomość, którą obecnie piszesz. Czy na pewno chcesz to zrobić?",
   "confirmations.logout.confirm": "Wyloguj",
   "confirmations.logout.message": "Czy na pewno chcesz się wylogować?",
   "confirmations.mute.confirm": "Wycisz",
@@ -407,7 +409,7 @@
   "notification.mention": "Wspomniało o Tobie przez {name}",
   "notification.own_poll": "Twoje głosowanie zakończyło się",
   "notification.poll": "Głosowanie w którym brałeś(-aś) udział zakończyło się",
-  "notification.reblog": "Podbito Twój post przez {name}",
+  "notification.reblog": "Twój post został podbity przez {name}",
   "notification.status": "Właśnie umieszczono wpis przez {name}",
   "notification.update": "{name} edytował post",
   "notifications.clear": "Wyczyść powiadomienia",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index f2e4a365e..249787438 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -162,6 +162,8 @@
   "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.edit.confirm": "Editar",
+  "confirmations.edit.message": "Editar agora irá substituir a mensagem que está sendo criando. Tem certeza de que deseja continuar?",
   "confirmations.logout.confirm": "Sair",
   "confirmations.logout.message": "Você tem certeza de que deseja sair?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index ae0a2df31..d72c5c700 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Tem alterações por guardar na descrição ou pré-visualização do conteúdo. Descartar mesmo assim?",
   "confirmations.domain_block.confirm": "Esconder tudo deste domínio",
   "confirmations.domain_block.message": "De certeza que queres bloquear completamente o domínio {domain}? Na maioria dos casos, silenciar ou bloquear alguns utilizadores é suficiente e é o recomendado. Não irás ver conteúdo daquele domínio em cronologia alguma nem nas tuas notificações. Os teus seguidores daquele domínio serão removidos.",
+  "confirmations.edit.confirm": "Editar",
+  "confirmations.edit.message": "Editar agora irá sobrescrever a mensagem que está a compor. Tem a certeza de que deseja continuar?",
   "confirmations.logout.confirm": "Terminar sessão",
   "confirmations.logout.message": "Tem a certeza de que quer terminar a sessão?",
   "confirmations.mute.confirm": "Silenciar",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index 787727d56..c50a6a12b 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Ai modificări nesalvate în descrierea sau previzualizarea media, renunți oricum?",
   "confirmations.domain_block.confirm": "Blochează întregul domeniu",
   "confirmations.domain_block.message": "Ești absolut sigur că vrei să blochezi tot domeniul {domain}? În cele mai multe cazuri, raportarea sau blocarea anumitor lucruri este suficientă și de preferat. Nu vei mai vedea niciun conținut din acest domeniu în vreun flux public sau în vreo notificare. Abonații tăi din acest domeniu vor fi eliminați.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Deconectare",
   "confirmations.logout.message": "Ești sigur că vrei să te deconectezi?",
   "confirmations.mute.confirm": "Ignoră",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 32845ab64..93a39c380 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "У вас есть несохранённые изменения описания мультимедиа или предпросмотра, отменить их?",
   "confirmations.domain_block.confirm": "Да, заблокировать узел",
   "confirmations.domain_block.message": "Вы точно уверены, что хотите заблокировать {domain} полностью? В большинстве случаев нескольких блокировок и игнорирований вполне достаточно. Вы перестанете видеть публичную ленту и уведомления оттуда. Ваши подписчики из этого домена будут удалены.",
+  "confirmations.edit.confirm": "Редактировать",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Выйти",
   "confirmations.logout.message": "Вы уверены, что хотите выйти?",
   "confirmations.mute.confirm": "Игнорировать",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index e9deab43d..13e5cbb57 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -27,7 +27,7 @@
   "account.enable_notifications": "यदा @{name} स्थापयति तदा मां ज्ञापय",
   "account.endorse": "व्यक्तिगतविवरणे वैशिष्ट्यम्",
   "account.featured_tags.last_status_at": "{date} दिने गतस्थापनम्",
-  "account.featured_tags.last_status_never": "न स्थापनम्",
+  "account.featured_tags.last_status_never": "न पत्रम्",
   "account.featured_tags.title": "{name} इत्यस्य विशेषहैस्टैगः",
   "account.follow": "अनुस्रियताम्",
   "account.followers": "अनुसर्तारः",
@@ -50,14 +50,14 @@
   "account.mute_notifications": "@{name} सूचनाः निष्क्रियन्ताम्",
   "account.muted": "निःशब्दम्",
   "account.open_original_page": "मूलपृष्ठमुट्घाटय",
-  "account.posts": "दौत्यानि",
-  "account.posts_with_replies": "दौत्यानि प्रत्युत्तराणि च",
+  "account.posts": "पत्राणि",
+  "account.posts_with_replies": "पत्राणि प्रत्युत्तराणि च",
   "account.report": "आविद्यताम् @{name}",
   "account.requested": "स्वीकृतिः प्रतीक्ष्यते । नश्यतामित्यस्मिन्नुद्यतां निराकर्तुम् ।",
-  "account.requested_follow": "{name} has requested to follow you",
+  "account.requested_follow": "{name} त्वामनुसर्तुमयाचीत्",
   "account.share": "@{name} मित्रस्य विवरणं विभाज्यताम्",
   "account.show_reblogs": "@{name} मित्रस्य प्रकाशनानि दृश्यन्ताम्",
-  "account.statuses_counter": "{count, plural, one {{counter} दौत्यम्} two {{counter} दौत्ये} other {{counter} दौत्यानि}}",
+  "account.statuses_counter": "{count, plural, one {{counter} पत्रम्}  two{{counter} पत्रे} other {{counter} पत्राणि}}",
   "account.unblock": "निषेधता नश्यताम् @{name}",
   "account.unblock_domain": "प्रदेशनिषेधता नश्यताम् {domain}",
   "account.unblock_short": "अनवरुन्धि",
@@ -93,16 +93,16 @@
   "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": "स्थानीयसमयतालिका",
-  "column.direct": "Direct messages",
+  "column.direct": "प्रत्यक्षसन्देशाः",
   "column.directory": "व्यक्तित्वानि दृश्यन्ताम्",
   "column.domain_blocks": "निषिद्धप्रदेशाः",
   "column.favourites": "प्रियाः",
@@ -111,7 +111,7 @@
   "column.lists": "सूचयः",
   "column.mutes": "निःशब्दाः भोक्तारः",
   "column.notifications": "सूचनाः",
-  "column.pins": "कीलितदौत्यानि",
+  "column.pins": "कीलितपत्राणि",
   "column.public": "सङ्घीयसमयतालिका",
   "column_back_button.label": "पूर्वम्",
   "column_header.hide_settings": "विन्यासाः छाद्यन्ताम्",
@@ -124,12 +124,12 @@
   "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.hashtag_warning": "This post won't be listed under any hashtag as it is unlisted. Only public posts can be searched by hashtag.",
-  "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि दौत्यानि द्रष्टुं शक्नोति ।",
+  "compose_form.encryption_warning": "मस्टोडोनि पत्राणि न अन्ततोऽन्तं सङ्कूटितानि। मास्टोडिनि संवेदनशीलसूचनां मा प्रेषय।",
+  "compose_form.hashtag_warning": "पत्रमिदमसार्वजनिकान्न कस्मिन्नपि प्रचलितवस्तुषु सूचितमिदं प्रेषणम्। केवलं सार्वजनिकप्रेषराणि प्रचलितवस्तुचिह्नेन अन्वेषयितुं शक्यते।",
+  "compose_form.lock_disclaimer": "तव लेखा न प्रवेष्टुमशक्या {locked} । कोऽप्यनुसर्ता ते केवलमनुसर्तृृणां कृते स्थितानि पत्राणि द्रष्टुं शक्नोति ।",
   "compose_form.lock_disclaimer.lock": "अवरुद्धः",
   "compose_form.placeholder": "मनसि ते किमस्ति?",
   "compose_form.poll.add_option": "मतमपरं युज्यताम्",
@@ -138,10 +138,10 @@
   "compose_form.poll.remove_option": "मतमेतन्नश्यताम्",
   "compose_form.poll.switch_to_multiple": "मतदानं परिवर्तयित्वा बहुवैकल्पिकमतदानं क्रियताम्",
   "compose_form.poll.switch_to_single": "मतदानं परिवर्तयित्वा निर्विकल्पमतदानं क्रियताम्",
-  "compose_form.publish": "Publish",
-  "compose_form.publish_form": "Publish",
+  "compose_form.publish": "प्रकाशीकुरु",
+  "compose_form.publish_form": "प्रकाशीकुरु",
   "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": "संवेदनशीलसामग्रीति नाङ्कितम्",
@@ -152,49 +152,51 @@
   "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.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.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.domain_block.confirm": "निषिद्धः प्रदेशः क्रियताम्",
   "confirmations.domain_block.message": "नूनं निश्चयेनैव विनष्टुमिच्छति पूर्णप्रदेशमेव {domain} ? अधिकांशसन्दर्भेऽस्थायित्वेन निषेधता निःशब्दत्वञ्च पर्याप्तं चयनीयञ्च । न तस्मात् प्रदेशात्सर्वे विषया द्रष्टुमशक्याः किस्यांश्चिदपि सर्वजनिकसमयतालिकायां वा स्वीयसूचनापटले । सर्वेऽनुसर्तारस्ते प्रदेशात् ये सन्ति ते नश्यन्ते ।",
+  "confirmations.edit.confirm": "सम्पादय",
+  "confirmations.edit.message": "सम्पादनमिदानीं लिख्यते तर्हि पूर्वलिखितसन्देशं विनश्य पुनः लिख्यते। निश्चयेनैवं कर्तव्यम्?",
   "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.confirm": "मार्जय पुनश्च लिख्यताम्",
+  "confirmations.redraft.message": "किं वा निश्चयेन नष्टुमिच्छसि पत्रमेतत्तथा च पुनः लेखितुं? प्रकाशनानि प्रीतयश्च विनष्टा भविष्यन्ति, प्रत्युत्तराण्यपि नश्यन्ते ।",
   "confirmations.reply.confirm": "उत्तरम्",
   "confirmations.reply.message": "प्रत्युत्तरमिदानीं लिख्यते तर्हि पूर्वलिखितसन्देशं विनश्य पुनः लिख्यते । निश्चयेनैवं कर्तव्यम् ?",
   "confirmations.unfollow.confirm": "अनुसरणं नश्यताम्",
   "confirmations.unfollow.message": "निश्चयेनैवाऽनुसरणं नश्यतां {name} मित्रस्य?",
-  "conversation.delete": "वार्तालापो नश्यताम्",
+  "conversation.delete": "वार्तालापं मार्जय",
   "conversation.mark_as_read": "पठितमित्यङ्क्यताम्",
   "conversation.open": "वार्तालापो दृश्यताम्",
   "conversation.with": "{names} जनैः साकम्",
-  "copypaste.copied": "Copied",
-  "copypaste.copy": "Copy",
+  "copypaste.copied": "प्रतिलिपिंकृतम्",
+  "copypaste.copy": "प्रतिलिपिः",
   "directory.federated": "सुपरिचितं Fediverse इति स्थानात्",
   "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": "Clear",
+  "emoji_button.clear": "मार्जय",
   "emoji_button.custom": "स्वीयानुकूलम्",
   "emoji_button.flags": "ध्वजाः",
   "emoji_button.food": "भोजनं पेयञ्च",
@@ -208,119 +210,119 @@
   "emoji_button.search_results": "अन्वेषणपरिणामाः",
   "emoji_button.symbols": "चिह्नानि",
   "emoji_button.travel": "यात्रा च स्थानानि",
-  "empty_column.account_suspended": "Account suspended",
-  "empty_column.account_timeline": "न दौत्यान्यत्र",
+  "empty_column.account_suspended": "एकौण्ट् निलम्बितः",
+  "empty_column.account_timeline": "न पत्रमिह!",
   "empty_column.account_unavailable": "व्यक्तित्वं न प्राप्यते",
   "empty_column.blocks": "नैकोऽप्युपभोक्ता निषिद्धो वर्तते",
-  "empty_column.bookmarked_statuses": "नैकमपि पुटचिह्नयुक्तदौत्यानि सन्ति । यदा भविष्यति तदत्र दृश्यते ।",
+  "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.favourited_statuses": "न प्रियदौत्यानि सन्ति । यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते ।",
-  "empty_column.favourites": "नैतद्दौत्यं प्रियमस्ति कस्मै अपि । यदा कस्मै प्रियं भवति तदाऽत्र दृश्यते ।",
-  "empty_column.follow_recommendations": "Looks like no suggestions could be generated for you. You can try using search to look for people you might know or explore trending hashtags.",
+  "empty_column.explore_statuses": "अधुना किमपि न प्रचलति। परे पुनः पश्य!",
+  "empty_column.favourited_statuses": "न तव अधुना पर्यन्तं प्रियपत्राणि सन्ति। यदा प्रीतिरित्यङ्क्यतेऽत्र दृश्यते।",
+  "empty_column.favourites": "नैतत्पत्रं प्रियमस्ति कस्मै अपि। यदा कस्मै प्रियं भवति तदाऽत्र दृश्यते।",
+  "empty_column.follow_recommendations": "तुभ्यं कोऽपि प्रबोधो न जनयितुं न शक्यतेऽति प्रतीयते। अन्वेष्यप्रणालिं प्रयोक्तुं जनानवलोकयितुं शक्नोषि उत प्रचलितवस्तूनि अन्वेषितुं शक्नोषि।",
   "empty_column.follow_requests": "नाऽनुसरणानुरोधस्ते वर्तते । यदैको प्राप्यतेऽत्र दृश्यते ।",
-  "empty_column.followed_tags": "You have not followed any hashtags yet. When you do, they will show up here.",
+  "empty_column.followed_tags": "कान्यपि प्रचलितवस्तूनीदानीमपि नान्वसार्षीः। यदा अनुसरसि तदा तानि इह दृश्यन्ते।",
   "empty_column.hashtag": "नाऽस्मिन् प्रचलितवस्तुचिह्ने किमपि ।",
   "empty_column.home": "गृहसमयतालिका रिक्ताऽस्ति । गम्यतां {public} वाऽन्वेषणैः प्रारभ्यतां मेलनं क्रियताञ्च ।",
-  "empty_column.home.suggestions": "See some suggestions",
-  "empty_column.list": "न किमपि वर्तते सूच्यामस्याम् । यदा सूच्याः सदस्या नवदौत्यानि प्रकटीकुर्वन्ति तदाऽत्राऽऽयान्ति ।",
-  "empty_column.lists": "You don't have any lists yet. When you create one, it will show up here.",
-  "empty_column.mutes": "You haven't muted any users yet.",
-  "empty_column.notifications": "You don't have any notifications yet. When other people interact with you, you will see it here.",
-  "empty_column.public": "There is nothing here! Write something publicly, or manually follow users from other servers to fill it up",
-  "error.unexpected_crash.explanation": "Due to a bug in our code or a browser compatibility issue, this page could not be displayed correctly.",
-  "error.unexpected_crash.explanation_addons": "This page could not be displayed correctly. This error is likely caused by a browser add-on or automatic translation tools.",
-  "error.unexpected_crash.next_steps": "Try refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "error.unexpected_crash.next_steps_addons": "Try disabling them and refreshing the page. If that does not help, you may still be able to use Mastodon through a different browser or native app.",
-  "errors.unexpected_crash.copy_stacktrace": "Copy stacktrace to clipboard",
-  "errors.unexpected_crash.report_issue": "Report issue",
-  "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
-  "explore.title": "Explore",
-  "explore.trending_links": "News",
-  "explore.trending_statuses": "Posts",
-  "explore.trending_tags": "Hashtags",
-  "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",
-  "follow_recommendations.done": "Done",
-  "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
-  "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
-  "follow_request.authorize": "Authorize",
-  "follow_request.reject": "Reject",
-  "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.",
-  "followed_tags": "Followed hashtags",
-  "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.status": "Status",
-  "generic.saved": "Saved",
-  "getting_started.heading": "Getting started",
-  "hashtag.column_header.tag_mode.all": "and {additional}",
-  "hashtag.column_header.tag_mode.any": "or {additional}",
-  "hashtag.column_header.tag_mode.none": "without {additional}",
-  "hashtag.column_settings.select.no_options_message": "No suggestions found",
-  "hashtag.column_settings.select.placeholder": "Enter hashtags…",
-  "hashtag.column_settings.tag_mode.all": "All of these",
-  "hashtag.column_settings.tag_mode.any": "Any of these",
-  "hashtag.column_settings.tag_mode.none": "None of these",
+  "empty_column.home.suggestions": "काञ्चित्प्रबोधान्पश्य",
+  "empty_column.list": "न किमपि वर्तते सूच्यामस्याम् । यदा सूच्याः सदस्या नवपत्राणि प्रकटीकुर्वन्ति तदाऽत्राऽऽयान्ति ।",
+  "empty_column.lists": "तव पार्श्वे न कापि सूचिर्वर्तते। यदैकां सृजसि तदा अत्र दृश्यते।",
+  "empty_column.mutes": "त्वया अद्यापि नैकोऽप्युपभोक्ता मूकीकृतो वर्तते।",
+  "empty_column.notifications": "तव पार्श्वे न अधुना पर्यन्तं किमपि विज्ञापनं वर्तते। यदा अन्या जना त्वया संयोजयन्ति तदा इह पश्यसि।",
+  "empty_column.public": "न इह किमपि वर्तते! किञ्चिल्लिख सार्वजनिकरूपेण, उत स्वयमन्यसर्वर्तः उपभोक्तॄननुसर एतत्पूरयितुम्",
+  "error.unexpected_crash.explanation": "अस्माकं विद्यादेशे दोषादुत ब्रौसर्सङ्गतिसमस्यायाः पृष्ठमिदं सम्यग्रूपेण न दृश्यते।",
+  "error.unexpected_crash.explanation_addons": "पृष्ठमिदं सम्यग्रूपेण न दृश्यते। दोषोऽयं सम्भवतो ब्रौसरेडनुत स्वचलितानुवादोपकरणानां कारणात्।",
+  "error.unexpected_crash.next_steps": "पृष्ठं पुनः रेफ्रेशं कर्तुं यतस्व। यदि तत्परेऽपि कार्यं नाकार्षीत्तर्ह्यप्यन्यब्रौसरा उत नेटिवेपा मास्टोडोनुपयोक्तुं शक्नोषि।",
+  "error.unexpected_crash.next_steps_addons": "तानि निष्क्रियं कृत्वा पृष्ठं रिफ्रेशं कर्तुं यतस्व। यदि तत्परेऽपि कार्यं नाकार्षीत्तर्ह्यप्यन्यब्रौसरा उत नेटिवेपा मास्टोडोनुपयोक्तुं शक्नोषि।",
+  "errors.unexpected_crash.copy_stacktrace": "स्तेक्त्रेसमनुलिपिं कुरु क्लिप्फलकं",
+  "errors.unexpected_crash.report_issue": "दोषमावेदय",
+  "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": "जनेभ्यः पत्राणि याननुसरसि कालिकक्रमेण दर्शिष्यन्ते तव गृहनिरासे। दोषान्मा बिभीहि, कदापि सरलरूपेण ते जनाननुसरणं वारयितुं शक्नोषि!",
+  "follow_request.authorize": "प्रमाणीकुरु",
+  "follow_request.reject": "प्रत्याख्याहि",
+  "follow_requests.unlocked_explanation": "यद्यपि ते एकौण्ट् तालयन्त्रेण न बन्धितं, {domain} अधिकारिगणोऽचिचिन्तद्यदेतेभ्य एकौण्ट्भ्योऽनुसरणानुरोधानां समीक्षां स्वहस्तेन चिकीर्षसीति।",
+  "followed_tags": "अनुसरितानि प्रचलितवस्तूनि",
+  "footer.about": "विषये",
+  "footer.directory": "मुखपार्श्वविभागः",
+  "footer.get_app": "एप् लभस्व",
+  "footer.invite": "जनं निमन्त्रय",
+  "footer.keyboard_shortcuts": "कीफलकहर्स्वमार्गाः",
+  "footer.privacy_policy": "गोपनीयतानीतिः",
+  "footer.source_code": "स्रोतविद्यादेशं दर्शय",
+  "footer.status": "स्थितिः",
+  "generic.saved": "रक्षितम्",
+  "getting_started.heading": "आरम्भकरणम्",
+  "hashtag.column_header.tag_mode.all": "{additional} च",
+  "hashtag.column_header.tag_mode.any": "वा {additional}",
+  "hashtag.column_header.tag_mode.none": "{additional} विहाय",
+  "hashtag.column_settings.select.no_options_message": "न का अपि सूचनाः प्राप्ताः",
+  "hashtag.column_settings.select.placeholder": "प्रचलितवस्तूनि प्रविश",
+  "hashtag.column_settings.tag_mode.all": "एतानि सर्वाणि",
+  "hashtag.column_settings.tag_mode.any": "किञ्चिदेतेषु",
+  "hashtag.column_settings.tag_mode.none": "न किमप्येतेषु",
   "hashtag.column_settings.tag_toggle": "Include additional tags in this column",
-  "hashtag.follow": "Follow hashtag",
-  "hashtag.unfollow": "Unfollow hashtag",
-  "home.column_settings.basic": "Basic",
-  "home.column_settings.show_reblogs": "Show boosts",
-  "home.column_settings.show_replies": "Show replies",
-  "home.hide_announcements": "Hide announcements",
-  "home.show_announcements": "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": "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}",
-  "interaction_modal.title.reblog": "Boost {name}'s post",
-  "interaction_modal.title.reply": "Reply to {name}'s post",
-  "intervals.full.days": "{number, plural, one {# day} other {# days}}",
-  "intervals.full.hours": "{number, plural, one {# hour} other {# hours}}",
-  "intervals.full.minutes": "{number, plural, one {# minute} other {# minutes}}",
+  "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": "मास्टोडोनि एकौण्टा, पत्रमिदं प्रियं कर्तुं शक्नोषि तस्य लेखकं प्रशंसां करोषीति ज्ञापयितुमिदं पश्चाद्रक्षितुञ्च।",
+  "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 {# क्षणानि}}",
   "keyboard_shortcuts.back": "to navigate back",
   "keyboard_shortcuts.blocked": "to open blocked users list",
-  "keyboard_shortcuts.boost": "to boost",
+  "keyboard_shortcuts.boost": "पत्रं बुस्तं कुरु",
   "keyboard_shortcuts.column": "to focus a status in one of the columns",
   "keyboard_shortcuts.compose": "to focus the compose textarea",
-  "keyboard_shortcuts.description": "Description",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.description": "वर्णनम्",
+  "keyboard_shortcuts.direct": "अवक्रसंदेशस्तम्भमुद्धाटयितुम्",
   "keyboard_shortcuts.down": "to move down in the list",
-  "keyboard_shortcuts.enter": "to open status",
-  "keyboard_shortcuts.favourite": "to favourite",
+  "keyboard_shortcuts.enter": "पत्रं उद्घाटय",
+  "keyboard_shortcuts.favourite": "पत्रं प्रियं कुरु",
   "keyboard_shortcuts.favourites": "to open favourites list",
   "keyboard_shortcuts.federated": "to open federated timeline",
   "keyboard_shortcuts.heading": "Keyboard Shortcuts",
   "keyboard_shortcuts.home": "to open home timeline",
-  "keyboard_shortcuts.hotkey": "Hotkey",
+  "keyboard_shortcuts.hotkey": "होत्की",
   "keyboard_shortcuts.legend": "to display this legend",
   "keyboard_shortcuts.local": "to open local timeline",
   "keyboard_shortcuts.mention": "to mention author",
@@ -328,259 +330,259 @@
   "keyboard_shortcuts.my_profile": "to open your profile",
   "keyboard_shortcuts.notifications": "to open notifications column",
   "keyboard_shortcuts.open_media": "to open media",
-  "keyboard_shortcuts.pinned": "to open pinned toots list",
+  "keyboard_shortcuts.pinned": "कीलितपत्राणां सूचिमुद्घाटय",
   "keyboard_shortcuts.profile": "to open author's profile",
-  "keyboard_shortcuts.reply": "to reply",
+  "keyboard_shortcuts.reply": "पत्राय प्रतिवादय",
   "keyboard_shortcuts.requests": "to open follow requests list",
   "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.toot": "to start a brand new toot",
+  "keyboard_shortcuts.toot": "नूतनपत्रमारभस्व",
   "keyboard_shortcuts.unfocus": "to un-focus compose textarea/search",
   "keyboard_shortcuts.up": "to move up in the list",
-  "lightbox.close": "Close",
-  "lightbox.compress": "Compress image view box",
-  "lightbox.expand": "Expand image view box",
-  "lightbox.next": "Next",
-  "lightbox.previous": "Previous",
-  "limited_account_hint.action": "Show profile anyway",
-  "limited_account_hint.title": "This profile has been hidden by the moderators of {domain}.",
-  "lists.account.add": "Add to list",
-  "lists.account.remove": "Remove from list",
-  "lists.delete": "Delete list",
-  "lists.edit": "Edit list",
-  "lists.edit.submit": "Change title",
-  "lists.new.create": "Add list",
-  "lists.new.title_placeholder": "New list title",
-  "lists.replies_policy.followed": "Any followed user",
-  "lists.replies_policy.list": "Members of the list",
-  "lists.replies_policy.none": "No one",
-  "lists.replies_policy.title": "Show replies to:",
-  "lists.search": "Search among people you follow",
-  "lists.subheading": "Your lists",
-  "load_pending": "{count, plural, one {# new item} other {# new items}}",
-  "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}.",
-  "mute_modal.duration": "Duration",
-  "mute_modal.hide_notifications": "Hide notifications from this user?",
-  "mute_modal.indefinite": "Indefinite",
-  "navigation_bar.about": "About",
-  "navigation_bar.blocks": "Blocked users",
-  "navigation_bar.bookmarks": "Bookmarks",
-  "navigation_bar.community_timeline": "Local timeline",
-  "navigation_bar.compose": "Compose new toot",
-  "navigation_bar.direct": "Direct messages",
-  "navigation_bar.discover": "Discover",
+  "lightbox.close": "पिधीयताम्",
+  "lightbox.compress": "सङ्कुच चित्रप्रदर्शनपेटकम्",
+  "lightbox.expand": "चित्रप्रदर्शनपेटकं विस्तारय",
+  "lightbox.next": "परः",
+  "lightbox.previous": "पूर्वः",
+  "limited_account_hint.action": "प्रोफैलं दर्शय कथञ्चित्",
+  "limited_account_hint.title": "{domain} इत्यस्य प्रशासकैरयं प्रोफैल्प्रच्छन्नः।",
+  "lists.account.add": "सूचेर्मध्ये योजय",
+  "lists.account.remove": "सूचेर्मार्जय",
+  "lists.delete": "सूचिं मार्जय",
+  "lists.edit": "सूचिं सम्पादय",
+  "lists.edit.submit": "उपाधिं परिवर्तय",
+  "lists.new.create": "सूचिं योजय",
+  "lists.new.title_placeholder": "नूतनसूच्युपाधिः",
+  "lists.replies_policy.followed": "कोऽप्यनुसारितोपभोक्ता",
+  "lists.replies_policy.list": "सूचेस्सदस्याः",
+  "lists.replies_policy.none": "न कोऽपि",
+  "lists.replies_policy.title": "एतमुत्तराणि दर्शय :",
+  "lists.search": "त्वया अनुसारितजनेषु अन्विष्य",
+  "lists.subheading": "तव सूचयः",
+  "load_pending": "{count, plural, one {# नूतनवस्तु} other {# नूतनवस्तूनि}}",
+  "loading_indicator.label": "आरोपयति...",
+  "media_gallery.toggle_visible": "{number, plural, one {चित्रं प्रच्छादय} other {चित्राणि प्रच्छादय}}",
+  "missing_indicator.label": "नोपलब्धम्",
+  "missing_indicator.sublabel": "उपायोऽयं नोपलब्धुं शक्यते",
+  "moved_to_account_banner.text": "तव एकौण्ट् {disabledAccount} अधुना निष्कृतो यतोहि {movedToAccount} अस्मिन्त्वमसार्षीः।",
+  "mute_modal.duration": "परिमाणम्",
+  "mute_modal.hide_notifications": "अस्मादुपभोक्तुर्विज्ञापनानि प्रच्छादयितुमिच्छसि वा?",
+  "mute_modal.indefinite": "अ॑परिमितम्",
+  "navigation_bar.about": "विषये",
+  "navigation_bar.blocks": "निषिद्धभोक्तारः",
+  "navigation_bar.bookmarks": "पुटचिह्नानि",
+  "navigation_bar.community_timeline": "स्थानीयसमयतालिका",
+  "navigation_bar.compose": "नूतनपत्रं रचय",
+  "navigation_bar.direct": "प्रत्यक्षसन्देशाः",
+  "navigation_bar.discover": "आविष्कुरु",
   "navigation_bar.domain_blocks": "Hidden domains",
-  "navigation_bar.edit_profile": "Edit profile",
-  "navigation_bar.explore": "Explore",
-  "navigation_bar.favourites": "Favourites",
-  "navigation_bar.filters": "Muted words",
-  "navigation_bar.follow_requests": "Follow requests",
-  "navigation_bar.followed_tags": "Followed hashtags",
-  "navigation_bar.follows_and_followers": "Follows and followers",
-  "navigation_bar.lists": "Lists",
-  "navigation_bar.logout": "Logout",
-  "navigation_bar.mutes": "Muted users",
-  "navigation_bar.personal": "Personal",
-  "navigation_bar.pins": "Pinned toots",
-  "navigation_bar.preferences": "Preferences",
-  "navigation_bar.public_timeline": "Federated timeline",
-  "navigation_bar.search": "Search",
-  "navigation_bar.security": "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",
-  "notification.favourite": "{name} favourited your status",
-  "notification.follow": "{name} followed you",
-  "notification.follow_request": "{name} has requested to follow you",
-  "notification.mention": "{name} mentioned you",
-  "notification.own_poll": "Your poll has ended",
-  "notification.poll": "A poll you have voted in has ended",
-  "notification.reblog": "{name} boosted your status",
-  "notification.status": "{name} just posted",
-  "notification.update": "{name} edited a post",
-  "notifications.clear": "Clear notifications",
-  "notifications.clear_confirmation": "Are you sure you want to permanently clear all your notifications?",
-  "notifications.column_settings.admin.report": "New reports:",
-  "notifications.column_settings.admin.sign_up": "New sign-ups:",
-  "notifications.column_settings.alert": "Desktop notifications",
-  "notifications.column_settings.favourite": "Favourites:",
-  "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.follow": "New followers:",
-  "notifications.column_settings.follow_request": "New follow requests:",
-  "notifications.column_settings.mention": "Mentions:",
-  "notifications.column_settings.poll": "Poll results:",
-  "notifications.column_settings.push": "Push notifications",
-  "notifications.column_settings.reblog": "Boosts:",
-  "notifications.column_settings.show": "Show in column",
-  "notifications.column_settings.sound": "Play sound",
-  "notifications.column_settings.status": "New toots:",
-  "notifications.column_settings.unread_notifications.category": "Unread notifications",
-  "notifications.column_settings.unread_notifications.highlight": "Highlight unread notifications",
-  "notifications.column_settings.update": "Edits:",
-  "notifications.filter.all": "All",
-  "notifications.filter.boosts": "Boosts",
-  "notifications.filter.favourites": "Favourites",
-  "notifications.filter.follows": "Follows",
-  "notifications.filter.mentions": "Mentions",
-  "notifications.filter.polls": "Poll results",
-  "notifications.filter.statuses": "Updates from people you follow",
-  "notifications.grant_permission": "Grant permission.",
-  "notifications.group": "{count} notifications",
-  "notifications.mark_as_read": "Mark every notification as read",
-  "notifications.permission_denied": "Desktop notifications are unavailable due to previously denied browser permissions request",
-  "notifications.permission_denied_alert": "Desktop notifications can't be enabled, as browser permission has been denied before",
-  "notifications.permission_required": "Desktop notifications are unavailable because the required permission has not been granted.",
-  "notifications_permission_banner.enable": "Enable desktop notifications",
-  "notifications_permission_banner.how_to_control": "To receive notifications when Mastodon isn't open, enable desktop notifications. You can control precisely which types of interactions generate desktop notifications through the {icon} button above once they're enabled.",
-  "notifications_permission_banner.title": "Never miss a thing",
-  "picture_in_picture.restore": "Put it back",
-  "poll.closed": "Closed",
-  "poll.refresh": "Refresh",
-  "poll.total_people": "{count, plural, one {# person} other {# people}}",
-  "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
-  "poll.voted": "You voted for this answer",
-  "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
-  "poll_button.add_poll": "Add a poll",
-  "poll_button.remove_poll": "Remove poll",
-  "privacy.change": "Adjust status privacy",
-  "privacy.direct.long": "Visible for mentioned users only",
+  "navigation_bar.edit_profile": "प्रोफैलं सम्पाद्यताम्",
+  "navigation_bar.explore": "अन्विच्छ",
+  "navigation_bar.favourites": "प्रियाः",
+  "navigation_bar.filters": "मूकीकृतानि पदानि",
+  "navigation_bar.follow_requests": "अनुसरणानुरोधाः",
+  "navigation_bar.followed_tags": "अनुसरितानि प्रचलितवस्तूनि",
+  "navigation_bar.follows_and_followers": "याननुसरति अनुसारिणश्च",
+  "navigation_bar.lists": "सूचयः",
+  "navigation_bar.logout": "निष्क्रमणं कुरु",
+  "navigation_bar.mutes": "निःशब्दा भोक्तारः",
+  "navigation_bar.personal": "व्यक्तिगतम्",
+  "navigation_bar.pins": "कीलितपत्राणि",
+  "navigation_bar.preferences": "अधिकरुचयः",
+  "navigation_bar.public_timeline": "सङ्घीयसमयतालिका",
+  "navigation_bar.search": "अन्विच्छ",
+  "navigation_bar.security": "सुरक्षा",
+  "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.mention": "{name} त्वामुल्लिलेख",
+  "notification.own_poll": "तव निर्वाचनं समाप्तम्",
+  "notification.poll": "यस्मिन्निर्वाचने मतमदास्तन्निर्वाचनं समाप्तम्",
+  "notification.reblog": "{name} तव पत्रं बुस्तिमिति अकार्षीत्",
+  "notification.status": "{name} अधुना अस्थापयिष्ट",
+  "notification.update": "{name} पत्रमेकं समपादयिष्ट",
+  "notifications.clear": "विज्ञापनानि मार्जय",
+  "notifications.clear_confirmation": "तव सर्वाणि विज्ञापनानि सर्वकालाय मार्जयितुमिच्छसि वा?",
+  "notifications.column_settings.admin.report": "नूतनावेदनानि",
+  "notifications.column_settings.admin.sign_up": "नूतनपञ्जीकरणम्:",
+  "notifications.column_settings.alert": "देस्क्टप्विज्ञापनानि",
+  "notifications.column_settings.favourite": "प्रियाः",
+  "notifications.column_settings.filter_bar.advanced": "सर्वाणि वर्गाणि प्रदर्शय",
+  "notifications.column_settings.filter_bar.category": "द्रुतशोधकशलाका",
+  "notifications.column_settings.filter_bar.show_bar": "शोधकशालकां दर्शय",
+  "notifications.column_settings.follow": "नूतनानुसारिणः:",
+  "notifications.column_settings.follow_request": "नूतनानुसरणानुरोधाः:",
+  "notifications.column_settings.mention": "उल्लिखितानि :",
+  "notifications.column_settings.poll": "मतदानस्य परिणामः :",
+  "notifications.column_settings.push": "आघातविज्ञापनानि",
+  "notifications.column_settings.reblog": "बुस्तः :",
+  "notifications.column_settings.show": "स्तम्भे दर्शय",
+  "notifications.column_settings.sound": "ध्वनिं वादय",
+  "notifications.column_settings.status": "नूतनपत्राणि:",
+  "notifications.column_settings.unread_notifications.category": "अपठितविज्ञापनानि",
+  "notifications.column_settings.unread_notifications.highlight": "अपठितविज्ञापनानि उद्वर्णय",
+  "notifications.column_settings.update": "सम्पादनानि :",
+  "notifications.filter.all": "सर्वम्",
+  "notifications.filter.boosts": "बुस्तः",
+  "notifications.filter.favourites": "प्रियाः",
+  "notifications.filter.follows": "अनुसरति",
+  "notifications.filter.mentions": "उल्लिखितानि",
+  "notifications.filter.polls": "मतदानस्य परिणामः",
+  "notifications.filter.statuses": "त्वयानुसरितजनेभ्यः परिवर्तनानि",
+  "notifications.grant_permission": "अनुमतिं देहि।",
+  "notifications.group": "{count} विज्ञापनानि",
+  "notifications.mark_as_read": "सर्वाणि विज्ञापनानि पठितरूपेण चिह्नीकुरु",
+  "notifications.permission_denied": "पूर्वस्यास्वीकृतब्रौसरनुमत्यनुरोधस्य कारणाद्देस्क्तप्विज्ञापनानि न उपलब्धानि",
+  "notifications.permission_denied_alert": "देस्क्तप्विज्ञापनानि सकर्तुं न शक्यते यतो ब्रौसरनुमतिं पूर्वेऽस्वीकृतम्",
+  "notifications.permission_required": "देस्क्तप्विज्ञापनानि नोपलब्धानि यतोहि आवश्यकानुमतिं न स्वीकृतम्।",
+  "notifications_permission_banner.enable": "देस्क्टप्विज्ञापनानि सशक्तं कुरु",
+  "notifications_permission_banner.how_to_control": "यदा माटोडोन्नोद्घाटितस्तदा विज्ञापनानि प्राप्तुं देस्क्तप्विज्ञापनानि सशक्तं कुरु। यदा तानि सशक्तानि तदा {icon} गण्डस्य माध्यमेन केऽपि प्रकारास्संवादा देस्क्तप्विज्ञापनानि जनयन्तीति नियामकं कर्तुं शक्नोषि।",
+  "notifications_permission_banner.title": "मा कदापि वस्तु त्यज",
+  "picture_in_picture.restore": "तत्प्रतिस्थापय",
+  "poll.closed": "बद्धम्",
+  "poll.refresh": "नवीकुरु",
+  "poll.total_people": "{count, plural, one {# जनः} other {# जनाः}}",
+  "poll.total_votes": "{count, plural, one {# मतम्} other {# मतानि}}",
+  "poll.vote": "मतम्",
+  "poll.voted": "एतदुत्तरं मतमदाः",
+  "poll.votes": "{votes, plural, one {# मतम्} other {# मतानि}}",
+  "poll_button.add_poll": "निर्वाचनं योजय",
+  "poll_button.remove_poll": "निर्वाचनं मार्जय",
+  "privacy.change": "पत्रस्य गोपनीयतां परिवर्तय",
+  "privacy.direct.long": "केवलमुल्लिखितोभोक्तृभ्यो दृश्यते",
   "privacy.direct.short": "Direct",
-  "privacy.private.long": "Visible for followers only",
+  "privacy.private.long": "केवलं येऽनुसरन्ति त्वां तेभ्यो दृश्यते",
   "privacy.private.short": "Followers-only",
-  "privacy.public.long": "Visible for all",
-  "privacy.public.short": "Public",
-  "privacy.unlisted.long": "Visible for all, but opted-out of discovery features",
-  "privacy.unlisted.short": "Unlisted",
-  "privacy_policy.last_updated": "Last updated {date}",
-  "privacy_policy.title": "Privacy Policy",
-  "refresh": "Refresh",
-  "regeneration_indicator.label": "Loading…",
-  "regeneration_indicator.sublabel": "Your home feed is being prepared!",
-  "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.hours": "{number}h",
-  "relative_time.just_now": "now",
-  "relative_time.minutes": "{number}m",
-  "relative_time.seconds": "{number}s",
-  "relative_time.today": "today",
-  "reply_indicator.cancel": "Cancel",
-  "report.block": "Block",
-  "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
-  "report.categories.other": "Other",
-  "report.categories.spam": "Spam",
-  "report.categories.violation": "Content violates one or more server rules",
-  "report.category.subtitle": "Choose the best match",
-  "report.category.title": "Tell us what's going on with this {type}",
-  "report.category.title_account": "profile",
-  "report.category.title_status": "post",
-  "report.close": "Done",
-  "report.comment.title": "Is there anything else you think we should know?",
-  "report.forward": "Forward to {target}",
-  "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
-  "report.mute": "Mute",
-  "report.mute_explanation": "You will not see their posts. They can still follow you and see your posts and will not know that they are muted.",
-  "report.next": "Next",
+  "privacy.public.long": "सर्वेभ्यो दृश्यते",
+  "privacy.public.short": "सार्वजनिकम्",
+  "privacy.unlisted.long": "सर्वेभ्यो दृश्यते किन्तु आविष्कारविशेषताभ्योऽन्तरभूतं नास्ति",
+  "privacy.unlisted.short": "असूचीकृतम्",
+  "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 {# दिनं} other {# दिनानि}} पूर्वम्",
+  "relative_time.full.hours": "{number, plural, one {# होरा} other {# होराः}} पूर्वम्",
+  "relative_time.full.just_now": "अधुनैव",
+  "relative_time.full.minutes": "{number, plural, one {# क्षणं} other {# क्षणानि}} पूर्वम्",
+  "relative_time.full.seconds": "{number, plural, one {# पलं} other {# पलानि}} पूर्वम्",
+  "relative_time.hours": "{number}हो",
+  "relative_time.just_now": "अधुना",
+  "relative_time.minutes": "{number}क्ष",
+  "relative_time.seconds": "{number}प",
+  "relative_time.today": "अद्य",
+  "reply_indicator.cancel": "नश्यताम्",
+  "report.block": "निषेधः",
+  "report.block_explanation": "तेषां पत्राणि न द्रक्ष्यसि। ते तव पत्राणि द्रष्टुमुत त्वामनुसर्तुं न शक्नुवन्ति। ते अवरुद्धाः इति ते वक्तुं शक्नुवन्ति।",
+  "report.categories.other": "अन्य",
+  "report.categories.spam": "फल्गुसन्देशाः",
+  "report.categories.violation": "पूरकः एकं वा एकाधिकान्सर्वरो नियमानुल्लङ्घयति",
+  "report.category.subtitle": "उत्तमं मेलनं चिनु",
+  "report.category.title": "अनेन {type} इत्यनेन किम्भवतीति ब्रूहि नः",
+  "report.category.title_account": "प्रोफैल्",
+  "report.category.title_status": "पत्रम्",
+  "report.close": "कृतम्",
+  "report.comment.title": "अन्य किमपि नो ज्ञापयितुमिच्छसि वा?",
+  "report.forward": "{target} प्रत्यग्रे प्रेषय",
+  "report.forward_hint": "एकौण्टयमन्यसर्वर्तः। अनामिकप्रतिलिमावेदनस्य तत्रापि प्रेषयितुमिच्छसि वा?",
+  "report.mute": "मूकीकुरु",
+  "report.mute_explanation": "तेषां पत्राणि न द्रक्ष्यसि। तेऽधुनापि त्वामनुसृत्य तव पत्राणि द्रष्टुं शक्नुवन्ति किन्तु ते त्वया मूकीकृता इति ते न वेदिष्यन्ति।",
+  "report.next": "परम्",
   "report.placeholder": "Type or paste additional comments",
-  "report.reasons.dislike": "I don't like it",
-  "report.reasons.dislike_description": "It is not something you want to see",
-  "report.reasons.other": "It's something else",
-  "report.reasons.other_description": "The issue does not fit into other categories",
-  "report.reasons.spam": "It's spam",
-  "report.reasons.spam_description": "Malicious links, fake engagement, or repetitive replies",
-  "report.reasons.violation": "It violates server rules",
-  "report.reasons.violation_description": "You are aware that it breaks specific rules",
-  "report.rules.subtitle": "Select all that apply",
-  "report.rules.title": "Which rules are being violated?",
-  "report.statuses.subtitle": "Select all that apply",
-  "report.statuses.title": "Are there any posts that back up this report?",
+  "report.reasons.dislike": "एतन्न मे रोचते",
+  "report.reasons.dislike_description": "एतन्न किञ्चित्त्वं द्रष्टुमिच्छसि",
+  "report.reasons.other": "एतत्किञ्चिदन्य एव",
+  "report.reasons.other_description": "समस्या अन्यवर्गेषु नोपज्यते",
+  "report.reasons.spam": "फल्गुसन्देशोऽयम्",
+  "report.reasons.spam_description": "हिंसापरायणास्सन्धयः, असत्याभ्युपगमो वा पुनरावर्तनीयानि उत्तराणि",
+  "report.reasons.violation": "एतत्सर्वरो नियमानुलङ्घयति",
+  "report.reasons.violation_description": "एतद्विशेषनियमामुलङ्घयतीति वेत्सि",
+  "report.rules.subtitle": "यानि प्रयोजयन्ति तानि चिनु",
+  "report.rules.title": "केषां नियमानामुल्लङ्घनं क्रियते?",
+  "report.statuses.subtitle": "यानि प्रयोजयन्ति तानि चिनु",
+  "report.statuses.title": "कानि पत्राणि सन्ति वा यानि आवेदनमिदं समर्थयन्ति?",
   "report.submit": "Submit report",
   "report.target": "Report {target}",
-  "report.thanks.take_action": "Here are your options for controlling what you see on Mastodon:",
-  "report.thanks.take_action_actionable": "While we review this, you can take action against @{name}:",
-  "report.thanks.title": "Don't want to see this?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
-  "report.unfollow": "Unfollow @{name}",
-  "report.unfollow_explanation": "You are following this account. To not see their posts in your home feed anymore, unfollow them.",
-  "report_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",
-  "search.placeholder": "Search",
-  "search.search_or_paste": "Search or paste URL",
-  "search_popout.search_format": "Advanced 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": "hashtag",
-  "search_popout.tips.status": "status",
-  "search_popout.tips.text": "Simple text returns matching display names, usernames and hashtags",
-  "search_popout.tips.user": "user",
-  "search_results.accounts": "People",
-  "search_results.all": "All",
-  "search_results.hashtags": "Hashtags",
-  "search_results.nothing_found": "Could not find anything for these search terms",
-  "search_results.statuses": "Toots",
-  "search_results.statuses_fts_disabled": "Searching toots by their content is not enabled on this Mastodon server.",
-  "search_results.title": "Search for {q}",
-  "search_results.total": "{count, number} {count, plural, one {result} other {results}}",
-  "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. You can also interact from your account on a different server.",
-  "status.admin_account": "Open moderation interface for @{name}",
-  "status.admin_domain": "Open moderation interface for {domain}",
-  "status.admin_status": "Open this status in the moderation interface",
-  "status.block": "Block @{name}",
-  "status.bookmark": "Bookmark",
-  "status.cancel_reblog_private": "Unboost",
-  "status.cannot_reblog": "This post cannot be boosted",
-  "status.copy": "Copy link to status",
-  "status.delete": "Delete",
-  "status.detailed_status": "Detailed conversation view",
-  "status.direct": "Direct message @{name}",
-  "status.edit": "Edit",
-  "status.edited": "Edited {date}",
-  "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
-  "status.embed": "Embed",
-  "status.favourite": "Favourite",
-  "status.filter": "Filter this post",
-  "status.filtered": "Filtered",
-  "status.hide": "Hide post",
-  "status.history.created": "{name} created {date}",
-  "status.history.edited": "{name} edited {date}",
-  "status.load_more": "Load more",
-  "status.media_hidden": "Media hidden",
-  "status.mention": "Mention @{name}",
-  "status.more": "More",
-  "status.mute": "Mute @{name}",
-  "status.mute_conversation": "Mute conversation",
-  "status.open": "Expand this status",
-  "status.pin": "Pin on profile",
-  "status.pinned": "Pinned toot",
-  "status.read_more": "Read more",
-  "status.reblog": "Boost",
+  "report.thanks.take_action": "इमे इह तव विकल्पास्सन्ति मास्टोडोनि यत्पश्यसि तद्यन्त्रयितुम् :",
+  "report.thanks.take_action_actionable": "एतस्य अस्माभिरवलोकनस्य समये @{name} इत्यस्योपरि अभियोगयितुं शक्नोषि :",
+  "report.thanks.title": "इदं द्रष्टुं नेच्छसि वा?",
+  "report.thanks.title_actionable": "अवेदनाय धन्यवादः, वयं एतदवलोकयिष्यामि।",
+  "report.unfollow": "@{name} विसर",
+  "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": "URL अन्विच्छ वा लेपनं कुरु",
+  "search_popout.search_format": "आनीतान्वेषणप्रारूपम्",
+  "search_popout.tips.full_text": "सरललेखो यानि पत्राणि त्वया लिखितानि, प्रियाणि, बूस्तं कृतानि, उत येषु उल्लिखितानि, एवञ्च समीकृतानिपयोक्तृनामानि, प्रदर्शननामानि, प्रचलितवस्तूनि च प्रतिददाति।",
+  "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.nothing_found": "एतेभ्योऽन्वेषणपदेभ्यः किमपि न प्राप्तम्",
+  "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": "विगतेषु ३० दिनेषु सर्वरमिममुपयुज्यमाणा जनाः (मासिकसक्रियोपभोक्तारः)",
+  "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_domain": "{domain} कृते अनतिक्रममध्यस्थमुद्धाटय",
+  "status.admin_status": "पत्रमिदमुद्घाटय अनतिक्रममध्यस्थे",
+  "status.block": "अवरुध्यताम् @{name}",
+  "status.bookmark": "पुटचिह्नीकुरु",
+  "status.cancel_reblog_private": "विबुस्तं कुरु",
+  "status.cannot_reblog": "पत्रमिदं बुस्तं कर्तुं न शक्यते",
+  "status.copy": "सञ्चयं पत्रे प्रतिलिपिं कुरु",
+  "status.delete": "मार्जय",
+  "status.detailed_status": "विस्तृतसंभाषणदृश्यम्",
+  "status.direct": "प्रत्यक्षसन्देशः @{name}",
+  "status.edit": "सम्पादय",
+  "status.edited": "सम्पादितं {date}",
+  "status.edited_x_times": "Edited {count, plural, one {{count} वारम्} other {{count} वारम्}}",
+  "status.embed": "निहितम्",
+  "status.favourite": "प्रियम्",
+  "status.filter": "पत्रमिदं फिल्तरं कुरु",
+  "status.filtered": "फिल्तर्कृतम्",
+  "status.hide": "प्रेषरणं प्रच्छादय",
+  "status.history.created": "{name} असृजत् {date}",
+  "status.history.edited": "{name} समपादयत् {date}",
+  "status.load_more": "अधिकं स्थापय",
+  "status.media_hidden": "प्रसारमाध्यमानि प्रच्छादितानि",
+  "status.mention": "उल्लिख्यताम् @{name}",
+  "status.more": "अधिकम्",
+  "status.mute": "निःशब्दम् @{name}",
+  "status.mute_conversation": "वार्तालापं मूकीकुरु",
+  "status.open": "पत्रमिदं विस्तारय",
+  "status.pin": "प्रोफैलि कीलीकुरु",
+  "status.pinned": "कीलितपत्रम्",
+  "status.read_more": "अधिकं पठ्यताम्",
+  "status.reblog": "बुस्त्",
   "status.reblog_private": "Boost with original visibility",
   "status.reblogged_by": "{name} boosted",
-  "status.reblogs.empty": "No one has boosted this toot yet. When someone does, they will show up here.",
-  "status.redraft": "Delete & re-draft",
+  "status.reblogs.empty": "न केनापि पत्रमिदं बुस्त्कृतम्। यदा कोऽपि करोति, तानि इह दृश्यन्ते।",
+  "status.redraft": "मार्जय पुनश्च लिख्यताम्",
   "status.remove_bookmark": "Remove bookmark",
   "status.replied_to": "Replied to {name}",
   "status.reply": "Reply",
@@ -616,7 +618,7 @@
   "timeline_hint.remote_resource_not_displayed": "{resource} from other servers are not displayed.",
   "timeline_hint.resources.followers": "Followers",
   "timeline_hint.resources.follows": "Follows",
-  "timeline_hint.resources.statuses": "Older toots",
+  "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": "Trending now",
   "ui.beforeunload": "Your draft will be lost if you leave Mastodon.",
@@ -632,7 +634,7 @@
   "upload_form.description_missing": "No description added",
   "upload_form.edit": "Edit",
   "upload_form.thumbnail": "Change thumbnail",
-  "upload_form.undo": "Delete",
+  "upload_form.undo": "मार्जय",
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Apply",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 100f8ecbd..38aa39f3f 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "Bloca totu su domìniu",
   "confirmations.domain_block.message": "Boles de seguru, ma a beru a beru, blocare {domain}? In sa parte manna de is casos, pagos blocos o silentziamentos de persones sunt sufitzientes e preferìbiles. No as a bìdere cuntenutos dae custu domìniu in peruna lìnia de tempus pùblica o in is notìficas tuas. Sa gente chi ti sighit dae cussu domìniu at a èssere bogada.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Essi·nche",
   "confirmations.logout.message": "Seguru chi boles essire?",
   "confirmations.mute.confirm": "A sa muda",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index c428d6683..1abcac47e 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Ye'v chynges tae the media description or preview thit ye'v no saved, fling them awa onie weys?",
   "confirmations.domain_block.confirm": "Dingie the hail domain",
   "confirmations.domain_block.message": "Ye a hunner percent shair thit ye'r wantin tae dingie the hail {domain}? In maist cases a haunfae tairgtit dingies an wheeshts are eneuch an preferit. Ye wullnae see content fae that domain in onie public timelines or in yer notes. Yer follaers fae that domain wull be taen awa.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log oot",
   "confirmations.logout.message": "Ye shair thit ye'r wantin tae log oot?",
   "confirmations.mute.confirm": "Wheesht",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index a5ffbc615..f13aca561 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "ඔබට මාධ්‍ය විස්තරයට හෝ පෙරදසුනට නොසුරකින ලද වෙනස්කම් තිබේ, කෙසේ වෙතත් ඒවා ඉවත දමන්නද?",
   "confirmations.domain_block.confirm": "සම්පූර්ණ වසම අවහිර කරන්න",
   "confirmations.domain_block.message": "ඔබට සම්පූර්ණ {domain}අවහිර කිරීමට අවශ්‍ය බව ඔබට සැබවින්ම විශ්වාසද? බොහෝ අවස්ථාවලදී ඉලක්කගත බ්ලොක් හෝ නිශ්ශබ්ද කිරීම් කිහිපයක් ප්රමාණවත් වන අතර වඩාත් යෝග්ය වේ. ඔබ කිසිදු පොදු කාලරාමුවක හෝ ඔබගේ දැනුම්දීම් වල එම වසමේ අන්තර්ගතය නොදකිනු ඇත. එම වසමෙන් ඔබගේ අනුගාමිකයින් ඉවත් කරනු ලැබේ.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "නික්මෙන්න",
   "confirmations.logout.message": "ඔබට නික්මෙන්න අවශ්‍ය බව විශ්වාසද?",
   "confirmations.mute.confirm": "නිශ්ශබ්ද",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index 03c237a64..a2c35fae9 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Máte neuložené zmeny v popise alebo náhľade média, zahodiť ich aj tak?",
   "confirmations.domain_block.confirm": "Skry celú doménu",
   "confirmations.domain_block.message": "Si si naozaj istý/á, že chceš blokovať celú doménu {domain}? Vo väčšine prípadov stačí blokovať alebo ignorovať pár konkrétnych užívateľov, čo sa doporučuje. Neuvidíš obsah z tejto domény v žiadnej verejnej časovej osi, ani v oznámeniach. Tvoji následovníci pochádzajúci z tejto domény budú odstránení.",
+  "confirmations.edit.confirm": "Uprav",
+  "confirmations.edit.message": "Úpravou teraz prepíšeš správu, ktorú práve zostavuješ. Si si istý/á, že chceš pokračovať?",
   "confirmations.logout.confirm": "Odhlás sa",
   "confirmations.logout.message": "Si si istý/á, že sa chceš odhlásiť?",
   "confirmations.mute.confirm": "Nevšímaj si",
@@ -509,10 +511,10 @@
   "report.statuses.title": "Sú k dispozícii príspevky podporujúce toto hlásenie?",
   "report.submit": "Odošli",
   "report.target": "Nahlás {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": "Tu sú tvoje možnosti kontrolovať, čo vidíš na Mastodone:",
+  "report.thanks.take_action_actionable": "Kým to vyhodnotíme, môžeš podniknúť kroky voči @{name}:",
   "report.thanks.title": "Nechceš to vidieť?",
-  "report.thanks.title_actionable": "Thanks for reporting, we'll look into this.",
+  "report.thanks.title_actionable": "Vďaka za nahlásenie, pozrieme sa na to.",
   "report.unfollow": "Nesleduj @{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",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index d706eac77..331d9aa20 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Imate ne shranjene spremembe za medijski opis ali predogled; jih želite kljub temu opustiti?",
   "confirmations.domain_block.confirm": "Blokiraj celotno domeno",
   "confirmations.domain_block.message": "Ali ste res, res prepričani, da želite blokirati celotno {domain}? V večini primerov je nekaj ciljnih blokiranj ali utišanj dovolj in boljše. Vsebino iz te domene ne boste videli v javnih časovnicah ali obvestilih. Vaši sledilci iz te domene bodo odstranjeni.",
+  "confirmations.edit.confirm": "Uredi",
+  "confirmations.edit.message": "Urejanje bo prepisalo sporočilo, ki ga trenutno sestavljate. Ali ste prepričani, da želite nadaljevati?",
   "confirmations.logout.confirm": "Odjava",
   "confirmations.logout.message": "Ali ste prepričani, da se želite odjaviti?",
   "confirmations.mute.confirm": "Utišanje",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 927cf7659..2c4c8cd89 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Keni ndryshime të paruajtura te përshkrimi ose paraparja e medias, të hidhen tej, sido qoftë?",
   "confirmations.domain_block.confirm": "Bllokoje krejt përkatësinë",
   "confirmations.domain_block.message": "Jeni i sigurt, shumë i sigurt se doni të bllokohet krejt {domain}? Në shumicën e rasteve, ndoca bllokime ose heshtime me synim të caktuar janë të mjaftueshme dhe të parapëlqyera. S’keni për të parë lëndë nga kjo përkatësi në ndonjë rrjedhë kohore publike, apo te njoftimet tuaja. Ndjekësit tuaj prej asaj përkatësie do të hiqen.",
+  "confirmations.edit.confirm": "Përpunojeni",
+  "confirmations.edit.message": "Përpunimi tani do të sjellë mbishkrim të mesazhit që po hartoni aktualisht. Jeni i sigurt se doni të vazhdohet?",
   "confirmations.logout.confirm": "Dilni",
   "confirmations.logout.message": "Jeni i sigurt se doni të dilet?",
   "confirmations.mute.confirm": "Heshtoje",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index a3ffb413c..66dd80b90 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -4,12 +4,12 @@
   "about.disclaimer": "Mastodon je besplatan softver otvorenog koda i zaštićeni znak kompanije Mastodon gGmbH.",
   "about.domain_blocks.no_reason_available": "Razlog nije naveden",
   "about.domain_blocks.preamble": "Mastodon vam generalno omogućava da vidite sadržaj i komunicirate sa korisnicima sa bilo kog drugog servera u fediverzumu. Ovo su izuzeci koji su napravljeni na ovom serveru.",
-  "about.domain_blocks.silenced.explanation": "U načelu nećete videti profile i sadržaj sa ovog servera, osim ako ga eksplicitno ne potražite ili se uključite tako što ćete ga pratiti.",
+  "about.domain_blocks.silenced.explanation": "Nećete videti profile i sadržaj sa ovog servera osim ako ih eksplicitno ne potražite ili ne zapratite neki profil sa servera.",
   "about.domain_blocks.silenced.title": "Ograničen",
-  "about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati ili razmenjivati, što onemogućava bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.",
+  "about.domain_blocks.suspended.explanation": "Podaci sa ovog servera neće se obrađivati, čuvati niti razmenjivati, što će onemogućiti bilo kakvu interakciju ili komunikaciju sa korisnicima sa ovog servera.",
   "about.domain_blocks.suspended.title": "Suspendovan",
   "about.not_available": "Ove informacije nisu dostupne na ovom serveru.",
-  "about.powered_by": "Decentralizovana društvena medija koju pokreće {mastodon}",
+  "about.powered_by": "Decentralizovana društvena mreža koju pokreće {mastodon}",
   "about.rules": "Pravila servera",
   "account.account_note_header": "Napomena",
   "account.add_or_remove_from_list": "Dodaj ili ukloni sa lista",
@@ -38,11 +38,11 @@
   "account.follows.empty": "Ovaj korisnik još uvek nikog ne prati.",
   "account.follows_you": "Prati vas",
   "account.go_to_profile": "Idi na profil",
-  "account.hide_reblogs": "Sakrij podržavanja od @{name}",
-  "account.joined_short": "Pridružio se",
+  "account.hide_reblogs": "Sakrij podržavanja @{name}",
+  "account.joined_short": "Datum pridruživanja",
   "account.languages": "Promeni pretplaćene jezike",
   "account.link_verified_on": "Vlasništvo nad ovom vezom je provereno {date}",
-  "account.locked_info": "Status privatnosti ovog naloga je podešen na zaključano. Vlasnik ručno pregleda ko ga može pratiti.",
+  "account.locked_info": "Status privatnosti ovog naloga je podešen na „zaključano”. Vlasnik ručno pregleda ko ga može pratiti.",
   "account.media": "Multimedija",
   "account.mention": "Pomeni korisnika @{name}",
   "account.moved_to": "Korisnik {name} je naznačio da je njegov novi nalog sada:",
@@ -91,7 +91,7 @@
   "bundle_column_error.routing.body": "Nije moguće pronaći traženu stranicu. Da li ste sigurni da je URL u adresnom polju ispravan?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Zatvori",
-  "bundle_modal_error.message": "Nešto nije bilo u redu pri učitavanju ove komponente.",
+  "bundle_modal_error.message": "Nešto je pošlo naopako tokom učitavanja ove komponente.",
   "bundle_modal_error.retry": "Pokušajte ponovo",
   "closed_registrations.other_server_instructions": "Pošto je Mastodon decentralizovan, možete napraviti nalog na drugom serveru ali i dalje komunicirati sa ovim.",
   "closed_registrations_modal.description": "Kreiranje naloga na {domain} trenutno nije moguće, ali imajte u vidu da vam ne treba nalog zasebno na {domain} da biste koristili Mastodon.",
@@ -162,8 +162,10 @@
   "confirmations.discard_edit_media.message": "Imate nesačuvane promene u opisu ili pregledu medija, da li ipak hoćete da ih odbacite?",
   "confirmations.domain_block.confirm": "Blokiraj ceo domen",
   "confirmations.domain_block.message": "Da li ste zaista sigurni da želite da blokirate ceo domen {domain}? U većini slučajeva, dovoljno je i poželjno nekoliko ciljanih blokiranja ili ignorisanja. Nećete videti sadržaj sa tog domena ni u jednoj javnoj vremenskoj liniji ili u vašim obaveštenjima. Vaši pratioci sa tog domena će biti uklonjeni.",
-  "confirmations.logout.confirm": "Odjavi se",
-  "confirmations.logout.message": "Da li se sigurni da želite da se odjavite?",
+  "confirmations.edit.confirm": "Uredi",
+  "confirmations.edit.message": "Uređivanjem će se obrisati poruka koju trenutno sastavljate. Da li ste sigurni da želite da nastavite?",
+  "confirmations.logout.confirm": "Odjava",
+  "confirmations.logout.message": "Da li ste sigurni da želite da se odjavite?",
   "confirmations.mute.confirm": "Ignoriši",
   "confirmations.mute.explanation": "Ovo će sakriti objave od korisnika i objave koje ga pominju, ali će mu i dalje biti dozvoljeno da vidi vaše objave i da vas prati.",
   "confirmations.mute.message": "Da li stvarno želite da ignorišete korisnika {name}?",
@@ -187,13 +189,13 @@
   "disabled_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen.",
   "dismissable_banner.community_timeline": "Ovo su najnovije javne objave ljudi čije naloge hostuje {domain}.",
   "dismissable_banner.dismiss": "Odbaci",
-  "dismissable_banner.explore_links": "O ovim vestima upravo sada razgovaraju ljudi na ovom i drugim serverima decentralizovane mreže.",
+  "dismissable_banner.explore_links": "O ovim vestima trenutno razgovaraju ljudi na ovom i drugim serverima decentralizovane mreže.",
   "dismissable_banner.explore_statuses": "Ove objave sa ovog i drugih servera u decentralizovanoj mreži postaju sve popularnije na ovom serveru.",
   "dismissable_banner.explore_tags": "Ove heš oznake postaju sve popularnije među ljudima na ovom i drugim serverima decentralizovane mreže.",
   "dismissable_banner.public_timeline": "Ovo su najnovije javne objave ljudi na ovom i drugim serverima decentralizovane mreže za koje ovaj server zna.",
   "embed.instructions": "Ugradite ovu objavu na svoj veb sajt kopiranjem koda ispod.",
   "embed.preview": "Evo kako će to izgledati:",
-  "emoji_button.activity": "Aktivnost",
+  "emoji_button.activity": "Aktivnosti",
   "emoji_button.clear": "Obriši",
   "emoji_button.custom": "Prilagođeno",
   "emoji_button.flags": "Zastavice",
@@ -220,24 +222,24 @@
   "empty_column.favourited_statuses": "Još uvek nemate objava označenih kao omiljene. Kada označite neku, pojaviće se ovde.",
   "empty_column.favourites": "Niko još nije označio ovu objavu kao omiljenu. Kada neko to uradi, pojaviće se ovde.",
   "empty_column.follow_recommendations": "Izgleda da ne mogu da se generišu bilo kakvi predlozi za vas. Možete pokušati da koristite pretragu kako biste potražili ljude koje možda poznajete ili istražili popularne heš oznake.",
-  "empty_column.follow_requests": "Još uvek nemate zahteva za praćenje. Kada primite zahtev, pojaviće se ovde.",
-  "empty_column.followed_tags": "Još uvek niste zapratili nijednu heš oznaku. Kada to uradite, one će se pojaviti ovde.",
+  "empty_column.follow_requests": "Još uvek nemate nijedan zahtev za praćenje. Kada primite zahtev, on će se pojaviti ovde.",
+  "empty_column.followed_tags": "Još uvek niste zapratili nijednu heš oznaku. Kada to uradite, one će se pojaviti ovde.",
   "empty_column.hashtag": "Još uvek nema ničega u ovoj heš oznaci.",
   "empty_column.home": "Vaša početna vremenska linija je prazna! Pratite više ljudi da biste je popunili. {suggestions}",
   "empty_column.home.suggestions": "Pogledajte neke predloge",
   "empty_column.list": "U ovoj listi još nema ničega. Kada članovi ove liste objave nešto novo, pojaviće se ovde.",
-  "empty_column.lists": "Još uvek nemate nijednu listu. Kada napravite jednu, pojaviće se ovde.",
+  "empty_column.lists": "Još uvek nemate nijednu listu. Kada napravite jednu, ona će se pojaviti ovde.",
   "empty_column.mutes": "Još uvek ne ignorišete nijednog korisnika.",
   "empty_column.notifications": "Još uvek nemate nikakva obaveštenja. Kada drugi ljudi budu u interakciji sa vama, videćete to ovde.",
   "empty_column.public": "Ovde nema ničega! Napišite nešto javno ili ručno pratite korisnike sa drugih servera da biste ovo popunili",
   "error.unexpected_crash.explanation": "Zbog greške u našem kodu ili problema sa kompatibilnošću pregledača, ova stranica se nije mogla pravilno prikazati.",
   "error.unexpected_crash.explanation_addons": "Ova stranica se nije mogla pravilno prikazati. Ovu grešku verovatno uzrokuju dodaci pregledača ili alati za automatsko prevođenje.",
   "error.unexpected_crash.next_steps": "Pokušajte da osvežite stranicu. Ako to ne pomogne, možda ćete i dalje moći da koristite Mastodon putem drugog pregledača ili matične aplikacije.",
-  "error.unexpected_crash.next_steps_addons": "Pokušajte da ih onemogućite i osvežite stranicu. Ako to ne pomogne, možda ćete i dalje moći da koristite Mastodon preko drugog pregledača ili matične aplikacije.",
+  "error.unexpected_crash.next_steps_addons": "Pokušajte da ih onemogućite i osvežite stranicu. Ako to ne pomogne, možete da nastavite da koristite Mastodon korišćenjem drugog pregledača ili matične aplikacije.",
   "errors.unexpected_crash.copy_stacktrace": "Kopiraj „stacktrace” u klipbord",
   "errors.unexpected_crash.report_issue": "Prijavi problem",
   "explore.search_results": "Rezultati pretrage",
-  "explore.suggested_follows": "Za tebe",
+  "explore.suggested_follows": "Za Vas",
   "explore.title": "Istraži",
   "explore.trending_links": "Vesti",
   "explore.trending_statuses": "Objave",
@@ -249,7 +251,7 @@
   "filter_modal.added.review_and_configure": "Za pregled i dalju konfiguraciju ove kategorije filtera, idite na {settings_link}.",
   "filter_modal.added.review_and_configure_title": "Podešavanja filtera",
   "filter_modal.added.settings_link": "stranica podešavanja",
-  "filter_modal.added.short_explanation": "Ova objava je dodata u sledeću kategoriju filtera: {title}.",
+  "filter_modal.added.short_explanation": "Ova objava je dodata u sledeću filter kategoriju: {title}.",
   "filter_modal.added.title": "Filter je dodat!",
   "filter_modal.select_filter.context_mismatch": "ne odnosi se na ovaj kontekst",
   "filter_modal.select_filter.expired": "isteklo",
@@ -264,7 +266,7 @@
   "follow_request.authorize": "Odobri",
   "follow_request.reject": "Odbij",
   "follow_requests.unlocked_explanation": "Iako vaš nalog nije zaključan, osoblje {domain} smatra da biste možda želeli da ručno pregledate zahteve za praćenje sa ovih naloga.",
-  "followed_tags": "Praćene heš oznake",
+  "followed_tags": "Praćene heš oznake",
   "footer.about": "Osnovni podaci",
   "footer.directory": "Direktorijum profila",
   "footer.get_app": "Preuzmite aplikaciju",
@@ -280,13 +282,13 @@
   "hashtag.column_header.tag_mode.none": "bez {additional}",
   "hashtag.column_settings.select.no_options_message": "Nisu pronađeni predlozi",
   "hashtag.column_settings.select.placeholder": "Unesite heš oznake…",
-  "hashtag.column_settings.tag_mode.all": "Sve ove",
+  "hashtag.column_settings.tag_mode.all": "Sve",
   "hashtag.column_settings.tag_mode.any": "Bilo koje od ovih",
   "hashtag.column_settings.tag_mode.none": "Nijedan od ovih",
   "hashtag.column_settings.tag_toggle": "Uključi dodatne oznake za ovu kolonu",
-  "hashtag.follow": "Prati heš oznaku",
+  "hashtag.follow": "Zaprati heš oznaku",
   "hashtag.unfollow": "Otprati heš oznaku",
-  "home.column_settings.basic": "Osnovno",
+  "home.column_settings.basic": "Osnovna",
   "home.column_settings.show_reblogs": "Prikaži podržavanja",
   "home.column_settings.show_replies": "Prikaži odgovore",
   "home.hide_announcements": "Sakrij najave",
@@ -300,7 +302,7 @@
   "interaction_modal.other_server_instructions": "Kopirajte i nalepite ovu URL adresu u polje pretrage svoje omiljene Mastodon aplikacije ili veb okruženje svog Mastodon servera.",
   "interaction_modal.preamble": "Pošto je Mastodon decentralizovan, možete koristiti svoj postojeći nalog koji hostuje drugi Mastodon server ili kompatibilna platforma ako nemate nalog na ovom.",
   "interaction_modal.title.favourite": "Označi objavu korisnika {name} kao omiljenu",
-  "interaction_modal.title.follow": "Prati {name}",
+  "interaction_modal.title.follow": "Zaprati {name}",
   "interaction_modal.title.reblog": "Podrži objavu korisnika {name}",
   "interaction_modal.title.reply": "Odgovori na objavu korisnika {name}",
   "intervals.full.days": "{number, plural, one {# dan} few {# dana} other {# dana}}",
@@ -354,10 +356,10 @@
   "lists.edit.submit": "Promeni naslov",
   "lists.new.create": "Dodaj listu",
   "lists.new.title_placeholder": "Naslov nove liste",
-  "lists.replies_policy.followed": "Svaki praćeni korisnik",
-  "lists.replies_policy.list": "Članovi liste",
-  "lists.replies_policy.none": "Niko",
-  "lists.replies_policy.title": "Prikaži odgovore na:",
+  "lists.replies_policy.followed": "Svakom praćenom korisniku",
+  "lists.replies_policy.list": "Članovima liste",
+  "lists.replies_policy.none": "Nikome",
+  "lists.replies_policy.title": "Prikaži odgovore:",
   "lists.search": "Pretraži među ljudima koje pratite",
   "lists.subheading": "Vaše liste",
   "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}",
@@ -368,7 +370,7 @@
   "moved_to_account_banner.text": "Vaš nalog {disabledAccount} je trenutno onemogućen jer ste prešli na {movedToAccount}.",
   "mute_modal.duration": "Trajanje",
   "mute_modal.hide_notifications": "Sakriti obaveštenja od ovog korisnika?",
-  "mute_modal.indefinite": "Neodređen",
+  "mute_modal.indefinite": "Neodređeno",
   "navigation_bar.about": "Osnovni podaci",
   "navigation_bar.blocks": "Blokirani korisnici",
   "navigation_bar.bookmarks": "Obeleživači",
@@ -382,7 +384,7 @@
   "navigation_bar.favourites": "Omiljeno",
   "navigation_bar.filters": "Ignorisane reči",
   "navigation_bar.follow_requests": "Zahtevi za praćenje",
-  "navigation_bar.followed_tags": "Praćene heš oznake",
+  "navigation_bar.followed_tags": "Praćene heš oznake",
   "navigation_bar.follows_and_followers": "Praćenja i pratioci",
   "navigation_bar.lists": "Liste",
   "navigation_bar.logout": "Odjava",
@@ -393,9 +395,9 @@
   "navigation_bar.public_timeline": "Združena vremenska linija",
   "navigation_bar.search": "Pretraga",
   "navigation_bar.security": "Bezbednost",
-  "not_signed_in_indicator.not_signed_in": "Morate da se prijavite da pristupite ovom resursu.",
-  "notification.admin.report": "{name} je prijavio {target}",
-  "notification.admin.sign_up": "{name} se registrovao",
+  "not_signed_in_indicator.not_signed_in": "Morate da se prijavite da biste pristupili ovom resursu.",
+  "notification.admin.report": "{name} je prijavio/-la {target}",
+  "notification.admin.sign_up": "{name} se registrovao/-la",
   "notification.favourite": "{name} je označio vašu objavu kao omiljenu",
   "notification.follow": "{name} vas je zapratio",
   "notification.follow_request": "{name} je zatražio da vas prati",
@@ -412,7 +414,7 @@
   "notifications.column_settings.alert": "Obaveštenja na radnoj površini",
   "notifications.column_settings.favourite": "Omiljeni:",
   "notifications.column_settings.filter_bar.advanced": "Prikaži sve kategorije",
-  "notifications.column_settings.filter_bar.category": "Traka za brzi filter",
+  "notifications.column_settings.filter_bar.category": "Traka za brzo filtriranje",
   "notifications.column_settings.filter_bar.show_bar": "Prikaži traku sa filterima",
   "notifications.column_settings.follow": "Novi pratioci:",
   "notifications.column_settings.follow_request": "Novi zahtevi za praćenje:",
@@ -436,13 +438,13 @@
   "notifications.grant_permission": "Odobri dozvolu.",
   "notifications.group": "{count} obaveštenja",
   "notifications.mark_as_read": "Označi svako obaveštenje kao pročitano",
-  "notifications.permission_denied": "Obaveštenja na radnoj površini nisu dostupna zbog prethodno odbijenog zahteva za dozvolom pregledača",
+  "notifications.permission_denied": "Obaveštenja na radnoj površini nisu dostupna zbog prethodno odbijenog zahteva za dozvolu pregledača",
   "notifications.permission_denied_alert": "Obaveštenja na radnoj površini ne mogu biti omogućena, jer je dozvola pregledača ranije bila odbijena",
   "notifications.permission_required": "Obaveštenja na radnoj površini nisu dostupna jer potrebna dozvola nije dodeljena.",
   "notifications_permission_banner.enable": "Omogućiti obaveštenja na radnoj površini",
   "notifications_permission_banner.how_to_control": "Da biste primali obaveštenja kada Mastodon nije otvoren, omogućite obaveštenja na radnoj površini. Kada su obaveštenja na radnoj površini omogućena vrste interakcija koje ona generišu mogu se podešavati pomoću dugmeta {icon}.",
   "notifications_permission_banner.title": "Nikada ništa ne propustite",
-  "picture_in_picture.restore": "Vrati to nazad",
+  "picture_in_picture.restore": "Vrati nazad",
   "poll.closed": "Zatvoreno",
   "poll.refresh": "Osveži",
   "poll.total_people": "{count, plural, one {# osoba} few {# osobe} other {# osoba}}",
@@ -453,13 +455,13 @@
   "poll_button.add_poll": "Dodaj anketu",
   "poll_button.remove_poll": "Ukloni anketu",
   "privacy.change": "Promeni privatnost objave",
-  "privacy.direct.long": "Vidljivo samo za pomenute korisnike",
+  "privacy.direct.long": "Vidljivo samo pomenutim korisnicima",
   "privacy.direct.short": "Samo pomenute osobe",
-  "privacy.private.long": "Vidljivo samo za pratioce",
-  "privacy.private.short": "Samo pratioci",
+  "privacy.private.long": "Vidljivo samo pratiocima",
+  "privacy.private.short": "Samo pratiocima",
   "privacy.public.long": "Vidljivo za sve",
   "privacy.public.short": "Javno",
-  "privacy.unlisted.long": "Vidljivo za sve, ali isključeno iz funkcije otkrivanja",
+  "privacy.unlisted.long": "Vidljivo svima, ali isključeno iz funkcija otkrivanja",
   "privacy.unlisted.short": "Neizlistano",
   "privacy_policy.last_updated": "Poslednje ažuriranje {date}",
   "privacy_policy.title": "Politika privatnosti",
@@ -479,34 +481,34 @@
   "relative_time.today": "danas",
   "reply_indicator.cancel": "Otkaži",
   "report.block": "Blokiraj",
-  "report.block_explanation": "Nećete videti objave korisnika. Ni on neće videti vaše objave niti će moći da vas prati. Takođe može da zna da je blokiran.",
+  "report.block_explanation": "Nećete videti objave korisnika. Ni on neće videti Vaše objave niti će moći da Vas prati. Takođe će moći da sazna da je blokiran.",
   "report.categories.other": "Ostalo",
   "report.categories.spam": "Spam",
   "report.categories.violation": "Sadržaj krši jedno ili više pravila servera",
   "report.category.subtitle": "Odaberite najpribližnije",
-  "report.category.title": "Recite nam šta je problem sa ovim {type}",
-  "report.category.title_account": "profilom",
+  "report.category.title": "Recite nam šta je problem sa {type}",
+  "report.category.title_account": "ovim profilom",
   "report.category.title_status": "objavom",
   "report.close": "Gotovo",
-  "report.comment.title": "Da li ima nešto dodatno što treba da znamo?",
+  "report.comment.title": "Da li ima još nešto što biste hteli da nam date do znanja?",
   "report.forward": "Proslediti {target}",
   "report.forward_hint": "Nalog je sa drugog servera. Poslati anonimnu kopiju prijave i tamo?",
   "report.mute": "Ignoriši",
-  "report.mute_explanation": "Nećete videti objave korisnika. On i i dalje može da vas prati i vidi vaše objave i neće znati da je ignorisan.",
+  "report.mute_explanation": "Nećete videti objave korisnika. On će i dalje moći da Vas prati i vidi Vaše objave i neće znati da je ignorisan.",
   "report.next": "Sledeće",
   "report.placeholder": "Dodatni komentari",
   "report.reasons.dislike": "Ne sviđa mi se",
-  "report.reasons.dislike_description": "Ovo nije nešto što želiš da vidite",
+  "report.reasons.dislike_description": "Ovo nije nešto što želite da vidite",
   "report.reasons.other": "Nešto drugo",
   "report.reasons.other_description": "Problem se ne uklapa u druge kategorije",
   "report.reasons.spam": "Ovo je spam",
   "report.reasons.spam_description": "Zlonamerne veze, lažno angažovanje ili odgovori koji se ponavljaju",
   "report.reasons.violation": "Krši pravila servera",
-  "report.reasons.violation_description": "Svesni ste da krši neka određena pravila",
-  "report.rules.subtitle": "Izaberi sve što važi",
+  "report.reasons.violation_description": "Svesni ste da krši određena pravila",
+  "report.rules.subtitle": "Izaberite sva pravila koja su prekršena",
   "report.rules.title": "Koja pravila su prekršena?",
-  "report.statuses.subtitle": "Izaberi sve što važi",
-  "report.statuses.title": "Da li postoje bilo kakve objave koje podržavaju ovu prijavu?",
+  "report.statuses.subtitle": "Izaberite sve što važi",
+  "report.statuses.title": "Ima li bilo kakvih objava koje potkrepljuju ovu prijavu?",
   "report.submit": "Pošalji",
   "report.target": "Prijavljujem {target}",
   "report.thanks.take_action": "Ovo su Vaše opcije da kontrolišete šta vidite na Mastodon-u:",
@@ -534,7 +536,7 @@
   "search_results.nothing_found": "Nije moguće pronaći ništa za ove termine za pretragu",
   "search_results.statuses": "Objave",
   "search_results.statuses_fts_disabled": "Pretraga objava po sadržaju nije omogućena na ovom Mastodon serveru.",
-  "search_results.title": "Pretraži {q}",
+  "search_results.title": "Traži {q}",
   "search_results.total": "{count, number} {count, plural, one {rezultat} few {rezultata} other {rezultata}}",
   "server_banner.about_active_users": "Ljudi koji su koristili ovaj server u prethodnih 30 dana (mesečno aktivnih korisnika)",
   "server_banner.active_users": "aktivnih korisnika",
@@ -542,8 +544,8 @@
   "server_banner.introduction": "{domain} je deo decentralizovane društvene mreže koju pokreće {mastodon}.",
   "server_banner.learn_more": "Saznajte više",
   "server_banner.server_stats": "Statistike servera:",
-  "sign_in_banner.create_account": "Napravi nalog",
-  "sign_in_banner.sign_in": "Prijavi se",
+  "sign_in_banner.create_account": "Napravite nalog",
+  "sign_in_banner.sign_in": "Prijavite se",
   "sign_in_banner.text": "Prijavite se da biste pratili profile ili heš oznake, označili objave kao omiljene, delili i odgovarali na njih. Takođe možete komunicirati sa svog naloga na drugom serveru.",
   "status.admin_account": "Otvori moderatorsko okruženje za @{name}",
   "status.admin_domain": "Otvori moderatorsko okruženje za {domain}",
@@ -555,7 +557,7 @@
   "status.copy": "Kopiraj vezu u objavu",
   "status.delete": "Izbriši",
   "status.detailed_status": "Detaljan prikaz razgovora",
-  "status.direct": "Direktna poruka @{name}",
+  "status.direct": "Pošalji poruku @{name}",
   "status.edit": "Uredi",
   "status.edited": "Uređeno {date}",
   "status.edited_x_times": "Uređeno {count, plural, one {{count} put} other {{count} puta}}",
@@ -584,7 +586,7 @@
   "status.remove_bookmark": "Ukloni obeleživač",
   "status.replied_to": "Odgovor za {name}",
   "status.reply": "Odgovori",
-  "status.replyAll": "Odgovori na diskusiju",
+  "status.replyAll": "Odgovori na niz",
   "status.report": "Prijavi @{name}",
   "status.sensitive_warning": "Osetljiv sadržaj",
   "status.share": "Podeli",
@@ -599,7 +601,7 @@
   "status.uncached_media_warning": "Nije dostupno",
   "status.unmute_conversation": "Ne ignoriši razgovor",
   "status.unpin": "Otkači sa profila",
-  "subscribed_languages.lead": "Samo objave na označenim jezicima će se pojavljivati na početnoj liniji i na listama posle ove izmene. Odaberite ništa da primate objave na svim jezicima.",
+  "subscribed_languages.lead": "Samo objave na označenim jezicima će se pojavljivati na početnoj liniji i na listama posle ove izmene. Kada nijedan jezik nije izabran, primaćete objave na svim jezicima.",
   "subscribed_languages.save": "Sačuvaj izmene",
   "subscribed_languages.target": "Promeni jezike na koje je {target} prijavljen",
   "suggestions.dismiss": "Odbaci predlog",
@@ -615,9 +617,9 @@
   "time_remaining.seconds": "Ostalo {number, plural, one {# sekund} few {# sekunde} other {# sekundi}}",
   "timeline_hint.remote_resource_not_displayed": "{resource} sa drugih servera se ne prikazuju.",
   "timeline_hint.resources.followers": "Pratioci",
-  "timeline_hint.resources.follows": "Praćeni",
+  "timeline_hint.resources.follows": "Praćenja",
   "timeline_hint.resources.statuses": "Starije objave",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} osoba} few {{counter} osobe} other {{counter} osoba}} u proteklih {days, plural, one {dan} few {{days} dana} other {{days} dana}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} osoba} few {{counter} osobe} other {{counter} osoba}} u proteklih {days, plural, one {dan} other {{days} dana}}",
   "trends.trending_now": "U trendu sada",
   "ui.beforeunload": "Vaš nacrt će biti izgubljen ako napustite Mastodon.",
   "units.short.billion": "{count} mlrd.",
@@ -626,9 +628,9 @@
   "upload_area.title": "Prevucite i otpustite za otpremanje",
   "upload_button.label": "Dodaj slike, video ili audio datoteku",
   "upload_error.limit": "Dostignuto je ograničenje za otpremanje datoteka.",
-  "upload_error.poll": "Otpremanje datoteka nije dozvoljeno sa anketama.",
-  "upload_form.audio_description": "Opišite za osobe sa oštećenim sluhom",
-  "upload_form.description": "Opišite za osobe sa oštećenim vidom",
+  "upload_error.poll": "Otpremanje datoteka nije dozvoljeno kod anketa.",
+  "upload_form.audio_description": "Dodajte opis za osobe sa oštećenim sluhom",
+  "upload_form.description": "Dodajte opis za osobe sa oštećenim vidom",
   "upload_form.description_missing": "Nema dodatog opisa",
   "upload_form.edit": "Uredi",
   "upload_form.thumbnail": "Promeni sličicu",
@@ -639,8 +641,8 @@
   "upload_modal.applying": "Primena…",
   "upload_modal.choose_image": "Odaberite sliku",
   "upload_modal.description_placeholder": "Ljubazni fenjerdžija čađavog lica hoće da mi pokaže štos",
-  "upload_modal.detect_text": "Otkrij tekst sa slike",
-  "upload_modal.edit_media": "Uredi miltimediju",
+  "upload_modal.detect_text": "Pronađi tekst sa slike",
+  "upload_modal.edit_media": "Uredi multimediju",
   "upload_modal.hint": "Kliknite ili prevucite kružić na pregledu za izbor tačke fokusa koja će uvek biti vidljiva na svim sličicama.",
   "upload_modal.preparing_ocr": "Priprema OCR-a…",
   "upload_modal.preview_label": "Pregled ({ratio})",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index ea39d230a..28d6126bb 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -4,12 +4,12 @@
   "about.disclaimer": "Mastodon је бесплатан софтвер отвореног кода и заштићени знак компаније Mastodon gGmbH.",
   "about.domain_blocks.no_reason_available": "Разлог није наведен",
   "about.domain_blocks.preamble": "Мастодон вам генерално омогућава да видите садржај и комуницирате са корисницима са било ког другог сервера у федиверзуму. Ово су изузеци који су направљени на овом серверу.",
-  "about.domain_blocks.silenced.explanation": "У начелу нећете видети профиле и садржај са овог сервера, осим ако га експлицитно не потражите или се укључите тако што ћете га пратити.",
+  "about.domain_blocks.silenced.explanation": "Нећете видети профиле и садржај са овог сервера осим ако их експлицитно не потражите или не запратите неки профил са сервера.",
   "about.domain_blocks.silenced.title": "Ограничен",
-  "about.domain_blocks.suspended.explanation": "Подаци са овог сервера неће се обрађивати, чувати или размењивати, што онемогућава било какву интеракцију или комуникацију са корисницима са овог сервера.",
+  "about.domain_blocks.suspended.explanation": "Подаци са овог сервера неће се обрађивати, чувати нити размењивати, што ће онемогућити било какву интеракцију или комуникацију са корисницима са овог сервера.",
   "about.domain_blocks.suspended.title": "Суспендован",
   "about.not_available": "Ове информације нису доступне на овом серверу.",
-  "about.powered_by": "Децентрализована друштвена медија коју покреће {mastodon}",
+  "about.powered_by": "Децентрализована друштвена мрежа коју покреће {mastodon}",
   "about.rules": "Правила сервера",
   "account.account_note_header": "Напомена",
   "account.add_or_remove_from_list": "Додај или уклони са листа",
@@ -38,11 +38,11 @@
   "account.follows.empty": "Овај корисник још увек никог не прати.",
   "account.follows_you": "Прати вас",
   "account.go_to_profile": "Иди на профил",
-  "account.hide_reblogs": "Сакриј подржавања од @{name}",
-  "account.joined_short": "Придружио се",
+  "account.hide_reblogs": "Сакриј подржавања @{name}",
+  "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} је назначио да је његов нови налог сада:",
@@ -91,7 +91,7 @@
   "bundle_column_error.routing.body": "Није могуће пронаћи тражену страницу. Да ли сте сигурни да је URL у адресном пољу исправан?",
   "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Затвори",
-  "bundle_modal_error.message": "Нешто није било у реду при учитавању ове компоненте.",
+  "bundle_modal_error.message": "Нешто је пошло наопако током учитавања ове компоненте.",
   "bundle_modal_error.retry": "Покушајте поново",
   "closed_registrations.other_server_instructions": "Пошто је Mastodon децентрализован, можете направити налог на другом серверу али и даље комуницирати са овим.",
   "closed_registrations_modal.description": "Креирање налога на {domain} тренутно није могуће, али имајте у виду да вам не треба налог засебно на {domain} да бисте користили Mastodon.",
@@ -129,7 +129,7 @@
   "compose_form.direct_message_warning_learn_more": "Сазнајте више",
   "compose_form.encryption_warning": "Објаве на Mastodon-у нису потпуно шифроване. Немојте делити никакве осетљиве информације преко Mastodon-а.",
   "compose_form.hashtag_warning": "Ова објава неће бити наведена ни под једном хеш ознаком јер није јавна. Само јавне објаве се могу претраживати по хеш ознакама.",
-  "compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да вас прати и да види ваше објаве намењене само за ваше пратиоце.",
+  "compose_form.lock_disclaimer": "Ваш налог није {locked}. Свако може да Вас запрати и да види објаве намењене само Вашим пратиоцима.",
   "compose_form.lock_disclaimer.lock": "закључан",
   "compose_form.placeholder": "О чему размишљате?",
   "compose_form.poll.add_option": "Додајте избор",
@@ -162,8 +162,10 @@
   "confirmations.discard_edit_media.message": "Имате несачуване промене у опису или прегледу медија, да ли ипак хоћете да их одбаците?",
   "confirmations.domain_block.confirm": "Блокирај цео домен",
   "confirmations.domain_block.message": "Да ли сте заиста сигурни да желите да блокирате цео домен {domain}? У већини случајева, довољно је и пожељно неколико циљаних блокирања или игнорисања. Нећете видети садржај са тог домена ни у једној јавној временској линији или у вашим обавештењима. Ваши пратиоци са тог домена ће бити уклоњени.",
-  "confirmations.logout.confirm": "Одјави се",
-  "confirmations.logout.message": "Да ли се сигурни да желите да се одјавите?",
+  "confirmations.edit.confirm": "Уреди",
+  "confirmations.edit.message": "Уређивањем ће се обрисати порука коју тренутно састављате. Да ли сте сигурни да желите да наставите?",
+  "confirmations.logout.confirm": "Одјава",
+  "confirmations.logout.message": "Да ли сте сигурни да желите да се одјавите?",
   "confirmations.mute.confirm": "Игнориши",
   "confirmations.mute.explanation": "Ово ће сакрити објаве од корисника и објаве које га помињу, али ће му и даље бити дозвољено да види ваше објаве и да вас прати.",
   "confirmations.mute.message": "Да ли стварно желите да игноришете корисника {name}?",
@@ -187,13 +189,13 @@
   "disabled_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен.",
   "dismissable_banner.community_timeline": "Ово су најновије јавне објаве људи чије налоге хостује {domain}.",
   "dismissable_banner.dismiss": "Одбаци",
-  "dismissable_banner.explore_links": "О овим вестима управо сада разговарају људи на овом и другим серверима децентрализоване мреже.",
+  "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.activity": "Активности",
   "emoji_button.clear": "Обриши",
   "emoji_button.custom": "Прилагођено",
   "emoji_button.flags": "Заставице",
@@ -220,24 +222,24 @@
   "empty_column.favourited_statuses": "Још увек немате објава означених као омиљене. Када означите неку, појавиће се овде.",
   "empty_column.favourites": "Нико још није означио ову објаву као омиљену. Када неко то уради, појавиће се овде.",
   "empty_column.follow_recommendations": "Изгледа да не могу да се генеришу било какви предлози за вас. Можете покушати да користите претрагу како бисте потражили људе које можда познајете или истражили популарне хеш ознаке.",
-  "empty_column.follow_requests": "Још увек немате захтева за праћење. Када примите захтев, појавиће се овде.",
+  "empty_column.follow_requests": "Још увек немате ниједан захтев за праћење. Када примите захтев, он ће се појавити овде.",
   "empty_column.followed_tags": "Још увек нисте запратили ниједну хеш ознаку. Када то урадите, оне ће се појавити овде.",
   "empty_column.hashtag": "Још увек нема ничега у овој хеш ознаци.",
   "empty_column.home": "Ваша почетна временска линија је празна! Пратите више људи да бисте је попунили. {suggestions}",
   "empty_column.home.suggestions": "Погледајте неке предлоге",
   "empty_column.list": "У овој листи још нема ничега. Када чланови ове листе објаве нешто ново, појавиће се овде.",
-  "empty_column.lists": "Још увек немате ниједну листу. Када направите једну, појавиће се овде.",
+  "empty_column.lists": "Још увек немате ниједну листу. Када направите једну, она ће се појавити овде.",
   "empty_column.mutes": "Још увек не игноришете ниједног корисника.",
   "empty_column.notifications": "Још увек немате никаква обавештења. Када други људи буду у интеракцији са вама, видећете то овде.",
   "empty_column.public": "Овде нема ничега! Напишите нешто јавно или ручно пратите кориснике са других сервера да бисте ово попунили",
   "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": "Резултати претраге",
-  "explore.suggested_follows": "За тебе",
+  "explore.suggested_follows": "За Вас",
   "explore.title": "Истражи",
   "explore.trending_links": "Вести",
   "explore.trending_statuses": "Објаве",
@@ -249,7 +251,7 @@
   "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": "истекло",
@@ -280,13 +282,13 @@
   "hashtag.column_header.tag_mode.none": "без {additional}",
   "hashtag.column_settings.select.no_options_message": "Нису пронађени предлози",
   "hashtag.column_settings.select.placeholder": "Унесите хеш ознаке…",
-  "hashtag.column_settings.tag_mode.all": "Све оve",
+  "hashtag.column_settings.tag_mode.all": "Све",
   "hashtag.column_settings.tag_mode.any": "Било које од ових",
   "hashtag.column_settings.tag_mode.none": "Ниједан од ових",
   "hashtag.column_settings.tag_toggle": "Укључи додатне ознаке за ову колону",
-  "hashtag.follow": "Прати хеш ознаку",
+  "hashtag.follow": "Запрати хеш ознаку",
   "hashtag.unfollow": "Отпрати хеш ознаку",
-  "home.column_settings.basic": "Основно",
+  "home.column_settings.basic": "Основна",
   "home.column_settings.show_reblogs": "Прикажи подржавања",
   "home.column_settings.show_replies": "Прикажи одговоре",
   "home.hide_announcements": "Сакриј најаве",
@@ -300,7 +302,7 @@
   "interaction_modal.other_server_instructions": "Копирајте и налепите ову URL адресу у поље претраге своје омиљене Mastodon апликације или веб окружење свог Mastodon сервера.",
   "interaction_modal.preamble": "Пошто је Mastodon децентрализован, можете користити свој постојећи налог који хостује други Mastodon сервер или компатибилна платформа ако немате налог на овом.",
   "interaction_modal.title.favourite": "Означи објаву корисника {name} као омиљену",
-  "interaction_modal.title.follow": "Прати {name}",
+  "interaction_modal.title.follow": "Запрати {name}",
   "interaction_modal.title.reblog": "Подржи објаву корисника {name}",
   "interaction_modal.title.reply": "Одговори на објаву корисника {name}",
   "intervals.full.days": "{number, plural, one {# дан} few {# дана} other {# дана}}",
@@ -354,10 +356,10 @@
   "lists.edit.submit": "Промени наслов",
   "lists.new.create": "Додај листу",
   "lists.new.title_placeholder": "Наслов нове листе",
-  "lists.replies_policy.followed": "Сваки праћени корисник",
-  "lists.replies_policy.list": "Чланови листе",
-  "lists.replies_policy.none": "Нико",
-  "lists.replies_policy.title": "Прикажи одговоре на:",
+  "lists.replies_policy.followed": "Сваком праћеном кориснику",
+  "lists.replies_policy.list": "Члановима листе",
+  "lists.replies_policy.none": "Никоме",
+  "lists.replies_policy.title": "Прикажи одговоре:",
   "lists.search": "Претражи међу људима које пратите",
   "lists.subheading": "Ваше листе",
   "load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}",
@@ -368,7 +370,7 @@
   "moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.",
   "mute_modal.duration": "Трајање",
   "mute_modal.hide_notifications": "Сакрити обавештења од овог корисника?",
-  "mute_modal.indefinite": "Неодређен",
+  "mute_modal.indefinite": "Неодређено",
   "navigation_bar.about": "Основни подаци",
   "navigation_bar.blocks": "Блокирани корисници",
   "navigation_bar.bookmarks": "Обележивачи",
@@ -393,9 +395,9 @@
   "navigation_bar.public_timeline": "Здружена временска линија",
   "navigation_bar.search": "Претрага",
   "navigation_bar.security": "Безбедност",
-  "not_signed_in_indicator.not_signed_in": "Морате да се пријавите да приступите овом ресурсу.",
-  "notification.admin.report": "{name} је пријавио {target}",
-  "notification.admin.sign_up": "{name} се регистровао",
+  "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} је затражио да вас прати",
@@ -412,7 +414,7 @@
   "notifications.column_settings.alert": "Обавештења на радној површини",
   "notifications.column_settings.favourite": "Омиљени:",
   "notifications.column_settings.filter_bar.advanced": "Прикажи све категорије",
-  "notifications.column_settings.filter_bar.category": "Трака за брзи филтер",
+  "notifications.column_settings.filter_bar.category": "Трака за брзо филтрирање",
   "notifications.column_settings.filter_bar.show_bar": "Прикажи траку са филтерима",
   "notifications.column_settings.follow": "Нови пратиоци:",
   "notifications.column_settings.follow_request": "Нови захтеви за праћење:",
@@ -436,13 +438,13 @@
   "notifications.grant_permission": "Одобри дозволу.",
   "notifications.group": "{count} обавештења",
   "notifications.mark_as_read": "Означи свако обавештење као прочитано",
-  "notifications.permission_denied": "Обавештења на радној површини нису доступна због претходно одбијеног захтева за дозволом прегледача",
+  "notifications.permission_denied": "Обавештења на радној површини нису доступна због претходно одбијеног захтева за дозволу прегледача",
   "notifications.permission_denied_alert": "Обавештења на радној површини не могу бити омогућена, јер је дозвола прегледача раније била одбијена",
   "notifications.permission_required": "Обавештења на радној површини нису доступна јер потребна дозвола није додељена.",
   "notifications_permission_banner.enable": "Омогућити обавештења на радној површини",
   "notifications_permission_banner.how_to_control": "Да бисте примали обавештења када Mastodon није отворен, омогућите обавештења на радној површини. Kада су обавештења на радној површини омогућена врсте интеракција које она генеришу могу се подешавати помоћу дугмета {icon}.",
   "notifications_permission_banner.title": "Никада ништа не пропустите",
-  "picture_in_picture.restore": "Врати то назад",
+  "picture_in_picture.restore": "Врати назад",
   "poll.closed": "Затворено",
   "poll.refresh": "Освежи",
   "poll.total_people": "{count, plural, one {# особа} few {# особе} other {# особа}}",
@@ -453,13 +455,13 @@
   "poll_button.add_poll": "Додај анкету",
   "poll_button.remove_poll": "Уклони анкету",
   "privacy.change": "Промени приватност објаве",
-  "privacy.direct.long": "Видљиво само за поменуте кориснике",
+  "privacy.direct.long": "Видљиво само поменутим корисницима",
   "privacy.direct.short": "Само поменуте особе",
-  "privacy.private.long": "Видљиво само за пратиоце",
-  "privacy.private.short": "Само пратиоци",
+  "privacy.private.long": "Видљиво само пратиоцима",
+  "privacy.private.short": "Само пратиоцима",
   "privacy.public.long": "Видљиво за све",
   "privacy.public.short": "Јавно",
-  "privacy.unlisted.long": "Видљиво за све, али искључено из функције откривања",
+  "privacy.unlisted.long": "Видљиво свима, али искључено из функција откривања",
   "privacy.unlisted.short": "Неизлистано",
   "privacy_policy.last_updated": "Последње ажурирање {date}",
   "privacy_policy.title": "Политика приватности",
@@ -479,34 +481,34 @@
   "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": "Реците нам шта је проблем са {type}",
+  "report.category.title_account": "овим профилом",
   "report.category.title_status": "објавом",
   "report.close": "Готово",
-  "report.comment.title": "Да ли има нешто додатно што треба да знамо?",
+  "report.comment.title": "Да ли има још нешто што бисте хтели да нам дате до знања?",
   "report.forward": "Проследити {target}",
   "report.forward_hint": "Налог је са другог сервера. Послати анонимну копију пријаве и тамо?",
   "report.mute": "Игнориши",
-  "report.mute_explanation": "Нећете видети објаве корисника. Он и и даље може да вас прати и види ваше објаве и неће знати да је игнорисан.",
+  "report.mute_explanation": "Нећете видети објаве корисника. Он ће и даље моћи да Вас прати и види Ваше објаве и неће знати да је игнорисан.",
   "report.next": "Следеће",
   "report.placeholder": "Додатни коментари",
   "report.reasons.dislike": "Не свиђа ми се",
-  "report.reasons.dislike_description": "Ово није нешто што желиш да видите",
+  "report.reasons.dislike_description": "Ово није нешто што желите да видите",
   "report.reasons.other": "Нешто друго",
   "report.reasons.other_description": "Проблем се не уклапа у друге категорије",
   "report.reasons.spam": "Ово је спам",
   "report.reasons.spam_description": "Злонамерне везе, лажно ангажовање или одговори који се понављају",
   "report.reasons.violation": "Крши правила сервера",
-  "report.reasons.violation_description": "Свесни сте да крши нека одређена правила",
-  "report.rules.subtitle": "Изабери све што важи",
+  "report.reasons.violation_description": "Свесни сте да крши одређена правила",
+  "report.rules.subtitle": "Изаберите сва правила која су прекршена",
   "report.rules.title": "Која правила су прекршена?",
-  "report.statuses.subtitle": "Изабери све што важи",
-  "report.statuses.title": "Да ли постоје било какве објаве које подржавају ову пријаву?",
+  "report.statuses.subtitle": "Изаберите све што важи",
+  "report.statuses.title": "Има ли било каквих објава које поткрепљују ову пријаву?",
   "report.submit": "Пошаљи",
   "report.target": "Пријављујем {target}",
   "report.thanks.take_action": "Ово су Ваше опције да контролишете шта видите на Mastodon-у:",
@@ -534,7 +536,7 @@
   "search_results.nothing_found": "Није могуће пронаћи ништа за ове термине за претрагу",
   "search_results.statuses": "Објаве",
   "search_results.statuses_fts_disabled": "Претрага објава по садржају није омогућена на овом Mastodon серверу.",
-  "search_results.title": "Претражи {q}",
+  "search_results.title": "Тражи {q}",
   "search_results.total": "{count, number} {count, plural, one {резултат} few {резултата} other {резултата}}",
   "server_banner.about_active_users": "Људи који су користили овај сервер у претходних 30 дана (месечно активних корисника)",
   "server_banner.active_users": "активних корисника",
@@ -542,8 +544,8 @@
   "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.create_account": "Направите налог",
+  "sign_in_banner.sign_in": "Пријавите се",
   "sign_in_banner.text": "Пријавите се да бисте пратили профиле или хеш ознаке, означили објаве као омиљене, делили и одговарали на њих. Такође можете комуницирати са свог налога на другом серверу.",
   "status.admin_account": "Отвори модераторско окружење за @{name}",
   "status.admin_domain": "Отвори модераторско окружење за {domain}",
@@ -555,7 +557,7 @@
   "status.copy": "Копирај везу у објаву",
   "status.delete": "Избриши",
   "status.detailed_status": "Детаљан приказ разговора",
-  "status.direct": "Директна порука @{name}",
+  "status.direct": "Пошаљи поруку @{name}",
   "status.edit": "Уреди",
   "status.edited": "Уређено {date}",
   "status.edited_x_times": "Уређено {count, plural, one {{count} пут} other {{count} пута}}",
@@ -584,7 +586,7 @@
   "status.remove_bookmark": "Уклони обележивач",
   "status.replied_to": "Одговор за {name}",
   "status.reply": "Одговори",
-  "status.replyAll": "Одговори на дискусију",
+  "status.replyAll": "Одговори на низ",
   "status.report": "Пријави @{name}",
   "status.sensitive_warning": "Осетљив садржај",
   "status.share": "Подели",
@@ -599,7 +601,7 @@
   "status.uncached_media_warning": "Није доступно",
   "status.unmute_conversation": "Не игнориши разговор",
   "status.unpin": "Откачи са профила",
-  "subscribed_languages.lead": "Само објаве на означеним језицима ће се појављивати на почетној линији и на листама после ове измене. Одаберите ништа да примате објаве на свим језицима.",
+  "subscribed_languages.lead": "Само објаве на означеним језицима ће се појављивати на почетној линији и на листама после ове измене. Када ниједан језик није изабран, примаћете објаве на свим језицима.",
   "subscribed_languages.save": "Сачувај измене",
   "subscribed_languages.target": "Промени језике на које је {target} пријављен",
   "suggestions.dismiss": "Одбаци предлог",
@@ -615,9 +617,9 @@
   "time_remaining.seconds": "Остало {number, plural, one {# секунд} few {# секунде} other {# секунди}}",
   "timeline_hint.remote_resource_not_displayed": "{resource} са других сервера се не приказују.",
   "timeline_hint.resources.followers": "Пратиоци",
-  "timeline_hint.resources.follows": "Праћени",
+  "timeline_hint.resources.follows": "Праћења",
   "timeline_hint.resources.statuses": "Старије објаве",
-  "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особе} other {{counter} особа}} у протеклих {days, plural, one {дан} few {{days} дана} other {{days} дана}}",
+  "trends.counter_by_accounts": "{count, plural, one {{counter} особа} few {{counter} особе} other {{counter} особа}} у протеклих {days, plural, one {дан} other {{days} дана}}",
   "trends.trending_now": "У тренду сада",
   "ui.beforeunload": "Ваш нацрт ће бити изгубљен ако напустите Mastodon.",
   "units.short.billion": "{count} млрд.",
@@ -626,9 +628,9 @@
   "upload_area.title": "Превуците и отпустите за отпремање",
   "upload_button.label": "Додај слике, видео или аудио датотеку",
   "upload_error.limit": "Достигнуто је ограничење за отпремање датотека.",
-  "upload_error.poll": "Отпремање датотека није дозвољено са анкетама.",
-  "upload_form.audio_description": "Опишите за особе са оштећеним слухом",
-  "upload_form.description": "Опишите за особе са оштећеним видом",
+  "upload_error.poll": "Отпремање датотека није дозвољено код анкета.",
+  "upload_form.audio_description": "Додајте опис за особе са оштећеним слухом",
+  "upload_form.description": "Додајте опис за особе са оштећеним видом",
   "upload_form.description_missing": "Нема додатог описа",
   "upload_form.edit": "Уреди",
   "upload_form.thumbnail": "Промени сличицу",
@@ -639,8 +641,8 @@
   "upload_modal.applying": "Примена…",
   "upload_modal.choose_image": "Одаберите слику",
   "upload_modal.description_placeholder": "Љубазни фењерџија чађавог лица хоће да ми покаже штос",
-  "upload_modal.detect_text": "Откриј текст са слике",
-  "upload_modal.edit_media": "Уреди милтимедију",
+  "upload_modal.detect_text": "Пронађи текст са слике",
+  "upload_modal.edit_media": "Уреди мултимедију",
   "upload_modal.hint": "Кликните или превуците кружић на прегледу за избор тачке фокуса која ће увек бити видљива на свим сличицама.",
   "upload_modal.preparing_ocr": "Припрема OCR-а…",
   "upload_modal.preview_label": "Преглед ({ratio})",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 47efca424..fe573949d 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Du har o-sparade ändringar till mediabeskrivningen eller förhandsgranskningen, kasta bort dem ändå?",
   "confirmations.domain_block.confirm": "Dölj hela domänen",
   "confirmations.domain_block.message": "Är du verkligen, verkligen säker på att du vill blockera hela {domain}? I de flesta fall är några riktade blockeringar eller nedtystade konton tillräckligt och att föredra. Du kommer inte se innehåll från den domänen i den allmänna tidslinjen eller i dina aviseringar. Dina följare från den domänen komer att tas bort.",
+  "confirmations.edit.confirm": "Redigera",
+  "confirmations.edit.message": "Om du svarar nu kommer det att ersätta meddelandet du håller på att skapa. Är du säker på att du vill fortsätta?",
   "confirmations.logout.confirm": "Logga ut",
   "confirmations.logout.message": "Är du säker på att du vill logga ut?",
   "confirmations.mute.confirm": "Tysta",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index 9d23c3dd0..587cae5b8 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 0cd309ed8..fa2ad1b1c 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "சேமிக்கப்படாத மாற்றங்கள் ஊடக விளக்கம் அல்லது முன்னோட்டத்தில் உள்ளது. அவற்றை நிராகரிக்கவா?",
   "confirmations.domain_block.confirm": "முழு களத்தையும் மறை",
   "confirmations.domain_block.message": "நீங்கள் முழு {domain} களத்தையும் நிச்சயமாக, நிச்சயமாகத் தடுக்க விரும்புகிறீர்களா? பெரும்பாலும் சில குறிப்பிட்ட பயனர்களைத் தடுப்பதே போதுமானது. முழு களத்தையும் தடுத்தால், அதிலிருந்து வரும் எந்தப் பதிவையும் உங்களால் காண முடியாது, மேலும் அப்பதிவுகள் குறித்த அறிவிப்புகளும் உங்களுக்கு வராது. அந்தக் களத்தில் இருக்கும் பின்தொடர்பவர்கள் உங்கள் பக்கத்திலிருந்து நீக்கப்படுவார்கள்.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "வெளியேறு",
   "confirmations.logout.message": "நிச்சயமாக நீங்கள் வெளியேற விரும்புகிறீர்களா?",
   "confirmations.mute.confirm": "அமைதியாக்கு",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index 875a8c944..37f8add8f 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index f4e3b7ff2..190db00a0 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "You have unsaved changes to the media description or preview, discard them anyway?",
   "confirmations.domain_block.confirm": "మొత్తం డొమైన్ను దాచు",
   "confirmations.domain_block.message": "మీరు నిజంగా నిజంగా మొత్తం {domain} ని బ్లాక్ చేయాలనుకుంటున్నారా? చాలా సందర్భాలలో కొన్ని లక్ష్యంగా ఉన్న బ్లాక్స్ లేదా మ్యూట్స్ సరిపోతాయి మరియు ఉత్తమమైనవి. మీరు ఆ డొమైన్ నుండి కంటెంట్ను ఏ ప్రజా కాలక్రమాలలో లేదా మీ నోటిఫికేషన్లలో చూడలేరు. ఆ డొమైన్ నుండి మీ అనుచరులు తీసివేయబడతారు.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "మ్యూట్ చేయి",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index e2db4627e..bd4b2fc41 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "คุณมีการเปลี่ยนแปลงคำอธิบายหรือตัวอย่างสื่อที่ยังไม่ได้บันทึก ละทิ้งการเปลี่ยนแปลงต่อไป?",
   "confirmations.domain_block.confirm": "ปิดกั้นทั้งโดเมน",
   "confirmations.domain_block.message": "คุณแน่ใจจริง ๆ หรือไม่ว่าต้องการปิดกั้นทั้ง {domain}? ในกรณีส่วนใหญ่ การปิดกั้นหรือการซ่อนแบบกำหนดเป้าหมายไม่กี่รายการนั้นเพียงพอและเป็นที่นิยม คุณจะไม่เห็นเนื้อหาจากโดเมนนั้นในเส้นเวลาสาธารณะใด ๆ หรือการแจ้งเตือนของคุณ จะเอาผู้ติดตามของคุณจากโดเมนนั้นออก",
+  "confirmations.edit.confirm": "แก้ไข",
+  "confirmations.edit.message": "การแก้ไขในตอนนี้จะเขียนทับข้อความที่คุณกำลังเขียนในปัจจุบัน คุณแน่ใจหรือไม่ว่าต้องการดำเนินการต่อ?",
   "confirmations.logout.confirm": "ออกจากระบบ",
   "confirmations.logout.message": "คุณแน่ใจหรือไม่ว่าต้องการออกจากระบบ?",
   "confirmations.mute.confirm": "ซ่อน",
@@ -291,10 +293,10 @@
   "home.column_settings.show_replies": "แสดงการตอบกลับ",
   "home.hide_announcements": "ซ่อนประกาศ",
   "home.show_announcements": "แสดงประกาศ",
-  "interaction_modal.description.favourite": "เมื่อมีบัญชีใน Mastodon คุณสามารถชื่นชอบโพสต์นี้เพื่อให้ผู้สร้างทราบว่าคุณชื่นชมโพสต์และบันทึกโพสต์ไว้สำหรับภายหลัง",
-  "interaction_modal.description.follow": "เมื่อมีบัญชีใน Mastodon คุณสามารถติดตาม {name} เพื่อรับโพสต์ของเขาในฟีดหน้าแรกของคุณ",
-  "interaction_modal.description.reblog": "เมื่อมีบัญชีใน Mastodon คุณสามารถดันโพสต์นี้เพื่อแบ่งปันโพสต์กับผู้ติดตามของคุณเอง",
-  "interaction_modal.description.reply": "เมื่อมีบัญชีใน Mastodon คุณสามารถตอบกลับโพสต์นี้",
+  "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 นี้ลงในช่องค้นหาของแอป Mastodon โปรดของคุณหรือส่วนติดต่อเว็บของเซิร์ฟเวอร์ Mastodon ของคุณ",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 5d085495b..fd7546e1d 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Medya açıklaması veya ön izlemede kaydedilmemiş değişiklikleriniz var, yine de vazgeçmek istiyor musunuz?",
   "confirmations.domain_block.confirm": "Alanın tamamını engelle",
   "confirmations.domain_block.message": "{domain} alanının tamamını engellemek istediğinden gerçekten emin misin? Genellikle hedeflenen birkaç engelleme veya sessize alma yeterlidir ve tercih edilir. Bu alan adından gelen içeriği herhangi bir genel zaman çizelgesinde veya bildirimlerinde görmezsin. Bu alan adındaki takipçilerin kaldırılır.",
+  "confirmations.edit.confirm": "Düzenle",
+  "confirmations.edit.message": "Şimdi düzenlersen şu an oluşturduğun iletinin üzerine yazılır. Devam etmek istediğine emin misin?",
   "confirmations.logout.confirm": "Oturumu kapat",
   "confirmations.logout.message": "Oturumu kapatmak istediğinden emin misin?",
   "confirmations.mute.confirm": "Sessize al",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 41098618c..beffae95c 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -9,32 +9,32 @@
   "about.domain_blocks.suspended.explanation": "Бу серверның бернинди мәгълүматлары да эшкәртелмәячәк, сакланмаячак яки алмаштырылмаячак, бу сервердан кулланучылар белән үзара бәйләнешне яки аралашуны мөмкин итми.",
   "about.domain_blocks.suspended.title": "Блокланган",
   "about.not_available": "Бу серверда бу мәгълүмат юк иде.",
-  "about.powered_by": "Децентрализованные социаль челтәрләр нигезендә {mastodon}",
+  "about.powered_by": "{mastodon} нигезендә үзәкчелеге бетерелгән социаль челтәр нигезендә",
   "about.rules": "Сервер кагыйдәләре",
   "account.account_note_header": "Язма",
-  "account.add_or_remove_from_list": "Исемлеккә кертү я бетерү",
+  "account.add_or_remove_from_list": "Исемлеккә кушу яки бетерү",
   "account.badges.bot": "Бот",
   "account.badges.group": "Төркем",
-  "account.block": "@{name} блоклау",
+  "account.block": "@{name} кулланучыны блоклау",
   "account.block_domain": "{domain} доменын блоклау",
   "account.blocked": "Блокланган",
-  "account.browse_more_on_origin_server": "Тулырак оригинал профилендә карап була",
+  "account.browse_more_on_origin_server": "Оригиналь профилендә күбрәк карау",
   "account.cancel_follow_request": "Киләсе сорау",
-  "account.direct": "@{name} өчен яңа хат",
+  "account.direct": "@{name} кулланучыга язу",
   "account.disable_notifications": "@{name} язулары өчен белдерүләр сүндерү",
   "account.domain_blocked": "Домен блокланган",
-  "account.edit_profile": "Профильны үзгәртү",
+  "account.edit_profile": "Профильне үзгәртү",
   "account.enable_notifications": "@{name} язулары өчен белдерүләр яндыру",
-  "account.endorse": "Профильдә рекомендацияләү",
+  "account.endorse": "Профильдә тәкъдим итү",
   "account.featured_tags.last_status_at": "Соңгы хәбәр {date}",
   "account.featured_tags.last_status_never": "Хәбәрләр юк",
   "account.featured_tags.title": "{name} тәкъдим ителгән хэштеглар",
-  "account.follow": "Языл",
-  "account.followers": "Язылучылар",
+  "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.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": "Профильгә күчү",
@@ -50,19 +50,19 @@
   "account.mute_notifications": "@{name} кулланучыдан хәбәрләргә әһәмият бирмәү",
   "account.muted": "Әһәмият бирмәнгән",
   "account.open_original_page": "Чыганак битен ачу",
-  "account.posts": "Пост",
-  "account.posts_with_replies": "Пост һәм җавап",
+  "account.posts": "Язма",
+  "account.posts_with_replies": "Язма һәм җавап",
   "account.report": "@{name} кулланучыга шикаять итү",
   "account.requested": "Awaiting approval",
   "account.requested_follow": "{name} Сезгә язылу соравын җиберде",
-  "account.share": "Уртаклашу @{name} профиль",
+  "account.share": "@{name} профиле белән уртаклашу",
   "account.show_reblogs": "Күрсәтергә көчәйтү нче @{name}",
-  "account.statuses_counter": "{count, plural, one {{counter} Toot} other {{counter} Toots}}",
-  "account.unblock": "Ачу @{name}",
-  "account.unblock_domain": "Доменны ачу {domain}",
-  "account.unblock_short": "Ачу",
-  "account.unendorse": "Профильдә күрсәтмәгез",
-  "account.unfollow": "Язылынмау",
+  "account.statuses_counter": "{count, plural, one {{counter} язма} other {{counter} язма}}",
+  "account.unblock": "@{name} бикләвен чыгу",
+  "account.unblock_domain": "{domain} бикләвен чыгу",
+  "account.unblock_short": "Бикләүне чыгу",
+  "account.unendorse": "Профильдә тәкъдим итмәү",
+  "account.unfollow": "Язылуны туктату",
   "account.unmute": "Kабызыгыз @{name}",
   "account.unmute_notifications": "Кертергә хәбәрләр нче @{name}",
   "account.unmute_short": "Kабызыгыз",
@@ -71,11 +71,11 @@
   "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}.",
+  "admin.dashboard.retention.cohort_size": "Яңа кулланучы",
+  "alert.rate_limited.message": "Зинһар, {retry_time, time, medium} соң кабатлап карагыз.",
   "alert.rate_limited.title": "Тариф чикләнгән",
   "alert.unexpected.message": "Көтелмәгән хата булды.",
-  "alert.unexpected.title": "Ой!",
+  "alert.unexpected.title": "Абау!",
   "announcement.announcement": "Игълан",
   "attachments_list.unprocessed": "(чимал)",
   "audio.hide": "Аудионы яшерү",
@@ -85,11 +85,11 @@
   "bundle_column_error.error.body": "Соралган бит күрсәтелә алмый. Бу безнең кодтагы хата яки браузерга туры килү проблемасы аркасында булырга мөмкин.",
   "bundle_column_error.error.title": "Әй, юк!",
   "bundle_column_error.network.body": "Бу битне йөкләргә тырышканда хата булды. Бу сезнең Интернетка тоташу яки бу сервер белән вакытлыча проблема аркасында булырга мөмкин.",
-  "bundle_column_error.network.title": "Челтәр хата",
+  "bundle_column_error.network.title": "Челтәр хатасы",
   "bundle_column_error.retry": "Тагын сынап кара",
   "bundle_column_error.return": "Өйгә кайтыгыз",
   "bundle_column_error.routing.body": "Сорау бите табылмады. URL адресы дөрес күрсәтелгәненә ышанасызмы?",
-  "bundle_column_error.routing.title": "404\n",
+  "bundle_column_error.routing.title": "404",
   "bundle_modal_error.close": "Ябу",
   "bundle_modal_error.message": "Бу компонентны Йөкләгәндә нәрсәдер дөрес булмаган.",
   "bundle_modal_error.retry": "Тагын сынап кара",
@@ -98,23 +98,23 @@
   "closed_registrations_modal.find_another_server": "Башка серверны табыгыз",
   "closed_registrations_modal.preamble": "Mastodon үзәкләштерелмәгән, шуңа күрә сез счетыгызны кайда гына ясасагыз да, сез бу серверда теләсә кемгә иярә аласыз һәм аның белән аралаша аласыз. Сез аны хәтта үзегез урнаштыра аласыз!",
   "closed_registrations_modal.title": "Mastodon өчен теркәлү",
-  "column.about": "Турында",
+  "column.about": "Проект турында",
   "column.blocks": "Блокланган кулланучылар",
   "column.bookmarks": "Кыстыргычлар",
-  "column.community": "Localирле вакыт сызыгы",
-  "column.direct": "Туры хәбәрләр",
+  "column.community": "Локаль вакыт сызыгы",
+  "column.direct": "Шәхси хәбәрләр",
   "column.directory": "Профильләрне карау",
   "column.domain_blocks": "Блокланган доменнар",
   "column.favourites": "Сайланма",
-  "column.follow_requests": "Сорауларны үтәгез",
+  "column.follow_requests": "Язылу сораулары",
   "column.home": "Баш бит",
   "column.lists": "Исемлек",
   "column.mutes": "Инвалид кулланучылар",
   "column.notifications": "Хәбәрләр",
   "column.pins": "Pinned toot",
-  "column.public": "Берләшкән вакыт масштабы",
-  "column_back_button.label": "Кире",
-  "column_header.hide_settings": "Көйләүләрне яшерегез",
+  "column.public": "Глобаль вакыт сызыгы",
+  "column_back_button.label": "Артка",
+  "column_header.hide_settings": "Көйләүләрне яшерү",
   "column_header.moveLeft_settings": "Багананы сулга күчерегез",
   "column_header.moveRight_settings": "Багананы уңга күчерегез",
   "column_header.pin": "Пин",
@@ -125,8 +125,8 @@
   "community.column_settings.media_only": "Media only",
   "community.column_settings.remote_only": "Дистанцион гына идарә итү",
   "compose.language.change": "Телне үзгәртү",
-  "compose.language.search": "Эзләү телләре...",
-  "compose_form.direct_message_warning_learn_more": "Күбрәк укыгыз",
+  "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.hashtag_warning": "Бу язма бернинди хэштег астында да күрсәтелмәячәк, чөнки ул ачык түгел. Хэштег эзләү җәмәгать басмалары аша гына мөмкин.",
   "compose_form.lock_disclaimer": "Сезнең хисап түгел {locked}. Апуәрбер теләгән кеше сезнең язма өчен иярә ала.",
@@ -149,21 +149,23 @@
   "compose_form.spoiler.unmarked": "Text is not hidden",
   "compose_form.spoiler_placeholder": "Кисәтүегезне монда языгыз",
   "confirmation_modal.cancel": "Баш тарту",
-  "confirmations.block.block_and_report": "Блоклау һәм хәбәр итү",
+  "confirmations.block.block_and_report": "Блоклау һәм шикаять итү",
   "confirmations.block.confirm": "Блоклау",
-  "confirmations.block.message": "Сез блокларга телисез {name}?",
-  "confirmations.cancel_follow_request.confirm": "Чыгару сорау",
+  "confirmations.block.message": "Сез {name} кулланучыны блокларга телисезме?",
+  "confirmations.cancel_follow_request.confirm": "Сорауны баш тарту",
   "confirmations.cancel_follow_request.message": "Сез абонемент соравыгызны кире кайтарырга телисез {name}?",
   "confirmations.delete.confirm": "Бетерү",
   "confirmations.delete.message": "Are you sure you want to delete this status?",
   "confirmations.delete_list.confirm": "Бетерү",
   "confirmations.delete_list.message": "Сез бу исемлекне мәңгегә бетерергә телисезме?",
-  "confirmations.discard_edit_media.confirm": "Ташлау",
+  "confirmations.discard_edit_media.confirm": "Баш тарту",
   "confirmations.discard_edit_media.message": "Сезнең медиа тасвирламасында яки алдан карау өчен сакланмаган үзгәрешләр бармы? ",
   "confirmations.domain_block.confirm": "Hide entire domain",
   "confirmations.domain_block.message": "Сез чыннан да барысын да блокларга телисез {domain}? Күпчелек очракта берничә максатлы блоклар яки тавышсызлар җитәрлек һәм өстенлекле. Сез бу доменнан эчтәлекне җәмәгать срокларында яки хәбәрләрегездә күрмәячәксез. Бу доменнан сезнең шәкертләр бетереләчәк.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Чыгу",
-  "confirmations.logout.message": "Сез системадан чыгарга телисезме?",
+  "confirmations.logout.message": "Сез чыгарга телисезме?",
   "confirmations.mute.confirm": "Тавышсыз",
   "confirmations.mute.explanation": "Бу алардан ураза тотуны һәм алар турында искә алуны яшерәчәк, ләкин бу аларга уразаларыгызны күрергә һәм язылырга мөмкинлек бирәчәк.",
   "confirmations.mute.message": "Сез тавышны сүндерергә телисез {name}?",
@@ -171,14 +173,14 @@
   "confirmations.redraft.message": "Are you sure you want to delete this status and re-draft it? Favourites and boosts will be lost, and replies to the original post will be orphaned.",
   "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": "Күчерү",
+  "conversation.with": "{names} белән",
+  "copypaste.copied": "Күчереп алынган",
+  "copypaste.copy": "Күчереп алу",
   "directory.federated": "Билгеле галәмнән",
   "directory.local": "Кемнән {domain} гына",
   "directory.new_arrivals": "Яңа килүчеләр",
@@ -186,7 +188,7 @@
   "disabled_account_banner.account_settings": "Хисап көйләүләре",
   "disabled_account_banner.text": "Сезнең хисап {disabledAccount} хәзерге вакытта инвалид.",
   "dismissable_banner.community_timeline": "Бу счетлары урнаштырылган кешеләрдән иң соңгы җәмәгать хәбәрләре {domain}.",
-  "dismissable_banner.dismiss": "Чыгару",
+  "dismissable_banner.dismiss": "Ябу",
   "dismissable_banner.explore_links": "Бу яңалыклар турында хәзерге вакытта кешеләр һәм башка үзәкләштерелмәгән челтәр серверларында сөйләшәләр.",
   "dismissable_banner.explore_statuses": "Бу һәм бүтән серверларның үзәкләштерелмәгән челтәрдәге бу язмалары хәзерге вакытта бу серверда тартыла.",
   "dismissable_banner.explore_tags": "Бу хэштеглар хәзерге вакытта үзәкләштерелмәгән челтәрнең бүтән серверларында кешеләр арасында кызыксыну уята.",
@@ -194,7 +196,7 @@
   "embed.instructions": "Embed this status on your website by copying the code below.",
   "embed.preview": "Менә ул нинди булыр:",
   "emoji_button.activity": "Активлык",
-  "emoji_button.clear": "Ачык",
+  "emoji_button.clear": "Чистарту",
   "emoji_button.custom": "Куелган",
   "emoji_button.flags": "Байраклар",
   "emoji_button.food": "Ашау һәм эчү",
@@ -208,7 +210,7 @@
   "emoji_button.search_results": "Эзләү нәтиҗәләре",
   "emoji_button.symbols": "Символлар",
   "emoji_button.travel": "Сәяхәт һәм урыннар",
-  "empty_column.account_suspended": "Хисап блокланган",
+  "empty_column.account_suspended": "Аккаунт блокланган",
   "empty_column.account_timeline": "No toots here!",
   "empty_column.account_unavailable": "Profile unavailable",
   "empty_column.blocks": "You haven't blocked any users yet.",
@@ -235,11 +237,11 @@
   "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": "Хата турында белдерү",
   "explore.search_results": "Search results",
-  "explore.suggested_follows": "For you",
+  "explore.suggested_follows": "Сез өчен",
   "explore.title": "Explore",
-  "explore.trending_links": "News",
+  "explore.trending_links": "Яңалыклар",
   "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.",
@@ -258,14 +260,14 @@
   "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",
-  "follow_recommendations.done": "Done",
+  "follow_recommendations.done": "Булды",
   "follow_recommendations.heading": "Follow people you'd like to see posts from! Here are some suggestions.",
   "follow_recommendations.lead": "Posts from people you follow will show up in chronological order on your home feed. Don't be afraid to make mistakes, you can unfollow people just as easily any time!",
   "follow_request.authorize": "Authorize",
   "follow_request.reject": "Reject",
   "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.",
   "followed_tags": "Имзаланган хэштеглар",
-  "footer.about": "Турында",
+  "footer.about": "Проект турында",
   "footer.directory": "Профильләр каталогы",
   "footer.get_app": "Кушымта алыгыз",
   "footer.invite": "Кешеләрне чакырыгыз",
@@ -361,18 +363,18 @@
   "lists.search": "Search among people you follow",
   "lists.subheading": "Your lists",
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
-  "loading_indicator.label": "Loading...",
+  "loading_indicator.label": "Йөкләү...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "missing_indicator.label": "Not found",
+  "missing_indicator.label": "Табылмады",
   "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}.",
   "mute_modal.duration": "Дәвамлык",
   "mute_modal.hide_notifications": "Hide notifications from this user?",
   "mute_modal.indefinite": "Indefinite",
-  "navigation_bar.about": "About",
-  "navigation_bar.blocks": "Blocked users",
+  "navigation_bar.about": "Проект турында",
+  "navigation_bar.blocks": "Блокланган кулланучылар",
   "navigation_bar.bookmarks": "Кыстыргычлар",
-  "navigation_bar.community_timeline": "Local timeline",
+  "navigation_bar.community_timeline": "Локаль вакыт сызыгы",
   "navigation_bar.compose": "Compose new toot",
   "navigation_bar.direct": "Direct messages",
   "navigation_bar.discover": "Discover",
@@ -384,14 +386,14 @@
   "navigation_bar.follow_requests": "Follow requests",
   "navigation_bar.followed_tags": "Followed hashtags",
   "navigation_bar.follows_and_followers": "Follows and followers",
-  "navigation_bar.lists": "Lists",
-  "navigation_bar.logout": "Logout",
+  "navigation_bar.lists": "Исемлекләр",
+  "navigation_bar.logout": "Чыгу",
   "navigation_bar.mutes": "Muted users",
   "navigation_bar.personal": "Personal",
   "navigation_bar.pins": "Pinned toots",
   "navigation_bar.preferences": "Caylaw",
   "navigation_bar.public_timeline": "Federated 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}",
@@ -447,7 +449,7 @@
   "poll.refresh": "Яңарту",
   "poll.total_people": "{count, plural, one {# person} other {# people}}",
   "poll.total_votes": "{count, plural, one {# vote} other {# votes}}",
-  "poll.vote": "Vote",
+  "poll.vote": "Тавыш бирү",
   "poll.voted": "You voted for this answer",
   "poll.votes": "{votes, plural, one {# vote} other {# votes}}",
   "poll_button.add_poll": "Add a poll",
@@ -478,7 +480,7 @@
   "relative_time.seconds": "{number}сек",
   "relative_time.today": "бүген",
   "reply_indicator.cancel": "Баш тарту",
-  "report.block": "Block",
+  "report.block": "Блоклау",
   "report.block_explanation": "You will not see their posts. They will not be able to see your posts or follow you. They will be able to tell that they are blocked.",
   "report.categories.other": "Other",
   "report.categories.spam": "Spam",
@@ -487,7 +489,7 @@
   "report.category.title": "Tell us what's going on with this {type}",
   "report.category.title_account": "профиль",
   "report.category.title_status": "post",
-  "report.close": "Done",
+  "report.close": "Булды",
   "report.comment.title": "Is there anything else you think we should know?",
   "report.forward": "Forward to {target}",
   "report.forward_hint": "The account is from another server. Send an anonymized copy of the report there as well?",
@@ -495,7 +497,7 @@
   "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": "Type or paste additional comments",
-  "report.reasons.dislike": "I don't like it",
+  "report.reasons.dislike": "Миңа бу ошамый",
   "report.reasons.dislike_description": "It is not something you want to see",
   "report.reasons.other": "It's something else",
   "report.reasons.other_description": "The issue does not fit into other categories",
@@ -540,10 +542,10 @@
   "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.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.create_account": "Аккаунтны ясау",
+  "sign_in_banner.sign_in": "Керү",
   "sign_in_banner.text": "Sign in to follow profiles or hashtags, favourite, share and reply to posts. You can also interact from your account on a different server.",
   "status.admin_account": "Open moderation interface for @{name}",
   "status.admin_domain": "Open moderation interface for {domain}",
@@ -556,7 +558,7 @@
   "status.delete": "Бетерү",
   "status.detailed_status": "Detailed conversation view",
   "status.direct": "Direct message @{name}",
-  "status.edit": "Edit",
+  "status.edit": "Үзгәртү",
   "status.edited": "Edited {date}",
   "status.edited_x_times": "Edited {count, plural, one {{count} time} other {{count} times}}",
   "status.embed": "Embed",
@@ -583,7 +585,7 @@
   "status.redraft": "Delete & re-draft",
   "status.remove_bookmark": "Remove bookmark",
   "status.replied_to": "Replied to {name}",
-  "status.reply": "Reply",
+  "status.reply": "Җавап бирү",
   "status.replyAll": "Reply to thread",
   "status.report": "Report @{name}",
   "status.sensitive_warning": "Sensitive content",
@@ -594,7 +596,7 @@
   "status.show_more": "Күбрәк күрсәтү",
   "status.show_more_all": "Show more for all",
   "status.show_original": "Show original",
-  "status.translate": "Translate",
+  "status.translate": "Тәрҗемә итү",
   "status.translated_from_with": "Translated from {lang} using {provider}",
   "status.uncached_media_warning": "Not available",
   "status.unmute_conversation": "Unmute conversation",
@@ -636,7 +638,7 @@
   "upload_form.video_description": "Describe for people with hearing loss or visual impairment",
   "upload_modal.analyzing_picture": "Analyzing picture…",
   "upload_modal.apply": "Куллан",
-  "upload_modal.applying": "Applying…",
+  "upload_modal.applying": "Куллану…",
   "upload_modal.choose_image": "Choose image",
   "upload_modal.description_placeholder": "A quick brown fox jumps over the lazy dog",
   "upload_modal.detect_text": "Detect text from picture",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index e22ab1f22..b81bb1356 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Log out",
   "confirmations.logout.message": "Are you sure you want to log out?",
   "confirmations.mute.confirm": "Mute",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 7f509d039..cbdfef527 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "У вас є незбережені зміни в описі медіа або попереднього перегляду, все одно відкинути їх?",
   "confirmations.domain_block.confirm": "Заблокувати весь домен",
   "confirmations.domain_block.message": "Ви точно, точно впевнені, що хочете заблокувати весь домен {domain}? У більшості випадків для нормальної роботи краще заблокувати або приховати лише деяких користувачів. Ви не зможете бачити контент з цього домену у будь-яких стрічках або ваших сповіщеннях. Ваші підписники з цього домену будуть відписані від вас.",
+  "confirmations.edit.confirm": "Змінити",
+  "confirmations.edit.message": "Редагування перезапише повідомлення, яке ви зараз пишете. Ви впевнені, що хочете продовжити?",
   "confirmations.logout.confirm": "Вийти",
   "confirmations.logout.message": "Ви впевнені, що хочете вийти?",
   "confirmations.mute.confirm": "Приховати",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index 8980ca531..bbe7fbd23 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -162,6 +162,8 @@
   "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": "کیا آپ واقعی، واقعی یقین رکھتے ہیں کہ آپ پورے {domain} کو بلاک کرنا چاہتے ہیں؟ زیادہ تر معاملات میں چند ٹارگٹیڈ بلاکس یا خاموش کرنا کافی اور افضل ہیں۔ آپ اس ڈومین کا مواد کسی بھی عوامی ٹائم لائنز یا اپنی اطلاعات میں نہیں دیکھیں گے۔ اس ڈومین سے آپ کے پیروکاروں کو ہٹا دیا جائے گا۔",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "لاگ آؤٹ",
   "confirmations.logout.message": "کیا واقعی آپ لاگ آؤٹ ہونا چاہتے ہیں؟",
   "confirmations.mute.confirm": "خاموش",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index 0f450b32a..6dcc0e3d8 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Sizda media tavsifi yoki oldindan ko‘rishda saqlanmagan o‘zgarishlar bor, ular baribir bekor qilinsinmi?",
   "confirmations.domain_block.confirm": "Butun domenni bloklash",
   "confirmations.domain_block.message": "Haqiqatan ham, {domain} ni butunlay bloklamoqchimisiz? Ko'pgina hollarda bir nechta maqsadli bloklar yoki ovozni o'chirish etarli va afzaldir. Siz oʻsha domendagi kontentni hech qanday umumiy vaqt jadvallarida yoki bildirishnomalaringizda koʻrmaysiz. Bu domendagi obunachilaringiz olib tashlanadi.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "Chiqish",
   "confirmations.logout.message": "Chiqishingizga aminmisiz?",
   "confirmations.mute.confirm": "Ovozsiz",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 4ee65e72a..a108a6619 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "Bạn chưa lưu thay đổi đối với phần mô tả hoặc bản xem trước của media, vẫn bỏ luôn?",
   "confirmations.domain_block.confirm": "Ẩn toàn bộ máy chủ",
   "confirmations.domain_block.message": "Bạn thật sự muốn ẩn toàn bộ nội dung từ {domain}? Sẽ hợp lý hơn nếu bạn chỉ chặn hoặc ẩn một vài tài khoản cụ thể. Ẩn toàn bộ nội dung từ máy chủ sẽ khiến bạn không còn thấy nội dung từ máy chủ đó ở bất kỳ nơi nào, kể cả thông báo. Người quan tâm bạn từ máy chủ đó cũng sẽ bị xóa luôn.",
+  "confirmations.edit.confirm": "Sửa",
+  "confirmations.edit.message": "Nội dung tút cũ sẽ bị ghi đè, bạn có tiếp tục?",
   "confirmations.logout.confirm": "Đăng xuất",
   "confirmations.logout.message": "Bạn có thật sự muốn thoát?",
   "confirmations.mute.confirm": "Ẩn",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index 4f190a4bc..f5ca66b3a 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -162,6 +162,8 @@
   "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.",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "ⴼⴼⵖ",
   "confirmations.logout.message": "ⵉⵙ ⵏⵉⵜ ⵜⵅⵙⴷ ⴰⴷ ⵜⴼⴼⵖⴷ?",
   "confirmations.mute.confirm": "ⵥⵥⵉⵥⵏ",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 2cfed5224..3d0290e5d 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "您还有未保存的媒体描述或预览修改,仍然丢弃它们吗?",
   "confirmations.domain_block.confirm": "屏蔽整个域名",
   "confirmations.domain_block.message": "你真的确定要屏蔽所有来自 {domain} 的内容吗?多数情况下,屏蔽或隐藏几个特定的用户就已经足够了。来自该网站的内容将不再出现在你的任何公共时间轴或通知列表里。来自该网站的关注者将会被移除。",
+  "confirmations.edit.confirm": "编辑",
+  "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?",
   "confirmations.logout.confirm": "登出",
   "confirmations.logout.message": "你确定要登出吗?",
   "confirmations.mute.confirm": "隐藏",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 5c6f539aa..86c14b180 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "您在媒體描述或預覽有尚未儲存的變更。確定要捨棄它們嗎?",
   "confirmations.domain_block.confirm": "封鎖整個網站",
   "confirmations.domain_block.message": "你真的真的確定要封鎖整個 {domain} ?多數情況下,封鎖或靜音幾個特定目標就已經有效,也是比較建議的做法。若然封鎖全站,你將不會再在這裏看到該站的內容和通知。來自該站的關注者亦會被移除。",
+  "confirmations.edit.confirm": "Edit",
+  "confirmations.edit.message": "Editing now will overwrite the message you are currently composing. Are you sure you want to proceed?",
   "confirmations.logout.confirm": "登出",
   "confirmations.logout.message": "確定要登出嗎?",
   "confirmations.mute.confirm": "靜音",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 4e5cfb876..6c6871699 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -162,6 +162,8 @@
   "confirmations.discard_edit_media.message": "您在媒體描述或預覽區塊有未儲存的變更。是否要捨棄這些變更?",
   "confirmations.domain_block.confirm": "封鎖整個網域",
   "confirmations.domain_block.message": "您真的非常確定要封鎖整個 {domain} 網域嗎?大部分情況下,封鎖或靜音少數特定的帳號就能滿足需求了。您將不能在任何公開的時間軸及通知中看到來自此網域的內容。您來自該網域的跟隨者也將被移除。",
+  "confirmations.edit.confirm": "編輯",
+  "confirmations.edit.message": "編輯嘟文將覆蓋掉您目前正在撰寫的訊息。是否仍要繼續?",
   "confirmations.logout.confirm": "登出",
   "confirmations.logout.message": "您確定要登出嗎?",
   "confirmations.mute.confirm": "靜音",
@@ -170,7 +172,7 @@
   "confirmations.redraft.confirm": "刪除並重新編輯",
   "confirmations.redraft.message": "您確定要刪除這則嘟文並重新編輯嗎?您將失去這則嘟文的轉嘟及最愛,且對原始嘟文的回覆都會變成獨立的嘟文。",
   "confirmations.reply.confirm": "回覆",
-  "confirmations.reply.message": "現在回覆將蓋掉您目前正在撰寫的訊息。是否仍要回覆?",
+  "confirmations.reply.message": "回覆嘟文將覆蓋掉您目前正在撰寫的訊息。是否仍要繼續?",
   "confirmations.unfollow.confirm": "取消跟隨",
   "confirmations.unfollow.message": "您確定要取消跟隨 {name} 嗎?",
   "conversation.delete": "刪除對話",
diff --git a/app/javascript/mastodon/reducers/server.js b/app/javascript/mastodon/reducers/server.js
index db9f2b5e6..909ab2a66 100644
--- a/app/javascript/mastodon/reducers/server.js
+++ b/app/javascript/mastodon/reducers/server.js
@@ -2,6 +2,9 @@ import {
   SERVER_FETCH_REQUEST,
   SERVER_FETCH_SUCCESS,
   SERVER_FETCH_FAIL,
+  SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST,
+  SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS,
+  SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL,
   EXTENDED_DESCRIPTION_REQUEST,
   EXTENDED_DESCRIPTION_SUCCESS,
   EXTENDED_DESCRIPTION_FAIL,
@@ -35,6 +38,12 @@ export default function server(state = initialState, action) {
     return state.set('server', fromJS(action.server)).setIn(['server', 'isLoading'], false);
   case SERVER_FETCH_FAIL:
     return state.setIn(['server', 'isLoading'], false);
+  case SERVER_TRANSLATION_LANGUAGES_FETCH_REQUEST:
+    return state.setIn(['translationLanguages', 'isLoading'], true);
+  case SERVER_TRANSLATION_LANGUAGES_FETCH_SUCCESS:
+    return state.setIn(['translationLanguages', 'items'], fromJS(action.translationLanguages)).setIn(['translationLanguages', 'isLoading'], false);
+  case SERVER_TRANSLATION_LANGUAGES_FETCH_FAIL:
+    return state.setIn(['translationLanguages', 'isLoading'], false);
   case EXTENDED_DESCRIPTION_REQUEST:
     return state.setIn(['extendedDescription', 'isLoading'], true);
   case EXTENDED_DESCRIPTION_SUCCESS:
diff --git a/app/lib/admin/system_check.rb b/app/lib/admin/system_check.rb
index f512635ab..89dfcef9f 100644
--- a/app/lib/admin/system_check.rb
+++ b/app/lib/admin/system_check.rb
@@ -2,6 +2,7 @@
 
 class Admin::SystemCheck
   ACTIVE_CHECKS = [
+    Admin::SystemCheck::MediaPrivacyCheck,
     Admin::SystemCheck::DatabaseSchemaCheck,
     Admin::SystemCheck::SidekiqProcessCheck,
     Admin::SystemCheck::RulesCheck,
diff --git a/app/lib/admin/system_check/media_privacy_check.rb b/app/lib/admin/system_check/media_privacy_check.rb
new file mode 100644
index 000000000..1df05b120
--- /dev/null
+++ b/app/lib/admin/system_check/media_privacy_check.rb
@@ -0,0 +1,105 @@
+# frozen_string_literal: true
+
+class Admin::SystemCheck::MediaPrivacyCheck < Admin::SystemCheck::BaseCheck
+  include RoutingHelper
+
+  def skip?
+    !current_user.can?(:view_devops)
+  end
+
+  def pass?
+    check_media_uploads!
+    @failure_message.nil?
+  end
+
+  def message
+    Admin::SystemCheck::Message.new(@failure_message, @failure_value, @failure_action, true)
+  end
+
+  private
+
+  def check_media_uploads!
+    if Rails.configuration.x.use_s3
+      check_media_listing_inaccessible_s3!
+    else
+      check_media_listing_inaccessible!
+    end
+  end
+
+  def check_media_listing_inaccessible!
+    full_url = full_asset_url(media_attachment.file.url(:original, false))
+
+    # Check if we can list the uploaded file. If true, that's an error
+    directory_url = Addressable::URI.parse(full_url)
+    directory_url.query = nil
+    filename = directory_url.path.gsub(%r{.*/}, '')
+    directory_url.path = directory_url.path.gsub(%r{/[^/]+\Z}, '/')
+    Request.new(:get, directory_url, allow_local: true).perform do |res|
+      if res.truncated_body&.include?(filename)
+        @failure_message = use_storage? ? :upload_check_privacy_error_object_storage : :upload_check_privacy_error
+        @failure_action = 'https://docs.joinmastodon.org/admin/optional/object-storage/#FS'
+      end
+    end
+  rescue
+    nil
+  end
+
+  def check_media_listing_inaccessible_s3!
+    urls_to_check = []
+    paperclip_options = Paperclip::Attachment.default_options
+    s3_protocol = paperclip_options[:s3_protocol]
+    s3_host_alias = paperclip_options[:s3_host_alias]
+    s3_host_name  = paperclip_options[:s3_host_name]
+    bucket_name = paperclip_options.dig(:s3_credentials, :bucket)
+
+    urls_to_check << "#{s3_protocol}://#{s3_host_alias}/" if s3_host_alias.present?
+    urls_to_check << "#{s3_protocol}://#{s3_host_name}/#{bucket_name}/"
+    urls_to_check.uniq.each do |full_url|
+      check_s3_listing!(full_url)
+      break if @failure_message.present?
+    end
+  rescue
+    nil
+  end
+
+  def check_s3_listing!(full_url)
+    bucket_url = Addressable::URI.parse(full_url)
+    bucket_url.path = bucket_url.path.delete_suffix(media_attachment.file.path(:original))
+    bucket_url.query = "max-keys=1&x-random=#{SecureRandom.hex(10)}"
+    Request.new(:get, bucket_url, allow_local: true).perform do |res|
+      if res.truncated_body&.include?('ListBucketResult')
+        @failure_message = :upload_check_privacy_error_object_storage
+        @failure_action  = 'https://docs.joinmastodon.org/admin/optional/object-storage/#S3'
+      end
+    end
+  end
+
+  def media_attachment
+    @media_attachment ||= begin
+      attachment = Account.representative.media_attachments.first
+      if attachment.present?
+        attachment.touch # rubocop:disable Rails/SkipsModelValidations
+        attachment
+      else
+        create_test_attachment!
+      end
+    end
+  end
+
+  def create_test_attachment!
+    Tempfile.create(%w(test-upload .jpg), binmode: true) do |tmp_file|
+      tmp_file.write(
+        Base64.decode64(
+          '/9j/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAYAAAA' \
+          'AAAD/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA' \
+          'QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQE' \
+          'BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAf/AABEIAAEAAgMBEQACEQEDEQH/x' \
+          'ABKAAEAAAAAAAAAAAAAAAAAAAALEAEAAAAAAAAAAAAAAAAAAAAAAQEAAAAAAAAAAAAAAAA' \
+          'AAAAAEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/8H//2Q=='
+        )
+      )
+      tmp_file.flush
+      Account.representative.media_attachments.create!(file: tmp_file)
+    end
+  end
+end
diff --git a/app/lib/admin/system_check/message.rb b/app/lib/admin/system_check/message.rb
index bfcad3bf3..ad8d4b607 100644
--- a/app/lib/admin/system_check/message.rb
+++ b/app/lib/admin/system_check/message.rb
@@ -1,11 +1,12 @@
 # frozen_string_literal: true
 
 class Admin::SystemCheck::Message
-  attr_reader :key, :value, :action
+  attr_reader :key, :value, :action, :critical
 
-  def initialize(key, value = nil, action = nil)
-    @key    = key
-    @value  = value
-    @action = action
+  def initialize(key, value = nil, action = nil, critical = false)
+    @key      = key
+    @value    = value
+    @action   = action
+    @critical = critical
   end
 end
diff --git a/app/lib/request.rb b/app/lib/request.rb
index 85716f999..4bde6fc91 100644
--- a/app/lib/request.rb
+++ b/app/lib/request.rb
@@ -273,7 +273,9 @@ class Request
 
       def check_private_address(address, host)
         addr = IPAddr.new(address.to_s)
-        return if private_address_exceptions.any? { |range| range.include?(addr) }
+
+        return if Rails.env.development? || private_address_exceptions.any? { |range| range.include?(addr) }
+
         raise Mastodon::PrivateNetworkAddressError, host if PrivateAddressCheck.private_address?(addr)
       end
 
diff --git a/app/lib/translation_service.rb b/app/lib/translation_service.rb
index 5ff93674a..bfe5de44f 100644
--- a/app/lib/translation_service.rb
+++ b/app/lib/translation_service.rb
@@ -21,8 +21,8 @@ class TranslationService
     ENV['DEEPL_API_KEY'].present? || ENV['LIBRE_TRANSLATE_ENDPOINT'].present?
   end
 
-  def supported?(_source_language, _target_language)
-    false
+  def languages
+    {}
   end
 
   def translate(_text, _source_language, _target_language)
diff --git a/app/lib/translation_service/deepl.rb b/app/lib/translation_service/deepl.rb
index deff95a1d..afcb7ecb2 100644
--- a/app/lib/translation_service/deepl.rb
+++ b/app/lib/translation_service/deepl.rb
@@ -17,25 +17,31 @@ class TranslationService::DeepL < TranslationService
     end
   end
 
-  def supported?(source_language, target_language)
-    source_language.in?(languages('source')) && target_language.in?(languages('target'))
+  def languages
+    source_languages = [nil] + fetch_languages('source')
+
+    # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so
+    # they are supported but not returned by the API.
+    target_languages = %w(en pt) + fetch_languages('target')
+
+    source_languages.index_with { |language| target_languages.without(nil, language) }
   end
 
   private
 
-  def languages(type)
-    Rails.cache.fetch("translation_service/deepl/languages/#{type}", expires_in: 7.days, race_condition_ttl: 1.minute) do
-      request(:get, "/v2/languages?type=#{type}") do |res|
-        # In DeepL, EN and PT are deprecated in favor of EN-GB/EN-US and PT-BR/PT-PT, so
-        # they are supported but not returned by the API.
-        extra = type == 'source' ? [nil] : %w(en pt)
-        languages = Oj.load(res.body_with_limit).map { |language| language['language'].downcase }
-
-        languages + extra
-      end
+  def fetch_languages(type)
+    request(:get, "/v2/languages?type=#{type}") do |res|
+      Oj.load(res.body_with_limit).map { |language| normalize_language(language['language']) }
     end
   end
 
+  def normalize_language(language)
+    subtags = language.split(/[_-]/)
+    subtags[0].downcase!
+    subtags[1]&.upcase!
+    subtags.join('-')
+  end
+
   def request(verb, path, **options)
     req = Request.new(verb, "#{base_url}#{path}", **options)
     req.add_headers(Authorization: "DeepL-Auth-Key #{@api_key}")
diff --git a/app/lib/translation_service/libre_translate.rb b/app/lib/translation_service/libre_translate.rb
index 743e4d77f..8bb194a9c 100644
--- a/app/lib/translation_service/libre_translate.rb
+++ b/app/lib/translation_service/libre_translate.rb
@@ -15,22 +15,18 @@ class TranslationService::LibreTranslate < TranslationService
     end
   end
 
-  def supported?(source_language, target_language)
-    languages.key?(source_language) && languages[source_language].include?(target_language)
-  end
-
-  private
-
   def languages
-    Rails.cache.fetch('translation_service/libre_translate/languages', expires_in: 7.days, race_condition_ttl: 1.minute) do
-      request(:get, '/languages') do |res|
-        languages = Oj.load(res.body_with_limit).to_h { |language| [language['code'], language['targets']] }
-        languages[nil] = languages.values.flatten.uniq
-        languages
+    request(:get, '/languages') do |res|
+      languages = Oj.load(res.body_with_limit).to_h do |language|
+        [language['code'], language['targets'].without(language['code'])]
       end
+      languages[nil] = languages.values.flatten.uniq.sort
+      languages
     end
   end
 
+  private
+
   def request(verb, path, **options)
     req = Request.new(verb, "#{@base_url}#{path}", allow_local: true, **options)
     req.add_headers('Content-Type': 'application/json')
diff --git a/app/models/backup.rb b/app/models/backup.rb
index bec3cbfe5..dca06eb58 100644
--- a/app/models/backup.rb
+++ b/app/models/backup.rb
@@ -18,6 +18,6 @@
 class Backup < ApplicationRecord
   belongs_to :user, inverse_of: :backups
 
-  has_attached_file :dump
+  has_attached_file :dump, s3_permissions: 'private'
   validates_attachment_content_type :dump, content_type: /\Aapplication/
 end
diff --git a/app/models/status.rb b/app/models/status.rb
index d053dea44..bf102120e 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -237,16 +237,6 @@ class Status < ApplicationRecord
     public_visibility? || unlisted_visibility?
   end
 
-  def translatable?
-    translate_target_locale = I18n.locale.to_s.split(/[_-]/).first
-
-    distributable? &&
-      content.present? &&
-      language != translate_target_locale &&
-      TranslationService.configured? &&
-      TranslationService.configured.supported?(language, translate_target_locale)
-  end
-
   alias sign? distributable?
 
   def with_media?
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index ce08b6db8..659c45b83 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -4,7 +4,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
   include FormattingHelper
 
   attributes :id, :created_at, :in_reply_to_id, :in_reply_to_account_id,
-             :sensitive, :spoiler_text, :visibility, :language, :translatable,
+             :sensitive, :spoiler_text, :visibility, :language,
              :uri, :url, :replies_count, :reblogs_count,
              :favourites_count, :edited_at
 
@@ -52,10 +52,6 @@ class REST::StatusSerializer < ActiveModel::Serializer
     object.account.user_shows_application? || (current_user? && current_user.account_id == object.account_id)
   end
 
-  def translatable
-    current_user? && object.translatable?
-  end
-
   def visibility
     # This visibility is masked behind "private"
     # to avoid API changes because there are no
diff --git a/app/services/translate_status_service.rb b/app/services/translate_status_service.rb
index 92d8b62a0..796f13a0d 100644
--- a/app/services/translate_status_service.rb
+++ b/app/services/translate_status_service.rb
@@ -6,19 +6,29 @@ class TranslateStatusService < BaseService
   include FormattingHelper
 
   def call(status, target_language)
-    raise Mastodon::NotPermittedError unless status.translatable?
-
     @status = status
     @content = status_content_format(@status)
     @target_language = target_language
 
+    raise Mastodon::NotPermittedError unless permitted?
+
     Rails.cache.fetch("translations/#{@status.language}/#{@target_language}/#{content_hash}", expires_in: CACHE_TTL) { translation_backend.translate(@content, @status.language, @target_language) }
   end
 
   private
 
   def translation_backend
-    TranslationService.configured
+    @translation_backend ||= TranslationService.configured
+  end
+
+  def permitted?
+    return false unless @status.distributable? && @status.content.present? && TranslationService.configured?
+
+    languages[@status.language]&.include?(@target_language)
+  end
+
+  def languages
+    Rails.cache.fetch('translation_service/languages', expires_in: 7.days, race_condition_ttl: 1.hour) { TranslationService.configured.languages }
   end
 
   def content_hash
diff --git a/app/views/admin/account_actions/new.html.haml b/app/views/admin/account_actions/new.html.haml
index c7bb618df..2a0cae15a 100644
--- a/app/views/admin/account_actions/new.html.haml
+++ b/app/views/admin/account_actions/new.html.haml
@@ -5,7 +5,7 @@
   = f.input :report_id, as: :hidden
 
   .fields-group
-    = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')])}, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.pretty_acct)
+    = f.input :type, as: :radio_buttons, collection: Admin::AccountAction.types_for_account(@account), include_blank: false, wrapper: :with_block_label, label_method: ->(type) { safe_join([I18n.t("simple_form.labels.admin_account_action.types.#{type}"), content_tag(:span, I18n.t("simple_form.hints.admin_account_action.types.#{type}"), class: 'hint')]) }, hint: t('simple_form.hints.admin_account_action.type_html', acct: @account.pretty_acct)
 
   - if @account.local?
     %hr.spacer/
diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml
index f5ae88379..44867d0a2 100644
--- a/app/views/admin/accounts/show.html.haml
+++ b/app/views/admin/accounts/show.html.haml
@@ -187,7 +187,7 @@
             %th= t('admin.accounts.shared_inbox_url')
             %td
               = @account.shared_inbox_url
-              = fa_icon DeliveryFailureTracker.available?(@account.shared_inbox_url) ? 'check': 'times'
+              = fa_icon DeliveryFailureTracker.available?(@account.shared_inbox_url) ? 'check' : 'times'
             %td
               - if @domain_block.nil?
                 = table_link_to 'ban', t('admin.domain_blocks.add_new'), new_admin_domain_block_path(_domain: @account.domain)
diff --git a/app/views/admin/action_logs/index.html.haml b/app/views/admin/action_logs/index.html.haml
index cc6aa39bd..c4929cc42 100644
--- a/app/views/admin/action_logs/index.html.haml
+++ b/app/views/admin/action_logs/index.html.haml
@@ -13,7 +13,7 @@
     .filter-subset.filter-subset--with-select
       %strong= t('admin.action_logs.filter_by_action')
       .input.select.optional
-        = select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key]}, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all')
+        = select_tag :action_type, options_for_select(Admin::ActionLogFilter::ACTION_TYPE_MAP.keys.map { |key| [I18n.t("admin.action_logs.action_types.#{key}"), key] }, params[:action_type]), prompt: I18n.t('admin.accounts.moderation.all')
 
 - if @action_logs.empty?
   .muted-hint.center-text
diff --git a/app/views/admin/change_emails/show.html.haml b/app/views/admin/change_emails/show.html.haml
index bc00d6114..8536a18d2 100644
--- a/app/views/admin/change_emails/show.html.haml
+++ b/app/views/admin/change_emails/show.html.haml
@@ -9,4 +9,4 @@
     = f.input :unconfirmed_email, wrapper: :with_label, label: t('admin.accounts.change_email.new_email')
 
   .actions
-    = f.button :submit, class: "button", value: t('admin.accounts.change_email.submit')
+    = f.button :submit, class: 'button', value: t('admin.accounts.change_email.submit')
diff --git a/app/views/admin/custom_emojis/index.html.haml b/app/views/admin/custom_emojis/index.html.haml
index b6cf7ba64..89eb653e3 100644
--- a/app/views/admin/custom_emojis/index.html.haml
+++ b/app/views/admin/custom_emojis/index.html.haml
@@ -12,12 +12,12 @@
       %li= filter_link_to t('admin.accounts.location.all'), local: nil, remote: nil
       %li
         - if selected? local: '1', remote: nil
-          = filter_link_to t('admin.accounts.location.local'), {local: nil, remote: nil}, {local: '1', remote: nil}
+          = filter_link_to t('admin.accounts.location.local'), { local: nil, remote: nil }, { local: '1', remote: nil }
         - else
           = filter_link_to t('admin.accounts.location.local'), local: '1', remote: nil
       %li
         - if selected? remote: '1', local: nil
-          = filter_link_to t('admin.accounts.location.remote'), {remote: nil, local: nil}, {remote: '1', local: nil}
+          = filter_link_to t('admin.accounts.location.remote'), { remote: nil, local: nil }, { remote: '1', local: nil }
         - else
           = filter_link_to t('admin.accounts.location.remote'), remote: '1', local: nil
 
diff --git a/app/views/admin/dashboard/index.html.haml b/app/views/admin/dashboard/index.html.haml
index 66e0c0251..3597152e0 100644
--- a/app/views/admin/dashboard/index.html.haml
+++ b/app/views/admin/dashboard/index.html.haml
@@ -9,7 +9,7 @@
 - unless @system_checks.empty?
   .flash-message-stack
     - @system_checks.each do |message|
-      .flash-message.warning
+      .flash-message{ class: message.critical ? 'alert' : 'warning' }
         = t("admin.system_checks.#{message.key}.message_html", value: message.value ? content_tag(:strong, message.value) : nil)
         - if message.action
           = link_to t("admin.system_checks.#{message.key}.action"), message.action
@@ -56,7 +56,7 @@
     = react_admin_component :dimension, dimension: 'servers', start_at: @time_period.first, end_at: @time_period.last, limit: 8, label: t('admin.dashboard.top_servers')
 
   .dashboard__item.dashboard__item--span-double-column
-    = react_admin_component :retention, start_at: @time_period.last - 6.months,   end_at: @time_period.last, frequency: 'month'
+    = react_admin_component :retention, start_at: @time_period.last - 6.months, end_at: @time_period.last, frequency: 'month'
 
   .dashboard__item.dashboard__item--span-double-row
     = react_admin_component :trends, limit: 7
diff --git a/app/views/application/_card.html.haml b/app/views/application/_card.html.haml
index 3d0e6b1da..719856d49 100644
--- a/app/views/application/_card.html.haml
+++ b/app/views/application/_card.html.haml
@@ -13,4 +13,4 @@
           %strong.emojify.p-name= display_name(account, custom_emojify: true)
         %span
           = acct(account)
-          = fa_icon('lock', { data: ({hidden: true} unless account.locked?)})
+          = fa_icon('lock', { data: ({ hidden: true } unless account.locked?) })
diff --git a/app/views/auth/registrations/_sessions.html.haml b/app/views/auth/registrations/_sessions.html.haml
index c094dfd25..55d753c18 100644
--- a/app/views/auth/registrations/_sessions.html.haml
+++ b/app/views/auth/registrations/_sessions.html.haml
@@ -20,7 +20,7 @@
             %span{ title: session.user_agent }<
               = fa_icon "#{session_device_icon(session)} fw", 'aria-label': session_device_icon(session)
               = ' '
-              = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: "#{session.browser}"), platform: t("sessions.platforms.#{session.platform}", default: "#{session.platform}")
+              = t 'sessions.description', browser: t("sessions.browsers.#{session.browser}", default: session.browser.to_s), platform: t("sessions.platforms.#{session.platform}", default: session.platform.to_s)
           %td
             %samp= session.ip
           %td
diff --git a/app/views/auth/sessions/new.html.haml b/app/views/auth/sessions/new.html.haml
index e98c1ff3d..7914e0157 100644
--- a/app/views/auth/sessions/new.html.haml
+++ b/app/views/auth/sessions/new.html.haml
@@ -19,7 +19,7 @@
     .actions
       = f.button :button, t('auth.login'), type: :submit
 
-- if devise_mapping.omniauthable? and resource_class.omniauth_providers.any?
+- if devise_mapping.omniauthable? && resource_class.omniauth_providers.any?
   .simple_form.alternative-login
     %h4= omniauth_only? ? t('auth.log_in_with') : t('auth.or_log_in_with')
 
diff --git a/app/views/layouts/mailer.html.haml b/app/views/layouts/mailer.html.haml
index 1d0840dc1..288c473d2 100644
--- a/app/views/layouts/mailer.html.haml
+++ b/app/views/layouts/mailer.html.haml
@@ -35,7 +35,7 @@
                 %tbody
                   %tr
                     %td.content-cell.content-end
-                      != "&nbsp; "
+                      != '&nbsp; '
                   %tr
                     %td.blank-cell.footer
                       .email-row
diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml
index 03f49c73d..fd65039ae 100644
--- a/app/views/notification_mailer/_status.html.haml
+++ b/app/views/notification_mailer/_status.html.haml
@@ -20,7 +20,7 @@
                                 %tbody
                                   %tr
                                     %td{ align: 'left', width: 48 }
-                                      = image_tag full_asset_url(status.account.avatar.url), alt:''
+                                      = image_tag full_asset_url(status.account.avatar.url), alt: ''
                                     %td{ align: 'left' }
                                       %bdi= display_name(status.account)
                                       = "@#{status.account.pretty_acct}"
diff --git a/app/views/notification_mailer/favourite.html.haml b/app/views/notification_mailer/favourite.html.haml
index 5d9be3f57..4ec89172d 100644
--- a/app/views/notification_mailer/favourite.html.haml
+++ b/app/views/notification_mailer/favourite.html.haml
@@ -17,7 +17,7 @@
                                 %tbody
                                   %tr
                                     %td
-                                      = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt:''
+                                      = image_tag full_pack_url('media/images/mailer/icon_grade.png'), alt: ''
 
                               %h1= t 'notification_mailer.favourite.title'
                               %p.lead= t('notification_mailer.favourite.body', name: @account.pretty_acct)
diff --git a/app/views/notification_mailer/follow_request.html.haml b/app/views/notification_mailer/follow_request.html.haml
index 4c32c831e..3885a411d 100644
--- a/app/views/notification_mailer/follow_request.html.haml
+++ b/app/views/notification_mailer/follow_request.html.haml
@@ -39,5 +39,5 @@
                             %tbody
                               %tr
                                 %td.button-primary
-                                  = link_to web_url("follow_requests") do
+                                  = link_to web_url('follow_requests') do
                                     %span= t 'notification_mailer.follow_request.action'
diff --git a/app/views/settings/exports/show.html.haml b/app/views/settings/exports/show.html.haml
index c49613fdc..d7b59af27 100644
--- a/app/views/settings/exports/show.html.haml
+++ b/app/views/settings/exports/show.html.haml
@@ -64,6 +64,6 @@
             %td= l backup.created_at
             - if backup.processed?
               %td= number_to_human_size backup.dump_file_size
-              %td= table_link_to 'download', t('exports.archive_takeout.download'), backup.dump.url
+              %td= table_link_to 'download', t('exports.archive_takeout.download'), download_backup_url(backup)
             - else
               %td{ colspan: 2 }= t('exports.archive_takeout.in_progress')
diff --git a/app/views/settings/login_activities/_login_activity.html.haml b/app/views/settings/login_activities/_login_activity.html.haml
index 0c2c7087d..9f4c24d87 100644
--- a/app/views/settings/login_activities/_login_activity.html.haml
+++ b/app/views/settings/login_activities/_login_activity.html.haml
@@ -1,6 +1,6 @@
 - method_str = content_tag(:span, login_activity.omniauth? ? t(login_activity.provider, scope: 'auth.providers') : t(login_activity.authentication_method, scope: 'login_activities.authentication_methods'), class: 'target')
 - ip_str = content_tag(:span, login_activity.ip, class: 'target')
-- browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: "#{login_activity.browser}"), platform: t("sessions.platforms.#{login_activity.platform}", default: "#{login_activity.platform}")), class: 'target', title: login_activity.user_agent)
+- browser_str = content_tag(:span, t('sessions.description', browser: t("sessions.browsers.#{login_activity.browser}", default: login_activity.browser.to_s), platform: t("sessions.platforms.#{login_activity.platform}", default: login_activity.platform.to_)), class: 'target', title: login_activity.user_agent)
 
 .log-entry
   .log-entry__header
diff --git a/app/views/settings/preferences/appearance/show.html.haml b/app/views/settings/preferences/appearance/show.html.haml
index 946cb845d..16bb85068 100644
--- a/app/views/settings/preferences/appearance/show.html.haml
+++ b/app/views/settings/preferences/appearance/show.html.haml
@@ -10,7 +10,7 @@
 
   - unless I18n.locale == :en
     .flash-message.translation-prompt
-      #{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: "_blank", rel: "noopener")}
+      #{t 'appearance.localization.body'} #{content_tag(:a, t('appearance.localization.guide_link_text'), href: t('appearance.localization.guide_link'), target: '_blank', rel: 'noopener')}
       = link_to t('appearance.localization.glitch_guide_link'), target: '_blank', rel: 'noopener noreferrer' do
         = t('appearance.localization.glitch_guide_link_text')
 
@@ -54,7 +54,7 @@
   %h4= t 'appearance.sensitive_content'
 
   .fields-group
-    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'],label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
+    = f.input :setting_display_media, collection: ['default', 'show_all', 'hide_all'], label_method: lambda { |item| t("simple_form.hints.defaults.setting_display_media_#{item}") }, hint: false, as: :radio_buttons, collection_wrapper_tag: 'ul', item_wrapper_tag: 'li', wrapper: :with_floating_label
 
   .fields-group
     = f.input :setting_use_blurhash, as: :boolean, wrapper: :with_label
diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml
index bf498e33d..70cfbd6b8 100644
--- a/app/views/statuses/_detailed_status.html.haml
+++ b/app/views/statuses/_detailed_status.html.haml
@@ -62,18 +62,18 @@
       - else
         = fa_icon('reply-all')
       %span.detailed-status__reblogs>= friendly_number_to_human status.replies_count
-      = " "
+      = ' '
     ·
     - if status.public_visibility? || status.unlisted_visibility?
       %span.detailed-status__link
         = fa_icon('retweet')
         %span.detailed-status__reblogs>= friendly_number_to_human status.reblogs_count
-        = " "
+        = ' '
       ·
     %span.detailed-status__link
       = fa_icon('star')
       %span.detailed-status__favorites>= friendly_number_to_human status.favourites_count
-      = " "
+      = ' '
 
     - if user_signed_in?
       ·
diff --git a/app/views/statuses/_og_image.html.haml b/app/views/statuses/_og_image.html.haml
index 39f390fdf..1ae97adff 100644
--- a/app/views/statuses/_og_image.html.haml
+++ b/app/views/statuses/_og_image.html.haml
@@ -31,7 +31,7 @@
       - player_card = true
       = opengraph 'og:image', full_asset_url(account.avatar.url(:original))
       = opengraph 'og:image:width', '400'
-      = opengraph 'og:image:height','400'
+      = opengraph 'og:image:height', '400'
       = opengraph 'og:audio', full_asset_url(media.file.url(:original))
       = opengraph 'og:audio:secure_url', full_asset_url(media.file.url(:original))
       = opengraph 'og:audio:type', media.file_content_type
diff --git a/app/views/statuses/_status.html.haml b/app/views/statuses/_status.html.haml
index 3b7152753..afeb55faf 100644
--- a/app/views/statuses/_status.html.haml
+++ b/app/views/statuses/_status.html.haml
@@ -11,7 +11,7 @@
   h_class           = microformats_h_class(status, is_predecessor, is_successor, include_threads)
   style_classes     = style_classes(status, is_predecessor, is_successor, include_threads)
   mf_classes        = microformats_classes(status, is_direct_parent, is_direct_child)
-  entry_classes     = h_class + ' ' + mf_classes + ' ' + style_classes
+  entry_classes     = "#{h_class} #{mf_classes} #{style_classes}"
 
 - if status.reply? && include_threads
   - if @next_ancestor
diff --git a/app/views/user_mailer/backup_ready.html.haml b/app/views/user_mailer/backup_ready.html.haml
index 85140b08b..465ead2c8 100644
--- a/app/views/user_mailer/backup_ready.html.haml
+++ b/app/views/user_mailer/backup_ready.html.haml
@@ -55,5 +55,5 @@
                             %tbody
                               %tr
                                 %td.button-primary
-                                  = link_to full_asset_url(@backup.dump.url) do
+                                  = link_to download_backup_url(@backup) do
                                     %span= t 'exports.archive_takeout.download'
diff --git a/app/views/user_mailer/backup_ready.text.erb b/app/views/user_mailer/backup_ready.text.erb
index eb89e7d74..8ebbaae85 100644
--- a/app/views/user_mailer/backup_ready.text.erb
+++ b/app/views/user_mailer/backup_ready.text.erb
@@ -4,4 +4,4 @@
 
 <%= t 'user_mailer.backup_ready.explanation' %>
 
-=> <%= full_asset_url(@backup.dump.url) %>
+=> <%= download_backup_url(@backup) %>
diff --git a/app/views/user_mailer/suspicious_sign_in.html.haml b/app/views/user_mailer/suspicious_sign_in.html.haml
index 856f9fb7c..e4ad500c3 100644
--- a/app/views/user_mailer/suspicious_sign_in.html.haml
+++ b/app/views/user_mailer/suspicious_sign_in.html.haml
@@ -45,7 +45,7 @@
                                 = @remote_ip
                                 %br/
                                 %strong= "#{t('sessions.browser')}:"
-                                %span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: "#{@detection.id}"), platform: t("sessions.platforms.#{@detection.platform.id}", default: "#{@detection.platform.id}")
+                                %span{ title: @user_agent }= t 'sessions.description', browser: t("sessions.browsers.#{@detection.id}", default: @detection.id.to_s), platform: t("sessions.platforms.#{@detection.platform.id}", default: @detection.platform.id.to_s)
                                 %br/
                                 = l(@timestamp)
 
diff --git a/app/views/user_mailer/webauthn_credential_added.html.haml b/app/views/user_mailer/webauthn_credential_added.html.haml
index 81de84b56..c91c96d6f 100644
--- a/app/views/user_mailer/webauthn_credential_added.html.haml
+++ b/app/views/user_mailer/webauthn_credential_added.html.haml
@@ -20,7 +20,7 @@
                                       = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: ''
 
                               %h1= t 'devise.mailer.webauthn_credential.added.title'
-                              %p.lead= "#{t 'devise.mailer.webauthn_credential.added.explanation' }:"
+                              %p.lead= "#{t('devise.mailer.webauthn_credential.added.explanation')}:"
                               %p.lead= @webauthn_credential.nickname
 
 %table.email-table{ cellspacing: 0, cellpadding: 0 }
diff --git a/app/views/user_mailer/webauthn_credential_deleted.html.haml b/app/views/user_mailer/webauthn_credential_deleted.html.haml
index 7b47f0c88..578a08022 100644
--- a/app/views/user_mailer/webauthn_credential_deleted.html.haml
+++ b/app/views/user_mailer/webauthn_credential_deleted.html.haml
@@ -20,7 +20,7 @@
                                       = image_tag full_pack_url('media/images/mailer/icon_lock_open.png'), alt: ''
 
                               %h1= t 'devise.mailer.webauthn_credential.deleted.title'
-                              %p.lead= "#{t 'devise.mailer.webauthn_credential.deleted.explanation' }:"
+                              %p.lead= "#{t('devise.mailer.webauthn_credential.deleted.explanation')}:"
                               %p.lead= @webauthn_credential.nickname
 
 %table.email-table{ cellspacing: 0, cellpadding: 0 }