about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/javascript/flavours/glitch/components/missing_indicator.jsx29
-rw-r--r--app/javascript/flavours/glitch/features/account_gallery/index.jsx6
-rw-r--r--app/javascript/flavours/glitch/features/account_timeline/components/header.jsx2
-rw-r--r--app/javascript/flavours/glitch/features/account_timeline/components/memorial_note.jsx12
-rw-r--r--app/javascript/flavours/glitch/features/account_timeline/index.jsx9
-rw-r--r--app/javascript/flavours/glitch/features/followers/index.jsx6
-rw-r--r--app/javascript/flavours/glitch/features/following/index.jsx6
-rw-r--r--app/javascript/flavours/glitch/features/generic_not_found/index.jsx11
-rw-r--r--app/javascript/flavours/glitch/features/list_timeline/index.jsx9
-rw-r--r--app/javascript/flavours/glitch/features/status/index.jsx12
-rw-r--r--app/javascript/flavours/glitch/features/ui/util/async-components.js4
-rw-r--r--app/javascript/flavours/glitch/styles/components/accounts.scss9
-rw-r--r--app/javascript/mastodon/components/missing_indicator.jsx29
-rw-r--r--app/javascript/mastodon/features/account_gallery/index.jsx6
-rw-r--r--app/javascript/mastodon/features/account_timeline/components/header.jsx2
-rw-r--r--app/javascript/mastodon/features/account_timeline/components/memorial_note.jsx12
-rw-r--r--app/javascript/mastodon/features/account_timeline/index.jsx7
-rw-r--r--app/javascript/mastodon/features/followers/index.jsx6
-rw-r--r--app/javascript/mastodon/features/following/index.jsx6
-rw-r--r--app/javascript/mastodon/features/generic_not_found/index.jsx11
-rw-r--r--app/javascript/mastodon/features/list_timeline/index.jsx8
-rw-r--r--app/javascript/mastodon/features/status/index.jsx12
-rw-r--r--app/javascript/mastodon/features/ui/util/async-components.js4
-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.json20
-rw-r--r--app/javascript/mastodon/locales/ast.json2
-rw-r--r--app/javascript/mastodon/locales/be.json2
-rw-r--r--app/javascript/mastodon/locales/bg.json34
-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.json2
-rw-r--r--app/javascript/mastodon/locales/ckb.json2
-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.json2
-rw-r--r--app/javascript/mastodon/locales/defaultMessages.json22
-rw-r--r--app/javascript/mastodon/locales/el.json2
-rw-r--r--app/javascript/mastodon/locales/en-GB.json2
-rw-r--r--app/javascript/mastodon/locales/en.json3
-rw-r--r--app/javascript/mastodon/locales/eo.json2
-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.json6
-rw-r--r--app/javascript/mastodon/locales/et.json2
-rw-r--r--app/javascript/mastodon/locales/eu.json2
-rw-r--r--app/javascript/mastodon/locales/fa.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.json2
-rw-r--r--app/javascript/mastodon/locales/ka.json2
-rw-r--r--app/javascript/mastodon/locales/kab.json2
-rw-r--r--app/javascript/mastodon/locales/kk.json2
-rw-r--r--app/javascript/mastodon/locales/kn.json2
-rw-r--r--app/javascript/mastodon/locales/ko.json12
-rw-r--r--app/javascript/mastodon/locales/ku.json2
-rw-r--r--app/javascript/mastodon/locales/kw.json2
-rw-r--r--app/javascript/mastodon/locales/la.json2
-rw-r--r--app/javascript/mastodon/locales/lt.json2
-rw-r--r--app/javascript/mastodon/locales/lv.json2
-rw-r--r--app/javascript/mastodon/locales/mk.json2
-rw-r--r--app/javascript/mastodon/locales/ml.json2
-rw-r--r--app/javascript/mastodon/locales/mr.json2
-rw-r--r--app/javascript/mastodon/locales/ms.json2
-rw-r--r--app/javascript/mastodon/locales/my.json4
-rw-r--r--app/javascript/mastodon/locales/nl.json2
-rw-r--r--app/javascript/mastodon/locales/nn.json2
-rw-r--r--app/javascript/mastodon/locales/no.json2
-rw-r--r--app/javascript/mastodon/locales/oc.json2
-rw-r--r--app/javascript/mastodon/locales/pa.json2
-rw-r--r--app/javascript/mastodon/locales/pl.json54
-rw-r--r--app/javascript/mastodon/locales/pt-BR.json2
-rw-r--r--app/javascript/mastodon/locales/pt-PT.json2
-rw-r--r--app/javascript/mastodon/locales/ro.json2
-rw-r--r--app/javascript/mastodon/locales/ru.json2
-rw-r--r--app/javascript/mastodon/locales/sa.json2
-rw-r--r--app/javascript/mastodon/locales/sc.json2
-rw-r--r--app/javascript/mastodon/locales/sco.json2
-rw-r--r--app/javascript/mastodon/locales/si.json2
-rw-r--r--app/javascript/mastodon/locales/sk.json14
-rw-r--r--app/javascript/mastodon/locales/sl.json18
-rw-r--r--app/javascript/mastodon/locales/sq.json2
-rw-r--r--app/javascript/mastodon/locales/sr-Latn.json2
-rw-r--r--app/javascript/mastodon/locales/sr.json2
-rw-r--r--app/javascript/mastodon/locales/sv.json20
-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.json2
-rw-r--r--app/javascript/mastodon/locales/tr.json2
-rw-r--r--app/javascript/mastodon/locales/tt.json2
-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.json20
-rw-r--r--app/javascript/mastodon/locales/zh-HK.json2
-rw-r--r--app/javascript/mastodon/locales/zh-TW.json14
-rw-r--r--app/javascript/styles/mastodon/components.scss9
-rw-r--r--app/models/status.rb48
-rw-r--r--app/models/tag.rb4
124 files changed, 211 insertions, 485 deletions
diff --git a/app/javascript/flavours/glitch/components/missing_indicator.jsx b/app/javascript/flavours/glitch/components/missing_indicator.jsx
deleted file mode 100644
index 08e39c236..000000000
--- a/app/javascript/flavours/glitch/components/missing_indicator.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import illustration from 'flavours/glitch/images/elephant_ui_disappointed.svg';
-import classNames from 'classnames';
-import { Helmet } from 'react-helmet';
-
-const MissingIndicator = ({ fullPage }) => (
-  <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>
-    <div className='regeneration-indicator__figure'>
-      <img src={illustration} alt='' />
-    </div>
-
-    <div className='regeneration-indicator__label'>
-      <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
-      <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
-    </div>
-
-    <Helmet>
-      <meta name='robots' content='noindex' />
-    </Helmet>
-  </div>
-);
-
-MissingIndicator.propTypes = {
-  fullPage: PropTypes.bool,
-};
-
-export default MissingIndicator;
diff --git a/app/javascript/flavours/glitch/features/account_gallery/index.jsx b/app/javascript/flavours/glitch/features/account_gallery/index.jsx
index 6914bcba7..685b606fa 100644
--- a/app/javascript/flavours/glitch/features/account_gallery/index.jsx
+++ b/app/javascript/flavours/glitch/features/account_gallery/index.jsx
@@ -13,9 +13,9 @@ import MediaItem from './components/media_item';
 import HeaderContainer from 'flavours/glitch/features/account_timeline/containers/header_container';
 import ScrollContainer from 'flavours/glitch/containers/scroll_container';
 import LoadMore from 'flavours/glitch/components/load_more';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import { openModal } from 'flavours/glitch/actions/modal';
 import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -166,9 +166,7 @@ class AccountGallery extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx b/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx
index eec065b43..9b3c273bc 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx
+++ b/app/javascript/flavours/glitch/features/account_timeline/components/header.jsx
@@ -4,6 +4,7 @@ import PropTypes from 'prop-types';
 import InnerHeader from 'flavours/glitch/features/account/components/header';
 import ActionBar from 'flavours/glitch/features/account/components/action_bar';
 import ImmutablePureComponent from 'react-immutable-pure-component';
+import MemorialNote from './memorial_note';
 import { FormattedMessage } from 'react-intl';
 import { NavLink } from 'react-router-dom';
 import MovedNote from './moved_note';
@@ -116,6 +117,7 @@ export default class Header extends ImmutablePureComponent {
 
     return (
       <div className='account-timeline__header'>
+        {(!hidden && account.get('memorial')) && <MemorialNote />}
         {(!hidden && account.get('moved')) && <MovedNote from={account} to={account.get('moved')} />}
 
         <InnerHeader
diff --git a/app/javascript/flavours/glitch/features/account_timeline/components/memorial_note.jsx b/app/javascript/flavours/glitch/features/account_timeline/components/memorial_note.jsx
new file mode 100644
index 000000000..fed95ac2a
--- /dev/null
+++ b/app/javascript/flavours/glitch/features/account_timeline/components/memorial_note.jsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { FormattedMessage } from 'react-intl';
+
+const MemorialNote = () => (
+  <div className='account-memorial-banner'>
+    <div className='account-memorial-banner__message'>
+      <FormattedMessage id='account.in_memoriam' defaultMessage='In Memoriam.' />
+    </div>
+  </div>
+);
+
+export default MemorialNote;
diff --git a/app/javascript/flavours/glitch/features/account_timeline/index.jsx b/app/javascript/flavours/glitch/features/account_timeline/index.jsx
index 38361b1ca..bc1adb1c4 100644
--- a/app/javascript/flavours/glitch/features/account_timeline/index.jsx
+++ b/app/javascript/flavours/glitch/features/account_timeline/index.jsx
@@ -13,12 +13,12 @@ import ColumnBackButton from 'flavours/glitch/components/column_back_button';
 import { List as ImmutableList } from 'immutable';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import { FormattedMessage } from 'react-intl';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import TimelineHint from 'flavours/glitch/components/timeline_hint';
 import LimitedAccountHint from './components/limited_account_hint';
 import { getAccountHidden } from 'flavours/glitch/selectors';
-import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map';
 import { fetchFeaturedTags } from '../../actions/featured_tags';
+import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const emptyList = ImmutableList();
 
@@ -160,10 +160,7 @@ class AccountTimeline extends ImmutablePureComponent {
       );
     } else if (!isLoading && !isAccount) {
       return (
-        <Column>
-          <ColumnBackButton multiColumn={multiColumn} />
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/flavours/glitch/features/followers/index.jsx b/app/javascript/flavours/glitch/features/followers/index.jsx
index 2565772d1..2c4db665a 100644
--- a/app/javascript/flavours/glitch/features/followers/index.jsx
+++ b/app/javascript/flavours/glitch/features/followers/index.jsx
@@ -16,12 +16,12 @@ import Column from 'flavours/glitch/features/ui/components/column';
 import ProfileColumnHeader from 'flavours/glitch/features/account/components/profile_column_header';
 import HeaderContainer from 'flavours/glitch/features/account_timeline/containers/header_container';
 import ImmutablePureComponent from 'react-immutable-pure-component';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import ScrollableList from 'flavours/glitch/components/scrollable_list';
 import TimelineHint from 'flavours/glitch/components/timeline_hint';
 import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 import { getAccountHidden } from 'flavours/glitch/selectors';
 import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -117,9 +117,7 @@ class Followers extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/flavours/glitch/features/following/index.jsx b/app/javascript/flavours/glitch/features/following/index.jsx
index 2c05e3310..39ff4c603 100644
--- a/app/javascript/flavours/glitch/features/following/index.jsx
+++ b/app/javascript/flavours/glitch/features/following/index.jsx
@@ -16,12 +16,12 @@ import Column from 'flavours/glitch/features/ui/components/column';
 import ProfileColumnHeader from 'flavours/glitch/features/account/components/profile_column_header';
 import HeaderContainer from 'flavours/glitch/features/account_timeline/containers/header_container';
 import ImmutablePureComponent from 'react-immutable-pure-component';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import ScrollableList from 'flavours/glitch/components/scrollable_list';
 import TimelineHint from 'flavours/glitch/components/timeline_hint';
 import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 import { getAccountHidden } from 'flavours/glitch/selectors';
 import { normalizeForLookup } from 'flavours/glitch/reducers/accounts_map';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -117,9 +117,7 @@ class Following extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/flavours/glitch/features/generic_not_found/index.jsx b/app/javascript/flavours/glitch/features/generic_not_found/index.jsx
deleted file mode 100644
index 4412adaed..000000000
--- a/app/javascript/flavours/glitch/features/generic_not_found/index.jsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-import Column from 'flavours/glitch/features/ui/components/column';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
-
-const GenericNotFound = () => (
-  <Column>
-    <MissingIndicator fullPage />
-  </Column>
-);
-
-export default GenericNotFound;
diff --git a/app/javascript/flavours/glitch/features/list_timeline/index.jsx b/app/javascript/flavours/glitch/features/list_timeline/index.jsx
index a32383b13..7b802318c 100644
--- a/app/javascript/flavours/glitch/features/list_timeline/index.jsx
+++ b/app/javascript/flavours/glitch/features/list_timeline/index.jsx
@@ -10,13 +10,12 @@ import { openModal } from 'flavours/glitch/actions/modal';
 import { connectListStream } from 'flavours/glitch/actions/streaming';
 import { expandListTimeline } from 'flavours/glitch/actions/timelines';
 import Column from 'flavours/glitch/components/column';
-import ColumnBackButton from 'flavours/glitch/components/column_back_button';
 import ColumnHeader from 'flavours/glitch/components/column_header';
 import Icon from 'flavours/glitch/components/icon';
 import LoadingIndicator from 'flavours/glitch/components/loading_indicator';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import RadioButton from 'flavours/glitch/components/radio_button';
 import StatusListContainer from 'flavours/glitch/features/ui/containers/status_list_container';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const messages = defineMessages({
   deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' },
@@ -156,11 +155,7 @@ class ListTimeline extends React.PureComponent {
       );
     } else if (list === false) {
       return (
-        <Column>
-          <div className='scrollable'>
-            <MissingIndicator />
-          </div>
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/flavours/glitch/features/status/index.jsx b/app/javascript/flavours/glitch/features/status/index.jsx
index f01ad2dbe..c220d761f 100644
--- a/app/javascript/flavours/glitch/features/status/index.jsx
+++ b/app/javascript/flavours/glitch/features/status/index.jsx
@@ -16,7 +16,6 @@ import {
   translateStatus,
   undoStatusTranslation,
 } from 'flavours/glitch/actions/statuses';
-import MissingIndicator from 'flavours/glitch/components/missing_indicator';
 import LoadingIndicator from 'flavours/glitch/components/loading_indicator';
 import DetailedStatus from './components/detailed_status';
 import ActionBar from './components/action_bar';
@@ -43,7 +42,6 @@ import { initReport } from 'flavours/glitch/actions/reports';
 import { initBoostModal } from 'flavours/glitch/actions/boosts';
 import { makeGetStatus, makeGetPictureInPicture } from 'flavours/glitch/selectors';
 import ScrollContainer from 'flavours/glitch/containers/scroll_container';
-import ColumnBackButton from 'flavours/glitch/components/column_back_button';
 import ColumnHeader from '../../components/column_header';
 import StatusContainer from 'flavours/glitch/containers/status_container';
 import { openModal } from 'flavours/glitch/actions/modal';
@@ -56,6 +54,7 @@ import { autoUnfoldCW } from 'flavours/glitch/utils/content_warning';
 import { textForScreenReader, defaultMediaVisibility } from 'flavours/glitch/components/status';
 import Icon from 'flavours/glitch/components/icon';
 import { Helmet } from 'react-helmet';
+import BundleColumnError from 'flavours/glitch/features/ui/components/bundle_column_error';
 
 const messages = defineMessages({
   deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
@@ -620,21 +619,18 @@ class Status extends ImmutablePureComponent {
 
     if (status === null) {
       return (
-        <Column>
-          <ColumnBackButton multiColumn={multiColumn} />
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
     const isExpanded = settings.getIn(['content_warnings', 'shared_state']) ? !status.get('hidden') : this.state.isExpanded;
 
     if (ancestorsIds && ancestorsIds.size > 0) {
-      ancestors = <div>{this.renderChildren(ancestorsIds)}</div>;
+      ancestors = <>{this.renderChildren(ancestorsIds)}</>;
     }
 
     if (descendantsIds && descendantsIds.size > 0) {
-      descendants = <div>{this.renderChildren(descendantsIds)}</div>;
+      descendants = <>{this.renderChildren(descendantsIds)}</>;
     }
 
     const isLocal = status.getIn(['account', 'acct'], '').indexOf('@') === -1;
diff --git a/app/javascript/flavours/glitch/features/ui/util/async-components.js b/app/javascript/flavours/glitch/features/ui/util/async-components.js
index 03e501628..0e632bc81 100644
--- a/app/javascript/flavours/glitch/features/ui/util/async-components.js
+++ b/app/javascript/flavours/glitch/features/ui/util/async-components.js
@@ -90,10 +90,6 @@ export function FollowRequests () {
   return import(/* webpackChunkName: "flavours/glitch/async/follow_requests" */'flavours/glitch/features/follow_requests');
 }
 
-export function GenericNotFound () {
-  return import(/* webpackChunkName: "flavours/glitch/async/generic_not_found" */'flavours/glitch/features/generic_not_found');
-}
-
 export function FavouritedStatuses () {
   return import(/* webpackChunkName: "flavours/glitch/async/favourited_statuses" */'flavours/glitch/features/favourited_statuses');
 }
diff --git a/app/javascript/flavours/glitch/styles/components/accounts.scss b/app/javascript/flavours/glitch/styles/components/accounts.scss
index a5ba370aa..374f46907 100644
--- a/app/javascript/flavours/glitch/styles/components/accounts.scss
+++ b/app/javascript/flavours/glitch/styles/components/accounts.scss
@@ -388,7 +388,7 @@
         content: '';
         position: absolute;
         bottom: 0;
-        inset-inline-start: 50%;
+        left: 50%;
         width: 0;
         height: 0;
         transform: translateX(-50%);
@@ -770,7 +770,8 @@
 }
 
 .moved-account-banner,
-.follow-request-banner {
+.follow-request-banner,
+.account-memorial-banner {
   padding: 20px;
   background: lighten($ui-base-color, 4%);
   display: flex;
@@ -804,3 +805,7 @@
 .follow-request-banner .button {
   width: 100%;
 }
+
+.account-memorial-banner__message {
+  margin-bottom: 0;
+}
diff --git a/app/javascript/mastodon/components/missing_indicator.jsx b/app/javascript/mastodon/components/missing_indicator.jsx
deleted file mode 100644
index 05e0d653d..000000000
--- a/app/javascript/mastodon/components/missing_indicator.jsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { FormattedMessage } from 'react-intl';
-import illustration from 'mastodon/../images/elephant_ui_disappointed.svg';
-import classNames from 'classnames';
-import { Helmet } from 'react-helmet';
-
-const MissingIndicator = ({ fullPage }) => (
-  <div className={classNames('regeneration-indicator', { 'regeneration-indicator--without-header': fullPage })}>
-    <div className='regeneration-indicator__figure'>
-      <img src={illustration} alt='' />
-    </div>
-
-    <div className='regeneration-indicator__label'>
-      <FormattedMessage id='missing_indicator.label' tagName='strong' defaultMessage='Not found' />
-      <FormattedMessage id='missing_indicator.sublabel' defaultMessage='This resource could not be found' />
-    </div>
-
-    <Helmet>
-      <meta name='robots' content='noindex' />
-    </Helmet>
-  </div>
-);
-
-MissingIndicator.propTypes = {
-  fullPage: PropTypes.bool,
-};
-
-export default MissingIndicator;
diff --git a/app/javascript/mastodon/features/account_gallery/index.jsx b/app/javascript/mastodon/features/account_gallery/index.jsx
index db76507db..b876df6a2 100644
--- a/app/javascript/mastodon/features/account_gallery/index.jsx
+++ b/app/javascript/mastodon/features/account_gallery/index.jsx
@@ -13,10 +13,10 @@ import MediaItem from './components/media_item';
 import HeaderContainer from '../account_timeline/containers/header_container';
 import ScrollContainer from 'mastodon/containers/scroll_container';
 import LoadMore from 'mastodon/components/load_more';
-import MissingIndicator from 'mastodon/components/missing_indicator';
 import { openModal } from 'mastodon/actions/modal';
 import { FormattedMessage } from 'react-intl';
 import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -161,9 +161,7 @@ class AccountGallery extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/mastodon/features/account_timeline/components/header.jsx b/app/javascript/mastodon/features/account_timeline/components/header.jsx
index bffa5554b..c008f0342 100644
--- a/app/javascript/mastodon/features/account_timeline/components/header.jsx
+++ b/app/javascript/mastodon/features/account_timeline/components/header.jsx
@@ -3,6 +3,7 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
 import PropTypes from 'prop-types';
 import InnerHeader from '../../account/components/header';
 import ImmutablePureComponent from 'react-immutable-pure-component';
+import MemorialNote from './memorial_note';
 import MovedNote from './moved_note';
 import { FormattedMessage } from 'react-intl';
 import { NavLink } from 'react-router-dom';
@@ -115,6 +116,7 @@ export default class Header extends ImmutablePureComponent {
 
     return (
       <div className='account-timeline__header'>
+        {(!hidden && account.get('memorial')) && <MemorialNote />}
         {(!hidden && account.get('moved')) && <MovedNote from={account} to={account.get('moved')} />}
 
         <InnerHeader
diff --git a/app/javascript/mastodon/features/account_timeline/components/memorial_note.jsx b/app/javascript/mastodon/features/account_timeline/components/memorial_note.jsx
new file mode 100644
index 000000000..fed95ac2a
--- /dev/null
+++ b/app/javascript/mastodon/features/account_timeline/components/memorial_note.jsx
@@ -0,0 +1,12 @@
+import React from 'react';
+import { FormattedMessage } from 'react-intl';
+
+const MemorialNote = () => (
+  <div className='account-memorial-banner'>
+    <div className='account-memorial-banner__message'>
+      <FormattedMessage id='account.in_memoriam' defaultMessage='In Memoriam.' />
+    </div>
+  </div>
+);
+
+export default MemorialNote;
diff --git a/app/javascript/mastodon/features/account_timeline/index.jsx b/app/javascript/mastodon/features/account_timeline/index.jsx
index d77563684..bc66f128d 100644
--- a/app/javascript/mastodon/features/account_timeline/index.jsx
+++ b/app/javascript/mastodon/features/account_timeline/index.jsx
@@ -12,7 +12,6 @@ import ColumnBackButton from '../../components/column_back_button';
 import { List as ImmutableList } from 'immutable';
 import ImmutablePureComponent from 'react-immutable-pure-component';
 import { FormattedMessage } from 'react-intl';
-import MissingIndicator from 'mastodon/components/missing_indicator';
 import TimelineHint from 'mastodon/components/timeline_hint';
 import { me } from 'mastodon/initial_state';
 import { connectTimeline, disconnectTimeline } from 'mastodon/actions/timelines';
@@ -20,6 +19,7 @@ import LimitedAccountHint from './components/limited_account_hint';
 import { getAccountHidden } from 'mastodon/selectors';
 import { fetchFeaturedTags } from '../../actions/featured_tags';
 import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const emptyList = ImmutableList();
 
@@ -157,10 +157,7 @@ class AccountTimeline extends ImmutablePureComponent {
       );
     } else if (!isLoading && !isAccount) {
       return (
-        <Column>
-          <ColumnBackButton multiColumn={multiColumn} />
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/mastodon/features/followers/index.jsx b/app/javascript/mastodon/features/followers/index.jsx
index fe86ebb3b..cdd65c9ef 100644
--- a/app/javascript/mastodon/features/followers/index.jsx
+++ b/app/javascript/mastodon/features/followers/index.jsx
@@ -17,11 +17,11 @@ import Column from '../ui/components/column';
 import HeaderContainer from '../account_timeline/containers/header_container';
 import ColumnBackButton from '../../components/column_back_button';
 import ScrollableList from '../../components/scrollable_list';
-import MissingIndicator from 'mastodon/components/missing_indicator';
 import TimelineHint from 'mastodon/components/timeline_hint';
 import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 import { getAccountHidden } from 'mastodon/selectors';
 import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -111,9 +111,7 @@ class Followers extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/mastodon/features/following/index.jsx b/app/javascript/mastodon/features/following/index.jsx
index 8095d73a3..26dee213d 100644
--- a/app/javascript/mastodon/features/following/index.jsx
+++ b/app/javascript/mastodon/features/following/index.jsx
@@ -17,11 +17,11 @@ import Column from '../ui/components/column';
 import HeaderContainer from '../account_timeline/containers/header_container';
 import ColumnBackButton from '../../components/column_back_button';
 import ScrollableList from '../../components/scrollable_list';
-import MissingIndicator from 'mastodon/components/missing_indicator';
 import TimelineHint from 'mastodon/components/timeline_hint';
 import LimitedAccountHint from '../account_timeline/components/limited_account_hint';
 import { getAccountHidden } from 'mastodon/selectors';
 import { normalizeForLookup } from 'mastodon/reducers/accounts_map';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const mapStateToProps = (state, { params: { acct, id } }) => {
   const accountId = id || state.getIn(['accounts_map', normalizeForLookup(acct)]);
@@ -111,9 +111,7 @@ class Following extends ImmutablePureComponent {
 
     if (!isAccount) {
       return (
-        <Column>
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/mastodon/features/generic_not_found/index.jsx b/app/javascript/mastodon/features/generic_not_found/index.jsx
deleted file mode 100644
index 41cd61a5f..000000000
--- a/app/javascript/mastodon/features/generic_not_found/index.jsx
+++ /dev/null
@@ -1,11 +0,0 @@
-import React from 'react';
-import Column from '../ui/components/column';
-import MissingIndicator from '../../components/missing_indicator';
-
-const GenericNotFound = () => (
-  <Column>
-    <MissingIndicator fullPage />
-  </Column>
-);
-
-export default GenericNotFound;
diff --git a/app/javascript/mastodon/features/list_timeline/index.jsx b/app/javascript/mastodon/features/list_timeline/index.jsx
index c0b9a62ff..8297c2748 100644
--- a/app/javascript/mastodon/features/list_timeline/index.jsx
+++ b/app/javascript/mastodon/features/list_timeline/index.jsx
@@ -10,13 +10,12 @@ import { openModal } from 'mastodon/actions/modal';
 import { connectListStream } from 'mastodon/actions/streaming';
 import { expandListTimeline } from 'mastodon/actions/timelines';
 import Column from 'mastodon/components/column';
-import ColumnBackButton from 'mastodon/components/column_back_button';
 import ColumnHeader from 'mastodon/components/column_header';
 import Icon from 'mastodon/components/icon';
 import LoadingIndicator from 'mastodon/components/loading_indicator';
-import MissingIndicator from 'mastodon/components/missing_indicator';
 import RadioButton from 'mastodon/components/radio_button';
 import StatusListContainer from 'mastodon/features/ui/containers/status_list_container';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const messages = defineMessages({
   deleteMessage: { id: 'confirmations.delete_list.message', defaultMessage: 'Are you sure you want to permanently delete this list?' },
@@ -156,10 +155,7 @@ class ListTimeline extends React.PureComponent {
       );
     } else if (list === false) {
       return (
-        <Column>
-          <ColumnBackButton multiColumn={multiColumn} />
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
diff --git a/app/javascript/mastodon/features/status/index.jsx b/app/javascript/mastodon/features/status/index.jsx
index 2d18c6e9d..b547741f7 100644
--- a/app/javascript/mastodon/features/status/index.jsx
+++ b/app/javascript/mastodon/features/status/index.jsx
@@ -16,7 +16,6 @@ import {
   translateStatus,
   undoStatusTranslation,
 } from '../../actions/statuses';
-import MissingIndicator from '../../components/missing_indicator';
 import LoadingIndicator from 'mastodon/components/loading_indicator';
 import DetailedStatus from './components/detailed_status';
 import ActionBar from './components/action_bar';
@@ -50,7 +49,6 @@ import { initBoostModal } from '../../actions/boosts';
 import { initReport } from '../../actions/reports';
 import { makeGetStatus, makeGetPictureInPicture } from '../../selectors';
 import ScrollContainer from 'mastodon/containers/scroll_container';
-import ColumnBackButton from '../../components/column_back_button';
 import ColumnHeader from '../../components/column_header';
 import StatusContainer from '../../containers/status_container';
 import { openModal } from '../../actions/modal';
@@ -62,6 +60,7 @@ import { attachFullscreenListener, detachFullscreenListener, isFullscreen } from
 import { textForScreenReader, defaultMediaVisibility } from '../../components/status';
 import Icon from 'mastodon/components/icon';
 import { Helmet } from 'react-helmet';
+import BundleColumnError from 'mastodon/features/ui/components/bundle_column_error';
 
 const messages = defineMessages({
   deleteConfirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
@@ -584,19 +583,16 @@ class Status extends ImmutablePureComponent {
 
     if (status === null) {
       return (
-        <Column>
-          <ColumnBackButton multiColumn={multiColumn} />
-          <MissingIndicator />
-        </Column>
+        <BundleColumnError multiColumn={multiColumn} errorType='routing' />
       );
     }
 
     if (ancestorsIds && ancestorsIds.size > 0) {
-      ancestors = <div>{this.renderChildren(ancestorsIds)}</div>;
+      ancestors = <>{this.renderChildren(ancestorsIds)}</>;
     }
 
     if (descendantsIds && descendantsIds.size > 0) {
-      descendants = <div>{this.renderChildren(descendantsIds)}</div>;
+      descendants = <>{this.renderChildren(descendantsIds)}</>;
     }
 
     const isLocal = status.getIn(['account', 'acct'], '').indexOf('@') === -1;
diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js
index 1cf07f645..e6382fa10 100644
--- a/app/javascript/mastodon/features/ui/util/async-components.js
+++ b/app/javascript/mastodon/features/ui/util/async-components.js
@@ -82,10 +82,6 @@ export function FollowRequests () {
   return import(/* webpackChunkName: "features/follow_requests" */'../../follow_requests');
 }
 
-export function GenericNotFound () {
-  return import(/* webpackChunkName: "features/generic_not_found" */'../../generic_not_found');
-}
-
 export function FavouritedStatuses () {
   return import(/* webpackChunkName: "features/favourited_statuses" */'../../favourited_statuses');
 }
diff --git a/app/javascript/mastodon/locales/af.json b/app/javascript/mastodon/locales/af.json
index 9c87eb44e..cdf9cf38c 100644
--- a/app/javascript/mastodon/locales/af.json
+++ b/app/javascript/mastodon/locales/af.json
@@ -365,8 +365,6 @@
   "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": "Jou rekening {disabledAccount} is tans gedeaktiveer omdat jy na {movedToAccount} verhuis het.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "Hide notifications from this user?",
diff --git a/app/javascript/mastodon/locales/an.json b/app/javascript/mastodon/locales/an.json
index 9fea523c6..0430d6bc2 100644
--- a/app/javascript/mastodon/locales/an.json
+++ b/app/javascript/mastodon/locales/an.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
   "loading_indicator.label": "Cargando...",
   "media_gallery.toggle_visible": "{number, plural, one {Amaga la imachen} other {Amaga las imáchens}}",
-  "missing_indicator.label": "No trobau",
-  "missing_indicator.sublabel": "No se trobó este recurso",
   "moved_to_account_banner.text": "La tuya cuenta {disabledAccount} ye actualment deshabilitada perque t'has mudau a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Amagar notificacions d'este usuario?",
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 399efe143..0ba23067c 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -102,7 +102,7 @@
   "column.blocks": "المُستَخدِمون المَحظورون",
   "column.bookmarks": "الفواصل المرجعية",
   "column.community": "الخيط الزمني المحلي",
-  "column.direct": "Private mentions",
+  "column.direct": "الإشارات الخاصة",
   "column.directory": "تَصَفُّحُ المَلفات الشخصية",
   "column.domain_blocks": "النطاقات المحظورة",
   "column.favourites": "المُفَضَّلَة",
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# عنصر جديد} other {# عناصر جديدة}}",
   "loading_indicator.label": "جارٍ التحميل…",
   "media_gallery.toggle_visible": "{number, plural, zero {} one {اخف الصورة} two {اخف الصورتين} few {اخف الصور} many {اخف الصور} other {اخف الصور}}",
-  "missing_indicator.label": "غير موجود",
-  "missing_indicator.sublabel": "تعذر العثور على هذا المورد",
   "moved_to_account_banner.text": "حسابك {disabledAccount} معطل حاليًا لأنك انتقلت إلى {movedToAccount}.",
   "mute_modal.duration": "المدة",
   "mute_modal.hide_notifications": "هل تود إخفاء الإخطارات القادمة من هذا المستخدم ؟",
@@ -376,7 +374,7 @@
   "navigation_bar.bookmarks": "الفواصل المرجعية",
   "navigation_bar.community_timeline": "الخيط المحلي",
   "navigation_bar.compose": "تحرير منشور جديد",
-  "navigation_bar.direct": "Private mentions",
+  "navigation_bar.direct": "الإشارات الخاصة",
   "navigation_bar.discover": "اكتشف",
   "navigation_bar.domain_blocks": "النطاقات المحظورة",
   "navigation_bar.edit_profile": "عدّل الملف التعريفي",
@@ -522,17 +520,17 @@
   "report_notification.categories.spam": "مزعج",
   "report_notification.categories.violation": "القاعدة المنتهَكة",
   "report_notification.open": "فتح التقرير",
-  "search.no_recent_searches": "No recent searches",
+  "search.no_recent_searches": "ما من عمليات بحث تمت مؤخرًا",
   "search.placeholder": "ابحث",
   "search.quick_action.account_search": "Profiles matching {x}",
-  "search.quick_action.go_to_account": "Go to profile {x}",
-  "search.quick_action.go_to_hashtag": "Go to hashtag {x}",
-  "search.quick_action.open_url": "Open URL in Mastodon",
+  "search.quick_action.go_to_account": "الذهاب إلى الصفحة الشخصية لـ {x}",
+  "search.quick_action.go_to_hashtag": "الذهاب إلى الوسم {x}",
+  "search.quick_action.open_url": "فتح الرابط التشعبي في ماستدون",
   "search.quick_action.status_search": "Posts matching {x}",
   "search.search_or_paste": "ابحث أو أدخل رابطا تشعبيا URL",
-  "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
-  "search_results.accounts": "Profiles",
+  "search_popout.quick_actions": "الإجراءات السريعة",
+  "search_popout.recent": "عمليات البحث الأخيرة",
+  "search_results.accounts": "الصفحات التعريفية",
   "search_results.all": "الكل",
   "search_results.hashtags": "الوُسوم",
   "search_results.nothing_found": "تعذر العثور على نتائج تتضمن هذه المصطلحات",
diff --git a/app/javascript/mastodon/locales/ast.json b/app/javascript/mastodon/locales/ast.json
index c0920bbec..99c0281da 100644
--- a/app/javascript/mastodon/locales/ast.json
+++ b/app/javascript/mastodon/locales/ast.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# elementu nuevu} other {# elementos nuevos}}",
   "loading_indicator.label": "Cargando…",
   "media_gallery.toggle_visible": "{number, plural, one {Anubrir la imaxe} other {Anubrir les imáxenes}}",
-  "missing_indicator.label": "Nun s'atopó",
-  "missing_indicator.sublabel": "Nun se pudo atopar esti recursu",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "¿Quies anubrir los avisos d'esti perfil?",
diff --git a/app/javascript/mastodon/locales/be.json b/app/javascript/mastodon/locales/be.json
index 72224a71c..037e867ef 100644
--- a/app/javascript/mastodon/locales/be.json
+++ b/app/javascript/mastodon/locales/be.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# новы элемент} few {# новыя элементы} many {# новых элементаў} 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": "Схаваць апавяшчэнні ад гэтага карыстальніка?",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 284e6b22b..e622c3d45 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -20,7 +20,7 @@
   "account.blocked": "Блокирани",
   "account.browse_more_on_origin_server": "Разглеждане на още в оригиналния профил",
   "account.cancel_follow_request": "Оттегляне на заявката за последване",
-  "account.direct": "Privately mention @{name}",
+  "account.direct": "Частно споменаване на @{name}",
   "account.disable_notifications": "Сприране на известия при публикуване от @{name}",
   "account.domain_blocked": "Блокиран домейн",
   "account.edit_profile": "Редактиране на профила",
@@ -102,7 +102,7 @@
   "column.blocks": "Блокирани потребители",
   "column.bookmarks": "Отметки",
   "column.community": "Локална часова ос",
-  "column.direct": "Private mentions",
+  "column.direct": "Частни споменавания",
   "column.directory": "Разглеждане на профили",
   "column.domain_blocks": "Блокирани домейни",
   "column.favourites": "Любими",
@@ -216,7 +216,7 @@
   "empty_column.blocks": "Още не сте блокирали никакви потребители.",
   "empty_column.bookmarked_statuses": "Още не сте отметнали публикации. Отметвайки някоя, то тя ще се покаже тук.",
   "empty_column.community": "Местната часова ос е празна. Напишете нещо обществено, за да завъртите нещата!",
-  "empty_column.direct": "You don't have any private mentions yet. When you send or receive one, it will show up here.",
+  "empty_column.direct": "Още нямате никакви частни споменавания. Тук ще се показват, изпращайки или получавайки едно.",
   "empty_column.domain_blocks": "Още няма блокирани домейни.",
   "empty_column.explore_statuses": "Няма нищо налагащо се в момента. Проверете пак по-късно!",
   "empty_column.favourited_statuses": "Още нямате любими публикации. Поставяйки някоя в любими, то тя ще се покаже тук.",
@@ -314,7 +314,7 @@
   "keyboard_shortcuts.column": "Съсредоточение на колона",
   "keyboard_shortcuts.compose": "Фокус на текстовата зона за съставяне",
   "keyboard_shortcuts.description": "Опис",
-  "keyboard_shortcuts.direct": "to open direct messages column",
+  "keyboard_shortcuts.direct": "за отваряне на колоната с частни споменавания",
   "keyboard_shortcuts.down": "Преместване надолу в списъка",
   "keyboard_shortcuts.enter": "Отваряне на публикация",
   "keyboard_shortcuts.favourite": "Към любими публикации",
@@ -365,8 +365,6 @@
   "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": "Скривате ли известията от потребителя?",
@@ -376,7 +374,7 @@
   "navigation_bar.bookmarks": "Отметки",
   "navigation_bar.community_timeline": "Локален инфопоток",
   "navigation_bar.compose": "Съставяне на нова публикация",
-  "navigation_bar.direct": "Private mentions",
+  "navigation_bar.direct": "Частни споменавания",
   "navigation_bar.discover": "Откриване",
   "navigation_bar.domain_blocks": "Блокирани домейни",
   "navigation_bar.edit_profile": "Редактиране на профила",
@@ -522,17 +520,17 @@
   "report_notification.categories.spam": "Спам",
   "report_notification.categories.violation": "Нарушение на правилото",
   "report_notification.open": "Отваряне на доклада",
-  "search.no_recent_searches": "No recent searches",
+  "search.no_recent_searches": "Няма скорошни търсения",
   "search.placeholder": "Търсене",
-  "search.quick_action.account_search": "Profiles matching {x}",
-  "search.quick_action.go_to_account": "Go to profile {x}",
-  "search.quick_action.go_to_hashtag": "Go to hashtag {x}",
-  "search.quick_action.open_url": "Open URL in Mastodon",
-  "search.quick_action.status_search": "Posts matching {x}",
+  "search.quick_action.account_search": "Съвпадение на профили {x}",
+  "search.quick_action.go_to_account": "Към профил {x}",
+  "search.quick_action.go_to_hashtag": "Към хаштаг {x}",
+  "search.quick_action.open_url": "Отваряне на URL адреса в Mastodon",
+  "search.quick_action.status_search": "Съвпадение на публикации {x}",
   "search.search_or_paste": "Търсене или поставяне на URL адрес",
-  "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
-  "search_results.accounts": "Profiles",
+  "search_popout.quick_actions": "Бързи действия",
+  "search_popout.recent": "Скорошни търсения",
+  "search_results.accounts": "Профили",
   "search_results.all": "Всичко",
   "search_results.hashtags": "Хаштагове",
   "search_results.nothing_found": "Не може да се намери каквото и да било за тези термини при търсене",
@@ -559,8 +557,8 @@
   "status.copy": "Копиране на връзката към публикация",
   "status.delete": "Изтриване",
   "status.detailed_status": "Подробен изглед на разговора",
-  "status.direct": "Privately mention @{name}",
-  "status.direct_indicator": "Private mention",
+  "status.direct": "Частно споменаване на @{name}",
+  "status.direct_indicator": "Частно споменаване",
   "status.edit": "Редактиране",
   "status.edited": "Редактирано на {date}",
   "status.edited_x_times": "Редактирано {count, plural,one {{count} път} other {{count} пъти}}",
diff --git a/app/javascript/mastodon/locales/bn.json b/app/javascript/mastodon/locales/bn.json
index ccd856abc..7b061aa95 100644
--- a/app/javascript/mastodon/locales/bn.json
+++ b/app/javascript/mastodon/locales/bn.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# নতুন জিনিস} other {# নতুন জিনিস}}",
   "loading_indicator.label": "আসছে...",
   "media_gallery.toggle_visible": "দৃশ্যতার অবস্থা বদলান",
-  "missing_indicator.label": "খুঁজে পাওয়া যায়নি",
-  "missing_indicator.sublabel": "জিনিসটা খুঁজে পাওয়া যায়নি",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "সময়কাল",
   "mute_modal.hide_notifications": "এই ব্যবহারকারীর প্রজ্ঞাপন বন্ধ করবেন ?",
diff --git a/app/javascript/mastodon/locales/br.json b/app/javascript/mastodon/locales/br.json
index c8ec088e1..d149b692f 100644
--- a/app/javascript/mastodon/locales/br.json
+++ b/app/javascript/mastodon/locales/br.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# dra nevez} other {# dra nevez}}",
   "loading_indicator.label": "O kargañ...",
   "media_gallery.toggle_visible": "{number, plural, one {Kuzhat ar skeudenn} other {Kuzhat ar skeudenn}}",
-  "missing_indicator.label": "Digavet",
-  "missing_indicator.sublabel": "An danvez-se ne vez ket kavet",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Padelezh",
   "mute_modal.hide_notifications": "Kuzhat kemenadennoù eus an implijer-se ?",
diff --git a/app/javascript/mastodon/locales/bs.json b/app/javascript/mastodon/locales/bs.json
index c2d34b715..fc9db6330 100644
--- a/app/javascript/mastodon/locales/bs.json
+++ b/app/javascript/mastodon/locales/bs.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index dd30da215..57cc616ac 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# element nou} other {# elements nous}}",
   "loading_indicator.label": "Es carrega...",
   "media_gallery.toggle_visible": "{number, plural, one {Amaga la imatge} other {Amaga les imatges}}",
-  "missing_indicator.label": "No s'ha trobat",
-  "missing_indicator.sublabel": "Aquest recurs no s'ha trobat",
   "moved_to_account_banner.text": "El teu compte {disabledAccount} està actualment desactivat perquè l'has traslladat a {movedToAccount}.",
   "mute_modal.duration": "Durada",
   "mute_modal.hide_notifications": "Amagar les notificacions d'aquest usuari?",
diff --git a/app/javascript/mastodon/locales/ckb.json b/app/javascript/mastodon/locales/ckb.json
index ca0ca6f19..ee2f4ea4c 100644
--- a/app/javascript/mastodon/locales/ckb.json
+++ b/app/javascript/mastodon/locales/ckb.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# بەڕگەی نوێ} other {# بەڕگەی نوێ}}",
   "loading_indicator.label": "بارکردن...",
   "media_gallery.toggle_visible": "شاردنەوەی {number, plural, one {image} other {images}}",
-  "missing_indicator.label": "نەدۆزرایەوە",
-  "missing_indicator.sublabel": "ئەو سەرچاوەیە نادۆزرێتەوە",
   "moved_to_account_banner.text": "ئەکاونتەکەت {disabledAccount} لە ئێستادا لەکارخراوە چونکە تۆ چوویتە {movedToAccount}.",
   "mute_modal.duration": "ماوە",
   "mute_modal.hide_notifications": "شاردنەوەی ئاگانامەکان لەم بەکارهێنەرە؟ ",
diff --git a/app/javascript/mastodon/locales/co.json b/app/javascript/mastodon/locales/co.json
index df675f151..5ee863b44 100644
--- a/app/javascript/mastodon/locales/co.json
+++ b/app/javascript/mastodon/locales/co.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# entrata nova} other {# entrate nove}}",
   "loading_indicator.label": "Caricamentu...",
   "media_gallery.toggle_visible": "Piattà {number, plural, one {ritrattu} other {ritratti}}",
-  "missing_indicator.label": "Micca trovu",
-  "missing_indicator.sublabel": "Ùn era micca pussivule di truvà sta risorsa",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Durata",
   "mute_modal.hide_notifications": "Piattà nutificazione da st'utilizatore?",
diff --git a/app/javascript/mastodon/locales/cs.json b/app/javascript/mastodon/locales/cs.json
index a8cc9a5b2..042fa4cd2 100644
--- a/app/javascript/mastodon/locales/cs.json
+++ b/app/javascript/mastodon/locales/cs.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nová položka} few {# nové položky} many {# nových položek} other {# nových položek}}",
   "loading_indicator.label": "Načítání...",
   "media_gallery.toggle_visible": "{number, plural, one {Skrýt obrázek} few {Skrýt obrázky} many {Skrýt obrázky} other {Skrýt obrázky}}",
-  "missing_indicator.label": "Nenalezeno",
-  "missing_indicator.sublabel": "Tento zdroj se nepodařilo najít",
   "moved_to_account_banner.text": "Váš účet {disabledAccount} je momentálně deaktivován, protože jste se přesunul/a na {movedToAccount}.",
   "mute_modal.duration": "Trvání",
   "mute_modal.hide_notifications": "Skrýt oznámení od tohoto uživatele?",
diff --git a/app/javascript/mastodon/locales/csb.json b/app/javascript/mastodon/locales/csb.json
index 2150c1d7a..200993424 100644
--- a/app/javascript/mastodon/locales/csb.json
+++ b/app/javascript/mastodon/locales/csb.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/cy.json b/app/javascript/mastodon/locales/cy.json
index 5a076ca9d..619f415f1 100644
--- a/app/javascript/mastodon/locales/cy.json
+++ b/app/javascript/mastodon/locales/cy.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# eitem newydd} other {# eitem newydd}}",
   "loading_indicator.label": "Llwytho...",
   "media_gallery.toggle_visible": "{number, plural, one {Cuddio delwedd} other {Cuddio delwedd}}",
-  "missing_indicator.label": "Heb ei ganfod",
-  "missing_indicator.sublabel": "Nid oes modd canfod yr adnodd hwn",
   "moved_to_account_banner.text": "Ar hyn y bryd, mae eich cyfrif {disabledAccount} wedi ei analluogi am i chi symud i {movedToAccount}.",
   "mute_modal.duration": "Hyd",
   "mute_modal.hide_notifications": "Cuddio hysbysiadau gan y defnyddiwr hwn?",
diff --git a/app/javascript/mastodon/locales/da.json b/app/javascript/mastodon/locales/da.json
index ca9caf79d..c2a05eddc 100644
--- a/app/javascript/mastodon/locales/da.json
+++ b/app/javascript/mastodon/locales/da.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nyt emne} other {# nye emner}}",
   "loading_indicator.label": "Indlæser...",
   "media_gallery.toggle_visible": "{number, plural, one {Skjul billede} other {Skjul billeder}}",
-  "missing_indicator.label": "Ikke fundet",
-  "missing_indicator.sublabel": "Denne ressource kunne ikke findes",
   "moved_to_account_banner.text": "Din konto {disabledAccount} er pt. deaktiveret, da du flyttede til {movedToAccount}.",
   "mute_modal.duration": "Varighed",
   "mute_modal.hide_notifications": "Skjul notifikationer fra denne bruger?",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 2312ca2fb..788dcd326 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# neuer Beitrag} other {# neue Beiträge}}",
   "loading_indicator.label": "Wird geladen …",
   "media_gallery.toggle_visible": "{number, plural, one {Medium ausblenden} other {Medien ausblenden}}",
-  "missing_indicator.label": "Nicht gefunden",
-  "missing_indicator.sublabel": "Der Inhalt konnte nicht gefunden werden",
   "moved_to_account_banner.text": "Dein Konto {disabledAccount} ist derzeit deaktiviert, weil du zu {movedToAccount} umgezogen bist.",
   "mute_modal.duration": "Dauer",
   "mute_modal.hide_notifications": "Benachrichtigungen dieses Profils ausblenden?",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index b490a7b6b..1351945eb 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -356,19 +356,6 @@
   {
     "descriptors": [
       {
-        "defaultMessage": "Not found",
-        "id": "missing_indicator.label"
-      },
-      {
-        "defaultMessage": "This resource could not be found",
-        "id": "missing_indicator.sublabel"
-      }
-    ],
-    "path": "app/javascript/mastodon/components/missing_indicator.json"
-  },
-  {
-    "descriptors": [
-      {
         "defaultMessage": "You need to sign in to access this resource.",
         "id": "not_signed_in_indicator.not_signed_in"
       }
@@ -963,6 +950,15 @@
   {
     "descriptors": [
       {
+        "defaultMessage": "In Memoriam.",
+        "id": "account.in_memoriam"
+      }
+    ],
+    "path": "app/javascript/mastodon/features/account_timeline/components/memorial_note.json"
+  },
+  {
+    "descriptors": [
+      {
         "defaultMessage": "{name} has indicated that their new account is now:",
         "id": "account.moved_to"
       },
diff --git a/app/javascript/mastodon/locales/el.json b/app/javascript/mastodon/locales/el.json
index cefc86853..622ab1a61 100644
--- a/app/javascript/mastodon/locales/el.json
+++ b/app/javascript/mastodon/locales/el.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# νέο} other {# νέα}}",
   "loading_indicator.label": "Φορτώνει...",
   "media_gallery.toggle_visible": "Εναλλαγή ορατότητας",
-  "missing_indicator.label": "Δε βρέθηκε",
-  "missing_indicator.sublabel": "Αδύνατη η εύρεση αυτού του πόρου",
   "moved_to_account_banner.text": "Ο λογαριασμός σας {disabledAccount} είναι προσωρινά απενεργοποιημένος επειδή μεταφερθήκατε στο {movedToAccount}.",
   "mute_modal.duration": "Διάρκεια",
   "mute_modal.hide_notifications": "Απόκρυψη ειδοποιήσεων αυτού του χρήστη;",
diff --git a/app/javascript/mastodon/locales/en-GB.json b/app/javascript/mastodon/locales/en-GB.json
index 5d381bc7d..785bb1d82 100644
--- a/app/javascript/mastodon/locales/en-GB.json
+++ b/app/javascript/mastodon/locales/en-GB.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 236f16861..ae2d5a999 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -39,6 +39,7 @@
   "account.follows_you": "Follows you",
   "account.go_to_profile": "Go to profile",
   "account.hide_reblogs": "Hide boosts from @{name}",
+  "account.in_memoriam": "In Memoriam.",
   "account.joined_short": "Joined",
   "account.languages": "Change subscribed languages",
   "account.link_verified_on": "Ownership of this link was checked on {date}",
@@ -365,8 +366,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index be5ec1dc7..614a0df86 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -365,8 +365,6 @@
   "load_pending": "{count,plural, one {# nova elemento} other {# novaj elementoj}}",
   "loading_indicator.label": "Ŝargado…",
   "media_gallery.toggle_visible": "{number, plural, one {Kaŝi la bildon} other {Kaŝi la bildojn}}",
-  "missing_indicator.label": "Ne trovita",
-  "missing_indicator.sublabel": "Ĉi tiu elemento ne estis trovita",
   "moved_to_account_banner.text": "Via konto {disabledAccount} estas malvalidigita ĉar vi movis ĝin al {movedToAccount}.",
   "mute_modal.duration": "Daŭro",
   "mute_modal.hide_notifications": "Ĉu vi volas kaŝi la sciigojn de ĉi tiu uzanto?",
diff --git a/app/javascript/mastodon/locales/es-AR.json b/app/javascript/mastodon/locales/es-AR.json
index a577cec79..5767dd87e 100644
--- a/app/javascript/mastodon/locales/es-AR.json
+++ b/app/javascript/mastodon/locales/es-AR.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# elemento nuevo} other {# elementos nuevos}}",
   "loading_indicator.label": "Cargando...",
   "media_gallery.toggle_visible": "Ocultar {number, plural, one {imagen} other {imágenes}}",
-  "missing_indicator.label": "No se encontró",
-  "missing_indicator.sublabel": "No se encontró este recurso",
   "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te mudaste a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "¿Querés ocultar las notificaciones de este usuario?",
diff --git a/app/javascript/mastodon/locales/es-MX.json b/app/javascript/mastodon/locales/es-MX.json
index 1338b8b46..0085563d2 100644
--- a/app/javascript/mastodon/locales/es-MX.json
+++ b/app/javascript/mastodon/locales/es-MX.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
   "loading_indicator.label": "Cargando…",
   "media_gallery.toggle_visible": "Cambiar visibilidad",
-  "missing_indicator.label": "No encontrado",
-  "missing_indicator.sublabel": "No se encontró este recurso",
   "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index d9f254055..5355a0791 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -20,7 +20,7 @@
   "account.blocked": "Bloqueado",
   "account.browse_more_on_origin_server": "Ver más en el perfil original",
   "account.cancel_follow_request": "Retirar solicitud de seguimiento",
-  "account.direct": "Mención privada @{name}",
+  "account.direct": "Mención privada a @{name}",
   "account.disable_notifications": "Dejar de notificarme cuando @{name} publique algo",
   "account.domain_blocked": "Dominio bloqueado",
   "account.edit_profile": "Editar perfil",
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nuevo elemento} other {# nuevos elementos}}",
   "loading_indicator.label": "Cargando…",
   "media_gallery.toggle_visible": "Cambiar visibilidad",
-  "missing_indicator.label": "No encontrado",
-  "missing_indicator.sublabel": "No se encontró este recurso",
   "moved_to_account_banner.text": "Tu cuenta {disabledAccount} está actualmente deshabilitada porque te has mudado a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Ocultar notificaciones de este usuario?",
@@ -522,7 +520,7 @@
   "report_notification.categories.spam": "Spam",
   "report_notification.categories.violation": "Infracción de regla",
   "report_notification.open": "Abrir informe",
-  "search.no_recent_searches": "Sin búsquedas recientes",
+  "search.no_recent_searches": "No hay búsquedas recientes",
   "search.placeholder": "Buscar",
   "search.quick_action.account_search": "Perfiles que coinciden con {x}",
   "search.quick_action.go_to_account": "Ir al perfil {x}",
diff --git a/app/javascript/mastodon/locales/et.json b/app/javascript/mastodon/locales/et.json
index a61a577d6..b7ea77b25 100644
--- a/app/javascript/mastodon/locales/et.json
+++ b/app/javascript/mastodon/locales/et.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# uus kirje} other {# uut kirjet}}",
   "loading_indicator.label": "Laeb..",
   "media_gallery.toggle_visible": "{number, plural, one {Varja pilt} other {Varja pildid}}",
-  "missing_indicator.label": "Ei leitud",
-  "missing_indicator.sublabel": "Seda ressurssi ei leitud",
   "moved_to_account_banner.text": "Kontot {disabledAccount} ei ole praegu võimalik kasutada, sest kolisid kontole {movedToAccount}.",
   "mute_modal.duration": "Kestus",
   "mute_modal.hide_notifications": "Kas peita teated sellelt kasutajalt?",
diff --git a/app/javascript/mastodon/locales/eu.json b/app/javascript/mastodon/locales/eu.json
index 597f4fb50..33044d091 100644
--- a/app/javascript/mastodon/locales/eu.json
+++ b/app/javascript/mastodon/locales/eu.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {eleentuberri #} other {# elementu berri}}",
   "loading_indicator.label": "Kargatzen...",
   "media_gallery.toggle_visible": "Txandakatu ikusgaitasuna",
-  "missing_indicator.label": "Ez aurkitua",
-  "missing_indicator.sublabel": "Baliabide hau ezin izan da aurkitu",
   "moved_to_account_banner.text": "Zure {disabledAccount} kontua desgaituta dago une honetan, {movedToAccount} kontura aldatu zinelako.",
   "mute_modal.duration": "Iraupena",
   "mute_modal.hide_notifications": "Ezkutatu erabiltzaile honen jakinarazpenak?",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 37e213c01..803253511 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -365,8 +365,6 @@
   "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": "نهفتن آگاهی‌ها از این کاربر؟",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index a086e0e21..f3139a9e9 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# uusi kohde} other {# uutta kohdetta}}",
   "loading_indicator.label": "Ladataan...",
   "media_gallery.toggle_visible": "{number, plural, one {Piilota kuva} other {Piilota kuvat}}",
-  "missing_indicator.label": "Ei löytynyt",
-  "missing_indicator.sublabel": "Tätä resurssia ei löytynyt",
   "moved_to_account_banner.text": "Tilisi {disabledAccount} on tällä hetkellä poissa käytöstä, koska teit siirron tiliin {movedToAccount}.",
   "mute_modal.duration": "Kesto",
   "mute_modal.hide_notifications": "Piilota tältä käyttäjältä tulevat ilmoitukset?",
@@ -587,7 +585,7 @@
   "status.reblogs.empty": "Kukaan ei ole vielä tehostanut tätä viestiä. Kun joku tekee niin, näkyy kyseinen henkilö tässä.",
   "status.redraft": "Poista ja palauta muokattavaksi",
   "status.remove_bookmark": "Poista kirjanmerkki",
-  "status.replied_to": "Vastaus käyttäjälle {name}",
+  "status.replied_to": "Vastattu {name}",
   "status.reply": "Vastaa",
   "status.replyAll": "Vastaa ketjuun",
   "status.report": "Raportoi @{name}",
diff --git a/app/javascript/mastodon/locales/fo.json b/app/javascript/mastodon/locales/fo.json
index 29a2f7bc2..416dadb5b 100644
--- a/app/javascript/mastodon/locales/fo.json
+++ b/app/javascript/mastodon/locales/fo.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nýtt evni} other {# nýggj evni}}",
   "loading_indicator.label": "Innlesi...",
   "media_gallery.toggle_visible": "{number, plural, one {Fjal mynd} other {Fjal myndir}}",
-  "missing_indicator.label": "Ikki funnið",
-  "missing_indicator.sublabel": "Ikki bar til at finna hetta tilfarið",
   "moved_to_account_banner.text": "Konta tín {disabledAccount} er í løtuni óvirkin, tí tú flutti til {movedToAccount}.",
   "mute_modal.duration": "Tíðarbil",
   "mute_modal.hide_notifications": "Fjal fráboðanir frá hesum brúkaranum?",
diff --git a/app/javascript/mastodon/locales/fr-QC.json b/app/javascript/mastodon/locales/fr-QC.json
index ff85f43b7..c291f1955 100644
--- a/app/javascript/mastodon/locales/fr-QC.json
+++ b/app/javascript/mastodon/locales/fr-QC.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
   "loading_indicator.label": "Chargement…",
   "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
-  "missing_indicator.label": "Non trouvé",
-  "missing_indicator.sublabel": "Cette ressource n'a pas pu être trouvée",
   "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous avez déménagé sur {movedToAccount}.",
   "mute_modal.duration": "Durée",
   "mute_modal.hide_notifications": "Masquer les notifications de ce compte?",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index d3f5bc5a7..95e0ef62b 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nouvel élément} other {# nouveaux éléments}}",
   "loading_indicator.label": "Chargement…",
   "media_gallery.toggle_visible": "{number, plural, one {Cacher l’image} other {Cacher les images}}",
-  "missing_indicator.label": "Non trouvé",
-  "missing_indicator.sublabel": "Ressource introuvable",
   "moved_to_account_banner.text": "Votre compte {disabledAccount} est actuellement désactivé parce que vous l'avez déplacé à {movedToAccount}.",
   "mute_modal.duration": "Durée",
   "mute_modal.hide_notifications": "Masquer les notifications de cette personne ?",
@@ -531,7 +529,7 @@
   "search.quick_action.status_search": "Posts matching {x}",
   "search.search_or_paste": "Rechercher ou saisir une URL",
   "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
+  "search_popout.recent": "Recherches récentes",
   "search_results.accounts": "Profiles",
   "search_results.all": "Tous les résultats",
   "search_results.hashtags": "Hashtags",
@@ -560,7 +558,7 @@
   "status.delete": "Supprimer",
   "status.detailed_status": "Vue détaillée de la conversation",
   "status.direct": "Privately mention @{name}",
-  "status.direct_indicator": "Private mention",
+  "status.direct_indicator": "Mention privée",
   "status.edit": "Éditer",
   "status.edited": "Édité le {date}",
   "status.edited_x_times": "Edité {count, plural, one {{count} fois} other {{count} fois}}",
diff --git a/app/javascript/mastodon/locales/fy.json b/app/javascript/mastodon/locales/fy.json
index d4dfe35a2..a2d83414e 100644
--- a/app/javascript/mastodon/locales/fy.json
+++ b/app/javascript/mastodon/locales/fy.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nij item} other {# nije items}}",
   "loading_indicator.label": "Lade…",
   "media_gallery.toggle_visible": "{number, plural, one {ôfbylding ferstopje} other {ôfbyldingen ferstopje}}",
-  "missing_indicator.label": "Net fûn",
-  "missing_indicator.sublabel": "Dizze boarne kin net fûn wurde",
   "moved_to_account_banner.text": "Omdat jo nei {movedToAccount} ferhuze binne is jo account {disabledAccount} op dit stuit útskeakele.",
   "mute_modal.duration": "Doer",
   "mute_modal.hide_notifications": "Meldingen fan dizze brûker ferstopje?",
diff --git a/app/javascript/mastodon/locales/ga.json b/app/javascript/mastodon/locales/ga.json
index 6645483a5..1d10169ba 100644
--- a/app/javascript/mastodon/locales/ga.json
+++ b/app/javascript/mastodon/locales/ga.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Ag lódáil...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "missing_indicator.label": "Níor aimsíodh é",
-  "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": "Tréimhse",
   "mute_modal.hide_notifications": "Cuir póstalacha ón t-úsáideoir seo i bhfolach?",
diff --git a/app/javascript/mastodon/locales/gd.json b/app/javascript/mastodon/locales/gd.json
index ca3b8b4ab..0b1681385 100644
--- a/app/javascript/mastodon/locales/gd.json
+++ b/app/javascript/mastodon/locales/gd.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nì ùr} two {# nì ùr} few {# nithean ùra} other {# nì ùr}}",
   "loading_indicator.label": "’Ga luchdadh…",
   "media_gallery.toggle_visible": "{number, plural, 1 {Falaich an dealbh} one {Falaich na dealbhan} two {Falaich na dealbhan} few {Falaich na dealbhan} other {Falaich na dealbhan}}",
-  "missing_indicator.label": "Cha deach càil a lorg",
-  "missing_indicator.sublabel": "Cha deach an goireas a lorg",
   "moved_to_account_banner.text": "Tha an cunntas {disabledAccount} agad à comas on a rinn thu imrich gu {movedToAccount}.",
   "mute_modal.duration": "Faide",
   "mute_modal.hide_notifications": "A bheil thu airson na brathan fhalach on chleachdaiche seo?",
diff --git a/app/javascript/mastodon/locales/gl.json b/app/javascript/mastodon/locales/gl.json
index 20279e71f..0c4066b74 100644
--- a/app/javascript/mastodon/locales/gl.json
+++ b/app/javascript/mastodon/locales/gl.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# novo elemento} other {# novos elementos}}",
   "loading_indicator.label": "Estase a cargar...",
   "media_gallery.toggle_visible": "Agochar {number, plural, one {imaxe} other {imaxes}}",
-  "missing_indicator.label": "Non atopado",
-  "missing_indicator.sublabel": "Este recurso non foi atopado",
   "moved_to_account_banner.text": "A túa conta {disabledAccount} está actualmente desactivada porque movéchela a {movedToAccount}.",
   "mute_modal.duration": "Duración",
   "mute_modal.hide_notifications": "Agochar notificacións desta persoa?",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 17b97ca74..87c46230e 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# פריט חדש} other {# פריטים חדשים}}",
   "loading_indicator.label": "טוען...",
   "media_gallery.toggle_visible": "{number, plural, one {להסתיר תמונה} two {להסתיר תמונותיים} many {להסתיר תמונות} other {להסתיר תמונות}}",
-  "missing_indicator.label": "לא נמצא",
-  "missing_indicator.sublabel": "לא ניתן היה למצוא את המשאב",
   "moved_to_account_banner.text": "חשבונך {disabledAccount} אינו פעיל כרגע עקב מעבר ל{movedToAccount}.",
   "mute_modal.duration": "משך הזמן",
   "mute_modal.hide_notifications": "להסתיר התראות מחשבון זה?",
diff --git a/app/javascript/mastodon/locales/hi.json b/app/javascript/mastodon/locales/hi.json
index 186de8129..794ea8ba2 100644
--- a/app/javascript/mastodon/locales/hi.json
+++ b/app/javascript/mastodon/locales/hi.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "लोड हो रहा है...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "missing_indicator.label": "नहीं मिला",
-  "missing_indicator.sublabel": "यह संसाधन नहीं मिल सका।",
   "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?",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index 47d2bfb92..5238228d2 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Učitavanje...",
   "media_gallery.toggle_visible": "Sakrij {number, plural, one {sliku} other {slike}}",
-  "missing_indicator.label": "Nije pronađeno",
-  "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": "Trajanje",
   "mute_modal.hide_notifications": "Sakrij obavijesti ovog korisnika?",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index 4cd7ebde7..46463c231 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# új elem} other {# új elem}}",
   "loading_indicator.label": "Betöltés...",
   "media_gallery.toggle_visible": "{number, plural, one {Kép elrejtése} other {Képek elrejtése}}",
-  "missing_indicator.label": "Nincs találat",
-  "missing_indicator.sublabel": "Ez az erőforrás nem található",
   "moved_to_account_banner.text": "{disabledAccount} fiók jelenleg le van tiltva, mert más {movedToAccount} fiókba került át.",
   "mute_modal.duration": "Időtartam",
   "mute_modal.hide_notifications": "Értesítések elrejtése ettől a felhasználótól?",
diff --git a/app/javascript/mastodon/locales/hy.json b/app/javascript/mastodon/locales/hy.json
index e77641312..703a7a47c 100644
--- a/app/javascript/mastodon/locales/hy.json
+++ b/app/javascript/mastodon/locales/hy.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# նոր նիւթ} other {# նոր նիւթ}}",
   "loading_indicator.label": "Բեռնւում է…",
   "media_gallery.toggle_visible": "Ցուցադրել/թաքցնել",
-  "missing_indicator.label": "Չգտնուեց",
-  "missing_indicator.sublabel": "Պաշարը չի գտնւում",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Տեւողութիւն",
   "mute_modal.hide_notifications": "Թաքցնե՞լ ծանուցումներն այս օգտատիրոջից։",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 6e8a33d37..f041bacba 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, other {# item baru}}",
   "loading_indicator.label": "Tunggu sebentar...",
   "media_gallery.toggle_visible": "Tampil/Sembunyikan",
-  "missing_indicator.label": "Tidak ditemukan",
-  "missing_indicator.sublabel": "Sumber daya tak bisa ditemukan",
   "moved_to_account_banner.text": "Akun {disabledAccount} Anda kini dinonaktifkan karena Anda pindah ke {movedToAccount}.",
   "mute_modal.duration": "Durasi",
   "mute_modal.hide_notifications": "Sembunyikan notifikasi dari pengguna ini?",
diff --git a/app/javascript/mastodon/locales/ig.json b/app/javascript/mastodon/locales/ig.json
index 41280827e..0af0e0de1 100644
--- a/app/javascript/mastodon/locales/ig.json
+++ b/app/javascript/mastodon/locales/ig.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Na-adọnye...",
   "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?",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 7a83ec301..321a8a8a8 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nova kozo} other {# nova kozi}}",
   "loading_indicator.label": "Kargante...",
   "media_gallery.toggle_visible": "Chanjar videbleso",
-  "missing_indicator.label": "Ne trovita",
-  "missing_indicator.sublabel": "Ca moyeno ne existas",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Durado",
   "mute_modal.hide_notifications": "Celez avizi de ca uzanto?",
diff --git a/app/javascript/mastodon/locales/is.json b/app/javascript/mastodon/locales/is.json
index b9d650473..0ae48363d 100644
--- a/app/javascript/mastodon/locales/is.json
+++ b/app/javascript/mastodon/locales/is.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nýtt atriði} other {# ný atriði}}",
   "loading_indicator.label": "Hleð inn...",
   "media_gallery.toggle_visible": "Víxla sýnileika",
-  "missing_indicator.label": "Fannst ekki",
-  "missing_indicator.sublabel": "Tilfangið fannst ekki",
   "moved_to_account_banner.text": "Aðgangurinn þinn {disabledAccount} er óvirkur í augnablikinu vegna þess að þú fluttir þig yfir á {movedToAccount}.",
   "mute_modal.duration": "Lengd",
   "mute_modal.hide_notifications": "Fela tilkynningar frá þessum notanda?",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index ab1cc02af..6eb5f0605 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nuovo oggetto} other {# nuovi oggetti}}",
   "loading_indicator.label": "Caricamento...",
   "media_gallery.toggle_visible": "{number, plural, one {Nascondi immagine} other {Nascondi immagini}}",
-  "missing_indicator.label": "Non trovato",
-  "missing_indicator.sublabel": "Impossibile trovare questa risorsa",
   "moved_to_account_banner.text": "Il tuo profilo {disabledAccount} è correntemente disabilitato perché ti sei spostato a {movedToAccount}.",
   "mute_modal.duration": "Durata",
   "mute_modal.hide_notifications": "Nascondere le notifiche da questo utente?",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index 803736eaa..b320d3425 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -365,8 +365,6 @@
   "load_pending": "{count}件の新着",
   "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": "このユーザーからの通知を隠しますか?",
diff --git a/app/javascript/mastodon/locales/ka.json b/app/javascript/mastodon/locales/ka.json
index 35e808ac1..ea9c08df5 100644
--- a/app/javascript/mastodon/locales/ka.json
+++ b/app/javascript/mastodon/locales/ka.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "იტვირთება...",
   "media_gallery.toggle_visible": "ხილვადობის ჩართვა",
-  "missing_indicator.label": "არაა ნაპოვნი",
-  "missing_indicator.sublabel": "ამ რესურსის პოვნა ვერ მოხერხდა",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "დავმალოთ შეტყობინებები ამ მომხმარებლისგან?",
diff --git a/app/javascript/mastodon/locales/kab.json b/app/javascript/mastodon/locales/kab.json
index 4460e4b65..a0868d68f 100644
--- a/app/javascript/mastodon/locales/kab.json
+++ b/app/javascript/mastodon/locales/kab.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# n uferdis amaynut} other {# n yiferdisen imaynuten}}",
   "loading_indicator.label": "Yessalay-d…",
   "media_gallery.toggle_visible": "Ffer {number, plural, one {tugna} other {tugniwin}}",
-  "missing_indicator.label": "Ulac-it",
-  "missing_indicator.sublabel": "Ur nufi ara aɣbalu-a",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Tanzagt",
   "mute_modal.hide_notifications": "Tebɣiḍ ad teffreḍ talɣutin n umseqdac-a?",
diff --git a/app/javascript/mastodon/locales/kk.json b/app/javascript/mastodon/locales/kk.json
index a2aea1459..8718cf3cc 100644
--- a/app/javascript/mastodon/locales/kk.json
+++ b/app/javascript/mastodon/locales/kk.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# жаңа нәрсе} other {# жаңа нәрсе}}",
   "loading_indicator.label": "Жүктеу...",
   "media_gallery.toggle_visible": "Көрінуді қосу",
-  "missing_indicator.label": "Табылмады",
-  "missing_indicator.sublabel": "Бұл ресурс табылмады",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "Бұл қолданушы ескертпелерін жасырамыз ба?",
diff --git a/app/javascript/mastodon/locales/kn.json b/app/javascript/mastodon/locales/kn.json
index 04edb8522..1de807475 100644
--- a/app/javascript/mastodon/locales/kn.json
+++ b/app/javascript/mastodon/locales/kn.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 7d7659569..ac4b2a834 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -44,7 +44,7 @@
   "account.link_verified_on": "{date}에 이 링크의 소유권이 확인 됨",
   "account.locked_info": "이 계정의 프라이버시 설정은 잠금으로 설정되어 있습니다. 계정 소유자가 수동으로 팔로워를 승인합니다.",
   "account.media": "미디어",
-  "account.mention": "@{name}에게 글쓰기",
+  "account.mention": "@{name} 님에게 멘션",
   "account.moved_to": "{name} 님은 자신의 새 계정이 다음과 같다고 표시했습니다:",
   "account.mute": "@{name} 뮤트",
   "account.mute_notifications": "@{name}의 알림을 뮤트",
@@ -272,7 +272,7 @@
   "footer.get_app": "앱 다운로드하기",
   "footer.invite": "초대하기",
   "footer.keyboard_shortcuts": "키보드 단축키",
-  "footer.privacy_policy": "개인정보 정책",
+  "footer.privacy_policy": "개인정보처리방침",
   "footer.source_code": "소스코드 보기",
   "footer.status": "상태",
   "generic.saved": "저장됨",
@@ -365,8 +365,6 @@
   "load_pending": "{count}개의 새 항목",
   "loading_indicator.label": "불러오는 중...",
   "media_gallery.toggle_visible": "이미지 숨기기",
-  "missing_indicator.label": "찾을 수 없습니다",
-  "missing_indicator.sublabel": "이 리소스를 찾을 수 없었습니다",
   "moved_to_account_banner.text": "당신의 계정 {disabledAccount}는 {movedToAccount}로 이동하였기 때문에 현재 비활성화 상태입니다.",
   "mute_modal.duration": "기간",
   "mute_modal.hide_notifications": "이 사용자로부터의 알림을 숨기시겠습니까?",
@@ -401,7 +399,7 @@
   "notification.favourite": "{name} 님이 당신의 게시물을 마음에 들어합니다",
   "notification.follow": "{name} 님이 나를 팔로우했습니다",
   "notification.follow_request": "{name} 님이 팔로우 요청을 보냈습니다",
-  "notification.mention": "{name}님의 멘션",
+  "notification.mention": "{name} 님의 멘션",
   "notification.own_poll": "투표를 마쳤습니다.",
   "notification.poll": "참여했던 투표가 끝났습니다.",
   "notification.reblog": "{name} 님이 부스트했습니다",
@@ -464,7 +462,7 @@
   "privacy.unlisted.long": "모두가 볼 수 있지만, 발견하기 기능에서는 제외됨",
   "privacy.unlisted.short": "미등재",
   "privacy_policy.last_updated": "{date}에 마지막으로 업데이트됨",
-  "privacy_policy.title": "개인정보 정책",
+  "privacy_policy.title": "개인정보처리방침",
   "refresh": "새로고침",
   "regeneration_indicator.label": "불러오는 중…",
   "regeneration_indicator.sublabel": "당신의 홈 피드가 준비되는 중입니다!",
@@ -573,7 +571,7 @@
   "status.history.edited": "{name} 님이 {date}에 수정함",
   "status.load_more": "더 보기",
   "status.media_hidden": "미디어 숨겨짐",
-  "status.mention": "@{name}님에게 멘션",
+  "status.mention": "@{name} 님에게 멘션",
   "status.more": "자세히",
   "status.mute": "@{name} 님을 뮤트하기",
   "status.mute_conversation": "이 대화를 뮤트",
diff --git a/app/javascript/mastodon/locales/ku.json b/app/javascript/mastodon/locales/ku.json
index 12124a612..c0ab05776 100644
--- a/app/javascript/mastodon/locales/ku.json
+++ b/app/javascript/mastodon/locales/ku.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# hêmaneke nû} other {#hêmaneke nû}}",
   "loading_indicator.label": "Tê barkirin...",
   "media_gallery.toggle_visible": "{number, plural, one {Wêneyê veşêre} other {Wêneyan veşêre}}",
-  "missing_indicator.label": "Nehate dîtin",
-  "missing_indicator.sublabel": "Ev çavkanî nehat dîtin",
   "moved_to_account_banner.text": "Ajimêrê te {disabledAccount} niha neçalak e ji ber ku te bar kir bo {movedToAccount}.",
   "mute_modal.duration": "Dem",
   "mute_modal.hide_notifications": "Agahdariyan ji ev bikarhêner veşêre?",
diff --git a/app/javascript/mastodon/locales/kw.json b/app/javascript/mastodon/locales/kw.json
index b20f93e54..4155b8ac1 100644
--- a/app/javascript/mastodon/locales/kw.json
+++ b/app/javascript/mastodon/locales/kw.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# daklennowydh} other {# a daklennow nowydh}}",
   "loading_indicator.label": "Ow karga...",
   "media_gallery.toggle_visible": "Hide {number, plural, one {aven} other {aven}}",
-  "missing_indicator.label": "Ny veu kevys",
-  "missing_indicator.sublabel": "Ny yllir kavòs an asnodh ma",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duryans",
   "mute_modal.hide_notifications": "Kudha gwarnyansow a'n devnydhyer ma?",
diff --git a/app/javascript/mastodon/locales/la.json b/app/javascript/mastodon/locales/la.json
index 00de10f73..9c236ac8f 100644
--- a/app/javascript/mastodon/locales/la.json
+++ b/app/javascript/mastodon/locales/la.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/lt.json b/app/javascript/mastodon/locales/lt.json
index d1da039df..8da8c1272 100644
--- a/app/javascript/mastodon/locales/lt.json
+++ b/app/javascript/mastodon/locales/lt.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/lv.json b/app/javascript/mastodon/locales/lv.json
index 4f1032ae2..484340892 100644
--- a/app/javascript/mastodon/locales/lv.json
+++ b/app/javascript/mastodon/locales/lv.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# jauna lieta} other {# jaunas lietas}}",
   "loading_indicator.label": "Ielādē...",
   "media_gallery.toggle_visible": "{number, plural, one {Slēpt attēlu} other {Slēpt attēlus}}",
-  "missing_indicator.label": "Nav atrasts",
-  "missing_indicator.sublabel": "Šo resursu nevarēja atrast",
   "moved_to_account_banner.text": "Tavs konts {disabledAccount} pašlaik ir atspējots, jo pārcēlies uz kontu {movedToAccount}.",
   "mute_modal.duration": "Ilgums",
   "mute_modal.hide_notifications": "Slēpt paziņojumus no šī lietotāja?",
diff --git a/app/javascript/mastodon/locales/mk.json b/app/javascript/mastodon/locales/mk.json
index c3778501b..48e683d8a 100644
--- a/app/javascript/mastodon/locales/mk.json
+++ b/app/javascript/mastodon/locales/mk.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/ml.json b/app/javascript/mastodon/locales/ml.json
index cfea1b34e..dda67cc9a 100644
--- a/app/javascript/mastodon/locales/ml.json
+++ b/app/javascript/mastodon/locales/ml.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "ലോഡിംഗ്...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "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?",
diff --git a/app/javascript/mastodon/locales/mr.json b/app/javascript/mastodon/locales/mr.json
index b778c704e..fa3852de2 100644
--- a/app/javascript/mastodon/locales/mr.json
+++ b/app/javascript/mastodon/locales/mr.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "लोड करत आहे...",
   "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?",
diff --git a/app/javascript/mastodon/locales/ms.json b/app/javascript/mastodon/locales/ms.json
index 456706ce6..e603d2f3d 100644
--- a/app/javascript/mastodon/locales/ms.json
+++ b/app/javascript/mastodon/locales/ms.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# item baharu} other {# item baharu}}",
   "loading_indicator.label": "Memuatkan...",
   "media_gallery.toggle_visible": "{number, plural, other {Sembunyikan imej}}",
-  "missing_indicator.label": "Tidak dijumpai",
-  "missing_indicator.sublabel": "Sumber ini tidak dijumpai",
   "moved_to_account_banner.text": "Akaun anda {disabledAccount} kini dinyahdayakan kerana anda berpindah ke {movedToAccount}.",
   "mute_modal.duration": "Tempoh",
   "mute_modal.hide_notifications": "Sembunyikan pemberitahuan daripada pengguna ini?",
diff --git a/app/javascript/mastodon/locales/my.json b/app/javascript/mastodon/locales/my.json
index 197addd1b..a3cb49421 100644
--- a/app/javascript/mastodon/locales/my.json
+++ b/app/javascript/mastodon/locales/my.json
@@ -29,7 +29,7 @@
   "account.featured_tags.last_status_at": "{date} တွင် နောက်ဆုံးပို့စ်",
   "account.featured_tags.last_status_never": "ပို့စ်တင်ထားခြင်းမရှိပါ",
   "account.featured_tags.title": "ဖော်ပြထားသောဟက်ရှ်တက်ခ်များ",
-  "account.follow": "စောင့်ကြည့်မည်",
+  "account.follow": "စောင့်ကြည့်မယ်",
   "account.followers": "စောင့်ကြည့်သူများ",
   "account.followers.empty": "ဤသူကို စောင့်ကြည့်သူ မရှိသေးပါ။",
   "account.followers_counter": "{count, plural, one {{counter} ဖော်လိုဝါများ} other {{counter} ဖော်လိုဝါများ}}",
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "လုပ်ဆောင်နေသည်…",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "missing_indicator.label": "မတွေ့ပါ",
-  "missing_indicator.sublabel": "ရှာဖွေနေသည်ကိုမတွေ့ပါ",
   "moved_to_account_banner.text": "{movedToAccount} အကောင့်သို့ပြောင်းလဲထားသဖြင့် {disabledAccount} အကောင့်မှာပိတ်ထားသည်",
   "mute_modal.duration": "ကြာချိန်",
   "mute_modal.hide_notifications": "ဤအကောင့်မှသတိပေးချက်များကိုပိတ်မလား?",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index bb33a6f0c..e08718c49 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nieuw item} other {# nieuwe items}}",
   "loading_indicator.label": "Laden…",
   "media_gallery.toggle_visible": "{number, plural, one {afbeelding verbergen} other {afbeeldingen verbergen}}",
-  "missing_indicator.label": "Niet gevonden",
-  "missing_indicator.sublabel": "Deze hulpbron kan niet gevonden worden",
   "moved_to_account_banner.text": "Omdat je naar {movedToAccount} bent verhuisd is jouw account {disabledAccount} momenteel uitgeschakeld.",
   "mute_modal.duration": "Duur",
   "mute_modal.hide_notifications": "Verberg meldingen van deze persoon?",
diff --git a/app/javascript/mastodon/locales/nn.json b/app/javascript/mastodon/locales/nn.json
index 40b59ac4d..977d4cb65 100644
--- a/app/javascript/mastodon/locales/nn.json
+++ b/app/javascript/mastodon/locales/nn.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nytt element} other {# nye element}}",
   "loading_indicator.label": "Lastar...",
   "media_gallery.toggle_visible": "{number, plural, one {Skjul bilete} other {Skjul bilete}}",
-  "missing_indicator.label": "Ikkje funne",
-  "missing_indicator.sublabel": "Fann ikkje ressursen",
   "moved_to_account_banner.text": "Kontoen din, {disabledAccount} er for tida deaktivert fordi du har flytta til {movedToAccount}.",
   "mute_modal.duration": "Varigheit",
   "mute_modal.hide_notifications": "Skjul varsel frå denne brukaren?",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index a03c51b0a..797edc9e2 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural,one {# ny gjenstand} other {# nye gjenstander}}",
   "loading_indicator.label": "Laster...",
   "media_gallery.toggle_visible": "Veksle synlighet",
-  "missing_indicator.label": "Ikke funnet",
-  "missing_indicator.sublabel": "Denne ressursen ble ikke funnet",
   "moved_to_account_banner.text": "Din konto {disabledAccount} er for øyeblikket deaktivert fordi du flyttet til {movedToAccount}.",
   "mute_modal.duration": "Varighet",
   "mute_modal.hide_notifications": "Skjul varslinger fra denne brukeren?",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index c333c2ece..6c940e8ec 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nòu element} other {# nòu elements}}",
   "loading_indicator.label": "Cargament…",
   "media_gallery.toggle_visible": "Modificar la visibilitat",
-  "missing_indicator.label": "Pas trobat",
-  "missing_indicator.sublabel": "Aquesta ressorsa es pas estada trobada",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Durada",
   "mute_modal.hide_notifications": "Rescondre las notificacions d’aquesta persona ?",
diff --git a/app/javascript/mastodon/locales/pa.json b/app/javascript/mastodon/locales/pa.json
index d330c136c..aacb50a85 100644
--- a/app/javascript/mastodon/locales/pa.json
+++ b/app/javascript/mastodon/locales/pa.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 77d1d7c85..bad712d1c 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": "Zablokowano",
+  "account.blocked": "Zablokowany(-a)",
   "account.browse_more_on_origin_server": "Zobacz więcej na oryginalnym profilu",
   "account.cancel_follow_request": "Wycofaj żądanie obserwowania",
   "account.direct": "Prywatna wzmianka @{name}",
@@ -54,7 +54,7 @@
   "account.posts_with_replies": "Wpisy i odpowiedzi",
   "account.report": "Zgłoś @{name}",
   "account.requested": "Oczekująca prośba, kliknij aby anulować",
-  "account.requested_follow": "{name} poprosił(a) o możliwość zaobserwowania twojego profilu",
+  "account.requested_follow": "{name} chce zaobserwować twój profil",
   "account.share": "Udostępnij profil @{name}",
   "account.show_reblogs": "Pokazuj podbicia od @{name}",
   "account.statuses_counter": "{count, plural, one {{counter} wpis} few {{counter} wpisy} many {{counter} wpisów} other {{counter} wpisów}}",
@@ -75,7 +75,7 @@
   "alert.rate_limited.message": "Spróbuj ponownie po {retry_time, time, medium}.",
   "alert.rate_limited.title": "Ograniczony czasowo",
   "alert.unexpected.message": "Wystąpił nieoczekiwany błąd.",
-  "alert.unexpected.title": "O nie!",
+  "alert.unexpected.title": "Ups!",
   "announcement.announcement": "Ogłoszenie",
   "attachments_list.unprocessed": "(nieprzetworzone)",
   "audio.hide": "Ukryj dźwięk",
@@ -131,7 +131,7 @@
   "compose_form.hashtag_warning": "Ten wpis nie będzie widoczny pod podanymi hasztagami, ponieważ jest oznaczony jako niepubliczny. Tylko publiczne wpisy mogą zostać znalezione z użyciem hasztagów.",
   "compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię obserwuje, może wyświetlać Twoje wpisy przeznaczone tylko dla obserwujących.",
   "compose_form.lock_disclaimer.lock": "zablokowane",
-  "compose_form.placeholder": "Co Ci chodzi po głowie?",
+  "compose_form.placeholder": "Co chodzi ci po głowie?",
   "compose_form.poll.add_option": "Dodaj opcję",
   "compose_form.poll.duration": "Czas trwania głosowania",
   "compose_form.poll.option_placeholder": "Opcja {number}",
@@ -139,21 +139,21 @@
   "compose_form.poll.switch_to_multiple": "Pozwól na wybranie wielu opcji",
   "compose_form.poll.switch_to_single": "Pozwól na wybranie tylko jednej opcji",
   "compose_form.publish": "Opublikuj",
-  "compose_form.publish_form": "Publikuj",
+  "compose_form.publish_form": "Opublikuj",
   "compose_form.publish_loud": "{publish}!",
   "compose_form.save_changes": "Zapisz zmiany",
   "compose_form.sensitive.hide": "{count, plural, one {Oznacz treść multimedialną jako wrażliwą} other {Oznacz treści multimedialne jako wrażliwe}}",
   "compose_form.sensitive.marked": "{count, plural, one {Treść multimedialna jest oznaczona jako wrażliwa} other {Treści multimedialne są oznaczone jako wrażliwe}}",
   "compose_form.sensitive.unmarked": "{count, plural, one {Treść multimedialna nie jest oznaczona jako wrażliwa} other {Treści multimedialne nie są oznaczone jako wrażliwe}}",
-  "compose_form.spoiler.marked": "Tekst jest ukryty za ostrzeżeniem",
-  "compose_form.spoiler.unmarked": "Tekst nie jest ukryty",
-  "compose_form.spoiler_placeholder": "Wprowadź swoje ostrzeżenie o zawartości",
+  "compose_form.spoiler.marked": "Usuń ostrzeżenie o treści",
+  "compose_form.spoiler.unmarked": "Dodaj ostrzeżenie o treści",
+  "compose_form.spoiler_placeholder": "Wpisz ostrzeżenie tutaj",
   "confirmation_modal.cancel": "Anuluj",
   "confirmations.block.block_and_report": "Zablokuj i zgłoś",
   "confirmations.block.confirm": "Zablokuj",
   "confirmations.block.message": "Czy na pewno chcesz zablokować {name}?",
-  "confirmations.cancel_follow_request.confirm": "Wycofaj żądanie",
-  "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać prośbę o możliwość obserwacji {name}?",
+  "confirmations.cancel_follow_request.confirm": "Wycofaj prośbę",
+  "confirmations.cancel_follow_request.message": "Czy na pewno chcesz wycofać prośbę o możliwość obserwowania {name}?",
   "confirmations.delete.confirm": "Usuń",
   "confirmations.delete.message": "Czy na pewno chcesz usunąć ten wpis?",
   "confirmations.delete_list.confirm": "Usuń",
@@ -175,9 +175,9 @@
   "confirmations.reply.message": "W ten sposób utracisz wpis który obecnie tworzysz. Czy na pewno chcesz to zrobić?",
   "confirmations.unfollow.confirm": "Przestań obserwować",
   "confirmations.unfollow.message": "Czy na pewno zamierzasz przestać obserwować {name}?",
-  "conversation.delete": "Usuń rozmowę",
+  "conversation.delete": "Usuń konwersację",
   "conversation.mark_as_read": "Oznacz jako przeczytane",
-  "conversation.open": "Zobacz rozmowę",
+  "conversation.open": "Zobacz konwersację",
   "conversation.with": "Z {names}",
   "copypaste.copied": "Skopiowano",
   "copypaste.copy": "Kopiuj",
@@ -194,7 +194,7 @@
   "dismissable_banner.explore_tags": "Te hasztagi obecnie zyskują popularność wśród osób z tego serwera i pozostałych w zdecentralizowanej sieci.",
   "dismissable_banner.public_timeline": "To są najnowsze publiczne wpisy od osób z tego i innych serwerów zdecentralizowanej sieci, o których ten serwer wie.",
   "embed.instructions": "Osadź ten wpis na swojej stronie wklejając poniższy kod.",
-  "embed.preview": "Tak będzie to wyglądać:",
+  "embed.preview": "Będzie to wyglądać tak:",
   "emoji_button.activity": "Aktywność",
   "emoji_button.clear": "Wyczyść",
   "emoji_button.custom": "Niestandardowe",
@@ -202,8 +202,8 @@
   "emoji_button.food": "Żywność i napoje",
   "emoji_button.label": "Wstaw emoji",
   "emoji_button.nature": "Natura",
-  "emoji_button.not_found": "Brak emoji!! (╯°□°)╯︵ ┻━┻",
-  "emoji_button.objects": "Objekty",
+  "emoji_button.not_found": "Nie znaleziono pasujących emoji",
+  "emoji_button.objects": "Obiekty",
   "emoji_button.people": "Ludzie",
   "emoji_button.recent": "Najczęściej używane",
   "emoji_button.search": "Szukaj…",
@@ -217,7 +217,7 @@
   "empty_column.bookmarked_statuses": "Nie dodałeś(-aś) żadnego wpisu do zakładek. Kiedy to zrobisz, pojawi się on tutaj.",
   "empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
   "empty_column.direct": "Nie masz jeszcze żadnych prywatnych wzmianek. Kiedy je wyślesz lub otrzymasz, pojawią się tutaj.",
-  "empty_column.domain_blocks": "Brak ukrytych domen.",
+  "empty_column.domain_blocks": "Brak zablokowanych domen.",
   "empty_column.explore_statuses": "Nic nie jest w tej chwili popularne. Sprawdź później!",
   "empty_column.favourited_statuses": "Nie dodałeś(-aś) żadnego wpisu do ulubionych. Kiedy to zrobisz, pojawi się on tutaj.",
   "empty_column.favourites": "Nikt nie dodał tego wpisu do ulubionych. Gdy ktoś to zrobi, pojawi się tutaj.",
@@ -236,7 +236,7 @@
   "error.unexpected_crash.explanation_addons": "Ta strona nie mogła zostać poprawnie wyświetlona. Może to być spowodowane dodatkiem do przeglądarki lub narzędziem do automatycznego tłumaczenia.",
   "error.unexpected_crash.next_steps": "Spróbuj odświeżyć stronę. Jeśli to nie pomoże, wciąż jesteś w stanie używać Mastodona przez inną przeglądarkę lub natywną aplikację.",
   "error.unexpected_crash.next_steps_addons": "Spróbuj je wyłączyć lub odświeżyć stronę. Jeśli to nie pomoże, możesz wciąż korzystać z Mastodona w innej przeglądarce lub natywnej aplikacji.",
-  "errors.unexpected_crash.copy_stacktrace": "Skopiuj ślad stosu do schowka",
+  "errors.unexpected_crash.copy_stacktrace": "Skopiuj stacktrace do schowka",
   "errors.unexpected_crash.report_issue": "Zgłoś problem",
   "explore.search_results": "Wyniki wyszukiwania",
   "explore.suggested_follows": "Dla Ciebie",
@@ -322,7 +322,7 @@
   "keyboard_shortcuts.federated": "aby otworzyć oś czasu federacji",
   "keyboard_shortcuts.heading": "Skróty klawiszowe",
   "keyboard_shortcuts.home": "aby otworzyć stronę główną",
-  "keyboard_shortcuts.hotkey": "Klawisz",
+  "keyboard_shortcuts.hotkey": "Skrót klawiszowy",
   "keyboard_shortcuts.legend": "aby wyświetlić tę legendę",
   "keyboard_shortcuts.local": "aby otworzyć lokalną oś czasu",
   "keyboard_shortcuts.mention": "aby wspomnieć o autorze",
@@ -347,7 +347,7 @@
   "lightbox.expand": "Rozwiń pole widoku obrazu",
   "lightbox.next": "Następne",
   "lightbox.previous": "Poprzednie",
-  "limited_account_hint.action": "Pokaż profil mimo wszystko",
+  "limited_account_hint.action": "Pokaż profil mimo to",
   "limited_account_hint.title": "Ten profil został ukryty przez moderatorów {domain}.",
   "lists.account.add": "Dodaj do listy",
   "lists.account.remove": "Usunąć z listy",
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nowa pozycja} other {nowe pozycje}}",
   "loading_indicator.label": "Ładowanie…",
   "media_gallery.toggle_visible": "Przełącz widoczność",
-  "missing_indicator.label": "Nie znaleziono",
-  "missing_indicator.sublabel": "Nie można odnaleźć tego zasobu",
   "moved_to_account_banner.text": "Twoje konto {disabledAccount} jest obecnie wyłączone, ponieważ zostało przeniesione na {movedToAccount}.",
   "mute_modal.duration": "Czas",
   "mute_modal.hide_notifications": "Chcesz ukryć powiadomienia od tego użytkownika?",
@@ -395,21 +393,21 @@
   "navigation_bar.public_timeline": "Globalna oś czasu",
   "navigation_bar.search": "Szukaj",
   "navigation_bar.security": "Bezpieczeństwo",
-  "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby otrzymać dostęp do tego zasobu.",
+  "not_signed_in_indicator.not_signed_in": "Musisz się zalogować, aby uzyskać dostęp do tego zasobu.",
   "notification.admin.report": "{name} zgłosił {target}",
   "notification.admin.sign_up": "Użytkownik {name} zarejestrował się",
   "notification.favourite": "{name} dodaje Twój wpis do ulubionych",
   "notification.follow": "{name} obserwuje Cię",
-  "notification.follow_request": "{name} prosi o możliwość obserwowania Ciebie",
+  "notification.follow_request": "{name} chce cię zaobserwować",
   "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": "Twój post został podbity przez {name}",
-  "notification.status": "Właśnie umieszczono wpis przez {name}",
-  "notification.update": "{name} edytował post",
+  "notification.status": "{name} opublikował(a) nowy wpis",
+  "notification.update": "{name} edytował(a) post",
   "notifications.clear": "Wyczyść powiadomienia",
   "notifications.clear_confirmation": "Czy na pewno chcesz bezpowrotnie usunąć wszystkie powiadomienia?",
-  "notifications.column_settings.admin.report": "Nowe raporty:",
+  "notifications.column_settings.admin.report": "Nowe zgłoszenia:",
   "notifications.column_settings.admin.sign_up": "Nowe rejestracje:",
   "notifications.column_settings.alert": "Powiadomienia na pulpicie",
   "notifications.column_settings.favourite": "Dodanie do ulubionych:",
@@ -432,7 +430,7 @@
   "notifications.filter.boosts": "Podbicia",
   "notifications.filter.favourites": "Ulubione",
   "notifications.filter.follows": "Obserwacje",
-  "notifications.filter.mentions": "Wspomienia",
+  "notifications.filter.mentions": "Wspomnienia",
   "notifications.filter.polls": "Wyniki głosowania",
   "notifications.filter.statuses": "Aktualizacje od osób które obserwujesz",
   "notifications.grant_permission": "Przyznaj uprawnienia.",
@@ -521,7 +519,7 @@
   "report_notification.categories.other": "Inne",
   "report_notification.categories.spam": "Spam",
   "report_notification.categories.violation": "Naruszenie zasad",
-  "report_notification.open": "Otwórz raport",
+  "report_notification.open": "Otwórz zgłoszenie",
   "search.no_recent_searches": "Brak ostatnich wyszukiwań",
   "search.placeholder": "Szukaj",
   "search.quick_action.account_search": "Profile pasujące do {x}",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index d10c9a8f7..0f5cc7b55 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# novo item} other {# novos items}}",
   "loading_indicator.label": "Carregando...",
   "media_gallery.toggle_visible": "{number, plural, one {Ocultar mídia} other {Ocultar mídias}}",
-  "missing_indicator.label": "Não encontrado",
-  "missing_indicator.sublabel": "Recurso não encontrado",
   "moved_to_account_banner.text": "Sua conta {disabledAccount} está desativada porque você a moveu para {movedToAccount}.",
   "mute_modal.duration": "Duração",
   "mute_modal.hide_notifications": "Ocultar notificações deste usuário?",
diff --git a/app/javascript/mastodon/locales/pt-PT.json b/app/javascript/mastodon/locales/pt-PT.json
index e93ff73cf..5fd52977d 100644
--- a/app/javascript/mastodon/locales/pt-PT.json
+++ b/app/javascript/mastodon/locales/pt-PT.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# novo item} other {# novos itens}}",
   "loading_indicator.label": "A carregar...",
   "media_gallery.toggle_visible": "Alternar visibilidade",
-  "missing_indicator.label": "Não encontrado",
-  "missing_indicator.sublabel": "Este recurso não foi encontrado",
   "moved_to_account_banner.text": "A sua conta {disabledAccount} está, no momento, desativada, porque você migrou para {movedToAccount}.",
   "mute_modal.duration": "Duração",
   "mute_modal.hide_notifications": "Esconder notificações deste utilizador?",
diff --git a/app/javascript/mastodon/locales/ro.json b/app/javascript/mastodon/locales/ro.json
index aa6710685..e83cae386 100644
--- a/app/javascript/mastodon/locales/ro.json
+++ b/app/javascript/mastodon/locales/ro.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# element nou} other {# elemente noi}}",
   "loading_indicator.label": "Se încarcă...",
   "media_gallery.toggle_visible": "{number, plural, one {Ascunde imaginea} other {Ascunde imaginile}}",
-  "missing_indicator.label": "Nu a fost găsit",
-  "missing_indicator.sublabel": "Această resursă nu a putut fi găsită",
   "moved_to_account_banner.text": "Contul tău {disabledAccount} este în acest moment dezactivat deoarece te-ai mutat la {movedToAccount}.",
   "mute_modal.duration": "Durata",
   "mute_modal.hide_notifications": "Ascunde notificările de la acest utilizator?",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index 4e3a1c627..74b65009e 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# новый элемент} few {# новых элемента} other {# новых элементов}}",
   "loading_indicator.label": "Загрузка...",
   "media_gallery.toggle_visible": "Показать/скрыть {number, plural, =1 {изображение} other {изображения}}",
-  "missing_indicator.label": "Не найдено",
-  "missing_indicator.sublabel": "Запрашиваемый ресурс не найден",
   "moved_to_account_banner.text": "Ваша учетная запись {disabledAccount} в настоящее время заморожена, потому что вы переехали на {movedToAccount}.",
   "mute_modal.duration": "Продолжительность",
   "mute_modal.hide_notifications": "Скрыть уведомления от этого пользователя?",
diff --git a/app/javascript/mastodon/locales/sa.json b/app/javascript/mastodon/locales/sa.json
index 9b16be4f8..d95e46eb4 100644
--- a/app/javascript/mastodon/locales/sa.json
+++ b/app/javascript/mastodon/locales/sa.json
@@ -365,8 +365,6 @@
   "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": "अस्मादुपभोक्तुर्विज्ञापनानि प्रच्छादयितुमिच्छसि वा?",
diff --git a/app/javascript/mastodon/locales/sc.json b/app/javascript/mastodon/locales/sc.json
index 905d45738..a2d625c58 100644
--- a/app/javascript/mastodon/locales/sc.json
+++ b/app/javascript/mastodon/locales/sc.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# elementu nou} other {# elementos noos}}",
   "loading_indicator.label": "Carrighende...",
   "media_gallery.toggle_visible": "Cua {number, plural, one {immàgine} other {immàgines}}",
-  "missing_indicator.label": "Perunu resurtadu",
-  "missing_indicator.sublabel": "Resursa no agatada",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Durada",
   "mute_modal.hide_notifications": "Boles cuare is notìficas de custa persone?",
diff --git a/app/javascript/mastodon/locales/sco.json b/app/javascript/mastodon/locales/sco.json
index 8794806b2..de78ab5a7 100644
--- a/app/javascript/mastodon/locales/sco.json
+++ b/app/javascript/mastodon/locales/sco.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Loadin...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "missing_indicator.label": "No fun",
-  "missing_indicator.sublabel": "This resoorce cuidnae be fun",
   "moved_to_account_banner.text": "Yer accoont {disabledAccount} is disabilt the noo acause ye flittit tae {movedToAccount}.",
   "mute_modal.duration": "Lenth",
   "mute_modal.hide_notifications": "Hide notifications fae this uiser?",
diff --git a/app/javascript/mastodon/locales/si.json b/app/javascript/mastodon/locales/si.json
index 82366c29c..a99ad7ca0 100644
--- a/app/javascript/mastodon/locales/si.json
+++ b/app/javascript/mastodon/locales/si.json
@@ -365,8 +365,6 @@
   "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": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "පරාසය",
   "mute_modal.hide_notifications": "මෙම පරිශීලකයාගෙන් දැනුම්දීම් සඟවන්නද?",
diff --git a/app/javascript/mastodon/locales/sk.json b/app/javascript/mastodon/locales/sk.json
index d8c39fabf..ce97537c8 100644
--- a/app/javascript/mastodon/locales/sk.json
+++ b/app/javascript/mastodon/locales/sk.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nová položka} other {# nových položiek}}",
   "loading_indicator.label": "Načítam...",
   "media_gallery.toggle_visible": "Zapni/Vypni viditeľnosť",
-  "missing_indicator.label": "Nenájdené",
-  "missing_indicator.sublabel": "Tento zdroj sa ešte nepodarilo nájsť",
   "moved_to_account_banner.text": "Vaše konto {disabledAccount} je momentálne zablokované, pretože ste sa presunuli na {movedToAccount}.",
   "mute_modal.duration": "Trvanie",
   "mute_modal.hide_notifications": "Skry oznámenia od tohto používateľa?",
@@ -522,17 +520,17 @@
   "report_notification.categories.spam": "Spam",
   "report_notification.categories.violation": "Porušenie pravidla",
   "report_notification.open": "Otvor hlásenie",
-  "search.no_recent_searches": "No recent searches",
+  "search.no_recent_searches": "Žiadne nedávne vyhľadávania",
   "search.placeholder": "Hľadaj",
-  "search.quick_action.account_search": "Profiles matching {x}",
-  "search.quick_action.go_to_account": "Go to profile {x}",
+  "search.quick_action.account_search": "Profily zodpovedajúce {x}",
+  "search.quick_action.go_to_account": "Prejdi na profil {x}",
   "search.quick_action.go_to_hashtag": "Go to hashtag {x}",
   "search.quick_action.open_url": "Open URL in Mastodon",
-  "search.quick_action.status_search": "Posts matching {x}",
+  "search.quick_action.status_search": "Príspevky zodpovedajúce {x}",
   "search.search_or_paste": "Hľadaj, alebo vlož URL adresu",
   "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
-  "search_results.accounts": "Profiles",
+  "search_popout.recent": "Nedávne vyhľadávania",
+  "search_results.accounts": "Profily",
   "search_results.all": "Všetky",
   "search_results.hashtags": "Haštagy",
   "search_results.nothing_found": "Pre tieto výrazy nemožno nič nájsť",
diff --git a/app/javascript/mastodon/locales/sl.json b/app/javascript/mastodon/locales/sl.json
index 3c6da433b..cbd785d69 100644
--- a/app/javascript/mastodon/locales/sl.json
+++ b/app/javascript/mastodon/locales/sl.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nov element} two {# nova elementa} few {# novi elementi} other {# novih elementov}}",
   "loading_indicator.label": "Nalaganje ...",
   "media_gallery.toggle_visible": "{number, plural,one {Skrij sliko} two {Skrij sliki} other {Skrij slike}}",
-  "missing_indicator.label": "Ni najdeno",
-  "missing_indicator.sublabel": "Tega vira ni bilo mogoče najti",
   "moved_to_account_banner.text": "Vaš račun {disabledAccount} je trenutno onemogočen, ker ste se prestavili na {movedToAccount}.",
   "mute_modal.duration": "Trajanje",
   "mute_modal.hide_notifications": "Ali želite skriti obvestila tega uporabnika?",
@@ -522,16 +520,16 @@
   "report_notification.categories.spam": "Neželeno",
   "report_notification.categories.violation": "Kršitev pravila",
   "report_notification.open": "Odpri prijavo",
-  "search.no_recent_searches": "No recent searches",
+  "search.no_recent_searches": "Ni nedavnih iskanj",
   "search.placeholder": "Iskanje",
-  "search.quick_action.account_search": "Profiles matching {x}",
-  "search.quick_action.go_to_account": "Go to profile {x}",
-  "search.quick_action.go_to_hashtag": "Go to hashtag {x}",
-  "search.quick_action.open_url": "Open URL in Mastodon",
-  "search.quick_action.status_search": "Posts matching {x}",
+  "search.quick_action.account_search": "Profili, ki se ujemajo z {x}",
+  "search.quick_action.go_to_account": "Pojdi na profil {x}",
+  "search.quick_action.go_to_hashtag": "Pojdi na ključnik {x}",
+  "search.quick_action.open_url": "Odpri URL v Mastodonu",
+  "search.quick_action.status_search": "Objave, ki se ujemajo z {x}",
   "search.search_or_paste": "Iščite ali prilepite URL",
-  "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
+  "search_popout.quick_actions": "Hitra dejanja",
+  "search_popout.recent": "Nedavna iskanja",
   "search_results.accounts": "Profili",
   "search_results.all": "Vse",
   "search_results.hashtags": "Ključniki",
diff --git a/app/javascript/mastodon/locales/sq.json b/app/javascript/mastodon/locales/sq.json
index 93a00e51e..91f732ad7 100644
--- a/app/javascript/mastodon/locales/sq.json
+++ b/app/javascript/mastodon/locales/sq.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural,one {# objekt i ri }other {# objekte të rinj }}",
   "loading_indicator.label": "Po ngarkohet…",
   "media_gallery.toggle_visible": "Fshihni {number, plural, one {figurë} other {figura}}",
-  "missing_indicator.label": "S’u gjet",
-  "missing_indicator.sublabel": "Ky burim s’u gjet dot",
   "moved_to_account_banner.text": "Llogaria juaj {disabledAccount} aktualisht është e çaktivizuar, ngaqë kaluat te {movedToAccount}.",
   "mute_modal.duration": "Kohëzgjatje",
   "mute_modal.hide_notifications": "Të kalohen të fshehura njoftimet prej këtij përdoruesi?",
diff --git a/app/javascript/mastodon/locales/sr-Latn.json b/app/javascript/mastodon/locales/sr-Latn.json
index f35d7025c..a2e7430a4 100644
--- a/app/javascript/mastodon/locales/sr-Latn.json
+++ b/app/javascript/mastodon/locales/sr-Latn.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# nova stavka} few {# nove stavke} other {# novih stavki}}",
   "loading_indicator.label": "Učitavanje...",
   "media_gallery.toggle_visible": "{number, plural, one {Sakrij sliku} few {Sakrij slike} other {Sakrij slike}}",
-  "missing_indicator.label": "Nije pronađeno",
-  "missing_indicator.sublabel": "Ovaj resurs nije moguće pronaći",
   "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?",
diff --git a/app/javascript/mastodon/locales/sr.json b/app/javascript/mastodon/locales/sr.json
index bfdd031f8..5e2b6601a 100644
--- a/app/javascript/mastodon/locales/sr.json
+++ b/app/javascript/mastodon/locales/sr.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# нова ставка} few {# нове ставке} other {# нових ставки}}",
   "loading_indicator.label": "Учитавање...",
   "media_gallery.toggle_visible": "{number, plural, one {Сакриј слику} few {Сакриј слике} other {Сакриј слике}}",
-  "missing_indicator.label": "Није пронађено",
-  "missing_indicator.sublabel": "Овај ресурс није било могуће пронаћи",
   "moved_to_account_banner.text": "Ваш налог {disabledAccount} је тренутно онемогућен јер сте прешли на {movedToAccount}.",
   "mute_modal.duration": "Трајање",
   "mute_modal.hide_notifications": "Сакрити обавештења од овог корисника?",
diff --git a/app/javascript/mastodon/locales/sv.json b/app/javascript/mastodon/locales/sv.json
index 0b78b7856..a62850c68 100644
--- a/app/javascript/mastodon/locales/sv.json
+++ b/app/javascript/mastodon/locales/sv.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, other {# objekt}}",
   "loading_indicator.label": "Laddar...",
   "media_gallery.toggle_visible": "Växla synlighet",
-  "missing_indicator.label": "Hittades inte",
-  "missing_indicator.sublabel": "Den här resursen kunde inte hittas",
   "moved_to_account_banner.text": "Ditt konto {disabledAccount} är för närvarande inaktiverat eftersom du flyttat till {movedToAccount}.",
   "mute_modal.duration": "Varaktighet",
   "mute_modal.hide_notifications": "Dölj aviseringar från denna användare?",
@@ -522,17 +520,17 @@
   "report_notification.categories.spam": "Skräppost",
   "report_notification.categories.violation": "Regelöverträdelse",
   "report_notification.open": "Öppna rapport",
-  "search.no_recent_searches": "No recent searches",
+  "search.no_recent_searches": "Inga sökningar nyligen",
   "search.placeholder": "Sök",
-  "search.quick_action.account_search": "Profiles matching {x}",
-  "search.quick_action.go_to_account": "Go to profile {x}",
-  "search.quick_action.go_to_hashtag": "Go to hashtag {x}",
-  "search.quick_action.open_url": "Open URL in Mastodon",
-  "search.quick_action.status_search": "Posts matching {x}",
+  "search.quick_action.account_search": "Profiler som matchar {x}",
+  "search.quick_action.go_to_account": "Gå till profil {x}",
+  "search.quick_action.go_to_hashtag": "Gå till hashtag {x}",
+  "search.quick_action.open_url": "Öppna länk i Mastodon",
+  "search.quick_action.status_search": "Inlägg som matchar {x}",
   "search.search_or_paste": "Sök eller klistra in URL",
-  "search_popout.quick_actions": "Quick actions",
-  "search_popout.recent": "Recent searches",
-  "search_results.accounts": "Profiles",
+  "search_popout.quick_actions": "Snabbåtgärder",
+  "search_popout.recent": "Senaste sökningarna",
+  "search_results.accounts": "Profiler",
   "search_results.all": "Alla",
   "search_results.hashtags": "Hashtaggar",
   "search_results.nothing_found": "Kunde inte hitta något för dessa sökord",
diff --git a/app/javascript/mastodon/locales/szl.json b/app/javascript/mastodon/locales/szl.json
index c8f0337cb..5659d37e2 100644
--- a/app/javascript/mastodon/locales/szl.json
+++ b/app/javascript/mastodon/locales/szl.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/ta.json b/app/javascript/mastodon/locales/ta.json
index 76e144747..71fd1a92d 100644
--- a/app/javascript/mastodon/locales/ta.json
+++ b/app/javascript/mastodon/locales/ta.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural,one {# புதியது}other {# புதியவை}}",
   "loading_indicator.label": "ஏற்றுதல்...",
   "media_gallery.toggle_visible": "நிலைமாற்று தெரியும்",
-  "missing_indicator.label": "கிடைக்கவில்லை",
-  "missing_indicator.sublabel": "இந்த ஆதாரத்தை காண முடியவில்லை",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "இந்த பயனரின் அறிவிப்புகளை மறைக்கவா?",
diff --git a/app/javascript/mastodon/locales/tai.json b/app/javascript/mastodon/locales/tai.json
index e553ac58c..23c997d13 100644
--- a/app/javascript/mastodon/locales/tai.json
+++ b/app/javascript/mastodon/locales/tai.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/te.json b/app/javascript/mastodon/locales/te.json
index 1bd8a65bd..409a44c1d 100644
--- a/app/javascript/mastodon/locales/te.json
+++ b/app/javascript/mastodon/locales/te.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "లోడ్ అవుతోంది...",
   "media_gallery.toggle_visible": "దృశ్యమానతను టోగుల్ చేయండి",
-  "missing_indicator.label": "దొరకలేదు",
-  "missing_indicator.sublabel": "ఈ వనరు కనుగొనబడలేదు",
   "moved_to_account_banner.text": "Your account {disabledAccount} is currently disabled because you moved to {movedToAccount}.",
   "mute_modal.duration": "Duration",
   "mute_modal.hide_notifications": "ఈ వినియోగదారు నుండి నోటిఫికేషన్లను దాచాలా?",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index cd4c92351..12838ba2d 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, other {# รายการใหม่}}",
   "loading_indicator.label": "กำลังโหลด...",
   "media_gallery.toggle_visible": "{number, plural, other {ซ่อนภาพ}}",
-  "missing_indicator.label": "ไม่พบ",
-  "missing_indicator.sublabel": "ไม่พบทรัพยากรนี้",
   "moved_to_account_banner.text": "มีการปิดใช้งานบัญชีของคุณ {disabledAccount} ในปัจจุบันเนื่องจากคุณได้ย้ายไปยัง {movedToAccount}",
   "mute_modal.duration": "ระยะเวลา",
   "mute_modal.hide_notifications": "ซ่อนการแจ้งเตือนจากผู้ใช้นี้?",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index a7b8cd916..7d7e64dbc 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# yeni öğe} other {# yeni öğe}}",
   "loading_indicator.label": "Yükleniyor...",
   "media_gallery.toggle_visible": "{number, plural, one {Resmi} other {Resimleri}} gizle",
-  "missing_indicator.label": "Bulunamadı",
-  "missing_indicator.sublabel": "Bu kaynak bulunamadı",
   "moved_to_account_banner.text": "{disabledAccount} hesabınız, {movedToAccount} hesabına taşıdığınız için şu an devre dışı.",
   "mute_modal.duration": "Süre",
   "mute_modal.hide_notifications": "Bu kullanıcıdan bildirimler gizlensin mı?",
diff --git a/app/javascript/mastodon/locales/tt.json b/app/javascript/mastodon/locales/tt.json
index 64b0840a5..4b55aade8 100644
--- a/app/javascript/mastodon/locales/tt.json
+++ b/app/javascript/mastodon/locales/tt.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# new item} other {# new items}}",
   "loading_indicator.label": "Йөкләү...",
   "media_gallery.toggle_visible": "{number, plural, one {Hide image} other {Hide images}}",
-  "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?",
diff --git a/app/javascript/mastodon/locales/ug.json b/app/javascript/mastodon/locales/ug.json
index d330c136c..aacb50a85 100644
--- a/app/javascript/mastodon/locales/ug.json
+++ b/app/javascript/mastodon/locales/ug.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 5278f845f..2f20cbdc6 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -365,8 +365,6 @@
   "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": "Сховати сповіщення цього користувача?",
diff --git a/app/javascript/mastodon/locales/ur.json b/app/javascript/mastodon/locales/ur.json
index ffb6e1068..17abb3461 100644
--- a/app/javascript/mastodon/locales/ur.json
+++ b/app/javascript/mastodon/locales/ur.json
@@ -365,8 +365,6 @@
   "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?",
diff --git a/app/javascript/mastodon/locales/uz.json b/app/javascript/mastodon/locales/uz.json
index e7502bf23..b58162d41 100644
--- a/app/javascript/mastodon/locales/uz.json
+++ b/app/javascript/mastodon/locales/uz.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# yangi element} other {# yangi elementlar}}",
   "loading_indicator.label": "Yuklanmoqda...",
   "media_gallery.toggle_visible": "{number, plural, one {Rasmni yashirish} other {Rasmlarni yashirish}}",
-  "missing_indicator.label": "Topilmadi",
-  "missing_indicator.sublabel": "Bu resurs topilmadi",
   "moved_to_account_banner.text": "{movedToAccount} hisobiga koʻchganingiz uchun {disabledAccount} hisobingiz hozirda oʻchirib qoʻyilgan.",
   "mute_modal.duration": "Davomiyligi",
   "mute_modal.hide_notifications": "Bu foydalanuvchidan bildirishnomalar berkitilsinmi?",
diff --git a/app/javascript/mastodon/locales/vi.json b/app/javascript/mastodon/locales/vi.json
index 7d51c7055..72bec935f 100644
--- a/app/javascript/mastodon/locales/vi.json
+++ b/app/javascript/mastodon/locales/vi.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# tút mới} other {# tút mới}}",
   "loading_indicator.label": "Đang tải...",
   "media_gallery.toggle_visible": "{number, plural, other {Ẩn hình ảnh}}",
-  "missing_indicator.label": "Không tìm thấy",
-  "missing_indicator.sublabel": "Nội dung này không còn tồn tại",
   "moved_to_account_banner.text": "Tài khoản {disabledAccount} của bạn hiện không khả dụng vì bạn đã chuyển sang {movedToAccount}.",
   "mute_modal.duration": "Thời hạn",
   "mute_modal.hide_notifications": "Ẩn thông báo từ người này?",
diff --git a/app/javascript/mastodon/locales/zgh.json b/app/javascript/mastodon/locales/zgh.json
index f02d1a15d..6d1efc884 100644
--- a/app/javascript/mastodon/locales/zgh.json
+++ b/app/javascript/mastodon/locales/zgh.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# ⵓⴼⵔⴷⵉⵙ ⴰⵎⴰⵢⵏⵓ} other {# ⵉⴼⵔⴷⴰⵙ ⵉⵎⴰⵢⵏⵓⵜⵏ}}",
   "loading_indicator.label": "ⴰⵣⴷⴰⵎ...",
   "media_gallery.toggle_visible": "ⴼⴼⵔ {number, plural, one {ⵜⴰⵡⵍⴰⴼⵜ} other {ⵜⵉⵡⵍⴰⴼⵉⵏ}}",
-  "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?",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index f9e31c450..234232456 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -1,6 +1,6 @@
 {
   "about.blocks": "被限制的服务器",
-  "about.contact": "联系方式:",
+  "about.contact": "联系方式:",
   "about.disclaimer": "Mastodon 是自由的开源软件,商标由 Mastodon gGmbH 持有。",
   "about.domain_blocks.no_reason_available": "原因不可用",
   "about.domain_blocks.preamble": "通常来说,在 Mastodon 上,你可以浏览联邦宇宙中任何一台服务器上的内容,并且和上面的用户互动。但其中一些在本服务器上被设置为例外。",
@@ -151,7 +151,7 @@
   "confirmation_modal.cancel": "取消",
   "confirmations.block.block_and_report": "屏蔽与举报",
   "confirmations.block.confirm": "屏蔽",
-  "confirmations.block.message": "你确定要屏蔽 {name} 吗?",
+  "confirmations.block.message": "确定要屏蔽 {name} 吗?",
   "confirmations.cancel_follow_request.confirm": "撤回请求",
   "confirmations.cancel_follow_request.message": "确定撤回关注 {name} 的请求吗?",
   "confirmations.delete.confirm": "删除",
@@ -165,7 +165,7 @@
   "confirmations.edit.confirm": "编辑",
   "confirmations.edit.message": "编辑此消息将会覆盖当前正在撰写的信息。仍要继续吗?",
   "confirmations.logout.confirm": "登出",
-  "confirmations.logout.message": "你确定要登出吗?",
+  "confirmations.logout.message": "确定要退出登录吗?",
   "confirmations.mute.confirm": "隐藏",
   "confirmations.mute.explanation": "他们的嘟文以及提到他们的嘟文都会隐藏,但他们仍然可以看到你的嘟文,也可以关注你。",
   "confirmations.mute.message": "你确定要隐藏 {name} 吗?",
@@ -244,7 +244,7 @@
   "explore.trending_links": "新闻",
   "explore.trending_statuses": "嘟文",
   "explore.trending_tags": "话题标签",
-  "filter_modal.added.context_mismatch_explanation": "此过滤器分类不适用访问过嘟文的环境中。如果你想要在环境中过滤嘟文,你必须编辑此过滤器。",
+  "filter_modal.added.context_mismatch_explanation": "此过滤器类别不适用访问过嘟文的环境中。如要在此环境中过滤嘟文,你必须编辑此过滤器。",
   "filter_modal.added.context_mismatch_title": "环境不匹配!",
   "filter_modal.added.expired_explanation": "此过滤器类别已过期,你需要修改到期日期才能应用。",
   "filter_modal.added.expired_title": "过滤器已过期!",
@@ -253,11 +253,11 @@
   "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.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.subtitle": "使用一个已存在类别,或创建一个新类别",
   "filter_modal.select_filter.title": "过滤此嘟文",
   "filter_modal.title.status": "过滤一条嘟文",
   "follow_recommendations.done": "完成",
@@ -299,7 +299,7 @@
   "interaction_modal.description.reply": "拥有一个 Mastodon 账号,你可以回复此嘟文。",
   "interaction_modal.on_another_server": "在另一服务器",
   "interaction_modal.on_this_server": "在此服务器",
-  "interaction_modal.other_server_instructions": "复制此链接并粘贴到你使用的 Mastodon 应用或者 Mastodon 服务器网页版搜索栏中。",
+  "interaction_modal.other_server_instructions": "复制此网址并粘贴到常用的 Mastodon 应用,或 Mastodon 服务器网页版搜索栏中。",
   "interaction_modal.preamble": "基于 Mastodon 去中心化的特性,如果你在本站没有账号,也可以使用在另一 Mastodon 服务器或其他兼容平台上的已有账号。",
   "interaction_modal.title.favourite": "喜欢 {name} 的嘟文",
   "interaction_modal.title.follow": "关注 {name}",
@@ -365,8 +365,6 @@
   "load_pending": "{count} 项",
   "loading_indicator.label": "加载中…",
   "media_gallery.toggle_visible": "{number, plural, other {隐藏图像}}",
-  "missing_indicator.label": "找不到内容",
-  "missing_indicator.sublabel": "无法找到此资源",
   "moved_to_account_banner.text": "您的账号 {disabledAccount} 已停用,因为您已迁移到 {movedToAccount} 。",
   "mute_modal.duration": "持续时长",
   "mute_modal.hide_notifications": "同时隐藏来自这个用户的通知?",
@@ -527,9 +525,9 @@
   "search.quick_action.account_search": "匹配 {x} 的个人资料",
   "search.quick_action.go_to_account": "转到 {x} 个人资料",
   "search.quick_action.go_to_hashtag": "转到标签 {x}",
-  "search.quick_action.open_url": "在 Mastodon 中打开链接",
+  "search.quick_action.open_url": "在 Mastodon 中打开网址",
   "search.quick_action.status_search": "匹配 {x} 的帖子",
-  "search.search_or_paste": "搜索或输入链接",
+  "search.search_or_paste": "搜索或输入网址",
   "search_popout.quick_actions": "快捷操作",
   "search_popout.recent": "最近搜索",
   "search_results.accounts": "个人资料",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index d130662fc..d57ef9b1b 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, other {# 個新項目}}",
   "loading_indicator.label": "載入中...",
   "media_gallery.toggle_visible": "隱藏圖片",
-  "missing_indicator.label": "找不到內容",
-  "missing_indicator.sublabel": "無法找到內容",
   "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
   "mute_modal.duration": "時間",
   "mute_modal.hide_notifications": "需要隱藏這使用者的通知嗎?",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index 55f709340..f4faafabd 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -28,7 +28,7 @@
   "account.endorse": "在個人檔案推薦對方",
   "account.featured_tags.last_status_at": "上次嘟文於 {date}",
   "account.featured_tags.last_status_never": "沒有嘟文",
-  "account.featured_tags.title": "{name} 的特色主題標籤",
+  "account.featured_tags.title": "{name} 的推薦主題標籤",
   "account.follow": "跟隨",
   "account.followers": "跟隨者",
   "account.followers.empty": "尚未有人跟隨這位使用者。",
@@ -365,8 +365,6 @@
   "load_pending": "{count, plural, one {# 個新項目} other {# 個新項目}}",
   "loading_indicator.label": "讀取中...",
   "media_gallery.toggle_visible": "切換可見性",
-  "missing_indicator.label": "找不到",
-  "missing_indicator.sublabel": "找不到此資源",
   "moved_to_account_banner.text": "您的帳號 {disabledAccount} 目前已停用,因為您已搬家至 {movedToAccount}。",
   "mute_modal.duration": "持續時間",
   "mute_modal.hide_notifications": "是否隱藏來自這位使用者的通知?",
@@ -399,12 +397,12 @@
   "notification.admin.report": "{name} 已檢舉 {target}",
   "notification.admin.sign_up": "{name} 已經註冊",
   "notification.favourite": "{name} 已將您的嘟文加入最愛",
-  "notification.follow": "{name} 跟隨了您",
+  "notification.follow": "{name} 已跟隨您",
   "notification.follow_request": "{name} 要求跟隨您",
-  "notification.mention": "{name} 提到了您",
+  "notification.mention": "{name} 已提到您",
   "notification.own_poll": "您的投票已結束",
   "notification.poll": "您曾投過的投票已經結束",
-  "notification.reblog": "{name} 轉嘟了您的嘟文",
+  "notification.reblog": "{name} 已轉嘟您的嘟文",
   "notification.status": "{name} 剛剛嘟文",
   "notification.update": "{name} 已編輯嘟文",
   "notifications.clear": "清除通知",
@@ -438,7 +436,7 @@
   "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": "啟用桌面通知",
@@ -583,7 +581,7 @@
   "status.read_more": "閱讀更多",
   "status.reblog": "轉嘟",
   "status.reblog_private": "依照原嘟可見性轉嘟",
-  "status.reblogged_by": "{name} 轉嘟了",
+  "status.reblogged_by": "{name} 已轉嘟",
   "status.reblogs.empty": "還沒有人轉嘟過這則嘟文。當有人轉嘟時,它將於此顯示。",
   "status.redraft": "刪除並重新編輯",
   "status.remove_bookmark": "移除書籤",
diff --git a/app/javascript/styles/mastodon/components.scss b/app/javascript/styles/mastodon/components.scss
index 862252781..796fe7442 100644
--- a/app/javascript/styles/mastodon/components.scss
+++ b/app/javascript/styles/mastodon/components.scss
@@ -6685,7 +6685,7 @@ a.status-card.compact:hover {
         content: '';
         position: absolute;
         bottom: 0;
-        inset-inline-start: 50%;
+        left: 50%;
         width: 0;
         height: 0;
         transform: translateX(-50%);
@@ -6963,7 +6963,8 @@ noscript {
 }
 
 .moved-account-banner,
-.follow-request-banner {
+.follow-request-banner,
+.account-memorial-banner {
   padding: 20px;
   background: lighten($ui-base-color, 4%);
   display: flex;
@@ -6998,6 +6999,10 @@ noscript {
   width: 100%;
 }
 
+.account-memorial-banner__message {
+  margin-bottom: 0;
+}
+
 .column-inline-form {
   padding: 15px;
   display: flex;
diff --git a/app/models/status.rb b/app/models/status.rb
index 8a58e5d68..863e1a56b 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -442,33 +442,41 @@ class Status < ApplicationRecord
     super || build_status_stat
   end
 
-  # Hack to use a "INSERT INTO ... SELECT ..." query instead of "INSERT INTO ... VALUES ..." query
+  # This is a hack to ensure that no reblogs of discarded statuses are created,
+  # as this cannot be enforced through database constraints the same way we do
+  # for reblogs of deleted statuses.
+  #
+  # To achieve this, we redefine the internal method responsible for issuing
+  # the "INSERT" statement and replace the "INSERT INTO ... VALUES ..." query
+  # with an "INSERT INTO ... SELECT ..." query with a "WHERE deleted_at IS NULL"
+  # clause on the reblogged status to ensure consistency at the database level.
+  #
+  # Otherwise, the code is kept as close as possible to ActiveRecord::Persistence
+  # code, and actually calls it if we are not handling a reblog.
   def self._insert_record(values)
-    if values.is_a?(Hash) && values['reblog_of_id'].present?
-      primary_key = self.primary_key
-      primary_key_value = nil
+    return super unless values.is_a?(Hash) && values['reblog_of_id'].present?
 
-      if primary_key
-        primary_key_value = values[primary_key]
+    primary_key = self.primary_key
+    primary_key_value = nil
 
-        if !primary_key_value && prefetch_primary_key?
-          primary_key_value = next_sequence_value
-          values[primary_key] = primary_key_value
-        end
+    if primary_key
+      primary_key_value = values[primary_key]
+
+      if !primary_key_value && prefetch_primary_key?
+        primary_key_value = next_sequence_value
+        values[primary_key] = primary_key_value
       end
+    end
 
-      # The following line is where we differ from stock ActiveRecord implementation
-      im = _compile_reblog_insert(values)
+    # The following line is where we differ from stock ActiveRecord implementation
+    im = _compile_reblog_insert(values)
 
-      # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
-      # For our purposes, it's equivalent to a foreign key constraint violation
-      result = connection.insert(im, "#{self} Create", primary_key || false, primary_key_value)
-      raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id']}) is not present in table \"statuses\"" if result.nil?
+    # Since we are using SELECT instead of VALUES, a non-error `nil` return is possible.
+    # For our purposes, it's equivalent to a foreign key constraint violation
+    result = connection.insert(im, "#{self} Create", primary_key || false, primary_key_value)
+    raise ActiveRecord::InvalidForeignKey, "(reblog_of_id)=(#{values['reblog_of_id']}) is not present in table \"statuses\"" if result.nil?
 
-      result
-    else
-      super
-    end
+    result
   end
 
   def self._compile_reblog_insert(values)
diff --git a/app/models/tag.rb b/app/models/tag.rb
index 554a92d90..9fb32cd06 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -31,8 +31,8 @@ class Tag < ApplicationRecord
   HASHTAG_FIRST_SEQUENCE_CHUNK_ONE = "[[:word:]_][[:word:]#{HASHTAG_SEPARATORS}]*[[:alpha:]#{HASHTAG_SEPARATORS}]"
   HASHTAG_FIRST_SEQUENCE_CHUNK_TWO = "[[:word:]#{HASHTAG_SEPARATORS}]*[[:word:]_]"
   HASHTAG_FIRST_SEQUENCE = "(#{HASHTAG_FIRST_SEQUENCE_CHUNK_ONE}#{HASHTAG_FIRST_SEQUENCE_CHUNK_TWO})"
-  HASTAG_LAST_SEQUENCE = '([[:word:]_]*[[:alpha:]][[:word:]_]*)'
-  HASHTAG_NAME_PAT = "#{HASHTAG_FIRST_SEQUENCE}|#{HASTAG_LAST_SEQUENCE}"
+  HASHTAG_LAST_SEQUENCE = '([[:word:]_]*[[:alpha:]][[:word:]_]*)'
+  HASHTAG_NAME_PAT = "#{HASHTAG_FIRST_SEQUENCE}|#{HASHTAG_LAST_SEQUENCE}"
 
   HASHTAG_RE = /(?:^|[^\/\)\w])#(#{HASHTAG_NAME_PAT})/i
   HASHTAG_NAME_RE = /\A(#{HASHTAG_NAME_PAT})\z/i